mirror of https://github.com/citusdata/citus.git
Add shard rebalancer stubs
parent
58012054c9
commit
d6deb062aa
|
@ -231,3 +231,77 @@ COMMENT ON FUNCTION pg_catalog.citus_finish_pg_upgrade()
|
||||||
* by the operator.
|
* by the operator.
|
||||||
*/
|
*/
|
||||||
ALTER TABLE pg_dist_poolinfo DROP CONSTRAINT pg_dist_poolinfo_nodeid_fkey;
|
ALTER TABLE pg_dist_poolinfo DROP CONSTRAINT pg_dist_poolinfo_nodeid_fkey;
|
||||||
|
|
||||||
|
SET search_path = 'pg_catalog';
|
||||||
|
|
||||||
|
DROP EXTENSION IF EXISTS shard_rebalancer;
|
||||||
|
|
||||||
|
-- get_rebalance_table_shards_plan shows the actual events that will be performed
|
||||||
|
-- if a rebalance operation will be performed with the same arguments, which allows users
|
||||||
|
-- to understand the impact of the change overall availability of the application and
|
||||||
|
-- network trafic.
|
||||||
|
--
|
||||||
|
CREATE OR REPLACE FUNCTION get_rebalance_table_shards_plan(relation regclass,
|
||||||
|
threshold float4 default 0.1,
|
||||||
|
max_shard_moves int default 1000000,
|
||||||
|
excluded_shard_list bigint[] default '{}')
|
||||||
|
RETURNS TABLE (table_name regclass,
|
||||||
|
shardid bigint,
|
||||||
|
shard_size bigint,
|
||||||
|
sourcename text,
|
||||||
|
sourceport int,
|
||||||
|
targetname text,
|
||||||
|
targetport int)
|
||||||
|
AS 'MODULE_PATHNAME'
|
||||||
|
LANGUAGE C STRICT VOLATILE;
|
||||||
|
COMMENT ON FUNCTION get_rebalance_table_shards_plan(regclass, float4, int, bigint[])
|
||||||
|
IS 'returns the list of shard placement moves to be done on a rebalance operation';
|
||||||
|
|
||||||
|
-- get_rebalance_progress returns the list of shard placement move operations along with
|
||||||
|
-- their progressions for ongoing rebalance operations.
|
||||||
|
--
|
||||||
|
CREATE OR REPLACE FUNCTION get_rebalance_progress()
|
||||||
|
RETURNS TABLE(sessionid integer,
|
||||||
|
table_name regclass,
|
||||||
|
shardid bigint,
|
||||||
|
shard_size bigint,
|
||||||
|
sourcename text,
|
||||||
|
sourceport int,
|
||||||
|
targetname text,
|
||||||
|
targetport int,
|
||||||
|
progress bigint)
|
||||||
|
AS 'MODULE_PATHNAME'
|
||||||
|
LANGUAGE C STRICT;
|
||||||
|
COMMENT ON FUNCTION get_rebalance_progress()
|
||||||
|
IS 'provides progress information about the ongoing rebalance operations';
|
||||||
|
|
||||||
|
|
||||||
|
-- replicate_table_shards uses the shard rebalancer's C UDF functions to replicate
|
||||||
|
-- under-replicated shards of the given table.
|
||||||
|
--
|
||||||
|
CREATE FUNCTION replicate_table_shards(relation regclass,
|
||||||
|
shard_replication_factor int default current_setting('citus.shard_replication_factor')::int,
|
||||||
|
max_shard_copies int default 1000000,
|
||||||
|
excluded_shard_list bigint[] default '{}',
|
||||||
|
shard_transfer_mode citus.shard_transfer_mode default 'auto')
|
||||||
|
RETURNS VOID
|
||||||
|
AS 'MODULE_PATHNAME'
|
||||||
|
LANGUAGE C STRICT;
|
||||||
|
COMMENT ON FUNCTION replicate_table_shards(regclass, int, int, bigint[], citus.shard_transfer_mode)
|
||||||
|
IS 'replicates under replicated shards of the the given table';
|
||||||
|
|
||||||
|
-- rebalance_table_shards uses the shard rebalancer's C UDF functions to rebalance
|
||||||
|
-- shards of the given relation.
|
||||||
|
--
|
||||||
|
CREATE OR REPLACE FUNCTION rebalance_table_shards(relation regclass,
|
||||||
|
threshold float4 default 0,
|
||||||
|
max_shard_moves int default 1000000,
|
||||||
|
excluded_shard_list bigint[] default '{}',
|
||||||
|
shard_transfer_mode citus.shard_transfer_mode default 'auto')
|
||||||
|
RETURNS VOID
|
||||||
|
AS 'MODULE_PATHNAME'
|
||||||
|
LANGUAGE C STRICT VOLATILE;
|
||||||
|
COMMENT ON FUNCTION rebalance_table_shards(regclass, float4, int, bigint[], citus.shard_transfer_mode)
|
||||||
|
IS 'rebalance the shards of the given table across the worker nodes (including colocated shards of other tables)';
|
||||||
|
|
||||||
|
RESET search_path;
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
/*-------------------------------------------------------------------------
|
||||||
|
*
|
||||||
|
* shard_rebalancer.c
|
||||||
|
*
|
||||||
|
* Function definitions for the shard rebalancer tool.
|
||||||
|
*
|
||||||
|
* Copyright (c) 2019, Citus Data, Inc.
|
||||||
|
*
|
||||||
|
* $Id$
|
||||||
|
*
|
||||||
|
*-------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "distributed/enterprise.h"
|
||||||
|
|
||||||
|
NOT_SUPPORTED_IN_COMMUNITY(rebalance_table_shards);
|
||||||
|
NOT_SUPPORTED_IN_COMMUNITY(replicate_table_shards);
|
||||||
|
NOT_SUPPORTED_IN_COMMUNITY(get_rebalance_table_shards_plan);
|
||||||
|
NOT_SUPPORTED_IN_COMMUNITY(get_rebalance_progress);
|
|
@ -0,0 +1,26 @@
|
||||||
|
/*-------------------------------------------------------------------------
|
||||||
|
*
|
||||||
|
* enterprise.h
|
||||||
|
*
|
||||||
|
* Utilities related to enterprise code in the community version.
|
||||||
|
*
|
||||||
|
* Copyright (c) 2014-2016, Citus Data, Inc.
|
||||||
|
*
|
||||||
|
*-------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef CITUS_ENTERPRISE_H
|
||||||
|
#define CITUS_ENTERPRISE_H
|
||||||
|
|
||||||
|
#include "postgres.h"
|
||||||
|
#include "fmgr.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define NOT_SUPPORTED_IN_COMMUNITY(name) \
|
||||||
|
PG_FUNCTION_INFO_V1(name); \
|
||||||
|
Datum name(PG_FUNCTION_ARGS) { \
|
||||||
|
ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), \
|
||||||
|
errmsg(# name "() is only supported on Citus Enterprise"))); \
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in New Issue