mirror of https://github.com/citusdata/citus.git
55 lines
1.4 KiB
C
55 lines
1.4 KiB
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* shard_split.h
|
|
*
|
|
* API for shard splits.
|
|
*
|
|
* Copyright (c) Citus Data, Inc.
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
|
|
#ifndef SHARDSPLIT_H_
|
|
#define SHARDSPLIT_H_
|
|
|
|
#include "distributed/utils/distribution_column_map.h"
|
|
|
|
/* Split Modes supported by Shard Split API */
|
|
typedef enum SplitMode
|
|
{
|
|
BLOCKING_SPLIT = 0,
|
|
NON_BLOCKING_SPLIT = 1,
|
|
AUTO_SPLIT = 2
|
|
} SplitMode;
|
|
|
|
|
|
/*
|
|
* User Scenario calling Split Shard API.
|
|
* The 'SplitOperation' type is used to customize info/error messages based on user scenario.
|
|
*/
|
|
typedef enum SplitOperation
|
|
{
|
|
SHARD_SPLIT_API = 0,
|
|
ISOLATE_TENANT_TO_NEW_SHARD,
|
|
CREATE_DISTRIBUTED_TABLE
|
|
} SplitOperation;
|
|
|
|
/*
|
|
* SplitShard API to split a given shard (or shard group) using split mode and
|
|
* specified split points to a set of destination nodes.
|
|
*/
|
|
extern void SplitShard(SplitMode splitMode,
|
|
SplitOperation splitOperation,
|
|
uint64 shardIdToSplit,
|
|
List *shardSplitPointsList,
|
|
List *nodeIdsForPlacementList,
|
|
DistributionColumnMap *distributionColumnOverrides,
|
|
List *colocatedShardIntervalList,
|
|
uint32 targetColocationId);
|
|
|
|
extern SplitMode LookupSplitMode(Oid shardTransferModeOid);
|
|
|
|
extern void ErrorIfMultipleNonblockingMoveSplitInTheSameTransaction(void);
|
|
|
|
#endif /* SHARDSPLIT_H_ */
|