citus/src/test/regress/expected/multi_mx_ddl.out

285 lines
8.9 KiB
Plaintext

-- Tests related to distributed DDL commands on mx cluster
SELECT * FROM mx_ddl_table ORDER BY key;
key | value
-----+-------
1 | 10
2 | 11
3 | 21
4 | 37
5 | 60
6 | 100
10 | 200
11 | 230
(8 rows)
-- CREATE INDEX
CREATE INDEX ddl_test_index ON mx_ddl_table(value);
NOTICE: using one-phase commit for distributed DDL commands
HINT: You can enable two-phase commit for extra safety with: SET citus.multi_shard_commit_protocol TO '2pc'
CREATE INDEX CONCURRENTLY ddl_test_concurrent_index ON mx_ddl_table(value);
-- ADD COLUMN
ALTER TABLE mx_ddl_table ADD COLUMN version INTEGER;
-- SET DEFAULT
ALTER TABLE mx_ddl_table ALTER COLUMN version SET DEFAULT 1;
SELECT master_modify_multiple_shards('UPDATE mx_ddl_table SET version=0.1 WHERE version IS NULL');
master_modify_multiple_shards
-------------------------------
8
(1 row)
-- SET NOT NULL
ALTER TABLE mx_ddl_table ALTER COLUMN version SET NOT NULL;
-- See that the changes are applied on coordinator, worker tables and shards
SELECT "Column", "Type", "Modifiers" FROM table_desc WHERE relid='mx_ddl_table'::regclass;
Column | Type | Modifiers
---------+---------+--------------------
key | integer | not null
value | integer |
version | integer | not null default 1
(3 rows)
\d ddl_test*_index
Index "public.ddl_test_concurrent_index"
Column | Type | Definition
--------+---------+------------
value | integer | value
btree, for table "public.mx_ddl_table"
Index "public.ddl_test_index"
Column | Type | Definition
--------+---------+------------
value | integer | value
btree, for table "public.mx_ddl_table"
\c - - - :worker_1_port
SELECT "Column", "Type", "Modifiers" FROM table_desc WHERE relid='mx_ddl_table'::regclass;
Column | Type | Modifiers
---------+---------+--------------------
key | integer | not null
value | integer |
version | integer | not null default 1
(3 rows)
\d ddl_test*_index
Index "public.ddl_test_concurrent_index"
Column | Type | Definition
--------+---------+------------
value | integer | value
btree, for table "public.mx_ddl_table"
Index "public.ddl_test_index"
Column | Type | Definition
--------+---------+------------
value | integer | value
btree, for table "public.mx_ddl_table"
SELECT "Column", "Type", "Modifiers" FROM table_desc WHERE relid='mx_ddl_table_1220088'::regclass;
Column | Type | Modifiers
---------+---------+--------------------
key | integer | not null
value | integer |
version | integer | not null default 1
(3 rows)
\d ddl_test*_index_1220088
Index "public.ddl_test_concurrent_index_1220088"
Column | Type | Definition
--------+---------+------------
value | integer | value
btree, for table "public.mx_ddl_table_1220088"
Index "public.ddl_test_index_1220088"
Column | Type | Definition
--------+---------+------------
value | integer | value
btree, for table "public.mx_ddl_table_1220088"
\c - - - :worker_2_port
SELECT "Column", "Type", "Modifiers" FROM table_desc WHERE relid='mx_ddl_table'::regclass;
Column | Type | Modifiers
---------+---------+--------------------
key | integer | not null
value | integer |
version | integer | not null default 1
(3 rows)
\d ddl_test*_index
Index "public.ddl_test_concurrent_index"
Column | Type | Definition
--------+---------+------------
value | integer | value
btree, for table "public.mx_ddl_table"
Index "public.ddl_test_index"
Column | Type | Definition
--------+---------+------------
value | integer | value
btree, for table "public.mx_ddl_table"
SELECT "Column", "Type", "Modifiers" FROM table_desc WHERE relid='mx_ddl_table_1220089'::regclass;
Column | Type | Modifiers
---------+---------+--------------------
key | integer | not null
value | integer |
version | integer | not null default 1
(3 rows)
\d ddl_test*_index_1220089
Index "public.ddl_test_concurrent_index_1220089"
Column | Type | Definition
--------+---------+------------
value | integer | value
btree, for table "public.mx_ddl_table_1220089"
Index "public.ddl_test_index_1220089"
Column | Type | Definition
--------+---------+------------
value | integer | value
btree, for table "public.mx_ddl_table_1220089"
INSERT INTO mx_ddl_table VALUES (37, 78, 2);
INSERT INTO mx_ddl_table VALUES (38, 78);
-- Switch to the coordinator
\c - - - :master_port
-- SET DATA TYPE
ALTER TABLE mx_ddl_table ALTER COLUMN version SET DATA TYPE double precision;
NOTICE: using one-phase commit for distributed DDL commands
HINT: You can enable two-phase commit for extra safety with: SET citus.multi_shard_commit_protocol TO '2pc'
INSERT INTO mx_ddl_table VALUES (78, 83, 2.1);
\c - - - :worker_1_port
SELECT * FROM mx_ddl_table ORDER BY key;
key | value | version
-----+-------+---------
1 | 10 | 0
2 | 11 | 0
3 | 21 | 0
4 | 37 | 0
5 | 60 | 0
6 | 100 | 0
10 | 200 | 0
11 | 230 | 0
37 | 78 | 2
38 | 78 | 1
78 | 83 | 2.1
(11 rows)
-- Switch to the coordinator
\c - - - :master_port
-- DROP INDEX
DROP INDEX ddl_test_index;
NOTICE: using one-phase commit for distributed DDL commands
HINT: You can enable two-phase commit for extra safety with: SET citus.multi_shard_commit_protocol TO '2pc'
DROP INDEX CONCURRENTLY ddl_test_concurrent_index;
-- DROP DEFAULT
ALTER TABLE mx_ddl_table ALTER COLUMN version DROP DEFAULT;
-- DROP NOT NULL
ALTER TABLE mx_ddl_table ALTER COLUMN version DROP NOT NULL;
-- DROP COLUMN
ALTER TABLE mx_ddl_table DROP COLUMN version;
-- See that the changes are applied on coordinator, worker tables and shards
SELECT "Column", "Type", "Modifiers" FROM table_desc WHERE relid='mx_ddl_table'::regclass;
Column | Type | Modifiers
--------+---------+-----------
key | integer | not null
value | integer |
(2 rows)
\di ddl_test*_index
List of relations
Schema | Name | Type | Owner | Table
--------+------+------+-------+-------
(0 rows)
\c - - - :worker_1_port
SELECT "Column", "Type", "Modifiers" FROM table_desc WHERE relid='mx_ddl_table'::regclass;
Column | Type | Modifiers
--------+---------+-----------
key | integer | not null
value | integer |
(2 rows)
\di ddl_test*_index
List of relations
Schema | Name | Type | Owner | Table
--------+------+------+-------+-------
(0 rows)
SELECT "Column", "Type", "Modifiers" FROM table_desc WHERE relid='mx_ddl_table_1220088'::regclass;
Column | Type | Modifiers
--------+---------+-----------
key | integer | not null
value | integer |
(2 rows)
\di ddl_test*_index_1220088
List of relations
Schema | Name | Type | Owner | Table
--------+------+------+-------+-------
(0 rows)
\c - - - :worker_2_port
SELECT "Column", "Type", "Modifiers" FROM table_desc WHERE relid='mx_ddl_table'::regclass;
Column | Type | Modifiers
--------+---------+-----------
key | integer | not null
value | integer |
(2 rows)
\di ddl_test*_index
List of relations
Schema | Name | Type | Owner | Table
--------+------+------+-------+-------
(0 rows)
SELECT "Column", "Type", "Modifiers" FROM table_desc WHERE relid='mx_ddl_table_1220089'::regclass;
Column | Type | Modifiers
--------+---------+-----------
key | integer | not null
value | integer |
(2 rows)
\di ddl_test*_index_1220089
List of relations
Schema | Name | Type | Owner | Table
--------+------+------+-------+-------
(0 rows)
-- Show that DDL commands are done within a two-phase commit transaction
\c - - - :master_port
SET client_min_messages TO debug2;
CREATE INDEX ddl_test_index ON mx_ddl_table(value);
DEBUG: building index "ddl_test_index" on table "mx_ddl_table"
NOTICE: using one-phase commit for distributed DDL commands
HINT: You can enable two-phase commit for extra safety with: SET citus.multi_shard_commit_protocol TO '2pc'
RESET client_min_messages;
DROP INDEX ddl_test_index;
-- show that sequences owned by mx tables result in unique values
SET citus.shard_replication_factor TO 1;
SET citus.shard_count TO 4;
SET citus.replication_model TO streaming;
CREATE TABLE mx_sequence(key INT, value BIGSERIAL);
SELECT create_distributed_table('mx_sequence', 'key');
create_distributed_table
--------------------------
(1 row)
\c - - - :worker_1_port
SELECT last_value AS worker_1_lastval FROM mx_sequence_value_seq \gset
\c - - - :worker_2_port
SELECT last_value AS worker_2_lastval FROM mx_sequence_value_seq \gset
\c - - - :master_port
-- don't look at the actual values because they rely on the groupids of the nodes
-- which can change depending on the tests which have run before this one
SELECT :worker_1_lastval = :worker_2_lastval;
?column?
----------
f
(1 row)
-- the type of sequences can't be changed
ALTER TABLE mx_sequence ALTER value TYPE BIGINT;
NOTICE: using one-phase commit for distributed DDL commands
HINT: You can enable two-phase commit for extra safety with: SET citus.multi_shard_commit_protocol TO '2pc'
ALTER TABLE mx_sequence ALTER value TYPE INT;