citus/src/include/distributed/shard_transfer.h

46 lines
1.7 KiB
C

/*-------------------------------------------------------------------------
*
* shard_transfer.h
* Code used to move shards around.
*
* Copyright (c) Citus Data, Inc.
*-------------------------------------------------------------------------
*/
#include "postgres.h"
#include "nodes/pg_list.h"
#include "distributed/shard_rebalancer.h"
extern Datum citus_move_shard_placement(PG_FUNCTION_ARGS);
extern Datum citus_move_shard_placement_with_nodeid(PG_FUNCTION_ARGS);
typedef enum
{
SHARD_TRANSFER_INVALID_FIRST = 0,
SHARD_TRANSFER_MOVE = 1,
SHARD_TRANSFER_COPY = 2
} ShardTransferType;
extern void TransferShards(int64 shardId,
char *sourceNodeName, int32 sourceNodePort,
char *targetNodeName, int32 targetNodePort,
char shardReplicationMode, ShardTransferType transferType);
extern uint64 ShardListSizeInBytes(List *colocatedShardList,
char *workerNodeName, uint32 workerNodePort);
extern void ErrorIfMoveUnsupportedTableType(Oid relationId);
extern void EnsureTableListOwner(List *tableIdList);
extern void CopyShardsToNode(WorkerNode *sourceNode, WorkerNode *targetNode,
List *shardIntervalList, char *snapshotName);
extern void VerifyTablesHaveReplicaIdentity(List *colocatedTableList);
extern bool RelationCanPublishAllModifications(Oid relationId);
extern void UpdatePlacementUpdateStatusForShardIntervalList(List *shardIntervalList,
char *sourceName,
int sourcePort,
PlacementUpdateStatus status);
extern void InsertDeferredDropCleanupRecordsForShards(List *shardIntervalList);
extern void InsertCleanupRecordsForShardPlacementsOnNode(List *shardIntervalList,
int32 groupId);
extern void LockColocatedRelationsForMove(List *colocatedTableList);