[performance improvement] remove duplicate LoadShardList call (#7380)

LoadShardList is called twice, which is not neccessary, and there is no
need to sort the shard placement list since we only want to know the list
length.

(cherry picked from commit 8e979f7ac6)
pull/7840/head
zhjwpku 2024-01-10 18:15:19 +08:00 committed by naisila
parent 01945bd3a3
commit f42e8556ec
3 changed files with 5 additions and 8 deletions

View File

@ -379,7 +379,7 @@ EnsureModificationsCanRun(void)
/*
* EnsureModificationsCanRunOnRelation firsts calls into EnsureModificationsCanRun() and
* EnsureModificationsCanRunOnRelation first calls into EnsureModificationsCanRun() and
* then does one more additional check. The additional check is to give a proper error
* message if any relation that is modified is replicated, as replicated tables use
* 2PC and 2PC cannot happen when recovery is in progress.

View File

@ -362,10 +362,8 @@ ErrorIfShardPlacementsNotColocated(Oid leftRelationId, Oid rightRelationId)
leftRelationName, rightRelationName)));
}
List *leftPlacementList = ShardPlacementListSortedByWorker(
leftShardId);
List *rightPlacementList = ShardPlacementListSortedByWorker(
rightShardId);
List *leftPlacementList = ShardPlacementList(leftShardId);
List *rightPlacementList = ShardPlacementList(rightShardId);
if (list_length(leftPlacementList) != list_length(rightPlacementList))
{

View File

@ -470,12 +470,11 @@ SingleReplicatedTable(Oid relationId)
return false;
}
List *shardIntervalList = LoadShardList(relationId);
uint64 *shardIdPointer = NULL;
foreach_declared_ptr(shardIdPointer, shardIntervalList)
foreach_declared_ptr(shardIdPointer, shardList)
{
uint64 shardId = *shardIdPointer;
shardPlacementList = ShardPlacementListSortedByWorker(shardId);
shardPlacementList = ShardPlacementList(shardId);
if (list_length(shardPlacementList) != 1)
{