citus/src/test/regress/sql/alter_database_from_nonmain...

289 lines
12 KiB
SQL

SET citus.superuser TO 'postgres';
set citus.enable_create_database_propagation=on;
create database test_alter_db_from_nonmain_db;
create database "altered_database!'2";
reset citus.enable_create_database_propagation;
\c regression;
set citus.enable_create_database_propagation=on;
\set alter_db_tablespace :abs_srcdir '/tmp_check/ts3'
CREATE TABLESPACE "ts-needs\!escape2" LOCATION :'alter_db_tablespace';
\c - - - :worker_1_port
\set alter_db_tablespace :abs_srcdir '/tmp_check/ts4'
CREATE TABLESPACE "ts-needs\!escape2" LOCATION :'alter_db_tablespace';
\c - - - :worker_2_port
\set alter_db_tablespace :abs_srcdir '/tmp_check/ts5'
CREATE TABLESPACE "ts-needs\!escape2" LOCATION :'alter_db_tablespace';
-- Below tests test the ALTER DATABASE command from main and non-main databases
-- The tests are run on the master and worker nodes to ensure that the command is
-- executed on all nodes.
\c test_alter_db_from_nonmain_db
set citus.log_remote_commands = true;
set citus.grep_remote_commands = "%ALTER DATABASE%";
alter database "altered_database!'2" set tablespace "ts-needs\!escape2";
\c test_alter_db_from_nonmain_db - - :worker_1_port
set citus.log_remote_commands = true;
set citus.grep_remote_commands = "%ALTER DATABASE%";
alter database "altered_database!'2" set tablespace "pg_default";
alter database "altered_database!'2" set tablespace "ts-needs\!escape2";
\c regression - - :master_port
SELECT * FROM public.check_database_on_all_nodes($$altered_database!''2$$) ORDER BY node_type;
\c test_alter_db_from_nonmain_db - - :worker_1_port
set citus.log_remote_commands = true;
set citus.grep_remote_commands = "%ALTER DATABASE%";
alter database "altered_database!'2" set tablespace "pg_default";
alter database "altered_database!'2" set tablespace "ts-needs\!escape2";
\c regression - - :master_port
SELECT * FROM public.check_database_on_all_nodes($$altered_database!''2$$) ORDER BY node_type;
\c test_alter_db_from_nonmain_db - - :worker_2_port
set citus.log_remote_commands = true;
set citus.grep_remote_commands = "%ALTER DATABASE%";
alter database "altered_database!'2" set tablespace "pg_default";
\c regression - - :master_port
SELECT * FROM public.check_database_on_all_nodes($$altered_database!''2$$) ORDER BY node_type;
\c test_alter_db_from_nonmain_db - - :worker_1_port
set citus.log_remote_commands = true;
set citus.grep_remote_commands = "%ALTER DATABASE%";
alter database "altered_database!'2" set tablespace "ts-needs\!escape2";
alter database "altered_database!'2" set tablespace "pg_default";
alter database "altered_database!'2" set tablespace "ts-needs\!escape2";
alter database "altered_database!'2" set tablespace "pg_default";
alter database "altered_database!'2" set tablespace "ts-needs\!escape2";
-- In the below tests, we test the ALTER DATABASE ..set tablespace command
-- repeatedly to ensure that the command does not stuck when executed multiple times
\c regression - - :worker_1_port
set citus.log_remote_commands = true;
set citus.grep_remote_commands = "%ALTER DATABASE%";
alter database "altered_database!'2" set tablespace "pg_default";
alter database "altered_database!'2" set tablespace "ts-needs\!escape2";
alter database "altered_database!'2" set tablespace "pg_default";
alter database "altered_database!'2" set tablespace "ts-needs\!escape2";
alter database "altered_database!'2" set tablespace "pg_default";
alter database "altered_database!'2" set tablespace "ts-needs\!escape2";
alter database "altered_database!'2" set tablespace "pg_default";
alter database "altered_database!'2" set tablespace "ts-needs\!escape2";
\c regression - - :worker_2_port
set citus.log_remote_commands = true;
set citus.grep_remote_commands = "%ALTER DATABASE%";
alter database "altered_database!'2" set tablespace "pg_default";
alter database "altered_database!'2" set tablespace "ts-needs\!escape2";
alter database "altered_database!'2" set tablespace "pg_default";
alter database "altered_database!'2" set tablespace "ts-needs\!escape2";
alter database "altered_database!'2" set tablespace "pg_default";
alter database "altered_database!'2" set tablespace "ts-needs\!escape2";
alter database "altered_database!'2" set tablespace "pg_default";
alter database "altered_database!'2" set tablespace "ts-needs\!escape2";
\c regression - - :master_port
set citus.log_remote_commands = true;
set citus.grep_remote_commands = "%ALTER DATABASE%";
alter database "altered_database!'2" set tablespace "pg_default";
alter database "altered_database!'2" set tablespace "ts-needs\!escape2";
SELECT * FROM public.check_database_on_all_nodes($$altered_database!''2$$) ORDER BY node_type;
alter database "altered_database!'2" set tablespace "pg_default";
SELECT * FROM public.check_database_on_all_nodes($$altered_database!''2$$) ORDER BY node_type;
alter database "altered_database!'2" set tablespace "ts-needs\!escape2";
alter database "altered_database!'2" set tablespace "pg_default";
alter database "altered_database!'2" set tablespace "ts-needs\!escape2";
alter database "altered_database!'2" set tablespace "pg_default";
alter database "altered_database!'2" set tablespace "ts-needs\!escape2";
alter database "altered_database!'2" set tablespace "pg_default";
alter database "altered_database!'2" set tablespace "ts-needs\!escape2";
\c test_alter_db_from_nonmain_db - - :worker_2_port
set citus.log_remote_commands = true;
set citus.grep_remote_commands = "%ALTER DATABASE%";
alter database "altered_database!'2" rename to altered_database_renamed;
alter database altered_database_renamed rename to "altered_database!'2";
alter database "altered_database!'2" with
ALLOW_CONNECTIONS true
CONNECTION LIMIT 0
IS_TEMPLATE false;
\c regression - - :master_port
SELECT * FROM public.check_database_on_all_nodes($$altered_database!''2$$) ORDER BY node_type;
\c regression - - :worker_1_port
set citus.log_remote_commands = true;
set citus.grep_remote_commands = "%ALTER DATABASE%";
alter database "altered_database!'2" with
ALLOW_CONNECTIONS false
CONNECTION LIMIT 1
IS_TEMPLATE true;
\c regression - - :master_port
SELECT * FROM public.check_database_on_all_nodes($$altered_database!''2$$) ORDER BY node_type;
\c regression - - :worker_2_port
set citus.log_remote_commands = true;
set citus.grep_remote_commands = "%ALTER DATABASE%";
alter database "altered_database!'2" with
ALLOW_CONNECTIONS true
CONNECTION LIMIT 0
IS_TEMPLATE false;
\c regression
create role test_owner_non_main_db;
\c test_alter_db_from_nonmain_db
set citus.log_remote_commands = true;
set citus.grep_remote_commands = "%ALTER DATABASE%";
set citus.enable_create_database_propagation=on;
alter database "altered_database!'2" owner to test_owner_non_main_db;
\c regression - - :master_port
SELECT * FROM public.check_database_on_all_nodes($$altered_database!''2$$) ORDER BY node_type;
\c test_alter_db_from_nonmain_db - - :worker_1_port
set citus.log_remote_commands = true;
set citus.grep_remote_commands = "%ALTER DATABASE%";
alter database "altered_database!'2" owner to CURRENT_USER;
set default_transaction_read_only = false;
\c regression - - :master_port
SELECT * FROM public.check_database_on_all_nodes($$altered_database!''2$$) ORDER BY node_type;
\c regression - - :worker_2_port
set citus.log_remote_commands = true;
set citus.grep_remote_commands = "%ALTER DATABASE%";
alter database "altered_database!'2" owner to test_owner_non_main_db;
set default_transaction_read_only = false;
\c regression - - :master_port
SELECT * FROM public.check_database_on_all_nodes($$altered_database!''2$$) ORDER BY node_type;
\c regression - - :master_port
set citus.log_remote_commands = true;
set citus.grep_remote_commands = "%ALTER DATABASE%";
alter database "altered_database!'2" owner to CURRENT_USER;
set default_transaction_read_only = false;
SELECT * FROM public.check_database_on_all_nodes($$altered_database!''2$$) ORDER BY node_type;
set citus.enable_alter_database_owner to off;
alter database "altered_database!'2" owner to test_owner_non_main_db;
SELECT * FROM public.check_database_on_all_nodes($$altered_database!''2$$) ORDER BY node_type;
alter database "altered_database!'2" owner to CURRENT_USER;
SELECT * FROM public.check_database_on_all_nodes($$altered_database!''2$$) ORDER BY node_type;
reset citus.enable_alter_database_owner;
\c test_alter_db_from_nonmain_db
set citus.log_remote_commands = true;
set citus.grep_remote_commands = "%ALTER DATABASE%";
alter database "altered_database!'2" set default_transaction_read_only to true;
\c "altered_database!'2" - - :master_port
select name,setting from pg_settings
where name ='default_transaction_read_only';
\c "altered_database!'2" - - :worker_1_port
select name,setting from pg_settings
where name ='default_transaction_read_only';
\c "altered_database!'2" - - :worker_2_port
select name,setting from pg_settings
where name ='default_transaction_read_only';
\c test_alter_db_from_nonmain_db
set citus.log_remote_commands = true;
set citus.grep_remote_commands = "%ALTER DATABASE%";
alter database "altered_database!'2" reset default_transaction_read_only;
\c "altered_database!'2" - - :master_port
select name,setting from pg_settings
where name ='default_transaction_read_only';
\c "altered_database!'2" - - :worker_1_port
select name,setting from pg_settings
where name ='default_transaction_read_only';
\c "altered_database!'2" - - :worker_2_port
select name,setting from pg_settings
where name ='default_transaction_read_only';
\c test_alter_db_from_nonmain_db - - :worker_2_port
set citus.log_remote_commands = true;
set citus.grep_remote_commands = "%ALTER DATABASE%";
alter database "altered_database!'2" set log_duration from current;
alter database "altered_database!'2" set log_duration to DEFAULT;
alter database "altered_database!'2" set log_duration = true;
\c "altered_database!'2" - - :master_port
select name,setting from pg_settings
where name ='log_duration';
\c "altered_database!'2" - - :worker_1_port
select name,setting from pg_settings
where name ='log_duration';
\c "altered_database!'2" - - :worker_2_port
select name,setting from pg_settings
where name ='log_duration';
\c test_alter_db_from_nonmain_db - - :worker_1_port
set citus.log_remote_commands = true;
set citus.grep_remote_commands = "%ALTER DATABASE%";
alter database "altered_database!'2" RESET log_duration;
\c "altered_database!'2" - - :master_port
select name,setting from pg_settings
where name ='log_duration';
\c "altered_database!'2" - - :worker_1_port
select name,setting from pg_settings
where name ='log_duration';
\c "altered_database!'2" - - :worker_2_port
select name,setting from pg_settings
where name ='log_duration';
\c regression - - :worker_2_port
set citus.log_remote_commands = true;
set citus.grep_remote_commands = "%ALTER DATABASE%";
alter database "altered_database!'2" set statement_timeout = 1000;
\c "altered_database!'2" - - :master_port
select name,setting from pg_settings
where name ='statement_timeout';
\c "altered_database!'2" - - :worker_1_port
select name,setting from pg_settings
where name ='statement_timeout';
\c "altered_database!'2" - - :worker_2_port
select name,setting from pg_settings
where name ='statement_timeout';
\c regression - - :worker_1_port
set citus.log_remote_commands = true;
set citus.grep_remote_commands = "%ALTER DATABASE%";
alter database "altered_database!'2" set statement_timeout to DEFAULT;
alter database "altered_database!'2" RESET statement_timeout;
\c "altered_database!'2" - - :master_port
select name,setting from pg_settings
where name ='statement_timeout';
\c "altered_database!'2" - - :worker_1_port
select name,setting from pg_settings
where name ='statement_timeout';
\c "altered_database!'2" - - :worker_2_port
select name,setting from pg_settings
where name ='statement_timeout';
\c regression
set citus.enable_create_database_propagation=on;
drop database "altered_database!'2";
drop database test_alter_db_from_nonmain_db;
reset citus.enable_create_database_propagation;
drop role test_owner_non_main_db;
SELECT result FROM run_command_on_all_nodes(
$$
drop tablespace "ts-needs\!escape2"
$$
);