Fix memory leak in ivfrescan

(cherry picked from commit 93a5b4a16d699eaf890970777c19f19b9d545782)
This commit is contained in:
zthhhhh
2026-07-28 09:08:01 -07:00
committed by zeekay
parent 9c34ba4583
commit 96662947da
+7
View File
@@ -282,6 +282,7 @@ ivfflatbeginscan(Relation index, int nkeys, int norderbys)
so->probes = probes;
so->maxProbes = maxProbes;
so->dimensions = dimensions;
so->value = PointerGetDatum(NULL);
/* Set support functions */
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);
so->listIndex = 0;
if (so->normprocinfo != NULL && DatumGetPointer(so->value) != NULL)
{
pfree(DatumGetPointer(so->value));
so->value = PointerGetDatum(NULL);
}
if (keys && scan->numberOfKeys > 0)
memmove(scan->keyData, keys, scan->numberOfKeys * sizeof(ScanKeyData));