Skip to content

Commit 6af0a43

Browse files
committed
Added InitBuildSortState function [skip ci]
1 parent ffcb90d commit 6af0a43

File tree

1 file changed

+16
-14
lines changed

1 file changed

+16
-14
lines changed

src/ivfbuild.c

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -562,6 +562,20 @@ PrintKmeansMetrics(IvfflatBuildState * buildstate)
562562
}
563563
#endif
564564

565+
/*
566+
* Initialize build sort state
567+
*/
568+
static Tuplesortstate *
569+
InitBuildSortState(TupleDesc tupdesc, int memory, SortCoordinate coordinate)
570+
{
571+
AttrNumber attNums[] = {1};
572+
Oid sortOperators[] = {Int4LessOperator};
573+
Oid sortCollations[] = {InvalidOid};
574+
bool nullsFirstFlags[] = {false};
575+
576+
return tuplesort_begin_heap(tupdesc, 1, attNums, sortOperators, sortCollations, nullsFirstFlags, memory, coordinate, false);
577+
}
578+
565579
/*
566580
* Within leader, wait for end of heap scan
567581
*/
@@ -609,12 +623,6 @@ IvfflatParallelScanAndSort(IvfflatSpool * ivfspool, IvfflatShared * ivfshared, S
609623
double reltuples;
610624
IndexInfo *indexInfo;
611625

612-
/* Sort options, which must match AssignTuples */
613-
AttrNumber attNums[] = {1};
614-
Oid sortOperators[] = {Int4LessOperator};
615-
Oid sortCollations[] = {InvalidOid};
616-
bool nullsFirstFlags[] = {false};
617-
618626
/* Initialize local tuplesort coordination state */
619627
coordinate = palloc0(sizeof(SortCoordinateData));
620628
coordinate->isWorker = true;
@@ -627,7 +635,7 @@ IvfflatParallelScanAndSort(IvfflatSpool * ivfspool, IvfflatShared * ivfshared, S
627635
InitBuildState(&buildstate, ivfspool->heap, ivfspool->index, indexInfo);
628636
memcpy(buildstate.centers->items, ivfcenters, buildstate.centers->itemsize * buildstate.centers->maxlen);
629637
buildstate.centers->length = buildstate.centers->maxlen;
630-
ivfspool->sortstate = tuplesort_begin_heap(buildstate.tupdesc, 1, attNums, sortOperators, sortCollations, nullsFirstFlags, sortmem, coordinate, false);
638+
ivfspool->sortstate = InitBuildSortState(buildstate.tupdesc, sortmem, coordinate);
631639
buildstate.sortstate = ivfspool->sortstate;
632640
scan = table_beginscan_parallel(ivfspool->heap,
633641
ParallelTableScanFromIvfflatShared(ivfshared));
@@ -924,12 +932,6 @@ AssignTuples(IvfflatBuildState * buildstate)
924932
int parallel_workers = 0;
925933
SortCoordinate coordinate = NULL;
926934

927-
/* Sort options, which must match IvfflatParallelScanAndSort */
928-
AttrNumber attNums[] = {1};
929-
Oid sortOperators[] = {Int4LessOperator};
930-
Oid sortCollations[] = {InvalidOid};
931-
bool nullsFirstFlags[] = {false};
932-
933935
pgstat_progress_update_param(PROGRESS_CREATEIDX_SUBPHASE, PROGRESS_IVFFLAT_PHASE_ASSIGN);
934936

935937
/* Calculate parallel workers */
@@ -950,7 +952,7 @@ AssignTuples(IvfflatBuildState * buildstate)
950952
}
951953

952954
/* Begin serial/leader tuplesort */
953-
buildstate->sortstate = tuplesort_begin_heap(buildstate->tupdesc, 1, attNums, sortOperators, sortCollations, nullsFirstFlags, maintenance_work_mem, coordinate, false);
955+
buildstate->sortstate = InitBuildSortState(buildstate->tupdesc, maintenance_work_mem, coordinate);
954956

955957
/* Add tuples to sort */
956958
if (buildstate->heap != NULL)

0 commit comments

Comments
 (0)