Update SQL definitions to prepare for drain node functionality (#3179)

pull/3194/head
Jelte Fennema 2019-11-15 10:11:56 +01:00 committed by GitHub
parent 4b9b4b0995
commit a8bd2d58f5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 57 additions and 18 deletions

View File

@ -4,6 +4,8 @@ COMMENT ON COLUMN pg_catalog.pg_dist_node.shouldhaveshards IS
#include "udfs/master_set_node_property/9.1-1.sql" #include "udfs/master_set_node_property/9.1-1.sql"
#include "udfs/master_drain_node/9.1-1.sql" #include "udfs/master_drain_node/9.1-1.sql"
#include "udfs/rebalance_table_shards/9.1-1.sql"
#include "udfs/get_rebalance_table_shards_plan/9.1-1.sql"
-- we don't maintain replication factor of reference tables anymore and just -- we don't maintain replication factor of reference tables anymore and just
-- use -1 instead. -- use -1 instead.

View File

@ -0,0 +1,23 @@
-- 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.
--
DROP FUNCTION pg_catalog.get_rebalance_table_shards_plan;
CREATE OR REPLACE FUNCTION pg_catalog.get_rebalance_table_shards_plan(
relation regclass default NULL,
threshold float4 default 0,
max_shard_moves int default 1000000,
excluded_shard_list bigint[] default '{}',
drain_only boolean default false)
RETURNS TABLE (table_name regclass,
shardid bigint,
shard_size bigint,
sourcename text,
sourceport int,
targetname text,
targetport int)
AS 'MODULE_PATHNAME'
LANGUAGE C VOLATILE;
COMMENT ON FUNCTION pg_catalog.get_rebalance_table_shards_plan(regclass, float4, int, bigint[], boolean)
IS 'returns the list of shard placement moves to be done on a rebalance operation';

View File

@ -3,11 +3,13 @@
-- to understand the impact of the change overall availability of the application and -- to understand the impact of the change overall availability of the application and
-- network trafic. -- network trafic.
-- --
DROP FUNCTION pg_catalog.get_rebalance_table_shards_plan;
CREATE OR REPLACE FUNCTION pg_catalog.get_rebalance_table_shards_plan( CREATE OR REPLACE FUNCTION pg_catalog.get_rebalance_table_shards_plan(
relation regclass, relation regclass default NULL,
threshold float4 default 0, threshold float4 default 0,
max_shard_moves int default 1000000, max_shard_moves int default 1000000,
excluded_shard_list bigint[] default '{}') excluded_shard_list bigint[] default '{}',
drain_only boolean default false)
RETURNS TABLE (table_name regclass, RETURNS TABLE (table_name regclass,
shardid bigint, shardid bigint,
shard_size bigint, shard_size bigint,
@ -16,6 +18,6 @@ CREATE OR REPLACE FUNCTION pg_catalog.get_rebalance_table_shards_plan(
targetname text, targetname text,
targetport int) targetport int)
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE C STRICT VOLATILE; LANGUAGE C VOLATILE;
COMMENT ON FUNCTION pg_catalog.get_rebalance_table_shards_plan(regclass, float4, int, bigint[]) COMMENT ON FUNCTION pg_catalog.get_rebalance_table_shards_plan(regclass, float4, int, bigint[], boolean)
IS 'returns the list of shard placement moves to be done on a rebalance operation'; IS 'returns the list of shard placement moves to be done on a rebalance operation';

View File

@ -1,14 +1,11 @@
CREATE FUNCTION pg_catalog.master_drain_node( CREATE FUNCTION pg_catalog.master_drain_node(
nodename text, nodename text,
nodeport integer, nodeport integer,
threshold float4 default 0,
max_shard_moves int default 1000000,
excluded_shard_list bigint[] default '{}',
shard_transfer_mode citus.shard_transfer_mode default 'auto') shard_transfer_mode citus.shard_transfer_mode default 'auto')
RETURNS VOID RETURNS VOID
LANGUAGE C STRICT LANGUAGE C STRICT
AS 'MODULE_PATHNAME', $$master_drain_node$$; AS 'MODULE_PATHNAME', $$master_drain_node$$;
COMMENT ON FUNCTION pg_catalog.master_drain_node(text,int,float4,int,bigint[],citus.shard_transfer_mode) COMMENT ON FUNCTION pg_catalog.master_drain_node(text,int,citus.shard_transfer_mode)
IS 'mark a node to be drained of data and actually drain it as well'; IS 'mark a node to be drained of data and actually drain it as well';
REVOKE ALL ON FUNCTION pg_catalog.master_drain_node(text,int,float4,int,bigint[],citus.shard_transfer_mode) FROM PUBLIC; REVOKE ALL ON FUNCTION pg_catalog.master_drain_node(text,int,citus.shard_transfer_mode) FROM PUBLIC;

View File

@ -1,14 +1,11 @@
CREATE FUNCTION pg_catalog.master_drain_node( CREATE FUNCTION pg_catalog.master_drain_node(
nodename text, nodename text,
nodeport integer, nodeport integer,
threshold float4 default 0,
max_shard_moves int default 1000000,
excluded_shard_list bigint[] default '{}',
shard_transfer_mode citus.shard_transfer_mode default 'auto') shard_transfer_mode citus.shard_transfer_mode default 'auto')
RETURNS VOID RETURNS VOID
LANGUAGE C STRICT LANGUAGE C STRICT
AS 'MODULE_PATHNAME', $$master_drain_node$$; AS 'MODULE_PATHNAME', $$master_drain_node$$;
COMMENT ON FUNCTION pg_catalog.master_drain_node(text,int,float4,int,bigint[],citus.shard_transfer_mode) COMMENT ON FUNCTION pg_catalog.master_drain_node(text,int,citus.shard_transfer_mode)
IS 'mark a node to be drained of data and actually drain it as well'; IS 'mark a node to be drained of data and actually drain it as well';
REVOKE ALL ON FUNCTION pg_catalog.master_drain_node(text,int,float4,int,bigint[],citus.shard_transfer_mode) FROM PUBLIC; REVOKE ALL ON FUNCTION pg_catalog.master_drain_node(text,int,citus.shard_transfer_mode) FROM PUBLIC;

View File

@ -0,0 +1,16 @@
-- rebalance_table_shards uses the shard rebalancer's C UDF functions to rebalance
-- shards of the given relation.
--
DROP FUNCTION pg_catalog.rebalance_table_shards;
CREATE OR REPLACE FUNCTION pg_catalog.rebalance_table_shards(
relation regclass default NULL,
threshold float4 default 0,
max_shard_moves int default 1000000,
excluded_shard_list bigint[] default '{}',
shard_transfer_mode citus.shard_transfer_mode default 'auto',
drain_only boolean default false)
RETURNS VOID
AS 'MODULE_PATHNAME'
LANGUAGE C VOLATILE;
COMMENT ON FUNCTION pg_catalog.rebalance_table_shards(regclass, float4, int, bigint[], citus.shard_transfer_mode, boolean)
IS 'rebalance the shards of the given table across the worker nodes (including colocated shards of other tables)';

View File

@ -1,14 +1,16 @@
-- rebalance_table_shards uses the shard rebalancer's C UDF functions to rebalance -- rebalance_table_shards uses the shard rebalancer's C UDF functions to rebalance
-- shards of the given relation. -- shards of the given relation.
-- --
DROP FUNCTION pg_catalog.rebalance_table_shards;
CREATE OR REPLACE FUNCTION pg_catalog.rebalance_table_shards( CREATE OR REPLACE FUNCTION pg_catalog.rebalance_table_shards(
relation regclass, relation regclass default NULL,
threshold float4 default 0, threshold float4 default 0,
max_shard_moves int default 1000000, max_shard_moves int default 1000000,
excluded_shard_list bigint[] default '{}', excluded_shard_list bigint[] default '{}',
shard_transfer_mode citus.shard_transfer_mode default 'auto') shard_transfer_mode citus.shard_transfer_mode default 'auto',
drain_only boolean default false)
RETURNS VOID RETURNS VOID
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE C STRICT VOLATILE; LANGUAGE C VOLATILE;
COMMENT ON FUNCTION pg_catalog.rebalance_table_shards(regclass, float4, int, bigint[], citus.shard_transfer_mode) COMMENT ON FUNCTION pg_catalog.rebalance_table_shards(regclass, float4, int, bigint[], citus.shard_transfer_mode, boolean)
IS 'rebalance the shards of the given table across the worker nodes (including colocated shards of other tables)'; IS 'rebalance the shards of the given table across the worker nodes (including colocated shards of other tables)';