mirror of https://github.com/citusdata/citus.git
46 lines
1.7 KiB
C
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);
|