You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudberry.apache.org by ch...@apache.org on 2025/09/08 02:03:18 UTC

(cloudberry) branch cbdb-postgres-merge updated: Fix conflict for untils/sort

This is an automated email from the ASF dual-hosted git repository.

chenjinbao1989 pushed a commit to branch cbdb-postgres-merge
in repository https://gitbox.apache.org/repos/asf/cloudberry.git


The following commit(s) were added to refs/heads/cbdb-postgres-merge by this push:
     new e06c3e840d3 Fix conflict for untils/sort
e06c3e840d3 is described below

commit e06c3e840d3fa639c11af1503763053291043c8e
Author: Jinbao Chen <ch...@gmail.com>
AuthorDate: Mon Sep 8 10:03:05 2025 +0800

    Fix conflict for untils/sort
---
 src/backend/utils/sort/logtape.c          |   9 -
 src/backend/utils/sort/sharedtuplestore.c |  15 +-
 src/backend/utils/sort/tuplesort.c        | 493 +-----------------------------
 src/backend/utils/sort/tuplestore.c       |   4 -
 4 files changed, 6 insertions(+), 515 deletions(-)

diff --git a/src/backend/utils/sort/logtape.c b/src/backend/utils/sort/logtape.c
index 375a966051d..96a8dac350a 100644
--- a/src/backend/utils/sort/logtape.c
+++ b/src/backend/utils/sort/logtape.c
@@ -338,7 +338,6 @@ ltsReadFillBuffer(LogicalTape *lt)
 	return (lt->nbytes > 0);
 }
 
-<<<<<<< HEAD
 static inline void
 swap_nodes(long *heap, unsigned long a, unsigned long b)
 {
@@ -349,8 +348,6 @@ swap_nodes(long *heap, unsigned long a, unsigned long b)
 	heap[b] = swap;
 }
 
-=======
->>>>>>> REL_16_9
 static inline unsigned long
 left_offset(unsigned long i)
 {
@@ -743,7 +740,6 @@ ltsCreateTape(LogicalTapeSet *lts)
 /*
  * Close a logical tape.
  *
-<<<<<<< HEAD
  * Each tape is initialized in write state.  Serial callers pass ntapes,
  * NULL argument for shared, and -1 for worker.  Parallel worker callers
  * pass ntapes, a shared file handle, NULL shared argument,  and their own
@@ -814,11 +810,9 @@ LogicalTapeSetCreate(int ntapes, bool preallocate, TapeShare *shared,
 
 /*
  * Close a logical tape set and release all resources.
-=======
  * Note: This doesn't return any blocks to the free list!  You must read
  * the tape to the end first, to reuse the space.  In current use, though,
  * we only close tapes after fully reading them.
->>>>>>> REL_16_9
  */
 void
 LogicalTapeClose(LogicalTape *lt)
@@ -1272,7 +1266,6 @@ LogicalTapeTell(LogicalTape *lt, long *blocknum, int *offset)
 long
 LogicalTapeSetBlocks(LogicalTapeSet *lts)
 {
-<<<<<<< HEAD
 #if 0
 #ifdef USE_ASSERT_CHECKING
 	for (int i = 0; i < lts->nTapes; i++)
@@ -1283,7 +1276,5 @@ LogicalTapeSetBlocks(LogicalTapeSet *lts)
 	}
 #endif
 #endif
-=======
->>>>>>> REL_16_9
 	return lts->nBlocksWritten - lts->nHoleBlocks;
 }
diff --git a/src/backend/utils/sort/sharedtuplestore.c b/src/backend/utils/sort/sharedtuplestore.c
index d536458a477..b70cb43b0c5 100644
--- a/src/backend/utils/sort/sharedtuplestore.c
+++ b/src/backend/utils/sort/sharedtuplestore.c
@@ -308,24 +308,17 @@ sts_puttuple(SharedTuplestoreAccessor *accessor, void *meta_data,
 	{
 		SharedTuplestoreParticipant *participant;
 		char		name[MAXPGPATH];
-<<<<<<< HEAD
 		workfile_set	*work_set;
-
-		/* Create one.  Only this backend will write into it. */
-		sts_filename(name, accessor, accessor->participant);
-		work_set = workfile_mgr_create_set("SharedTupleStore", name, false /* hold pin */);
-		accessor->write_file = BufFileCreateShared(accessor->fileset, name, work_set);
-=======
 		MemoryContext oldcxt;
 
+
 		/* Create one.  Only this backend will write into it. */
 		sts_filename(name, accessor, accessor->participant);
-
 		oldcxt = MemoryContextSwitchTo(accessor->context);
-		accessor->write_file =
-			BufFileCreateFileSet(&accessor->fileset->fs, name);
+
+		work_set = workfile_mgr_create_set("SharedTupleStore", name, false /* hold pin */);
+		accessor->write_file = BufFileCreateFileSet(accessor->fileset->fs, name, work_set);
 		MemoryContextSwitchTo(oldcxt);
->>>>>>> REL_16_9
 
 		/* Set up the shared state for this backend's file. */
 		participant = &accessor->sts->participants[accessor->participant];
diff --git a/src/backend/utils/sort/tuplesort.c b/src/backend/utils/sort/tuplesort.c
index d9430a47cc4..a6b88dada6a 100644
--- a/src/backend/utils/sort/tuplesort.c
+++ b/src/backend/utils/sort/tuplesort.c
@@ -112,22 +112,9 @@
 #include "utils/rel.h"
 #include "utils/tuplesort.h"
 
-<<<<<<< HEAD
 #include "utils/faultinjector.h"
 
 
-/* sort-type codes for sort__start probes */
-#define HEAP_SORT		0
-#define INDEX_SORT		1
-#define DATUM_SORT		2
-#define CLUSTER_SORT	3
-
-/* Sort parallel code from state for sort__start probes */
-#define PARALLEL_SORT(state)	((state)->shared == NULL ? 0 : \
-								 (state)->worker >= 0 ? 1 : 2)
-
-=======
->>>>>>> REL_16_9
 /*
  * Initial size of memtuples array.  We're trying to select this size so that
  * array doesn't exceed ALLOCSET_SEPARATE_THRESHOLD and so that the overhead of
@@ -846,436 +833,6 @@ tuplesort_begin_batch(Tuplesortstate *state)
 	MemoryContextSwitchTo(oldcontext);
 }
 
-<<<<<<< HEAD
-Tuplesortstate *
-tuplesort_begin_heap(TupleDesc tupDesc,
-					 int nkeys, AttrNumber *attNums,
-					 Oid *sortOperators, Oid *sortCollations,
-					 bool *nullsFirstFlags,
-					 int workMem, SortCoordinate coordinate, bool randomAccess)
-{
-	Tuplesortstate *state = tuplesort_begin_common(workMem, coordinate,
-												   randomAccess);
-	MemoryContext oldcontext;
-	int			i;
-
-	oldcontext = MemoryContextSwitchTo(state->maincontext);
-
-	AssertArg(nkeys > 0);
-
-#ifdef TRACE_SORT
-	if (trace_sort)
-		elog(LOG,
-			 "begin tuple sort: nkeys = %d, workMem = %d, randomAccess = %c",
-			 nkeys, workMem, randomAccess ? 't' : 'f');
-#endif
-
-	state->nKeys = nkeys;
-
-	TRACE_POSTGRESQL_SORT_START(HEAP_SORT,
-								false,	/* no unique check */
-								nkeys,
-								workMem,
-								randomAccess,
-								PARALLEL_SORT(state));
-
-	state->comparetup = comparetup_heap;
-	state->copytup = copytup_heap;
-	state->writetup = writetup_heap;
-	state->readtup = readtup_heap;
-
-	state->tupDesc = tupDesc;	/* assume we need not copy tupDesc */
-	state->abbrevNext = 10;
-
-	/* Prepare SortSupport data for each column */
-	state->sortKeys = (SortSupport) palloc0(nkeys * sizeof(SortSupportData));
-
-	for (i = 0; i < nkeys; i++)
-	{
-		SortSupport sortKey = state->sortKeys + i;
-
-		AssertArg(attNums[i] != 0);
-		AssertArg(sortOperators[i] != 0);
-
-		sortKey->ssup_cxt = CurrentMemoryContext;
-		sortKey->ssup_collation = sortCollations[i];
-		sortKey->ssup_nulls_first = nullsFirstFlags[i];
-		sortKey->ssup_attno = attNums[i];
-		/* Convey if abbreviation optimization is applicable in principle */
-		sortKey->abbreviate = (i == 0);
-
-		PrepareSortSupportFromOrderingOp(sortOperators[i], sortKey);
-	}
-
-	/*
-	 * The "onlyKey" optimization cannot be used with abbreviated keys, since
-	 * tie-breaker comparisons may be required.  Typically, the optimization
-	 * is only of value to pass-by-value types anyway, whereas abbreviated
-	 * keys are typically only of value to pass-by-reference types.
-	 */
-	if (nkeys == 1 && !state->sortKeys->abbrev_converter)
-		state->onlyKey = state->sortKeys;
-
-	MemoryContextSwitchTo(oldcontext);
-
-	return state;
-}
-
-Tuplesortstate *
-tuplesort_begin_cluster(TupleDesc tupDesc,
-						Relation indexRel,
-						int workMem,
-						SortCoordinate coordinate, bool randomAccess)
-{
-	Tuplesortstate *state = tuplesort_begin_common(workMem, coordinate,
-												   randomAccess);
-	AttrNumber	leading;
-	BTScanInsert indexScanKey;
-	MemoryContext oldcontext;
-	int			i;
-
-	Assert(IsIndexAccessMethod(indexRel->rd_rel->relam, BTREE_AM_OID));
-
-	oldcontext = MemoryContextSwitchTo(state->maincontext);
-
-#ifdef TRACE_SORT
-	if (trace_sort)
-		elog(LOG,
-			 "begin tuple sort: nkeys = %d, workMem = %d, randomAccess = %c",
-			 RelationGetNumberOfAttributes(indexRel),
-			 workMem, randomAccess ? 't' : 'f');
-#endif
-
-	state->nKeys = IndexRelationGetNumberOfKeyAttributes(indexRel);
-
-	TRACE_POSTGRESQL_SORT_START(CLUSTER_SORT,
-								false,	/* no unique check */
-								state->nKeys,
-								workMem,
-								randomAccess,
-								PARALLEL_SORT(state));
-
-	state->comparetup = comparetup_cluster;
-	state->copytup = copytup_cluster;
-	state->writetup = writetup_cluster;
-	state->readtup = readtup_cluster;
-	state->abbrevNext = 10;
-
-	state->indexInfo = BuildIndexInfo(indexRel);
-	leading = state->indexInfo->ii_IndexAttrNumbers[0];
-
-	state->tupDesc = tupDesc;	/* assume we need not copy tupDesc */
-
-	indexScanKey = _bt_mkscankey(indexRel, NULL);
-
-	if (state->indexInfo->ii_Expressions != NULL)
-	{
-		TupleTableSlot *slot;
-		ExprContext *econtext;
-
-		/*
-		 * We will need to use FormIndexDatum to evaluate the index
-		 * expressions.  To do that, we need an EState, as well as a
-		 * TupleTableSlot to put the table tuples into.  The econtext's
-		 * scantuple has to point to that slot, too.
-		 */
-		state->estate = CreateExecutorState();
-		slot = MakeSingleTupleTableSlot(tupDesc, &TTSOpsHeapTuple);
-		econtext = GetPerTupleExprContext(state->estate);
-		econtext->ecxt_scantuple = slot;
-	}
-
-	/* Prepare SortSupport data for each column */
-	state->sortKeys = (SortSupport) palloc0(state->nKeys *
-											sizeof(SortSupportData));
-
-	for (i = 0; i < state->nKeys; i++)
-	{
-		SortSupport sortKey = state->sortKeys + i;
-		ScanKey		scanKey = indexScanKey->scankeys + i;
-		int16		strategy;
-
-		sortKey->ssup_cxt = CurrentMemoryContext;
-		sortKey->ssup_collation = scanKey->sk_collation;
-		sortKey->ssup_nulls_first =
-			(scanKey->sk_flags & SK_BT_NULLS_FIRST) != 0;
-		sortKey->ssup_attno = scanKey->sk_attno;
-		/* Convey if abbreviation optimization is applicable in principle */
-		sortKey->abbreviate = (i == 0 && leading != 0);
-
-		AssertState(sortKey->ssup_attno != 0);
-
-		strategy = (scanKey->sk_flags & SK_BT_DESC) != 0 ?
-			BTGreaterStrategyNumber : BTLessStrategyNumber;
-
-		PrepareSortSupportFromIndexRel(indexRel, strategy, sortKey);
-	}
-
-	pfree(indexScanKey);
-
-	MemoryContextSwitchTo(oldcontext);
-
-	return state;
-}
-
-Tuplesortstate *
-tuplesort_begin_index_btree(Relation heapRel,
-							Relation indexRel,
-							bool enforceUnique,
-							int workMem,
-							SortCoordinate coordinate,
-							bool randomAccess)
-{
-	Tuplesortstate *state = tuplesort_begin_common(workMem, coordinate,
-												   randomAccess);
-	BTScanInsert indexScanKey;
-	MemoryContext oldcontext;
-	int			i;
-
-	oldcontext = MemoryContextSwitchTo(state->maincontext);
-
-#ifdef TRACE_SORT
-	if (trace_sort)
-		elog(LOG,
-			 "begin index sort: unique = %c, workMem = %d, randomAccess = %c",
-			 enforceUnique ? 't' : 'f',
-			 workMem, randomAccess ? 't' : 'f');
-#endif
-
-	state->nKeys = IndexRelationGetNumberOfKeyAttributes(indexRel);
-
-	TRACE_POSTGRESQL_SORT_START(INDEX_SORT,
-								enforceUnique,
-								state->nKeys,
-								workMem,
-								randomAccess,
-								PARALLEL_SORT(state));
-
-	state->comparetup = comparetup_index_btree;
-	state->copytup = copytup_index;
-	state->writetup = writetup_index;
-	state->readtup = readtup_index;
-	state->abbrevNext = 10;
-
-	state->heapRel = heapRel;
-	state->indexRel = indexRel;
-	state->enforceUnique = enforceUnique;
-
-	indexScanKey = _bt_mkscankey(indexRel, NULL);
-
-	/* Prepare SortSupport data for each column */
-	state->sortKeys = (SortSupport) palloc0(state->nKeys *
-											sizeof(SortSupportData));
-
-	for (i = 0; i < state->nKeys; i++)
-	{
-		SortSupport sortKey = state->sortKeys + i;
-		ScanKey		scanKey = indexScanKey->scankeys + i;
-		int16		strategy;
-
-		sortKey->ssup_cxt = CurrentMemoryContext;
-		sortKey->ssup_collation = scanKey->sk_collation;
-		sortKey->ssup_nulls_first =
-			(scanKey->sk_flags & SK_BT_NULLS_FIRST) != 0;
-		sortKey->ssup_attno = scanKey->sk_attno;
-		/* Convey if abbreviation optimization is applicable in principle */
-		sortKey->abbreviate = (i == 0);
-
-		AssertState(sortKey->ssup_attno != 0);
-
-		strategy = (scanKey->sk_flags & SK_BT_DESC) != 0 ?
-			BTGreaterStrategyNumber : BTLessStrategyNumber;
-
-		PrepareSortSupportFromIndexRel(indexRel, strategy, sortKey);
-	}
-
-	pfree(indexScanKey);
-
-	MemoryContextSwitchTo(oldcontext);
-
-	return state;
-}
-
-Tuplesortstate *
-tuplesort_begin_index_hash(Relation heapRel,
-						   Relation indexRel,
-						   uint32 high_mask,
-						   uint32 low_mask,
-						   uint32 max_buckets,
-						   int workMem,
-						   SortCoordinate coordinate,
-						   bool randomAccess)
-{
-	Tuplesortstate *state = tuplesort_begin_common(workMem, coordinate,
-												   randomAccess);
-	MemoryContext oldcontext;
-
-	oldcontext = MemoryContextSwitchTo(state->maincontext);
-
-#ifdef TRACE_SORT
-	if (trace_sort)
-		elog(LOG,
-			 "begin index sort: high_mask = 0x%x, low_mask = 0x%x, "
-			 "max_buckets = 0x%x, workMem = %d, randomAccess = %c",
-			 high_mask,
-			 low_mask,
-			 max_buckets,
-			 workMem, randomAccess ? 't' : 'f');
-#endif
-
-	state->nKeys = 1;			/* Only one sort column, the hash code */
-
-	state->comparetup = comparetup_index_hash;
-	state->copytup = copytup_index;
-	state->writetup = writetup_index;
-	state->readtup = readtup_index;
-
-	state->heapRel = heapRel;
-	state->indexRel = indexRel;
-
-	state->high_mask = high_mask;
-	state->low_mask = low_mask;
-	state->max_buckets = max_buckets;
-
-	MemoryContextSwitchTo(oldcontext);
-
-	return state;
-}
-
-Tuplesortstate *
-tuplesort_begin_index_gist(Relation heapRel,
-						   Relation indexRel,
-						   int workMem,
-						   SortCoordinate coordinate,
-						   bool randomAccess)
-{
-	Tuplesortstate *state = tuplesort_begin_common(workMem, coordinate,
-												   randomAccess);
-	MemoryContext oldcontext;
-	int			i;
-
-	oldcontext = MemoryContextSwitchTo(state->sortcontext);
-
-#ifdef TRACE_SORT
-	if (trace_sort)
-		elog(LOG,
-			 "begin index sort: workMem = %d, randomAccess = %c",
-			 workMem, randomAccess ? 't' : 'f');
-#endif
-
-	state->nKeys = IndexRelationGetNumberOfKeyAttributes(indexRel);
-
-	state->comparetup = comparetup_index_btree;
-	state->copytup = copytup_index;
-	state->writetup = writetup_index;
-	state->readtup = readtup_index;
-
-	state->heapRel = heapRel;
-	state->indexRel = indexRel;
-
-	/* Prepare SortSupport data for each column */
-	state->sortKeys = (SortSupport) palloc0(state->nKeys *
-											sizeof(SortSupportData));
-
-	for (i = 0; i < state->nKeys; i++)
-	{
-		SortSupport sortKey = state->sortKeys + i;
-
-		sortKey->ssup_cxt = CurrentMemoryContext;
-		sortKey->ssup_collation = indexRel->rd_indcollation[i];
-		sortKey->ssup_nulls_first = false;
-		sortKey->ssup_attno = i + 1;
-		/* Convey if abbreviation optimization is applicable in principle */
-		sortKey->abbreviate = (i == 0);
-
-		AssertState(sortKey->ssup_attno != 0);
-
-		/* Look for a sort support function */
-		PrepareSortSupportFromGistIndexRel(indexRel, sortKey);
-	}
-
-	MemoryContextSwitchTo(oldcontext);
-
-	return state;
-}
-
-Tuplesortstate *
-tuplesort_begin_datum(Oid datumType, Oid sortOperator, Oid sortCollation,
-					  bool nullsFirstFlag, int workMem,
-					  SortCoordinate coordinate, bool randomAccess)
-{
-	Tuplesortstate *state = tuplesort_begin_common(workMem, coordinate,
-												   randomAccess);
-	MemoryContext oldcontext;
-	int16		typlen;
-	bool		typbyval;
-
-	oldcontext = MemoryContextSwitchTo(state->maincontext);
-
-#ifdef TRACE_SORT
-	if (trace_sort)
-		elog(LOG,
-			 "begin datum sort: workMem = %d, randomAccess = %c",
-			 workMem, randomAccess ? 't' : 'f');
-#endif
-
-	state->nKeys = 1;			/* always a one-column sort */
-
-	TRACE_POSTGRESQL_SORT_START(DATUM_SORT,
-								false,	/* no unique check */
-								1,
-								workMem,
-								randomAccess,
-								PARALLEL_SORT(state));
-
-	state->comparetup = comparetup_datum;
-	state->copytup = copytup_datum;
-	state->writetup = writetup_datum;
-	state->readtup = readtup_datum;
-	state->abbrevNext = 10;
-
-	state->datumType = datumType;
-
-	/* lookup necessary attributes of the datum type */
-	get_typlenbyval(datumType, &typlen, &typbyval);
-	state->datumTypeLen = typlen;
-	state->tuples = !typbyval;
-
-	/* Prepare SortSupport data */
-	state->sortKeys = (SortSupport) palloc0(sizeof(SortSupportData));
-
-	state->sortKeys->ssup_cxt = CurrentMemoryContext;
-	state->sortKeys->ssup_collation = sortCollation;
-	state->sortKeys->ssup_nulls_first = nullsFirstFlag;
-
-	/*
-	 * Abbreviation is possible here only for by-reference types.  In theory,
-	 * a pass-by-value datatype could have an abbreviated form that is cheaper
-	 * to compare.  In a tuple sort, we could support that, because we can
-	 * always extract the original datum from the tuple as needed.  Here, we
-	 * can't, because a datum sort only stores a single copy of the datum; the
-	 * "tuple" field of each SortTuple is NULL.
-	 */
-	state->sortKeys->abbreviate = !typbyval;
-
-	PrepareSortSupportFromOrderingOp(sortOperator, state->sortKeys);
-
-	/*
-	 * The "onlyKey" optimization cannot be used with abbreviated keys, since
-	 * tie-breaker comparisons may be required.  Typically, the optimization
-	 * is only of value to pass-by-value types anyway, whereas abbreviated
-	 * keys are typically only of value to pass-by-reference types.
-	 */
-	if (!state->sortKeys->abbrev_converter)
-		state->onlyKey = state->sortKeys;
-
-	MemoryContextSwitchTo(oldcontext);
-
-	return state;
-}
-
-=======
->>>>>>> REL_16_9
 /*
  * tuplesort_set_bound
  *
@@ -2682,46 +2239,8 @@ mergeruns(Tuplesortstate *state)
 		/* Select an output tape */
 		selectnewtape(state);
 
-<<<<<<< HEAD
-			if (QueryFinishPending)
-			{
-				/* pretend we are done */
-				state->status = TSS_SORTEDONTAPE;
-				return;
-			}
-
-			for (tapenum = 0; tapenum < state->tapeRange; tapenum++)
-			{
-				if (state->tp_dummy[tapenum] == 0)
-				{
-					allDummy = false;
-					break;
-				}
-			}
-
-			if (allDummy)
-			{
-				state->tp_dummy[state->tapeRange]++;
-				for (tapenum = 0; tapenum < state->tapeRange; tapenum++)
-					state->tp_dummy[tapenum]--;
-			}
-			else
-				mergeonerun(state);
-		}
-
-		/* Step D6: decrease level */
-		if (--state->Level == 0)
-			break;
-		/* rewind output tape T to use as new input */
-		LogicalTapeRewindForRead(state->tapeset, state->tp_tapenum[state->tapeRange],
-								 state->read_buffer_size);
-		/* rewind used-up input tape P, and prepare it for write pass */
-		LogicalTapeRewindForWrite(state->tapeset, state->tp_tapenum[state->tapeRange - 1]);
-		state->tp_runs[state->tapeRange - 1] = 0;
-=======
 		/* Merge one run from each input tape. */
 		mergeonerun(state);
->>>>>>> REL_16_9
 
 		/*
 		 * If the input tapes are empty, and we output only one output run,
@@ -2921,7 +2440,7 @@ dumptuples(Tuplesortstate *state, bool alltuples)
 	memtupwrite = state->memtupcount;
 	for (i = 0; i < memtupwrite; i++)
 	{
-<<<<<<< HEAD
+		SortTuple  *stup;
 #ifdef FAULT_INJECTOR
 		/*
 		 * We're injecting an interrupt here. We have to hold interrupts while we're
@@ -2940,11 +2459,7 @@ dumptuples(Tuplesortstate *state, bool alltuples)
 		{
 			break;
 		}
-		WRITETUP(state, state->tp_tapenum[state->destTape],
-				 &state->memtuples[i]);
-		state->memtupcount--;
-=======
-		SortTuple  *stup = &state->memtuples[i];
+		stup = &state->memtuples[i];
 
 		WRITETUP(state, state->destTape, stup);
 
@@ -2954,7 +2469,6 @@ dumptuples(Tuplesortstate *state, bool alltuples)
 		 */
 		if (stup->tuple != NULL)
 			FREEMEM(state, GetMemoryChunkSpace(stup->tuple));
->>>>>>> REL_16_9
 	}
 
 	state->memtupcount = 0;
@@ -3739,8 +3253,6 @@ free_sort_tuple(Tuplesortstate *state, SortTuple *stup)
 		pfree(stup->tuple);
 		stup->tuple = NULL;
 	}
-<<<<<<< HEAD
-=======
 }
 
 int
@@ -3782,5 +3294,4 @@ ssup_datum_int32_cmp(Datum x, Datum y, SortSupport ssup)
 		return 1;
 	else
 		return 0;
->>>>>>> REL_16_9
 }
diff --git a/src/backend/utils/sort/tuplestore.c b/src/backend/utils/sort/tuplestore.c
index 02cbf45fe76..eda911a0851 100644
--- a/src/backend/utils/sort/tuplestore.c
+++ b/src/backend/utils/sort/tuplestore.c
@@ -43,7 +43,6 @@
  * before switching to the other state or activating a different read pointer.
  *
  *
-<<<<<<< HEAD
  * Greenplum changes
  * -----------------
  *
@@ -67,10 +66,7 @@
  *
  * Portions Copyright (c) 2007-2010, Greenplum Inc.
  * Portions Copyright (c) 2012-Present VMware, Inc. or its affiliates.
- * Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group
-=======
  * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
->>>>>>> REL_16_9
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org