mirror of
https://github.com/pgvector/pgvector.git
synced 2026-06-06 05:51:21 +08:00
Added InitBuildSortState function [skip ci]
This commit is contained in:
@@ -562,6 +562,20 @@ PrintKmeansMetrics(IvfflatBuildState * buildstate)
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Initialize build sort state
|
||||
*/
|
||||
static Tuplesortstate *
|
||||
InitBuildSortState(TupleDesc tupdesc, int memory, SortCoordinate coordinate)
|
||||
{
|
||||
AttrNumber attNums[] = {1};
|
||||
Oid sortOperators[] = {Int4LessOperator};
|
||||
Oid sortCollations[] = {InvalidOid};
|
||||
bool nullsFirstFlags[] = {false};
|
||||
|
||||
return tuplesort_begin_heap(tupdesc, 1, attNums, sortOperators, sortCollations, nullsFirstFlags, memory, coordinate, false);
|
||||
}
|
||||
|
||||
/*
|
||||
* Within leader, wait for end of heap scan
|
||||
*/
|
||||
@@ -609,12 +623,6 @@ IvfflatParallelScanAndSort(IvfflatSpool * ivfspool, IvfflatShared * ivfshared, S
|
||||
double reltuples;
|
||||
IndexInfo *indexInfo;
|
||||
|
||||
/* Sort options, which must match AssignTuples */
|
||||
AttrNumber attNums[] = {1};
|
||||
Oid sortOperators[] = {Int4LessOperator};
|
||||
Oid sortCollations[] = {InvalidOid};
|
||||
bool nullsFirstFlags[] = {false};
|
||||
|
||||
/* Initialize local tuplesort coordination state */
|
||||
coordinate = palloc0(sizeof(SortCoordinateData));
|
||||
coordinate->isWorker = true;
|
||||
@@ -627,7 +635,7 @@ IvfflatParallelScanAndSort(IvfflatSpool * ivfspool, IvfflatShared * ivfshared, S
|
||||
InitBuildState(&buildstate, ivfspool->heap, ivfspool->index, indexInfo);
|
||||
memcpy(buildstate.centers->items, ivfcenters, buildstate.centers->itemsize * buildstate.centers->maxlen);
|
||||
buildstate.centers->length = buildstate.centers->maxlen;
|
||||
ivfspool->sortstate = tuplesort_begin_heap(buildstate.tupdesc, 1, attNums, sortOperators, sortCollations, nullsFirstFlags, sortmem, coordinate, false);
|
||||
ivfspool->sortstate = InitBuildSortState(buildstate.tupdesc, sortmem, coordinate);
|
||||
buildstate.sortstate = ivfspool->sortstate;
|
||||
scan = table_beginscan_parallel(ivfspool->heap,
|
||||
ParallelTableScanFromIvfflatShared(ivfshared));
|
||||
@@ -924,12 +932,6 @@ AssignTuples(IvfflatBuildState * buildstate)
|
||||
int parallel_workers = 0;
|
||||
SortCoordinate coordinate = NULL;
|
||||
|
||||
/* Sort options, which must match IvfflatParallelScanAndSort */
|
||||
AttrNumber attNums[] = {1};
|
||||
Oid sortOperators[] = {Int4LessOperator};
|
||||
Oid sortCollations[] = {InvalidOid};
|
||||
bool nullsFirstFlags[] = {false};
|
||||
|
||||
pgstat_progress_update_param(PROGRESS_CREATEIDX_SUBPHASE, PROGRESS_IVFFLAT_PHASE_ASSIGN);
|
||||
|
||||
/* Calculate parallel workers */
|
||||
@@ -950,7 +952,7 @@ AssignTuples(IvfflatBuildState * buildstate)
|
||||
}
|
||||
|
||||
/* Begin serial/leader tuplesort */
|
||||
buildstate->sortstate = tuplesort_begin_heap(buildstate->tupdesc, 1, attNums, sortOperators, sortCollations, nullsFirstFlags, maintenance_work_mem, coordinate, false);
|
||||
buildstate->sortstate = InitBuildSortState(buildstate->tupdesc, maintenance_work_mem, coordinate);
|
||||
|
||||
/* Add tuples to sort */
|
||||
if (buildstate->heap != NULL)
|
||||
|
||||
Reference in New Issue
Block a user