mirror of
https://github.com/pgvector/pgvector.git
synced 2026-07-28 23:02:43 +08:00
Fix memory leak in ivfrescan
This commit is contained in:
@@ -282,6 +282,7 @@ ivfflatbeginscan(Relation index, int nkeys, int norderbys)
|
|||||||
so->probes = probes;
|
so->probes = probes;
|
||||||
so->maxProbes = maxProbes;
|
so->maxProbes = maxProbes;
|
||||||
so->dimensions = dimensions;
|
so->dimensions = dimensions;
|
||||||
|
so->value = PointerGetDatum(NULL);
|
||||||
|
|
||||||
/* Set support functions */
|
/* Set support functions */
|
||||||
so->procinfo = index_getprocinfo(index, 1, IVFFLAT_DISTANCE_PROC);
|
so->procinfo = index_getprocinfo(index, 1, IVFFLAT_DISTANCE_PROC);
|
||||||
@@ -340,6 +341,12 @@ ivfflatrescan(IndexScanDesc scan, ScanKey keys, int nkeys, ScanKey orderbys, int
|
|||||||
pairingheap_reset(so->listQueue);
|
pairingheap_reset(so->listQueue);
|
||||||
so->listIndex = 0;
|
so->listIndex = 0;
|
||||||
|
|
||||||
|
if (so->normprocinfo != NULL && DatumGetPointer(so->value) != NULL)
|
||||||
|
{
|
||||||
|
pfree(DatumGetPointer(so->value));
|
||||||
|
so->value = PointerGetDatum(NULL);
|
||||||
|
}
|
||||||
|
|
||||||
if (keys && scan->numberOfKeys > 0)
|
if (keys && scan->numberOfKeys > 0)
|
||||||
memmove(scan->keyData, keys, scan->numberOfKeys * sizeof(ScanKeyData));
|
memmove(scan->keyData, keys, scan->numberOfKeys * sizeof(ScanKeyData));
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user