[performance improvement] remove duplicate LoadShardList call

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.

Signed-off-by: Zhao Junwang <zhjwpku@gmail.com>
pull/7380/head
Zhao Junwang 2023-12-13 15:19:27 +08:00
parent dbdde111c1
commit 8a66445d03
3 changed files with 5 additions and 8 deletions

View File

@ -380,7 +380,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_ptr(shardIdPointer, shardIntervalList)
foreach_ptr(shardIdPointer, shardList)
{
uint64 shardId = *shardIdPointer;
shardPlacementList = ShardPlacementListSortedByWorker(shardId);
shardPlacementList = ShardPlacementList(shardId);
if (list_length(shardPlacementList) != 1)
{