diff --git a/src/backend/distributed/metadata/metadata_sync.c b/src/backend/distributed/metadata/metadata_sync.c index b025d0839..f443033e4 100644 --- a/src/backend/distributed/metadata/metadata_sync.c +++ b/src/backend/distributed/metadata/metadata_sync.c @@ -1346,6 +1346,23 @@ ShardListInsertCommand(List *shardIntervalList) } +/* + * ShardListDeleteCommand generates a command list that can be executed to delete + * shard and shard placement metadata for the given shard. + */ +List * +ShardDeleteCommandList(ShardInterval *shardInterval) +{ + uint64 shardId = shardInterval->shardId; + + StringInfo deleteShardCommand = makeStringInfo(); + appendStringInfo(deleteShardCommand, + "SELECT citus_internal_delete_shard_metadata(%ld);", shardId); + + return list_make1(deleteShardCommand->data); +} + + /* * NodeDeleteCommand generate a command that can be * executed to delete the metadata for a worker node. diff --git a/src/include/distributed/metadata_sync.h b/src/include/distributed/metadata_sync.h index e4cdf8830..a3e88d244 100644 --- a/src/include/distributed/metadata_sync.h +++ b/src/include/distributed/metadata_sync.h @@ -53,6 +53,7 @@ extern char * DistributionDeleteCommand(const char *schemaName, extern char * TableOwnerResetCommand(Oid distributedRelationId); extern char * NodeListInsertCommand(List *workerNodeList); extern List * ShardListInsertCommand(List *shardIntervalList); +extern List * ShardDeleteCommandList(ShardInterval *shardInterval); extern char * NodeDeleteCommand(uint32 nodeId); extern char * NodeStateUpdateCommand(uint32 nodeId, bool isActive); extern char * ShouldHaveShardsUpdateCommand(uint32 nodeId, bool shouldHaveShards);