citus/src/include/distributed/shardsplit_logical_replicat...

53 lines
1.9 KiB
C

/*-------------------------------------------------------------------------
*
* shardsplit_logical_replication.h
*
* Function declarations for logically replicating shard to split children.
*
* Copyright (c) Citus Data, Inc.
*
*-------------------------------------------------------------------------
*/
#ifndef SHARDSPLIT_LOGICAL_REPLICATION_H
#define SHARDSPLIT_LOGICAL_REPLICATION_H
#include "distributed/metadata_utility.h"
#include "distributed/multi_logical_replication.h"
#include "distributed/worker_manager.h"
/*
* GroupedShardSplitInfos groups all ShardSplitInfos belonging to the same node
* and table owner together. This data structure its only purpose is creating a
* hashmap that allows us to search ShardSplitInfos by node and owner.
*/
typedef struct GroupedShardSplitInfos
{
NodeAndOwner key;
List *shardSplitInfoList;
} GroupedShardSplitInfos;
/* Functions for subscriber metadata management */
extern List * PopulateShardSplitSubscriptionsMetadataList(HTAB *shardSplitInfoHashMap,
List *replicationSlotInfoList,
List *
shardGroupSplitIntervalListList,
List *workersForPlacementList);
extern HTAB * CreateShardSplitInfoMapForPublication(List *
sourceColocatedShardIntervalList,
List *
shardGroupSplitIntervalListList,
List *destinationWorkerNodesList);
/* Functions to drop publisher-subscriber resources */
extern void DropAllShardSplitLeftOvers(WorkerNode *sourceNode,
HTAB *shardSplitMapOfPublications);
extern void DropShardSplitPublications(MultiConnection *sourceConnection,
HTAB *shardInfoHashMapForPublication);
extern void DropShardSplitSubsriptions(List *shardSplitSubscribersMetadataList);
extern void DropShardSplitReplicationSlots(MultiConnection *sourceConnection,
List *replicationSlotInfoList);
#endif /* SHARDSPLIT_LOGICAL_REPLICATION_H */