Simplify lists for IvfflatScanOpaque [skip ci]

This commit is contained in:
Andrew Kane
2024-10-11 15:29:23 -07:00
parent 38285aacc7
commit e1bc929429
2 changed files with 4 additions and 2 deletions

View File

@@ -278,7 +278,7 @@ typedef struct IvfflatScanOpaqueData
pairingheap *listQueue; pairingheap *listQueue;
BlockNumber *listPages; BlockNumber *listPages;
int listIndex; int listIndex;
IvfflatScanList lists[FLEXIBLE_ARRAY_MEMBER]; /* must come last */ IvfflatScanList *lists;
} IvfflatScanOpaqueData; } IvfflatScanOpaqueData;
typedef IvfflatScanOpaqueData * IvfflatScanOpaque; typedef IvfflatScanOpaqueData * IvfflatScanOpaque;

View File

@@ -280,7 +280,7 @@ ivfflatbeginscan(Relation index, int nkeys, int norderbys)
if (maxProbes > lists) if (maxProbes > lists)
maxProbes = lists; maxProbes = lists;
so = (IvfflatScanOpaque) palloc(offsetof(IvfflatScanOpaqueData, lists) + maxProbes * sizeof(IvfflatScanList)); so = (IvfflatScanOpaque) palloc(sizeof(IvfflatScanOpaqueData));
so->typeInfo = IvfflatGetTypeInfo(index); so->typeInfo = IvfflatGetTypeInfo(index);
so->first = true; so->first = true;
so->probes = probes; so->probes = probes;
@@ -314,6 +314,7 @@ ivfflatbeginscan(Relation index, int nkeys, int norderbys)
so->listQueue = pairingheap_allocate(CompareLists, scan); so->listQueue = pairingheap_allocate(CompareLists, scan);
so->listPages = palloc(maxProbes * sizeof(BlockNumber)); so->listPages = palloc(maxProbes * sizeof(BlockNumber));
so->listIndex = 0; so->listIndex = 0;
so->lists = palloc(maxProbes * sizeof(IvfflatScanList));
scan->opaque = so; scan->opaque = so;
@@ -409,6 +410,7 @@ ivfflatendscan(IndexScanDesc scan)
tuplesort_end(so->sortstate); tuplesort_end(so->sortstate);
FreeAccessStrategy(so->bas); FreeAccessStrategy(so->bas);
FreeTupleDesc(so->tupdesc); FreeTupleDesc(so->tupdesc);
pfree(so->lists);
/* TODO Free vslot and mslot without freeing TupleDesc */ /* TODO Free vslot and mslot without freeing TupleDesc */