mirror of https://github.com/citusdata/citus.git
Failing long table name tests
parent
495096ef5e
commit
7bebeb872d
|
@ -223,3 +223,11 @@ s/^(ERROR: child table is missing constraint "\w+)_([0-9])+"/\1_xxxxxx"/g
|
|||
s/.*//g
|
||||
}
|
||||
}
|
||||
|
||||
# normalize long table shard name errors for alter_table_set_access_method and alter_distributed_table
|
||||
s/^(ERROR: child table is missing constraint "\w+)_([0-9])+"/\1_xxxxxx"/g
|
||||
s/^(DEBUG: the name of the shard \(abcde_01234567890123456789012345678901234567890_f7ff6612)_([0-9])+/\1_xxxxxx/g
|
||||
|
||||
# normalize long index name errors for multi_index_statements
|
||||
s/^(ERROR: The index name \(test_index_creation1_p2020_09_26)_([0-9])+_(tenant_id_timeperiod_idx)/\1_xxxxxx_\3/g
|
||||
s/^(DEBUG: the index name on the shards of the partition is too long, switching to sequential and local execution mode to prevent self deadlocks: test_index_creation1_p2020_09_26)_([0-9])+_(tenant_id_timeperiod_idx)/\1_xxxxxx_\3/g
|
||||
|
|
|
@ -837,5 +837,65 @@ SELECT * FROM mat_view ORDER BY a;
|
|||
2 | 2
|
||||
(2 rows)
|
||||
|
||||
-- test long table names
|
||||
SET client_min_messages TO DEBUG1;
|
||||
CREATE TABLE abcde_0123456789012345678901234567890123456789012345678901234567890123456789 (x int, y int);
|
||||
NOTICE: identifier "abcde_0123456789012345678901234567890123456789012345678901234567890123456789" will be truncated to "abcde_012345678901234567890123456789012345678901234567890123456"
|
||||
SELECT create_distributed_table('abcde_0123456789012345678901234567890123456789012345678901234567890123456789', 'x');
|
||||
create_distributed_table
|
||||
---------------------------------------------------------------------
|
||||
|
||||
(1 row)
|
||||
|
||||
SELECT alter_distributed_table('abcde_0123456789012345678901234567890123456789012345678901234567890123456789', distribution_column := 'y');
|
||||
NOTICE: creating a new table for alter_distributed_table.abcde_012345678901234567890123456789012345678901234567890123456
|
||||
NOTICE: Moving the data of alter_distributed_table.abcde_012345678901234567890123456789012345678901234567890123456
|
||||
DEBUG: cannot perform distributed INSERT INTO ... SELECT because the partition columns in the source table and subquery do not match
|
||||
DETAIL: The target table's partition column should correspond to a partition column in the subquery.
|
||||
CONTEXT: SQL statement "INSERT INTO alter_distributed_table.abcde_0123456789012345678901234567890123456_f7ff6612_4160710162 (x,y) SELECT x,y FROM alter_distributed_table.abcde_012345678901234567890123456789012345678901234567890123456"
|
||||
DEBUG: performing repartitioned INSERT ... SELECT
|
||||
CONTEXT: SQL statement "INSERT INTO alter_distributed_table.abcde_0123456789012345678901234567890123456_f7ff6612_4160710162 (x,y) SELECT x,y FROM alter_distributed_table.abcde_012345678901234567890123456789012345678901234567890123456"
|
||||
NOTICE: Dropping the old alter_distributed_table.abcde_012345678901234567890123456789012345678901234567890123456
|
||||
CONTEXT: SQL statement "DROP TABLE alter_distributed_table.abcde_012345678901234567890123456789012345678901234567890123456 CASCADE"
|
||||
NOTICE: Renaming the new table to alter_distributed_table.abcde_012345678901234567890123456789012345678901234567890123456
|
||||
ERROR: shard name abcde_01234567890123456789012345678901234567890_f7ff6612_361345 exceeds 63 characters
|
||||
CONTEXT: while executing command on localhost:xxxxx
|
||||
SQL statement "ALTER TABLE alter_distributed_table.abcde_0123456789012345678901234567890123456_f7ff6612_4160710162 RENAME TO abcde_012345678901234567890123456789012345678901234567890123456"
|
||||
RESET client_min_messages;
|
||||
-- test long partitioned table names
|
||||
CREATE TABLE partition_lengths
|
||||
(
|
||||
tenant_id integer NOT NULL,
|
||||
timeperiod timestamp without time zone NOT NULL,
|
||||
inserted_utc timestamp without time zone NOT NULL DEFAULT now()
|
||||
) PARTITION BY RANGE (timeperiod);
|
||||
SELECT create_distributed_table('partition_lengths', 'tenant_id');
|
||||
create_distributed_table
|
||||
---------------------------------------------------------------------
|
||||
|
||||
(1 row)
|
||||
|
||||
CREATE TABLE partition_lengths_p2020_09_28_12345678901234567890123456789012345678901234567890 PARTITION OF partition_lengths FOR VALUES FROM ('2020-09-28 00:00:00') TO ('2020-09-29 00:00:00');
|
||||
NOTICE: identifier "partition_lengths_p2020_09_28_12345678901234567890123456789012345678901234567890" will be truncated to "partition_lengths_p2020_09_28_123456789012345678901234567890123"
|
||||
-- verify alter_distributed_table works with long partition names
|
||||
SELECT alter_distributed_table('partition_lengths', shard_count := 29, cascade_to_colocated := false);
|
||||
NOTICE: converting the partitions of alter_distributed_table.partition_lengths
|
||||
NOTICE: creating a new table for alter_distributed_table.partition_lengths_p2020_09_28_123456789012345678901234567890123
|
||||
NOTICE: Moving the data of alter_distributed_table.partition_lengths_p2020_09_28_123456789012345678901234567890123
|
||||
NOTICE: Dropping the old alter_distributed_table.partition_lengths_p2020_09_28_123456789012345678901234567890123
|
||||
NOTICE: Renaming the new table to alter_distributed_table.partition_lengths_p2020_09_28_123456789012345678901234567890123
|
||||
ERROR: shard name partition_lengths_p2020_09_28_12345678901234567_6d0d7fee_361356 exceeds 63 characters
|
||||
CONTEXT: while executing command on localhost:xxxxx
|
||||
SQL statement "ALTER TABLE alter_distributed_table.partition_lengths_p2020_09_28_1234567890123_6d0d7fee_1829601262 RENAME TO partition_lengths_p2020_09_28_123456789012345678901234567890123"
|
||||
-- test long partition table names
|
||||
ALTER TABLE partition_lengths_p2020_09_28_12345678901234567890123456789012345678901234567890 RENAME TO partition_lengths_p2020_09_28;
|
||||
NOTICE: identifier "partition_lengths_p2020_09_28_12345678901234567890123456789012345678901234567890" will be truncated to "partition_lengths_p2020_09_28_123456789012345678901234567890123"
|
||||
ALTER TABLE partition_lengths RENAME TO partition_lengths_12345678901234567890123456789012345678901234567890;
|
||||
NOTICE: identifier "partition_lengths_12345678901234567890123456789012345678901234567890" will be truncated to "partition_lengths_123456789012345678901234567890123456789012345"
|
||||
ERROR: shard name partition_lengths_12345678901234567890123456789_f3bd8571_361348 exceeds 63 characters
|
||||
CONTEXT: while executing command on localhost:xxxxx
|
||||
-- verify alter_distributed_table works with long partitioned table names
|
||||
SELECT alter_distributed_table('partition_lengths_12345678901234567890123456789012345678901234567890', shard_count := 17, cascade_to_colocated := false);
|
||||
ERROR: relation "partition_lengths_123456789012345678901234567890123456789012345" does not exist
|
||||
SET client_min_messages TO WARNING;
|
||||
DROP SCHEMA alter_distributed_table CASCADE;
|
||||
|
|
|
@ -816,5 +816,65 @@ SELECT * FROM mat_view ORDER BY a;
|
|||
2 | 2
|
||||
(2 rows)
|
||||
|
||||
-- test long table names
|
||||
SET client_min_messages TO DEBUG1;
|
||||
CREATE TABLE abcde_0123456789012345678901234567890123456789012345678901234567890123456789 (x int, y int);
|
||||
NOTICE: identifier "abcde_0123456789012345678901234567890123456789012345678901234567890123456789" will be truncated to "abcde_012345678901234567890123456789012345678901234567890123456"
|
||||
SELECT create_distributed_table('abcde_0123456789012345678901234567890123456789012345678901234567890123456789', 'x');
|
||||
create_distributed_table
|
||||
---------------------------------------------------------------------
|
||||
|
||||
(1 row)
|
||||
|
||||
SELECT alter_distributed_table('abcde_0123456789012345678901234567890123456789012345678901234567890123456789', distribution_column := 'y');
|
||||
NOTICE: creating a new table for alter_distributed_table.abcde_012345678901234567890123456789012345678901234567890123456
|
||||
NOTICE: Moving the data of alter_distributed_table.abcde_012345678901234567890123456789012345678901234567890123456
|
||||
DEBUG: cannot perform distributed INSERT INTO ... SELECT because the partition columns in the source table and subquery do not match
|
||||
DETAIL: The target table's partition column should correspond to a partition column in the subquery.
|
||||
CONTEXT: SQL statement "INSERT INTO alter_distributed_table.abcde_0123456789012345678901234567890123456_f7ff6612_4160710162 (x,y) SELECT x,y FROM alter_distributed_table.abcde_012345678901234567890123456789012345678901234567890123456"
|
||||
DEBUG: performing repartitioned INSERT ... SELECT
|
||||
CONTEXT: SQL statement "INSERT INTO alter_distributed_table.abcde_0123456789012345678901234567890123456_f7ff6612_4160710162 (x,y) SELECT x,y FROM alter_distributed_table.abcde_012345678901234567890123456789012345678901234567890123456"
|
||||
NOTICE: Dropping the old alter_distributed_table.abcde_012345678901234567890123456789012345678901234567890123456
|
||||
CONTEXT: SQL statement "DROP TABLE alter_distributed_table.abcde_012345678901234567890123456789012345678901234567890123456 CASCADE"
|
||||
NOTICE: Renaming the new table to alter_distributed_table.abcde_012345678901234567890123456789012345678901234567890123456
|
||||
ERROR: shard name abcde_01234567890123456789012345678901234567890_f7ff6612_361221 exceeds 63 characters
|
||||
CONTEXT: while executing command on localhost:xxxxx
|
||||
SQL statement "ALTER TABLE alter_distributed_table.abcde_0123456789012345678901234567890123456_f7ff6612_4160710162 RENAME TO abcde_012345678901234567890123456789012345678901234567890123456"
|
||||
RESET client_min_messages;
|
||||
-- test long partitioned table names
|
||||
CREATE TABLE partition_lengths
|
||||
(
|
||||
tenant_id integer NOT NULL,
|
||||
timeperiod timestamp without time zone NOT NULL,
|
||||
inserted_utc timestamp without time zone NOT NULL DEFAULT now()
|
||||
) PARTITION BY RANGE (timeperiod);
|
||||
SELECT create_distributed_table('partition_lengths', 'tenant_id');
|
||||
create_distributed_table
|
||||
---------------------------------------------------------------------
|
||||
|
||||
(1 row)
|
||||
|
||||
CREATE TABLE partition_lengths_p2020_09_28_12345678901234567890123456789012345678901234567890 PARTITION OF partition_lengths FOR VALUES FROM ('2020-09-28 00:00:00') TO ('2020-09-29 00:00:00');
|
||||
NOTICE: identifier "partition_lengths_p2020_09_28_12345678901234567890123456789012345678901234567890" will be truncated to "partition_lengths_p2020_09_28_123456789012345678901234567890123"
|
||||
-- verify alter_distributed_table works with long partition names
|
||||
SELECT alter_distributed_table('partition_lengths', shard_count := 29, cascade_to_colocated := false);
|
||||
NOTICE: converting the partitions of alter_distributed_table.partition_lengths
|
||||
NOTICE: creating a new table for alter_distributed_table.partition_lengths_p2020_09_28_123456789012345678901234567890123
|
||||
NOTICE: Moving the data of alter_distributed_table.partition_lengths_p2020_09_28_123456789012345678901234567890123
|
||||
NOTICE: Dropping the old alter_distributed_table.partition_lengths_p2020_09_28_123456789012345678901234567890123
|
||||
NOTICE: Renaming the new table to alter_distributed_table.partition_lengths_p2020_09_28_123456789012345678901234567890123
|
||||
ERROR: shard name partition_lengths_p2020_09_28_12345678901234567_6d0d7fee_361233 exceeds 63 characters
|
||||
CONTEXT: while executing command on localhost:xxxxx
|
||||
SQL statement "ALTER TABLE alter_distributed_table.partition_lengths_p2020_09_28_1234567890123_6d0d7fee_1829601262 RENAME TO partition_lengths_p2020_09_28_123456789012345678901234567890123"
|
||||
-- test long partition table names
|
||||
ALTER TABLE partition_lengths_p2020_09_28_12345678901234567890123456789012345678901234567890 RENAME TO partition_lengths_p2020_09_28;
|
||||
NOTICE: identifier "partition_lengths_p2020_09_28_12345678901234567890123456789012345678901234567890" will be truncated to "partition_lengths_p2020_09_28_123456789012345678901234567890123"
|
||||
ALTER TABLE partition_lengths RENAME TO partition_lengths_12345678901234567890123456789012345678901234567890;
|
||||
NOTICE: identifier "partition_lengths_12345678901234567890123456789012345678901234567890" will be truncated to "partition_lengths_123456789012345678901234567890123456789012345"
|
||||
ERROR: shard name partition_lengths_12345678901234567890123456789_f3bd8571_361225 exceeds 63 characters
|
||||
CONTEXT: while executing command on localhost:xxxxx
|
||||
-- verify alter_distributed_table works with long partitioned table names
|
||||
SELECT alter_distributed_table('partition_lengths_12345678901234567890123456789012345678901234567890', shard_count := 17, cascade_to_colocated := false);
|
||||
ERROR: relation "partition_lengths_123456789012345678901234567890123456789012345" does not exist
|
||||
SET client_min_messages TO WARNING;
|
||||
DROP SCHEMA alter_distributed_table CASCADE;
|
||||
|
|
|
@ -681,6 +681,34 @@ CREATE TABLE identity_cols_test (a int, b int generated by default as identity (
|
|||
SELECT alter_table_set_access_method('identity_cols_test', 'columnar');
|
||||
ERROR: cannot complete command because relation alter_table_set_access_method.identity_cols_test has identity column
|
||||
HINT: Drop the identity columns and re-try the command
|
||||
-- test long table names
|
||||
SET client_min_messages TO DEBUG1;
|
||||
CREATE TABLE abcde_0123456789012345678901234567890123456789012345678901234567890123456789 (x int, y int);
|
||||
NOTICE: identifier "abcde_0123456789012345678901234567890123456789012345678901234567890123456789" will be truncated to "abcde_012345678901234567890123456789012345678901234567890123456"
|
||||
SELECT create_distributed_table('abcde_0123456789012345678901234567890123456789012345678901234567890123456789', 'x');
|
||||
create_distributed_table
|
||||
---------------------------------------------------------------------
|
||||
|
||||
(1 row)
|
||||
|
||||
SELECT alter_table_set_access_method('abcde_0123456789012345678901234567890123456789012345678901234567890123456789', 'columnar');
|
||||
NOTICE: creating a new table for alter_table_set_access_method.abcde_012345678901234567890123456789012345678901234567890123456
|
||||
DEBUG: pathlist hook for columnar table am
|
||||
CONTEXT: SQL statement "SELECT EXISTS (SELECT 1 FROM alter_table_set_access_method.abcde_0123456789012345678901234567890123456_f7ff6612_4160710162)"
|
||||
NOTICE: Moving the data of alter_table_set_access_method.abcde_012345678901234567890123456789012345678901234567890123456
|
||||
NOTICE: Dropping the old alter_table_set_access_method.abcde_012345678901234567890123456789012345678901234567890123456
|
||||
CONTEXT: SQL statement "DROP TABLE alter_table_set_access_method.abcde_012345678901234567890123456789012345678901234567890123456 CASCADE"
|
||||
NOTICE: Renaming the new table to alter_table_set_access_method.abcde_012345678901234567890123456789012345678901234567890123456
|
||||
ERROR: shard name abcde_01234567890123456789012345678901234567890_f7ff6612_360901 exceeds 63 characters
|
||||
CONTEXT: while executing command on localhost:xxxxx
|
||||
SQL statement "ALTER TABLE alter_table_set_access_method.abcde_0123456789012345678901234567890123456_f7ff6612_4160710162 RENAME TO abcde_012345678901234567890123456789012345678901234567890123456"
|
||||
SELECT * FROM abcde_0123456789012345678901234567890123456789012345678901234567890123456789;
|
||||
NOTICE: identifier "abcde_0123456789012345678901234567890123456789012345678901234567890123456789" will be truncated to "abcde_012345678901234567890123456789012345678901234567890123456"
|
||||
x | y
|
||||
---------------------------------------------------------------------
|
||||
(0 rows)
|
||||
|
||||
RESET client_min_messages;
|
||||
SET client_min_messages TO WARNING;
|
||||
DROP SCHEMA alter_table_set_access_method CASCADE;
|
||||
SELECT 1 FROM master_remove_node('localhost', :master_port);
|
||||
|
|
|
@ -178,39 +178,37 @@ NOTICE: foreign-data wrapper "fake_fdw" does not have an extension defined
|
|||
|
||||
(1 row)
|
||||
|
||||
ALTER FOREIGN TABLE foreign_table rename to renamed_foreign_table;
|
||||
ALTER FOREIGN TABLE renamed_foreign_table rename full_name to rename_name;
|
||||
ALTER FOREIGN TABLE renamed_foreign_table alter rename_name type char(8);
|
||||
ALTER FOREIGN TABLE foreign_table rename to renamed_foreign_table_with_long_name_12345678901234567890123456789012345678901234567890;
|
||||
NOTICE: identifier "renamed_foreign_table_with_long_name_12345678901234567890123456789012345678901234567890" will be truncated to "renamed_foreign_table_with_long_name_12345678901234567890123456"
|
||||
ERROR: shard name renamed_foreign_table_with_long_name_1234567890_6a8dd6f8_610008 exceeds 63 characters
|
||||
CONTEXT: while executing command on localhost:xxxxx
|
||||
ALTER FOREIGN TABLE renamed_foreign_table_with_long_name_12345678901234567890123456789012345678901234567890 rename full_name to rename_name;
|
||||
NOTICE: identifier "renamed_foreign_table_with_long_name_12345678901234567890123456789012345678901234567890" will be truncated to "renamed_foreign_table_with_long_name_12345678901234567890123456"
|
||||
ERROR: relation "renamed_foreign_table_with_long_name_12345678901234567890123456" does not exist
|
||||
ALTER FOREIGN TABLE renamed_foreign_table_with_long_name_12345678901234567890123456789012345678901234567890 alter rename_name type char(8);
|
||||
NOTICE: identifier "renamed_foreign_table_with_long_name_12345678901234567890123456789012345678901234567890" will be truncated to "renamed_foreign_table_with_long_name_12345678901234567890123456"
|
||||
ERROR: relation "renamed_foreign_table_with_long_name_12345678901234567890123456" does not exist
|
||||
\c - - :public_worker_1_host :worker_1_port
|
||||
select table_name, column_name, data_type
|
||||
from information_schema.columns
|
||||
where table_schema='public' and table_name like 'renamed_foreign_table_%' and column_name <> 'id'
|
||||
order by table_name;
|
||||
table_name | column_name | data_type
|
||||
table_name | column_name | data_type
|
||||
---------------------------------------------------------------------
|
||||
renamed_foreign_table_610008 | rename_name | character
|
||||
renamed_foreign_table_610009 | rename_name | character
|
||||
renamed_foreign_table_610010 | rename_name | character
|
||||
renamed_foreign_table_610011 | rename_name | character
|
||||
(4 rows)
|
||||
(0 rows)
|
||||
|
||||
\c - - :master_host :master_port
|
||||
SELECT master_get_table_ddl_events('renamed_foreign_table');
|
||||
NOTICE: foreign-data wrapper "fake_fdw" does not have an extension defined
|
||||
master_get_table_ddl_events
|
||||
---------------------------------------------------------------------
|
||||
CREATE SERVER IF NOT EXISTS fake_fdw_server FOREIGN DATA WRAPPER fake_fdw
|
||||
CREATE FOREIGN TABLE public.renamed_foreign_table (id bigint NOT NULL, rename_name character(8) DEFAULT ''::text NOT NULL) SERVER fake_fdw_server OPTIONS (encoding 'utf-8', compression 'true')
|
||||
ALTER TABLE public.renamed_foreign_table OWNER TO postgres
|
||||
(3 rows)
|
||||
|
||||
SELECT master_get_table_ddl_events('renamed_foreign_table_with_long_name_12345678901234567890123456789012345678901234567890');
|
||||
ERROR: relation "renamed_foreign_table_with_long_name_12345678901234567890123456" does not exist
|
||||
-- propagating views is not supported
|
||||
CREATE VIEW local_view AS SELECT * FROM simple_table;
|
||||
SELECT master_get_table_ddl_events('local_view');
|
||||
ERROR: local_view is not a regular, foreign or partitioned table
|
||||
-- clean up
|
||||
DROP VIEW IF EXISTS local_view;
|
||||
DROP FOREIGN TABLE IF EXISTS renamed_foreign_table;
|
||||
DROP FOREIGN TABLE IF EXISTS renamed_foreign_table_with_long_name_12345678901234567890123456789012345678901234567890;
|
||||
NOTICE: identifier "renamed_foreign_table_with_long_name_12345678901234567890123456789012345678901234567890" will be truncated to "renamed_foreign_table_with_long_name_12345678901234567890123456"
|
||||
NOTICE: foreign table "renamed_foreign_table_with_long_name_12345678901234567890123456" does not exist, skipping
|
||||
\c - - :public_worker_1_host :worker_1_port
|
||||
select table_name, column_name, data_type
|
||||
from information_schema.columns
|
||||
|
|
|
@ -362,13 +362,13 @@ SET client_min_messages TO DEBUG1;
|
|||
CREATE INDEX ix_test_index_creation2
|
||||
ON test_index_creation1 USING btree
|
||||
(tenant_id, timeperiod);
|
||||
DEBUG: the index name on the shards of the partition is too long, switching to sequential and local execution mode to prevent self deadlocks: test_index_creation1_p2020_09_26_10311_tenant_id_timeperiod_idx
|
||||
DEBUG: the index name on the shards of the partition is too long, switching to sequential and local execution mode to prevent self deadlocks: test_index_creation1_p2020_09_26_xxxxxx_tenant_id_timeperiod_idx
|
||||
-- same test with schema qualified
|
||||
SET search_path TO public;
|
||||
CREATE INDEX ix_test_index_creation3
|
||||
ON multi_index_statements.test_index_creation1 USING btree
|
||||
(tenant_id, timeperiod);
|
||||
DEBUG: the index name on the shards of the partition is too long, switching to sequential and local execution mode to prevent self deadlocks: test_index_creation1_p2020_09_26_10311_tenant_id_timeperiod_idx
|
||||
DEBUG: the index name on the shards of the partition is too long, switching to sequential and local execution mode to prevent self deadlocks: test_index_creation1_p2020_09_26_xxxxxx_tenant_id_timeperiod_idx
|
||||
SET search_path TO multi_index_statements;
|
||||
-- we cannot switch to sequential execution
|
||||
-- after a parallel query
|
||||
|
@ -382,7 +382,7 @@ BEGIN;
|
|||
CREATE INDEX ix_test_index_creation4
|
||||
ON test_index_creation1 USING btree
|
||||
(tenant_id, timeperiod);
|
||||
ERROR: The index name (test_index_creation1_p2020_09_26_10311_tenant_id_timeperiod_idx) on a shard is too long and could lead to deadlocks when executed in a transaction block after a parallel query
|
||||
ERROR: The index name (test_index_creation1_p2020_09_26_xxxxxx_tenant_id_timeperiod_idx) on a shard is too long and could lead to deadlocks when executed in a transaction block after a parallel query
|
||||
HINT: Try re-running the transaction with "SET LOCAL citus.multi_shard_modify_mode TO 'sequential';"
|
||||
ROLLBACK;
|
||||
-- try inside a sequential block
|
||||
|
@ -397,7 +397,7 @@ BEGIN;
|
|||
CREATE INDEX ix_test_index_creation4
|
||||
ON test_index_creation1 USING btree
|
||||
(tenant_id, timeperiod);
|
||||
DEBUG: the index name on the shards of the partition is too long, switching to sequential and local execution mode to prevent self deadlocks: test_index_creation1_p2020_09_26_10311_tenant_id_timeperiod_idx
|
||||
DEBUG: the index name on the shards of the partition is too long, switching to sequential and local execution mode to prevent self deadlocks: test_index_creation1_p2020_09_26_xxxxxx_tenant_id_timeperiod_idx
|
||||
ROLLBACK;
|
||||
-- should be able to create indexes with INCLUDE/WHERE
|
||||
CREATE INDEX ix_test_index_creation5 ON test_index_creation1
|
||||
|
@ -406,7 +406,7 @@ CREATE INDEX ix_test_index_creation5 ON test_index_creation1
|
|||
DEBUG: the index name on the shards of the partition is too long, switching to sequential and local execution mode to prevent self deadlocks: test_index_creation1_p2020_09_2_tenant_id_timeperiod_field1_idx
|
||||
CREATE UNIQUE INDEX ix_test_index_creation6 ON test_index_creation1
|
||||
USING btree(tenant_id, timeperiod);
|
||||
DEBUG: the index name on the shards of the partition is too long, switching to sequential and local execution mode to prevent self deadlocks: test_index_creation1_p2020_09_26_10311_tenant_id_timeperiod_idx
|
||||
DEBUG: the index name on the shards of the partition is too long, switching to sequential and local execution mode to prevent self deadlocks: test_index_creation1_p2020_09_26_xxxxxx_tenant_id_timeperiod_idx
|
||||
-- should be able to create short named indexes in parallel
|
||||
-- as the table/index name is short
|
||||
CREATE INDEX f1
|
||||
|
|
|
@ -125,13 +125,122 @@ SELECT "Constraint", "Definition" FROM table_checks WHERE relid='public.name_len
|
|||
(1 row)
|
||||
|
||||
\c - - :master_host :master_port
|
||||
-- Placeholders for RENAME operations
|
||||
\set VERBOSITY TERSE
|
||||
-- Rename the table to a too-long name
|
||||
SET client_min_messages TO DEBUG1;
|
||||
SET citus.force_max_query_parallelization TO ON;
|
||||
ALTER TABLE name_lengths RENAME TO name_len_12345678901234567890123456789012345678901234567890;
|
||||
ERROR: shard name name_len_12345678901234567890123456789012345678_fcd8ab6f_xxxxx exceeds 63 characters
|
||||
CONTEXT: while executing command on localhost:xxxxx
|
||||
SELECT * FROM name_len_12345678901234567890123456789012345678901234567890;
|
||||
DEBUG: relation "name_len_12345678901234567890123456789012345678901234567890" does not exist
|
||||
ERROR: relation "name_len_12345678901234567890123456789012345678901234567890" does not exist
|
||||
ALTER TABLE name_len_12345678901234567890123456789012345678901234567890 RENAME TO name_lengths;
|
||||
ERROR: relation "name_len_12345678901234567890123456789012345678901234567890" does not exist
|
||||
SELECT * FROM name_lengths;
|
||||
col1 | col2 | float_col_12345678901234567890123456789012345678901234567890 | date_col_12345678901234567890123456789012345678901234567890 | int_col_12345678901234567890123456789012345678901234567890
|
||||
---------------------------------------------------------------------
|
||||
(0 rows)
|
||||
|
||||
-- Test renames on zero shard distributed tables
|
||||
CREATE TABLE append_zero_shard_table (a int);
|
||||
SELECT create_distributed_table('append_zero_shard_table', 'a', 'append');
|
||||
create_distributed_table
|
||||
---------------------------------------------------------------------
|
||||
|
||||
(1 row)
|
||||
|
||||
ALTER TABLE append_zero_shard_table rename TO append_zero_shard_table_12345678901234567890123456789012345678901234567890;
|
||||
NOTICE: identifier "append_zero_shard_table_12345678901234567890123456789012345678901234567890" will be truncated to "append_zero_shard_table_123456789012345678901234567890123456789"
|
||||
-- Verify that we do not support long renames after parallel queries are executed in transaction block
|
||||
BEGIN;
|
||||
ALTER TABLE name_lengths rename col1 to new_column_name;
|
||||
ALTER TABLE name_lengths RENAME TO name_len_12345678901234567890123456789012345678901234567890;
|
||||
ERROR: shard name name_len_12345678901234567890123456789012345678_fcd8ab6f_xxxxx exceeds 63 characters
|
||||
CONTEXT: while executing command on localhost:xxxxx
|
||||
ROLLBACK;
|
||||
-- The same operation will work when sequential mode is set
|
||||
BEGIN;
|
||||
SET LOCAL citus.multi_shard_modify_mode TO 'sequential';
|
||||
ALTER TABLE name_lengths rename col1 to new_column_name;
|
||||
ALTER TABLE name_lengths RENAME TO name_len_12345678901234567890123456789012345678901234567890;
|
||||
ERROR: shard name name_len_12345678901234567890123456789012345678_fcd8ab6f_xxxxx exceeds 63 characters
|
||||
CONTEXT: while executing command on localhost:xxxxx
|
||||
ROLLBACK;
|
||||
RESET client_min_messages;
|
||||
-- test long partitioned table renames
|
||||
SET citus.shard_replication_factor TO 1;
|
||||
CREATE TABLE partition_lengths
|
||||
(
|
||||
tenant_id integer NOT NULL,
|
||||
timeperiod timestamp without time zone NOT NULL
|
||||
) PARTITION BY RANGE (timeperiod);
|
||||
SELECT create_distributed_table('partition_lengths', 'tenant_id');
|
||||
create_distributed_table
|
||||
---------------------------------------------------------------------
|
||||
|
||||
(1 row)
|
||||
|
||||
CREATE TABLE partition_lengths_p2020_09_28 PARTITION OF partition_lengths FOR VALUES FROM ('2020-09-28 00:00:00') TO ('2020-09-29 00:00:00');
|
||||
-- verify that we can rename partitioned tables and partitions to too-long names
|
||||
ALTER TABLE partition_lengths RENAME TO partition_lengths_12345678901234567890123456789012345678901234567890;
|
||||
NOTICE: identifier "partition_lengths_12345678901234567890123456789012345678901234567890" will be truncated to "partition_lengths_123456789012345678901234567890123456789012345"
|
||||
ERROR: shard name partition_lengths_12345678901234567890123456789_f3bd8571_225005 exceeds 63 characters
|
||||
CONTEXT: while executing command on localhost:xxxxx
|
||||
-- verify that we can rename partitioned tables and partitions with too-long names
|
||||
ALTER TABLE partition_lengths_12345678901234567890123456789012345678901234567890 RENAME TO partition_lengths;
|
||||
NOTICE: identifier "partition_lengths_12345678901234567890123456789012345678901234567890" will be truncated to "partition_lengths_123456789012345678901234567890123456789012345"
|
||||
ERROR: relation "partition_lengths_123456789012345678901234567890123456789012345" does not exist
|
||||
-- Placeholders for unsupported operations
|
||||
\set VERBOSITY TERSE
|
||||
-- renaming distributed table partitions
|
||||
ALTER TABLE partition_lengths_p2020_09_28 RENAME TO partition_lengths_p2020_09_28_12345678901234567890123456789012345678901234567890;
|
||||
NOTICE: identifier "partition_lengths_p2020_09_28_12345678901234567890123456789012345678901234567890" will be truncated to "partition_lengths_p2020_09_28_123456789012345678901234567890123"
|
||||
ERROR: shard name partition_lengths_p2020_09_28_12345678901234567_6d0d7fee_225008 exceeds 63 characters
|
||||
-- creating or attaching new partitions with long names create deadlocks
|
||||
CREATE TABLE partition_lengths_p2020_09_29_12345678901234567890123456789012345678901234567890 (LIKE partition_lengths_p2020_09_28_12345678901234567890123456789012345678901234567890);
|
||||
NOTICE: identifier "partition_lengths_p2020_09_29_12345678901234567890123456789012345678901234567890" will be truncated to "partition_lengths_p2020_09_29_123456789012345678901234567890123"
|
||||
NOTICE: identifier "partition_lengths_p2020_09_28_12345678901234567890123456789012345678901234567890" will be truncated to "partition_lengths_p2020_09_28_123456789012345678901234567890123"
|
||||
ERROR: relation "partition_lengths_p2020_09_28_123456789012345678901234567890123" does not exist at character 101
|
||||
ALTER TABLE partition_lengths
|
||||
ATTACH PARTITION partition_lengths_p2020_09_29_12345678901234567890123456789012345678901234567890
|
||||
FOR VALUES FROM ('2020-09-29 00:00:00') TO ('2020-09-30 00:00:00');
|
||||
NOTICE: identifier "partition_lengths_p2020_09_29_12345678901234567890123456789012345678901234567890" will be truncated to "partition_lengths_p2020_09_29_123456789012345678901234567890123"
|
||||
ERROR: relation "partition_lengths_p2020_09_29_123456789012345678901234567890123" does not exist
|
||||
CREATE TABLE partition_lengths_p2020_09_30_12345678901234567890123456789012345678901234567890
|
||||
PARTITION OF partition_lengths
|
||||
FOR VALUES FROM ('2020-09-30 00:00:00') TO ('2020-10-01 00:00:00');
|
||||
NOTICE: identifier "partition_lengths_p2020_09_30_12345678901234567890123456789012345678901234567890" will be truncated to "partition_lengths_p2020_09_30_123456789012345678901234567890123"
|
||||
ERROR: canceling the transaction since it was involved in a distributed deadlock
|
||||
DROP TABLE partition_lengths_p2020_09_29_12345678901234567890123456789012345678901234567890;
|
||||
NOTICE: identifier "partition_lengths_p2020_09_29_12345678901234567890123456789012345678901234567890" will be truncated to "partition_lengths_p2020_09_29_123456789012345678901234567890123"
|
||||
ERROR: table "partition_lengths_p2020_09_29_123456789012345678901234567890123" does not exist
|
||||
-- creating or attaching new partitions with long names work when using sequential shard modify mode
|
||||
BEGIN;
|
||||
SET LOCAL citus.multi_shard_modify_mode = sequential;
|
||||
CREATE TABLE partition_lengths_p2020_09_29_12345678901234567890123456789012345678901234567890 (LIKE partition_lengths_p2020_09_28_12345678901234567890123456789012345678901234567890);
|
||||
NOTICE: identifier "partition_lengths_p2020_09_29_12345678901234567890123456789012345678901234567890" will be truncated to "partition_lengths_p2020_09_29_123456789012345678901234567890123"
|
||||
NOTICE: identifier "partition_lengths_p2020_09_28_12345678901234567890123456789012345678901234567890" will be truncated to "partition_lengths_p2020_09_28_123456789012345678901234567890123"
|
||||
ERROR: relation "partition_lengths_p2020_09_28_123456789012345678901234567890123" does not exist at character 101
|
||||
ALTER TABLE partition_lengths
|
||||
ATTACH PARTITION partition_lengths_p2020_09_29_12345678901234567890123456789012345678901234567890
|
||||
FOR VALUES FROM ('2020-09-29 00:00:00') TO ('2020-09-30 00:00:00');
|
||||
NOTICE: identifier "partition_lengths_p2020_09_29_12345678901234567890123456789012345678901234567890" will be truncated to "partition_lengths_p2020_09_29_123456789012345678901234567890123"
|
||||
ERROR: current transaction is aborted, commands ignored until end of transaction block
|
||||
CREATE TABLE partition_lengths_p2020_09_30_12345678901234567890123456789012345678901234567890
|
||||
PARTITION OF partition_lengths
|
||||
FOR VALUES FROM ('2020-09-30 00:00:00') TO ('2020-10-01 00:00:00');
|
||||
NOTICE: identifier "partition_lengths_p2020_09_30_12345678901234567890123456789012345678901234567890" will be truncated to "partition_lengths_p2020_09_30_123456789012345678901234567890123"
|
||||
ERROR: current transaction is aborted, commands ignored until end of transaction block
|
||||
ROLLBACK;
|
||||
-- renaming distributed table constraints are not supported
|
||||
ALTER TABLE name_lengths RENAME CONSTRAINT unique_12345678901234567890123456789012345678901234567890 TO unique2_12345678901234567890123456789012345678901234567890;
|
||||
ERROR: renaming constraints belonging to distributed tables is currently unsupported
|
||||
DROP TABLE partition_lengths CASCADE;
|
||||
\set VERBOSITY DEFAULT
|
||||
-- Verify that we can create indexes with very long names on zero shard tables.
|
||||
CREATE INDEX append_zero_shard_table_idx_12345678901234567890123456789012345678901234567890 ON append_zero_shard_table_12345678901234567890123456789012345678901234567890(a);
|
||||
NOTICE: identifier "append_zero_shard_table_idx_12345678901234567890123456789012345678901234567890" will be truncated to "append_zero_shard_table_idx_12345678901234567890123456789012345"
|
||||
NOTICE: identifier "append_zero_shard_table_12345678901234567890123456789012345678901234567890" will be truncated to "append_zero_shard_table_123456789012345678901234567890123456789"
|
||||
-- Verify that CREATE INDEX on already distributed table has proper shard names.
|
||||
CREATE INDEX tmp_idx_12345678901234567890123456789012345678901234567890 ON name_lengths(col2);
|
||||
\c - - :public_worker_1_host :worker_1_port
|
||||
|
@ -148,6 +257,12 @@ SELECT "relname", "Column", "Type", "Definition" FROM index_attrs WHERE
|
|||
-- by the parser/rewriter before further processing, just as in Postgres.
|
||||
CREATE INDEX tmp_idx_123456789012345678901234567890123456789012345678901234567890 ON name_lengths(col2);
|
||||
NOTICE: identifier "tmp_idx_123456789012345678901234567890123456789012345678901234567890" will be truncated to "tmp_idx_1234567890123456789012345678901234567890123456789012345"
|
||||
-- Verify we can rename indexes with long names
|
||||
ALTER INDEX tmp_idx_123456789012345678901234567890123456789012345678901234567890 RENAME TO tmp_idx_newname_123456789012345678901234567890123456789012345678901234567890;
|
||||
NOTICE: identifier "tmp_idx_123456789012345678901234567890123456789012345678901234567890" will be truncated to "tmp_idx_1234567890123456789012345678901234567890123456789012345"
|
||||
NOTICE: identifier "tmp_idx_newname_123456789012345678901234567890123456789012345678901234567890" will be truncated to "tmp_idx_newname_12345678901234567890123456789012345678901234567"
|
||||
ERROR: shard name tmp_idx_newname_1234567890123456789012345678901_c54e849b_225002 exceeds 63 characters
|
||||
CONTEXT: while executing command on localhost:xxxxx
|
||||
\c - - :public_worker_1_host :worker_1_port
|
||||
SELECT "relname", "Column", "Type", "Definition" FROM index_attrs WHERE
|
||||
relname LIKE 'tmp_idx_%' ORDER BY 1 DESC, 2 DESC, 3 DESC, 4 DESC;
|
||||
|
@ -208,19 +323,14 @@ SELECT master_create_worker_shards('sneaky_name_lengths', '2', '2');
|
|||
(1 row)
|
||||
|
||||
\c - - :public_worker_1_host :worker_1_port
|
||||
\di public.sneaky*225006
|
||||
List of relations
|
||||
Schema | Name | Type | Owner | Table
|
||||
\di public.sneaky*225030
|
||||
List of relations
|
||||
Schema | Name | Type | Owner | Table
|
||||
---------------------------------------------------------------------
|
||||
public | sneaky_name_lengths_int_col_1234567890123456789_6402d2cd_225006 | index | postgres | sneaky_name_lengths_225006
|
||||
(1 row)
|
||||
|
||||
SELECT "Constraint", "Definition" FROM table_checks WHERE relid='public.sneaky_name_lengths_225006'::regclass ORDER BY 1 DESC, 2 DESC;
|
||||
Constraint | Definition
|
||||
---------------------------------------------------------------------
|
||||
checky_12345678901234567890123456789012345678901234567890 | CHECK (int_col_123456789012345678901234567890123456789012345678901234 > 100)
|
||||
(1 row)
|
||||
(0 rows)
|
||||
|
||||
SELECT "Constraint", "Definition" FROM table_checks WHERE relid='public.sneaky_name_lengths_225030'::regclass ORDER BY 1 DESC, 2 DESC;
|
||||
ERROR: relation "public.sneaky_name_lengths_225030" does not exist
|
||||
\c - - :master_host :master_port
|
||||
SET citus.shard_count TO 2;
|
||||
SET citus.shard_replication_factor TO 2;
|
||||
|
@ -239,12 +349,11 @@ SELECT create_distributed_table('sneaky_name_lengths', 'col1', 'hash');
|
|||
(1 row)
|
||||
|
||||
\c - - :public_worker_1_host :worker_1_port
|
||||
\di unique*225008
|
||||
List of relations
|
||||
Schema | Name | Type | Owner | Table
|
||||
\di unique*225032
|
||||
List of relations
|
||||
Schema | Name | Type | Owner | Table
|
||||
---------------------------------------------------------------------
|
||||
public | unique_1234567890123456789012345678901234567890_a5986f27_225008 | index | postgres | sneaky_name_lengths_225008
|
||||
(1 row)
|
||||
(0 rows)
|
||||
|
||||
\c - - :master_host :master_port
|
||||
SET citus.shard_count TO 2;
|
||||
|
@ -336,3 +445,4 @@ DROP TABLE multi_name_lengths.too_long_12345678901234567890123456789012345678901
|
|||
-- Clean up.
|
||||
DROP TABLE name_lengths CASCADE;
|
||||
DROP TABLE U&"elephant_!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D" UESCAPE '!' CASCADE;
|
||||
RESET citus.force_max_query_parallelization;
|
||||
|
|
|
@ -280,5 +280,33 @@ CREATE MATERIALIZED VIEW mat_view AS SELECT * FROM mat_view_test;
|
|||
SELECT alter_distributed_table('mat_view_test', shard_count := 5, cascade_to_colocated := false);
|
||||
SELECT * FROM mat_view ORDER BY a;
|
||||
|
||||
-- test long table names
|
||||
SET client_min_messages TO DEBUG1;
|
||||
CREATE TABLE abcde_0123456789012345678901234567890123456789012345678901234567890123456789 (x int, y int);
|
||||
SELECT create_distributed_table('abcde_0123456789012345678901234567890123456789012345678901234567890123456789', 'x');
|
||||
SELECT alter_distributed_table('abcde_0123456789012345678901234567890123456789012345678901234567890123456789', distribution_column := 'y');
|
||||
RESET client_min_messages;
|
||||
|
||||
-- test long partitioned table names
|
||||
CREATE TABLE partition_lengths
|
||||
(
|
||||
tenant_id integer NOT NULL,
|
||||
timeperiod timestamp without time zone NOT NULL,
|
||||
inserted_utc timestamp without time zone NOT NULL DEFAULT now()
|
||||
) PARTITION BY RANGE (timeperiod);
|
||||
|
||||
SELECT create_distributed_table('partition_lengths', 'tenant_id');
|
||||
CREATE TABLE partition_lengths_p2020_09_28_12345678901234567890123456789012345678901234567890 PARTITION OF partition_lengths FOR VALUES FROM ('2020-09-28 00:00:00') TO ('2020-09-29 00:00:00');
|
||||
|
||||
-- verify alter_distributed_table works with long partition names
|
||||
SELECT alter_distributed_table('partition_lengths', shard_count := 29, cascade_to_colocated := false);
|
||||
|
||||
-- test long partition table names
|
||||
ALTER TABLE partition_lengths_p2020_09_28_12345678901234567890123456789012345678901234567890 RENAME TO partition_lengths_p2020_09_28;
|
||||
ALTER TABLE partition_lengths RENAME TO partition_lengths_12345678901234567890123456789012345678901234567890;
|
||||
|
||||
-- verify alter_distributed_table works with long partitioned table names
|
||||
SELECT alter_distributed_table('partition_lengths_12345678901234567890123456789012345678901234567890', shard_count := 17, cascade_to_colocated := false);
|
||||
|
||||
SET client_min_messages TO WARNING;
|
||||
DROP SCHEMA alter_distributed_table CASCADE;
|
||||
|
|
|
@ -213,6 +213,14 @@ CREATE TABLE identity_cols_test (a int, b int generated by default as identity (
|
|||
-- errors out since we don't support alter_table.* udfs with tables having any identity columns
|
||||
SELECT alter_table_set_access_method('identity_cols_test', 'columnar');
|
||||
|
||||
-- test long table names
|
||||
SET client_min_messages TO DEBUG1;
|
||||
CREATE TABLE abcde_0123456789012345678901234567890123456789012345678901234567890123456789 (x int, y int);
|
||||
SELECT create_distributed_table('abcde_0123456789012345678901234567890123456789012345678901234567890123456789', 'x');
|
||||
SELECT alter_table_set_access_method('abcde_0123456789012345678901234567890123456789012345678901234567890123456789', 'columnar');
|
||||
SELECT * FROM abcde_0123456789012345678901234567890123456789012345678901234567890123456789;
|
||||
RESET client_min_messages;
|
||||
|
||||
SET client_min_messages TO WARNING;
|
||||
DROP SCHEMA alter_table_set_access_method CASCADE;
|
||||
SELECT 1 FROM master_remove_node('localhost', :master_port);
|
||||
|
|
|
@ -123,9 +123,9 @@ CREATE FOREIGN TABLE foreign_table (
|
|||
) SERVER fake_fdw_server OPTIONS (encoding 'utf-8', compression 'true');
|
||||
|
||||
SELECT create_distributed_table('foreign_table', 'id');
|
||||
ALTER FOREIGN TABLE foreign_table rename to renamed_foreign_table;
|
||||
ALTER FOREIGN TABLE renamed_foreign_table rename full_name to rename_name;
|
||||
ALTER FOREIGN TABLE renamed_foreign_table alter rename_name type char(8);
|
||||
ALTER FOREIGN TABLE foreign_table rename to renamed_foreign_table_with_long_name_12345678901234567890123456789012345678901234567890;
|
||||
ALTER FOREIGN TABLE renamed_foreign_table_with_long_name_12345678901234567890123456789012345678901234567890 rename full_name to rename_name;
|
||||
ALTER FOREIGN TABLE renamed_foreign_table_with_long_name_12345678901234567890123456789012345678901234567890 alter rename_name type char(8);
|
||||
\c - - :public_worker_1_host :worker_1_port
|
||||
select table_name, column_name, data_type
|
||||
from information_schema.columns
|
||||
|
@ -133,7 +133,7 @@ where table_schema='public' and table_name like 'renamed_foreign_table_%' and co
|
|||
order by table_name;
|
||||
\c - - :master_host :master_port
|
||||
|
||||
SELECT master_get_table_ddl_events('renamed_foreign_table');
|
||||
SELECT master_get_table_ddl_events('renamed_foreign_table_with_long_name_12345678901234567890123456789012345678901234567890');
|
||||
|
||||
-- propagating views is not supported
|
||||
CREATE VIEW local_view AS SELECT * FROM simple_table;
|
||||
|
@ -142,7 +142,7 @@ SELECT master_get_table_ddl_events('local_view');
|
|||
|
||||
-- clean up
|
||||
DROP VIEW IF EXISTS local_view;
|
||||
DROP FOREIGN TABLE IF EXISTS renamed_foreign_table;
|
||||
DROP FOREIGN TABLE IF EXISTS renamed_foreign_table_with_long_name_12345678901234567890123456789012345678901234567890;
|
||||
\c - - :public_worker_1_host :worker_1_port
|
||||
select table_name, column_name, data_type
|
||||
from information_schema.columns
|
||||
|
|
|
@ -84,13 +84,89 @@ ALTER TABLE name_lengths ADD CONSTRAINT nl_checky_123456789012345678901234567890
|
|||
SELECT "Constraint", "Definition" FROM table_checks WHERE relid='public.name_lengths_225002'::regclass ORDER BY 1 DESC, 2 DESC;
|
||||
\c - - :master_host :master_port
|
||||
|
||||
-- Placeholders for RENAME operations
|
||||
\set VERBOSITY TERSE
|
||||
-- Rename the table to a too-long name
|
||||
SET client_min_messages TO DEBUG1;
|
||||
SET citus.force_max_query_parallelization TO ON;
|
||||
ALTER TABLE name_lengths RENAME TO name_len_12345678901234567890123456789012345678901234567890;
|
||||
SELECT * FROM name_len_12345678901234567890123456789012345678901234567890;
|
||||
ALTER TABLE name_len_12345678901234567890123456789012345678901234567890 RENAME TO name_lengths;
|
||||
SELECT * FROM name_lengths;
|
||||
|
||||
-- Test renames on zero shard distributed tables
|
||||
CREATE TABLE append_zero_shard_table (a int);
|
||||
SELECT create_distributed_table('append_zero_shard_table', 'a', 'append');
|
||||
ALTER TABLE append_zero_shard_table rename TO append_zero_shard_table_12345678901234567890123456789012345678901234567890;
|
||||
|
||||
|
||||
-- Verify that we do not support long renames after parallel queries are executed in transaction block
|
||||
BEGIN;
|
||||
ALTER TABLE name_lengths rename col1 to new_column_name;
|
||||
ALTER TABLE name_lengths RENAME TO name_len_12345678901234567890123456789012345678901234567890;
|
||||
ROLLBACK;
|
||||
|
||||
-- The same operation will work when sequential mode is set
|
||||
BEGIN;
|
||||
SET LOCAL citus.multi_shard_modify_mode TO 'sequential';
|
||||
ALTER TABLE name_lengths rename col1 to new_column_name;
|
||||
ALTER TABLE name_lengths RENAME TO name_len_12345678901234567890123456789012345678901234567890;
|
||||
ROLLBACK;
|
||||
|
||||
RESET client_min_messages;
|
||||
|
||||
-- test long partitioned table renames
|
||||
SET citus.shard_replication_factor TO 1;
|
||||
CREATE TABLE partition_lengths
|
||||
(
|
||||
tenant_id integer NOT NULL,
|
||||
timeperiod timestamp without time zone NOT NULL
|
||||
) PARTITION BY RANGE (timeperiod);
|
||||
|
||||
SELECT create_distributed_table('partition_lengths', 'tenant_id');
|
||||
CREATE TABLE partition_lengths_p2020_09_28 PARTITION OF partition_lengths FOR VALUES FROM ('2020-09-28 00:00:00') TO ('2020-09-29 00:00:00');
|
||||
|
||||
-- verify that we can rename partitioned tables and partitions to too-long names
|
||||
ALTER TABLE partition_lengths RENAME TO partition_lengths_12345678901234567890123456789012345678901234567890;
|
||||
|
||||
-- verify that we can rename partitioned tables and partitions with too-long names
|
||||
ALTER TABLE partition_lengths_12345678901234567890123456789012345678901234567890 RENAME TO partition_lengths;
|
||||
|
||||
-- Placeholders for unsupported operations
|
||||
\set VERBOSITY TERSE
|
||||
|
||||
-- renaming distributed table partitions
|
||||
ALTER TABLE partition_lengths_p2020_09_28 RENAME TO partition_lengths_p2020_09_28_12345678901234567890123456789012345678901234567890;
|
||||
|
||||
-- creating or attaching new partitions with long names create deadlocks
|
||||
CREATE TABLE partition_lengths_p2020_09_29_12345678901234567890123456789012345678901234567890 (LIKE partition_lengths_p2020_09_28_12345678901234567890123456789012345678901234567890);
|
||||
ALTER TABLE partition_lengths
|
||||
ATTACH PARTITION partition_lengths_p2020_09_29_12345678901234567890123456789012345678901234567890
|
||||
FOR VALUES FROM ('2020-09-29 00:00:00') TO ('2020-09-30 00:00:00');
|
||||
CREATE TABLE partition_lengths_p2020_09_30_12345678901234567890123456789012345678901234567890
|
||||
PARTITION OF partition_lengths
|
||||
FOR VALUES FROM ('2020-09-30 00:00:00') TO ('2020-10-01 00:00:00');
|
||||
DROP TABLE partition_lengths_p2020_09_29_12345678901234567890123456789012345678901234567890;
|
||||
|
||||
-- creating or attaching new partitions with long names work when using sequential shard modify mode
|
||||
BEGIN;
|
||||
SET LOCAL citus.multi_shard_modify_mode = sequential;
|
||||
CREATE TABLE partition_lengths_p2020_09_29_12345678901234567890123456789012345678901234567890 (LIKE partition_lengths_p2020_09_28_12345678901234567890123456789012345678901234567890);
|
||||
ALTER TABLE partition_lengths
|
||||
ATTACH PARTITION partition_lengths_p2020_09_29_12345678901234567890123456789012345678901234567890
|
||||
FOR VALUES FROM ('2020-09-29 00:00:00') TO ('2020-09-30 00:00:00');
|
||||
CREATE TABLE partition_lengths_p2020_09_30_12345678901234567890123456789012345678901234567890
|
||||
PARTITION OF partition_lengths
|
||||
FOR VALUES FROM ('2020-09-30 00:00:00') TO ('2020-10-01 00:00:00');
|
||||
ROLLBACK;
|
||||
|
||||
-- renaming distributed table constraints are not supported
|
||||
ALTER TABLE name_lengths RENAME CONSTRAINT unique_12345678901234567890123456789012345678901234567890 TO unique2_12345678901234567890123456789012345678901234567890;
|
||||
|
||||
DROP TABLE partition_lengths CASCADE;
|
||||
\set VERBOSITY DEFAULT
|
||||
|
||||
-- Verify that we can create indexes with very long names on zero shard tables.
|
||||
CREATE INDEX append_zero_shard_table_idx_12345678901234567890123456789012345678901234567890 ON append_zero_shard_table_12345678901234567890123456789012345678901234567890(a);
|
||||
|
||||
-- Verify that CREATE INDEX on already distributed table has proper shard names.
|
||||
|
||||
CREATE INDEX tmp_idx_12345678901234567890123456789012345678901234567890 ON name_lengths(col2);
|
||||
|
@ -104,6 +180,9 @@ SELECT "relname", "Column", "Type", "Definition" FROM index_attrs WHERE
|
|||
-- by the parser/rewriter before further processing, just as in Postgres.
|
||||
CREATE INDEX tmp_idx_123456789012345678901234567890123456789012345678901234567890 ON name_lengths(col2);
|
||||
|
||||
-- Verify we can rename indexes with long names
|
||||
ALTER INDEX tmp_idx_123456789012345678901234567890123456789012345678901234567890 RENAME TO tmp_idx_newname_123456789012345678901234567890123456789012345678901234567890;
|
||||
|
||||
\c - - :public_worker_1_host :worker_1_port
|
||||
SELECT "relname", "Column", "Type", "Definition" FROM index_attrs WHERE
|
||||
relname LIKE 'tmp_idx_%' ORDER BY 1 DESC, 2 DESC, 3 DESC, 4 DESC;
|
||||
|
@ -136,8 +215,8 @@ SELECT master_create_distributed_table('sneaky_name_lengths', 'int_col_123456789
|
|||
SELECT master_create_worker_shards('sneaky_name_lengths', '2', '2');
|
||||
|
||||
\c - - :public_worker_1_host :worker_1_port
|
||||
\di public.sneaky*225006
|
||||
SELECT "Constraint", "Definition" FROM table_checks WHERE relid='public.sneaky_name_lengths_225006'::regclass ORDER BY 1 DESC, 2 DESC;
|
||||
\di public.sneaky*225030
|
||||
SELECT "Constraint", "Definition" FROM table_checks WHERE relid='public.sneaky_name_lengths_225030'::regclass ORDER BY 1 DESC, 2 DESC;
|
||||
\c - - :master_host :master_port
|
||||
|
||||
SET citus.shard_count TO 2;
|
||||
|
@ -155,7 +234,7 @@ CREATE TABLE sneaky_name_lengths (
|
|||
SELECT create_distributed_table('sneaky_name_lengths', 'col1', 'hash');
|
||||
|
||||
\c - - :public_worker_1_host :worker_1_port
|
||||
\di unique*225008
|
||||
\di unique*225032
|
||||
\c - - :master_host :master_port
|
||||
|
||||
SET citus.shard_count TO 2;
|
||||
|
@ -215,3 +294,4 @@ DROP TABLE multi_name_lengths.too_long_12345678901234567890123456789012345678901
|
|||
-- Clean up.
|
||||
DROP TABLE name_lengths CASCADE;
|
||||
DROP TABLE U&"elephant_!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D!0441!043B!043E!043D" UESCAPE '!' CASCADE;
|
||||
RESET citus.force_max_query_parallelization;
|
||||
|
|
Loading…
Reference in New Issue