mirror of https://github.com/citusdata/citus.git
Move update_none_dist_table_metadata, mark_node_not_synced, unregister_tenant_schema_globally, update_placement_metadata.
parent
594cb6f274
commit
d3313843ed
|
@ -4258,7 +4258,7 @@ UpdateNoneDistTableMetadataCommand(Oid relationId, char replicationModel,
|
|||
{
|
||||
StringInfo command = makeStringInfo();
|
||||
appendStringInfo(command,
|
||||
"SELECT pg_catalog.citus_internal_update_none_dist_table_metadata(%s, '%c', %u, %s)",
|
||||
"SELECT citus_internal.update_none_dist_table_metadata(%s, '%c', %u, %s)",
|
||||
RemoteTableIdExpression(relationId), replicationModel, colocationId,
|
||||
autoConverted ? "true" : "false");
|
||||
|
||||
|
|
|
@ -1692,7 +1692,7 @@ EnsureParentSessionHasExclusiveLockOnPgDistNode(pid_t parentSessionPid)
|
|||
if (!parentHasExclusiveLock)
|
||||
{
|
||||
ereport(ERROR, (errmsg("lock is not held by the caller. Unexpected caller "
|
||||
"for citus_internal_mark_node_not_synced")));
|
||||
"for citus_internal.mark_node_not_synced")));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -2035,7 +2035,7 @@ UpdateColocatedShardPlacementMetadataOnWorkers(int64 shardId,
|
|||
StringInfo updateCommand = makeStringInfo();
|
||||
|
||||
appendStringInfo(updateCommand,
|
||||
"SELECT citus_internal_update_placement_metadata(%ld, %d, %d)",
|
||||
"SELECT citus_internal.update_placement_metadata(%ld, %d, %d)",
|
||||
colocatedShard->shardId,
|
||||
sourceGroupId, targetGroupId);
|
||||
SendCommandToWorkersWithMetadata(updateCommand->data);
|
||||
|
|
|
@ -38,3 +38,9 @@ REVOKE ALL ON FUNCTION citus_internal.start_management_transaction FROM PUBLIC;
|
|||
#include "udfs/citus_internal_delete_placement_metadata/12.2-1.sql"
|
||||
#include "udfs/citus_internal_delete_shard_metadata/12.2-1.sql"
|
||||
#include "udfs/citus_internal_delete_tenant_schema/12.2-1.sql"
|
||||
|
||||
#include "udfs/citus_internal_mark_node_not_synced/12.2-1.sql"
|
||||
#include "udfs/citus_internal_unregister_tenant_schema_globally/12.2-1.sql"
|
||||
#include "udfs/citus_drop_trigger/12.2-1.sql"
|
||||
#include "udfs/citus_internal_update_none_dist_table_metadata/12.2-1.sql"
|
||||
#include "udfs/citus_internal_update_placement_metadata/12.2-1.sql"
|
|
@ -35,3 +35,9 @@ DROP FUNCTION citus_internal.delete_partition_metadata(regclass);
|
|||
DROP FUNCTION citus_internal.delete_placement_metadata(bigint);
|
||||
DROP FUNCTION citus_internal.delete_shard_metadata(bigint);
|
||||
DROP FUNCTION citus_internal.delete_tenant_schema(oid);
|
||||
|
||||
DROP FUNCTION citus_internal.mark_node_not_synced(int, int);
|
||||
DROP FUNCTION citus_internal.unregister_tenant_schema_globally(oid, text);
|
||||
#include "../udfs/citus_drop_trigger/12.0-1.sql"
|
||||
DROP FUNCTION citus_internal.update_none_dist_table_metadata(oid, "char", bigint, boolean);
|
||||
DROP FUNCTION citus_internal.update_placement_metadata(bigint, integer, integer);
|
||||
|
|
|
@ -0,0 +1,68 @@
|
|||
CREATE OR REPLACE FUNCTION pg_catalog.citus_drop_trigger()
|
||||
RETURNS event_trigger
|
||||
LANGUAGE plpgsql
|
||||
SET search_path = pg_catalog
|
||||
AS $cdbdt$
|
||||
DECLARE
|
||||
constraint_event_count INTEGER;
|
||||
v_obj record;
|
||||
dropped_table_is_a_partition boolean := false;
|
||||
BEGIN
|
||||
FOR v_obj IN SELECT * FROM pg_event_trigger_dropped_objects()
|
||||
WHERE object_type IN ('table', 'foreign table')
|
||||
LOOP
|
||||
-- first drop the table and metadata on the workers
|
||||
-- then drop all the shards on the workers
|
||||
-- finally remove the pg_dist_partition entry on the coordinator
|
||||
PERFORM master_remove_distributed_table_metadata_from_workers(v_obj.objid, v_obj.schema_name, v_obj.object_name);
|
||||
|
||||
-- If both original and normal values are false, the dropped table was a partition
|
||||
-- that was dropped as a result of its parent being dropped
|
||||
-- NOTE: the other way around is not true:
|
||||
-- the table being a partition doesn't imply both original and normal values are false
|
||||
SELECT (v_obj.original = false AND v_obj.normal = false) INTO dropped_table_is_a_partition;
|
||||
|
||||
-- The partition's shards will be dropped when dropping the parent's shards, so we can skip:
|
||||
-- i.e. we call citus_drop_all_shards with drop_shards_metadata_only parameter set to true
|
||||
IF dropped_table_is_a_partition
|
||||
THEN
|
||||
PERFORM citus_drop_all_shards(v_obj.objid, v_obj.schema_name, v_obj.object_name, drop_shards_metadata_only := true);
|
||||
ELSE
|
||||
PERFORM citus_drop_all_shards(v_obj.objid, v_obj.schema_name, v_obj.object_name, drop_shards_metadata_only := false);
|
||||
END IF;
|
||||
|
||||
PERFORM master_remove_partition_metadata(v_obj.objid, v_obj.schema_name, v_obj.object_name);
|
||||
END LOOP;
|
||||
|
||||
FOR v_obj IN SELECT * FROM pg_event_trigger_dropped_objects()
|
||||
LOOP
|
||||
-- Remove entries from pg_catalog.pg_dist_schema for all dropped tenant schemas.
|
||||
-- Also delete the corresponding colocation group from pg_catalog.pg_dist_colocation.
|
||||
--
|
||||
-- Although normally we automatically delete the colocation groups when they become empty,
|
||||
-- we don't do so for the colocation groups that are created for tenant schemas. For this
|
||||
-- reason, here we need to delete the colocation group when the tenant schema is dropped.
|
||||
IF v_obj.object_type = 'schema' AND EXISTS (SELECT 1 FROM pg_catalog.pg_dist_schema WHERE schemaid = v_obj.objid)
|
||||
THEN
|
||||
PERFORM citus_internal.unregister_tenant_schema_globally(v_obj.objid, v_obj.object_name);
|
||||
END IF;
|
||||
|
||||
-- remove entries from citus.pg_dist_object for all dropped root (objsubid = 0) objects
|
||||
PERFORM master_unmark_object_distributed(v_obj.classid, v_obj.objid, v_obj.objsubid);
|
||||
END LOOP;
|
||||
|
||||
SELECT COUNT(*) INTO constraint_event_count
|
||||
FROM pg_event_trigger_dropped_objects()
|
||||
WHERE object_type IN ('table constraint');
|
||||
|
||||
IF constraint_event_count > 0
|
||||
THEN
|
||||
-- Tell utility hook that a table constraint is dropped so we might
|
||||
-- need to undistribute some of the citus local tables that are not
|
||||
-- connected to any reference tables.
|
||||
PERFORM notify_constraint_dropped();
|
||||
END IF;
|
||||
END;
|
||||
$cdbdt$;
|
||||
COMMENT ON FUNCTION pg_catalog.citus_drop_trigger()
|
||||
IS 'perform checks and actions at the end of DROP actions';
|
|
@ -44,7 +44,7 @@ BEGIN
|
|||
-- reason, here we need to delete the colocation group when the tenant schema is dropped.
|
||||
IF v_obj.object_type = 'schema' AND EXISTS (SELECT 1 FROM pg_catalog.pg_dist_schema WHERE schemaid = v_obj.objid)
|
||||
THEN
|
||||
PERFORM pg_catalog.citus_internal_unregister_tenant_schema_globally(v_obj.objid, v_obj.object_name);
|
||||
PERFORM citus_internal.unregister_tenant_schema_globally(v_obj.objid, v_obj.object_name);
|
||||
END IF;
|
||||
|
||||
-- remove entries from citus.pg_dist_object for all dropped root (objsubid = 0) objects
|
||||
|
|
13
src/backend/distributed/sql/udfs/citus_internal_mark_node_not_synced/12.2-1.sql
generated
Normal file
13
src/backend/distributed/sql/udfs/citus_internal_mark_node_not_synced/12.2-1.sql
generated
Normal file
|
@ -0,0 +1,13 @@
|
|||
CREATE OR REPLACE FUNCTION citus_internal.mark_node_not_synced(parent_pid int, nodeid int)
|
||||
RETURNS VOID
|
||||
LANGUAGE C STRICT
|
||||
AS 'MODULE_PATHNAME', $$citus_internal_mark_node_not_synced$$;
|
||||
COMMENT ON FUNCTION citus_internal.mark_node_not_synced(int, int)
|
||||
IS 'marks given node not synced by unsetting metadatasynced column at the start of the nontransactional sync.';
|
||||
|
||||
CREATE OR REPLACE FUNCTION pg_catalog.citus_internal_mark_node_not_synced(parent_pid int, nodeid int)
|
||||
RETURNS VOID
|
||||
LANGUAGE C STRICT
|
||||
AS 'MODULE_PATHNAME', $$citus_internal_mark_node_not_synced$$;
|
||||
COMMENT ON FUNCTION citus_internal_mark_node_not_synced(int, int)
|
||||
IS 'marks given node not synced by unsetting metadatasynced column at the start of the nontransactional sync.';
|
|
@ -1,3 +1,10 @@
|
|||
CREATE OR REPLACE FUNCTION citus_internal.mark_node_not_synced(parent_pid int, nodeid int)
|
||||
RETURNS VOID
|
||||
LANGUAGE C STRICT
|
||||
AS 'MODULE_PATHNAME', $$citus_internal_mark_node_not_synced$$;
|
||||
COMMENT ON FUNCTION citus_internal.mark_node_not_synced(int, int)
|
||||
IS 'marks given node not synced by unsetting metadatasynced column at the start of the nontransactional sync.';
|
||||
|
||||
CREATE OR REPLACE FUNCTION pg_catalog.citus_internal_mark_node_not_synced(parent_pid int, nodeid int)
|
||||
RETURNS VOID
|
||||
LANGUAGE C STRICT
|
||||
|
|
15
src/backend/distributed/sql/udfs/citus_internal_unregister_tenant_schema_globally/12.2-1.sql
generated
Normal file
15
src/backend/distributed/sql/udfs/citus_internal_unregister_tenant_schema_globally/12.2-1.sql
generated
Normal file
|
@ -0,0 +1,15 @@
|
|||
CREATE OR REPLACE FUNCTION citus_internal.unregister_tenant_schema_globally(schema_id Oid, schema_name text)
|
||||
RETURNS void
|
||||
LANGUAGE C
|
||||
VOLATILE
|
||||
AS 'MODULE_PATHNAME', $$citus_internal_unregister_tenant_schema_globally$$;
|
||||
COMMENT ON FUNCTION citus_internal.unregister_tenant_schema_globally(schema_id Oid, schema_name text) IS
|
||||
'Delete a tenant schema and the corresponding colocation group from metadata tables.';
|
||||
|
||||
CREATE OR REPLACE FUNCTION pg_catalog.citus_internal_unregister_tenant_schema_globally(schema_id Oid, schema_name text)
|
||||
RETURNS void
|
||||
LANGUAGE C
|
||||
VOLATILE
|
||||
AS 'MODULE_PATHNAME';
|
||||
COMMENT ON FUNCTION pg_catalog.citus_internal_unregister_tenant_schema_globally(schema_id Oid, schema_name text) IS
|
||||
'Delete a tenant schema and the corresponding colocation group from metadata tables.';
|
|
@ -1,3 +1,11 @@
|
|||
CREATE OR REPLACE FUNCTION citus_internal.unregister_tenant_schema_globally(schema_id Oid, schema_name text)
|
||||
RETURNS void
|
||||
LANGUAGE C
|
||||
VOLATILE
|
||||
AS 'MODULE_PATHNAME', $$citus_internal_unregister_tenant_schema_globally$$;
|
||||
COMMENT ON FUNCTION citus_internal.unregister_tenant_schema_globally(schema_id Oid, schema_name text) IS
|
||||
'Delete a tenant schema and the corresponding colocation group from metadata tables.';
|
||||
|
||||
CREATE OR REPLACE FUNCTION pg_catalog.citus_internal_unregister_tenant_schema_globally(schema_id Oid, schema_name text)
|
||||
RETURNS void
|
||||
LANGUAGE C
|
||||
|
|
23
src/backend/distributed/sql/udfs/citus_internal_update_none_dist_table_metadata/12.2-1.sql
generated
Normal file
23
src/backend/distributed/sql/udfs/citus_internal_update_none_dist_table_metadata/12.2-1.sql
generated
Normal file
|
@ -0,0 +1,23 @@
|
|||
CREATE OR REPLACE FUNCTION citus_internal.update_none_dist_table_metadata(
|
||||
relation_id oid,
|
||||
replication_model "char",
|
||||
colocation_id bigint,
|
||||
auto_converted boolean)
|
||||
RETURNS void
|
||||
LANGUAGE C
|
||||
VOLATILE
|
||||
AS 'MODULE_PATHNAME', $$citus_internal_update_none_dist_table_metadata$$;
|
||||
COMMENT ON FUNCTION citus_internal.update_none_dist_table_metadata(oid, "char", bigint, boolean)
|
||||
IS 'Update pg_dist_partition metadata table for given none-distributed table, to convert it to another type of none-distributed table.';
|
||||
|
||||
CREATE OR REPLACE FUNCTION pg_catalog.citus_internal_update_none_dist_table_metadata(
|
||||
relation_id oid,
|
||||
replication_model "char",
|
||||
colocation_id bigint,
|
||||
auto_converted boolean)
|
||||
RETURNS void
|
||||
LANGUAGE C
|
||||
VOLATILE
|
||||
AS 'MODULE_PATHNAME';
|
||||
COMMENT ON FUNCTION pg_catalog.citus_internal_update_none_dist_table_metadata(oid, "char", bigint, boolean)
|
||||
IS 'Update pg_dist_partition metadata table for given none-distributed table, to convert it to another type of none-distributed table.';
|
|
@ -1,3 +1,15 @@
|
|||
CREATE OR REPLACE FUNCTION citus_internal.update_none_dist_table_metadata(
|
||||
relation_id oid,
|
||||
replication_model "char",
|
||||
colocation_id bigint,
|
||||
auto_converted boolean)
|
||||
RETURNS void
|
||||
LANGUAGE C
|
||||
VOLATILE
|
||||
AS 'MODULE_PATHNAME', $$citus_internal_update_none_dist_table_metadata$$;
|
||||
COMMENT ON FUNCTION citus_internal.update_none_dist_table_metadata(oid, "char", bigint, boolean)
|
||||
IS 'Update pg_dist_partition metadata table for given none-distributed table, to convert it to another type of none-distributed table.';
|
||||
|
||||
CREATE OR REPLACE FUNCTION pg_catalog.citus_internal_update_none_dist_table_metadata(
|
||||
relation_id oid,
|
||||
replication_model "char",
|
||||
|
|
19
src/backend/distributed/sql/udfs/citus_internal_update_placement_metadata/12.2-1.sql
generated
Normal file
19
src/backend/distributed/sql/udfs/citus_internal_update_placement_metadata/12.2-1.sql
generated
Normal file
|
@ -0,0 +1,19 @@
|
|||
CREATE OR REPLACE FUNCTION citus_internal.update_placement_metadata(
|
||||
shard_id bigint, source_group_id integer,
|
||||
target_group_id integer)
|
||||
RETURNS void
|
||||
LANGUAGE C STRICT
|
||||
AS 'MODULE_PATHNAME', $$citus_internal_update_placement_metadata$$;
|
||||
|
||||
COMMENT ON FUNCTION citus_internal.update_placement_metadata(bigint, integer, integer) IS
|
||||
'Updates into pg_dist_placement with user checks';
|
||||
|
||||
CREATE OR REPLACE FUNCTION pg_catalog.citus_internal_update_placement_metadata(
|
||||
shard_id bigint, source_group_id integer,
|
||||
target_group_id integer)
|
||||
RETURNS void
|
||||
LANGUAGE C STRICT
|
||||
AS 'MODULE_PATHNAME';
|
||||
|
||||
COMMENT ON FUNCTION pg_catalog.citus_internal_update_placement_metadata(bigint, integer, integer) IS
|
||||
'Updates into pg_dist_placement with user checks';
|
|
@ -1,3 +1,13 @@
|
|||
CREATE OR REPLACE FUNCTION citus_internal.update_placement_metadata(
|
||||
shard_id bigint, source_group_id integer,
|
||||
target_group_id integer)
|
||||
RETURNS void
|
||||
LANGUAGE C STRICT
|
||||
AS 'MODULE_PATHNAME', $$citus_internal_update_placement_metadata$$;
|
||||
|
||||
COMMENT ON FUNCTION citus_internal.update_placement_metadata(bigint, integer, integer) IS
|
||||
'Updates into pg_dist_placement with user checks';
|
||||
|
||||
CREATE OR REPLACE FUNCTION pg_catalog.citus_internal_update_placement_metadata(
|
||||
shard_id bigint, source_group_id integer,
|
||||
target_group_id integer)
|
||||
|
|
|
@ -189,7 +189,7 @@ extern void SendInterTableRelationshipCommands(MetadataSyncContext *context);
|
|||
#define WORKER_DROP_ALL_SHELL_TABLES \
|
||||
"CALL pg_catalog.worker_drop_all_shell_tables(%s)"
|
||||
#define CITUS_INTERNAL_MARK_NODE_NOT_SYNCED \
|
||||
"SELECT citus_internal_mark_node_not_synced(%d, %d)"
|
||||
"SELECT citus_internal.mark_node_not_synced(%d, %d)"
|
||||
|
||||
#define REMOVE_ALL_CITUS_TABLES_COMMAND \
|
||||
"SELECT worker_drop_distributed_table(logicalrelid::regclass::text) FROM pg_dist_partition"
|
||||
|
|
|
@ -369,7 +369,7 @@ ROLLBACK;
|
|||
\set VERBOSITY DEFAULT
|
||||
-- Test the UDFs that we use to convert Citus local tables to single-shard tables and
|
||||
-- reference tables.
|
||||
SELECT pg_catalog.citus_internal_update_none_dist_table_metadata(1, 't', 1, true);
|
||||
SELECT citus_internal.update_none_dist_table_metadata(1, 't', 1, true);
|
||||
ERROR: This is an internal Citus function can only be used in a distributed transaction
|
||||
SELECT citus_internal.delete_placement_metadata(1);
|
||||
ERROR: This is an internal Citus function can only be used in a distributed transaction
|
||||
|
@ -393,13 +393,13 @@ SET citus.next_shard_id TO 1850000;
|
|||
SET citus.next_placement_id TO 8510000;
|
||||
SET citus.shard_replication_factor TO 1;
|
||||
SET search_path TO create_ref_dist_from_citus_local;
|
||||
SELECT pg_catalog.citus_internal_update_none_dist_table_metadata(null, 't', 1, true);
|
||||
SELECT citus_internal.update_none_dist_table_metadata(null, 't', 1, true);
|
||||
ERROR: relation_id cannot be NULL
|
||||
SELECT pg_catalog.citus_internal_update_none_dist_table_metadata(1, null, 1, true);
|
||||
SELECT citus_internal.update_none_dist_table_metadata(1, null, 1, true);
|
||||
ERROR: replication_model cannot be NULL
|
||||
SELECT pg_catalog.citus_internal_update_none_dist_table_metadata(1, 't', null, true);
|
||||
SELECT citus_internal.update_none_dist_table_metadata(1, 't', null, true);
|
||||
ERROR: colocation_id cannot be NULL
|
||||
SELECT pg_catalog.citus_internal_update_none_dist_table_metadata(1, 't', 1, null);
|
||||
SELECT citus_internal.update_none_dist_table_metadata(1, 't', 1, null);
|
||||
ERROR: auto_converted cannot be NULL
|
||||
SELECT citus_internal.delete_placement_metadata(null);
|
||||
ERROR: placement_id cannot be NULL
|
||||
|
@ -411,8 +411,8 @@ SELECT citus_add_local_table_to_metadata('udf_test');
|
|||
(1 row)
|
||||
|
||||
BEGIN;
|
||||
SELECT pg_catalog.citus_internal_update_none_dist_table_metadata('create_ref_dist_from_citus_local.udf_test'::regclass, 'k', 99999, true);
|
||||
citus_internal_update_none_dist_table_metadata
|
||||
SELECT citus_internal.update_none_dist_table_metadata('create_ref_dist_from_citus_local.udf_test'::regclass, 'k', 99999, true);
|
||||
update_none_dist_table_metadata
|
||||
---------------------------------------------------------------------
|
||||
|
||||
(1 row)
|
||||
|
|
|
@ -349,7 +349,7 @@ BEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
|||
|
||||
SET application_name to 'citus_internal gpid=10000000001';
|
||||
\set VERBOSITY terse
|
||||
SELECT citus_internal_update_placement_metadata(1420007, 10000, 11111);
|
||||
SELECT citus_internal.update_placement_metadata(1420007, 10000, 11111);
|
||||
ERROR: could not find valid entry for shard xxxxx
|
||||
ROLLBACK;
|
||||
-- non-existing users should fail to pass the checks
|
||||
|
@ -1130,7 +1130,7 @@ BEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
|||
|
||||
SET application_name to 'citus_internal gpid=10000000001';
|
||||
\set VERBOSITY terse
|
||||
SELECT citus_internal_update_placement_metadata(1420000, get_node_id(), get_node_id()+1000);
|
||||
SELECT citus_internal.update_placement_metadata(1420000, get_node_id(), get_node_id()+1000);
|
||||
ERROR: Node with group id 1014 for shard placement xxxxx does not exist
|
||||
COMMIT;
|
||||
-- fails because the source node doesn't contain the shard
|
||||
|
@ -1143,7 +1143,7 @@ BEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
|||
|
||||
SET application_name to 'citus_internal gpid=10000000001';
|
||||
\set VERBOSITY terse
|
||||
SELECT citus_internal_update_placement_metadata(1420000, get_node_id()+10000, get_node_id());
|
||||
SELECT citus_internal.update_placement_metadata(1420000, get_node_id()+10000, get_node_id());
|
||||
ERROR: Active placement for shard xxxxx is not found on group:14
|
||||
COMMIT;
|
||||
-- fails because shard does not exist
|
||||
|
@ -1156,7 +1156,7 @@ BEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
|||
|
||||
SET application_name to 'citus_internal gpid=10000000001';
|
||||
\set VERBOSITY terse
|
||||
SELECT citus_internal_update_placement_metadata(0, get_node_id(), get_node_id()+1);
|
||||
SELECT citus_internal.update_placement_metadata(0, get_node_id(), get_node_id()+1);
|
||||
ERROR: Shard id does not exists: 0
|
||||
COMMIT;
|
||||
-- fails because none-existing shard
|
||||
|
@ -1169,7 +1169,7 @@ BEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
|||
|
||||
SET application_name to 'citus_internal gpid=10000000001';
|
||||
\set VERBOSITY terse
|
||||
SELECT citus_internal_update_placement_metadata(213123123123, get_node_id(), get_node_id()+1);
|
||||
SELECT citus_internal.update_placement_metadata(213123123123, get_node_id(), get_node_id()+1);
|
||||
ERROR: Shard id does not exists: 213123123123
|
||||
COMMIT;
|
||||
-- fails because we do not own the shard
|
||||
|
@ -1182,7 +1182,7 @@ BEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
|||
|
||||
SET application_name to 'citus_internal gpid=10000000001';
|
||||
\set VERBOSITY terse
|
||||
SELECT citus_internal_update_placement_metadata(1420007, get_node_id(), get_node_id()+1);
|
||||
SELECT citus_internal.update_placement_metadata(1420007, get_node_id(), get_node_id()+1);
|
||||
ERROR: must be owner of table super_user_table
|
||||
COMMIT;
|
||||
-- the user only allowed to delete their own shards
|
||||
|
|
|
@ -1438,9 +1438,13 @@ SELECT * FROM multi_extension.print_extension_changes();
|
|||
| function citus_internal.delete_shard_metadata(bigint) void
|
||||
| function citus_internal.delete_tenant_schema(oid) void
|
||||
| function citus_internal.execute_command_on_remote_nodes_as_user(text,text) void
|
||||
| function citus_internal.mark_node_not_synced(integer,integer) void
|
||||
| function citus_internal.mark_object_distributed(oid,text,oid,text) void
|
||||
| function citus_internal.start_management_transaction(xid8) void
|
||||
(18 rows)
|
||||
| function citus_internal.unregister_tenant_schema_globally(oid,text) void
|
||||
| function citus_internal.update_none_dist_table_metadata(oid,"char",bigint,boolean) void
|
||||
| function citus_internal.update_placement_metadata(bigint,integer,integer) void
|
||||
(22 rows)
|
||||
|
||||
DROP TABLE multi_extension.prev_objects, multi_extension.extension_diff;
|
||||
-- show running version
|
||||
|
|
|
@ -19,13 +19,13 @@ SELECT citus_internal.add_tenant_schema(1, NULL);
|
|||
ERROR: colocation_id cannot be NULL
|
||||
SELECT citus_internal.delete_tenant_schema(NULL);
|
||||
ERROR: schema_id cannot be NULL
|
||||
SELECT citus_internal_unregister_tenant_schema_globally(1, NULL);
|
||||
SELECT citus_internal.unregister_tenant_schema_globally(1, NULL);
|
||||
ERROR: schema_name cannot be NULL
|
||||
SELECT citus_internal_unregister_tenant_schema_globally(NULL, 'text');
|
||||
SELECT citus_internal.unregister_tenant_schema_globally(NULL, 'text');
|
||||
ERROR: schema_id cannot be NULL
|
||||
-- Verify that citus_internal_unregister_tenant_schema_globally can only
|
||||
-- Verify that citus_internal.unregister_tenant_schema_globally can only
|
||||
-- be called on schemas that are dropped already.
|
||||
SELECT citus_internal_unregister_tenant_schema_globally('regular_schema'::regnamespace, 'regular_schema');
|
||||
SELECT citus_internal.unregister_tenant_schema_globally('regular_schema'::regnamespace, 'regular_schema');
|
||||
ERROR: schema is expected to be already dropped because this function is only expected to be called from Citus drop hook
|
||||
SELECT 1 FROM citus_remove_node('localhost', :worker_2_port);
|
||||
?column?
|
||||
|
@ -1511,10 +1511,10 @@ SELECT pg_reload_conf();
|
|||
t
|
||||
(1 row)
|
||||
|
||||
-- Verify that citus_internal_unregister_tenant_schema_globally is a no-op
|
||||
-- Verify that citus_internal.unregister_tenant_schema_globally is a no-op
|
||||
-- on workers.
|
||||
SELECT citus_internal_unregister_tenant_schema_globally('tenant_3'::regnamespace, 'tenant_3');
|
||||
citus_internal_unregister_tenant_schema_globally
|
||||
SELECT citus_internal.unregister_tenant_schema_globally('tenant_3'::regnamespace, 'tenant_3');
|
||||
unregister_tenant_schema_globally
|
||||
---------------------------------------------------------------------
|
||||
|
||||
(1 row)
|
||||
|
|
|
@ -73,6 +73,7 @@ ORDER BY 1;
|
|||
function citus_internal.delete_tenant_schema(oid)
|
||||
function citus_internal.execute_command_on_remote_nodes_as_user(text,text)
|
||||
function citus_internal.find_groupid_for_node(text,integer)
|
||||
function citus_internal.mark_node_not_synced(integer,integer)
|
||||
function citus_internal.mark_object_distributed(oid,text,oid,text)
|
||||
function citus_internal.pg_dist_node_trigger_func()
|
||||
function citus_internal.pg_dist_rebalance_strategy_trigger_func()
|
||||
|
@ -81,6 +82,9 @@ ORDER BY 1;
|
|||
function citus_internal.replace_isolation_tester_func()
|
||||
function citus_internal.restore_isolation_tester_func()
|
||||
function citus_internal.start_management_transaction(xid8)
|
||||
function citus_internal.unregister_tenant_schema_globally(oid,text)
|
||||
function citus_internal.update_none_dist_table_metadata(oid,"char",bigint,boolean)
|
||||
function citus_internal.update_placement_metadata(bigint,integer,integer)
|
||||
function citus_internal_add_colocation_metadata(integer,integer,integer,regtype,oid)
|
||||
function citus_internal_add_object_metadata(text,text[],text[],integer,integer,boolean)
|
||||
function citus_internal_add_partition_metadata(regclass,"char",text,integer,"char")
|
||||
|
@ -361,5 +365,5 @@ ORDER BY 1;
|
|||
view citus_stat_tenants_local
|
||||
view pg_dist_shard_placement
|
||||
view time_partitions
|
||||
(351 rows)
|
||||
(355 rows)
|
||||
|
||||
|
|
|
@ -219,7 +219,7 @@ ROLLBACK;
|
|||
-- Test the UDFs that we use to convert Citus local tables to single-shard tables and
|
||||
-- reference tables.
|
||||
|
||||
SELECT pg_catalog.citus_internal_update_none_dist_table_metadata(1, 't', 1, true);
|
||||
SELECT citus_internal.update_none_dist_table_metadata(1, 't', 1, true);
|
||||
SELECT citus_internal.delete_placement_metadata(1);
|
||||
|
||||
CREATE ROLE test_user_create_ref_dist WITH LOGIN;
|
||||
|
@ -234,10 +234,10 @@ SET citus.next_placement_id TO 8510000;
|
|||
SET citus.shard_replication_factor TO 1;
|
||||
SET search_path TO create_ref_dist_from_citus_local;
|
||||
|
||||
SELECT pg_catalog.citus_internal_update_none_dist_table_metadata(null, 't', 1, true);
|
||||
SELECT pg_catalog.citus_internal_update_none_dist_table_metadata(1, null, 1, true);
|
||||
SELECT pg_catalog.citus_internal_update_none_dist_table_metadata(1, 't', null, true);
|
||||
SELECT pg_catalog.citus_internal_update_none_dist_table_metadata(1, 't', 1, null);
|
||||
SELECT citus_internal.update_none_dist_table_metadata(null, 't', 1, true);
|
||||
SELECT citus_internal.update_none_dist_table_metadata(1, null, 1, true);
|
||||
SELECT citus_internal.update_none_dist_table_metadata(1, 't', null, true);
|
||||
SELECT citus_internal.update_none_dist_table_metadata(1, 't', 1, null);
|
||||
|
||||
SELECT citus_internal.delete_placement_metadata(null);
|
||||
|
||||
|
@ -245,7 +245,7 @@ CREATE TABLE udf_test (col_1 int);
|
|||
SELECT citus_add_local_table_to_metadata('udf_test');
|
||||
|
||||
BEGIN;
|
||||
SELECT pg_catalog.citus_internal_update_none_dist_table_metadata('create_ref_dist_from_citus_local.udf_test'::regclass, 'k', 99999, true);
|
||||
SELECT citus_internal.update_none_dist_table_metadata('create_ref_dist_from_citus_local.udf_test'::regclass, 'k', 99999, true);
|
||||
|
||||
SELECT COUNT(*)=1 FROM pg_dist_partition
|
||||
WHERE logicalrelid = 'create_ref_dist_from_citus_local.udf_test'::regclass AND repmodel = 'k' AND colocationid = 99999 AND autoconverted = true;
|
||||
|
|
|
@ -202,7 +202,7 @@ BEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
|||
SELECT assign_distributed_transaction_id(0, 8, '2021-07-09 15:41:55.542377+02');
|
||||
SET application_name to 'citus_internal gpid=10000000001';
|
||||
\set VERBOSITY terse
|
||||
SELECT citus_internal_update_placement_metadata(1420007, 10000, 11111);
|
||||
SELECT citus_internal.update_placement_metadata(1420007, 10000, 11111);
|
||||
ROLLBACK;
|
||||
|
||||
-- non-existing users should fail to pass the checks
|
||||
|
@ -703,7 +703,7 @@ BEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
|||
SELECT assign_distributed_transaction_id(0, 8, '2021-07-09 15:41:55.542377+02');
|
||||
SET application_name to 'citus_internal gpid=10000000001';
|
||||
\set VERBOSITY terse
|
||||
SELECT citus_internal_update_placement_metadata(1420000, get_node_id(), get_node_id()+1000);
|
||||
SELECT citus_internal.update_placement_metadata(1420000, get_node_id(), get_node_id()+1000);
|
||||
COMMIT;
|
||||
|
||||
-- fails because the source node doesn't contain the shard
|
||||
|
@ -711,7 +711,7 @@ BEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
|||
SELECT assign_distributed_transaction_id(0, 8, '2021-07-09 15:41:55.542377+02');
|
||||
SET application_name to 'citus_internal gpid=10000000001';
|
||||
\set VERBOSITY terse
|
||||
SELECT citus_internal_update_placement_metadata(1420000, get_node_id()+10000, get_node_id());
|
||||
SELECT citus_internal.update_placement_metadata(1420000, get_node_id()+10000, get_node_id());
|
||||
COMMIT;
|
||||
|
||||
-- fails because shard does not exist
|
||||
|
@ -719,7 +719,7 @@ BEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
|||
SELECT assign_distributed_transaction_id(0, 8, '2021-07-09 15:41:55.542377+02');
|
||||
SET application_name to 'citus_internal gpid=10000000001';
|
||||
\set VERBOSITY terse
|
||||
SELECT citus_internal_update_placement_metadata(0, get_node_id(), get_node_id()+1);
|
||||
SELECT citus_internal.update_placement_metadata(0, get_node_id(), get_node_id()+1);
|
||||
COMMIT;
|
||||
|
||||
-- fails because none-existing shard
|
||||
|
@ -727,7 +727,7 @@ BEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
|||
SELECT assign_distributed_transaction_id(0, 8, '2021-07-09 15:41:55.542377+02');
|
||||
SET application_name to 'citus_internal gpid=10000000001';
|
||||
\set VERBOSITY terse
|
||||
SELECT citus_internal_update_placement_metadata(213123123123, get_node_id(), get_node_id()+1);
|
||||
SELECT citus_internal.update_placement_metadata(213123123123, get_node_id(), get_node_id()+1);
|
||||
COMMIT;
|
||||
|
||||
-- fails because we do not own the shard
|
||||
|
@ -735,7 +735,7 @@ BEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
|||
SELECT assign_distributed_transaction_id(0, 8, '2021-07-09 15:41:55.542377+02');
|
||||
SET application_name to 'citus_internal gpid=10000000001';
|
||||
\set VERBOSITY terse
|
||||
SELECT citus_internal_update_placement_metadata(1420007, get_node_id(), get_node_id()+1);
|
||||
SELECT citus_internal.update_placement_metadata(1420007, get_node_id(), get_node_id()+1);
|
||||
COMMIT;
|
||||
|
||||
-- the user only allowed to delete their own shards
|
||||
|
|
|
@ -15,12 +15,12 @@ SET client_min_messages TO NOTICE;
|
|||
SELECT citus_internal.add_tenant_schema(NULL, 1);
|
||||
SELECT citus_internal.add_tenant_schema(1, NULL);
|
||||
SELECT citus_internal.delete_tenant_schema(NULL);
|
||||
SELECT citus_internal_unregister_tenant_schema_globally(1, NULL);
|
||||
SELECT citus_internal_unregister_tenant_schema_globally(NULL, 'text');
|
||||
SELECT citus_internal.unregister_tenant_schema_globally(1, NULL);
|
||||
SELECT citus_internal.unregister_tenant_schema_globally(NULL, 'text');
|
||||
|
||||
-- Verify that citus_internal_unregister_tenant_schema_globally can only
|
||||
-- Verify that citus_internal.unregister_tenant_schema_globally can only
|
||||
-- be called on schemas that are dropped already.
|
||||
SELECT citus_internal_unregister_tenant_schema_globally('regular_schema'::regnamespace, 'regular_schema');
|
||||
SELECT citus_internal.unregister_tenant_schema_globally('regular_schema'::regnamespace, 'regular_schema');
|
||||
|
||||
SELECT 1 FROM citus_remove_node('localhost', :worker_2_port);
|
||||
|
||||
|
@ -1022,9 +1022,9 @@ SELECT pg_reload_conf();
|
|||
ALTER SYSTEM SET citus.enable_schema_based_sharding TO ON;
|
||||
SELECT pg_reload_conf();
|
||||
|
||||
-- Verify that citus_internal_unregister_tenant_schema_globally is a no-op
|
||||
-- Verify that citus_internal.unregister_tenant_schema_globally is a no-op
|
||||
-- on workers.
|
||||
SELECT citus_internal_unregister_tenant_schema_globally('tenant_3'::regnamespace, 'tenant_3');
|
||||
SELECT citus_internal.unregister_tenant_schema_globally('tenant_3'::regnamespace, 'tenant_3');
|
||||
|
||||
\c - - - :master_port
|
||||
|
||||
|
|
Loading…
Reference in New Issue