pull/7219/head
Onur Tirtir 2023-09-22 14:01:59 +03:00
parent 2c190d0689
commit 33934792c4
3 changed files with 30 additions and 23 deletions

View File

@ -436,6 +436,11 @@ CreateDistributedTableConcurrently(Oid relationId, char *distributionColumnName,
char replicationModel = DecideDistTableReplicationModel(distributionMethod,
colocateWithTableName);
if (replicationModel == REPLICATION_MODEL_COORDINATOR)
{
ereport(ERROR, (errmsg("cannot create a replicated distributed a "
"table concurrently")));
}
/*
* we fail transaction before local table conversion if the table could not be colocated with

View File

@ -36,6 +36,18 @@ set citus.shard_replication_factor to 2;
select create_distributed_table_concurrently('test','key', 'hash');
ERROR: cannot distribute a table concurrently when citus.shard_replication_factor > 1
set citus.shard_replication_factor to 1;
set citus.shard_replication_factor to 2;
create table dist_1(a int);
select create_distributed_table('dist_1', 'a');
create_distributed_table
---------------------------------------------------------------------
(1 row)
set citus.shard_replication_factor to 1;
create table dist_2(a int);
select create_distributed_table_concurrently('dist_2', 'a', colocate_with=>'dist_1');
ERROR: cannot create a replicated distributed a table concurrently
begin;
select create_distributed_table_concurrently('test','key');
ERROR: create_distributed_table_concurrently cannot run inside a transaction block
@ -138,27 +150,8 @@ select count(*) from test;
rollback;
-- verify that we can undistribute the table
begin;
set local client_min_messages to warning;
select undistribute_table('test', cascade_via_foreign_keys := true);
NOTICE: converting the partitions of create_distributed_table_concurrently.test
NOTICE: creating a new table for create_distributed_table_concurrently.test
NOTICE: dropping the old create_distributed_table_concurrently.test
NOTICE: renaming the new table to create_distributed_table_concurrently.test
NOTICE: creating a new table for create_distributed_table_concurrently.ref
NOTICE: moving the data of create_distributed_table_concurrently.ref
NOTICE: dropping the old create_distributed_table_concurrently.ref
NOTICE: drop cascades to constraint test_id_fkey_1190041 on table create_distributed_table_concurrently.test_1190041
CONTEXT: SQL statement "SELECT citus_drop_all_shards(v_obj.objid, v_obj.schema_name, v_obj.object_name, drop_shards_metadata_only := false)"
PL/pgSQL function citus_drop_trigger() line XX at PERFORM
SQL statement "DROP TABLE create_distributed_table_concurrently.ref CASCADE"
NOTICE: renaming the new table to create_distributed_table_concurrently.ref
NOTICE: creating a new table for create_distributed_table_concurrently.test_1
NOTICE: moving the data of create_distributed_table_concurrently.test_1
NOTICE: dropping the old create_distributed_table_concurrently.test_1
NOTICE: renaming the new table to create_distributed_table_concurrently.test_1
NOTICE: creating a new table for create_distributed_table_concurrently.test_2
NOTICE: moving the data of create_distributed_table_concurrently.test_2
NOTICE: dropping the old create_distributed_table_concurrently.test_2
NOTICE: renaming the new table to create_distributed_table_concurrently.test_2
undistribute_table
---------------------------------------------------------------------

View File

@ -28,6 +28,14 @@ set citus.shard_replication_factor to 2;
select create_distributed_table_concurrently('test','key', 'hash');
set citus.shard_replication_factor to 1;
set citus.shard_replication_factor to 2;
create table dist_1(a int);
select create_distributed_table('dist_1', 'a');
set citus.shard_replication_factor to 1;
create table dist_2(a int);
select create_distributed_table_concurrently('dist_2', 'a', colocate_with=>'dist_1');
begin;
select create_distributed_table_concurrently('test','key');
rollback;
@ -63,6 +71,7 @@ rollback;
-- verify that we can undistribute the table
begin;
set local client_min_messages to warning;
select undistribute_table('test', cascade_via_foreign_keys := true);
rollback;