Adds locale restrictions

pull/7240/head
gindibay 2023-10-31 10:58:44 +03:00
parent d99737e8b2
commit d8639d58de
8 changed files with 106 additions and 79 deletions

View File

@ -263,6 +263,23 @@ PreprocessAlterDatabaseSetStmt(Node *node, const char *queryString,
return NodeDDLTaskList(NON_COORDINATOR_NODES, commands); return NodeDDLTaskList(NON_COORDINATOR_NODES, commands);
} }
List *
PreprocessCreateDatabaseStmt(Node *node, const char *queryString,
ProcessUtilityContext processUtilityContext)
{
if (!EnableCreateDatabasePropagation || !ShouldPropagate())
{
return NIL;
}
EnsureCoordinator();
//Validate the statement
DeparseTreeNode(node);
return NIL;
}
/* /*
* PostprocessCreatedbStmt is executed after the statement is applied to the local * PostprocessCreatedbStmt is executed after the statement is applied to the local

View File

@ -469,7 +469,7 @@ static DistributeObjectOps Database_Alter = {
static DistributeObjectOps Database_Create = { static DistributeObjectOps Database_Create = {
.deparse = DeparseCreateDatabaseStmt, .deparse = DeparseCreateDatabaseStmt,
.qualify = NULL, .qualify = NULL,
.preprocess = NULL, .preprocess = PreprocessCreateDatabaseStmt,
.postprocess = PostprocessCreateDatabaseStmt, .postprocess = PostprocessCreateDatabaseStmt,
.objectType = OBJECT_DATABASE, .objectType = OBJECT_DATABASE,
.operationType = DIST_OPS_CREATE, .operationType = DIST_OPS_CREATE,

View File

@ -237,6 +237,21 @@ AppendCreateDatabaseStmt(StringInfo buf, CreatedbStmt *stmt)
foreach_ptr(option, stmt->options) foreach_ptr(option, stmt->options)
{ {
//If option is template, lc_type, locale or lc_collate, propagation will not be supportted
// since template database is not stored in the catalog
if (strcmp(option->defname, "template") == 0 ||
strcmp(option->defname, "strategy") == 0 ||
strcmp(option->defname, "lc_ctype") == 0 ||
strcmp(option->defname, "locale") == 0 ||
strcmp(option->defname, "lc_collate") == 0 ||
strcmp(option->defname, "icu_locale") == 0 ||
strcmp(option->defname, "locale_provider") == 0 )
{
ereport(ERROR,
errmsg("CREATE DATABASE option \"%s\" is not supported",
option->defname));
}
optionToStatement(buf, option, create_database_option_formats, lengthof( optionToStatement(buf, option, create_database_option_formats, lengthof(
create_database_option_formats)); create_database_option_formats));
} }

View File

@ -237,6 +237,8 @@ extern List * CreateDatabaseStmtObjectAddress(Node *node, bool missing_ok, bool
extern List * PreprocessAlterDatabaseSetStmt(Node *node, const char *queryString, extern List * PreprocessAlterDatabaseSetStmt(Node *node, const char *queryString,
ProcessUtilityContext processUtilityContext); ProcessUtilityContext processUtilityContext);
extern List * PreprocessCreateDatabaseStmt(Node *node, const char *queryString,
ProcessUtilityContext processUtilityContext);
extern List * PostprocessCreateDatabaseStmt(Node *node, const char *queryString); extern List * PostprocessCreateDatabaseStmt(Node *node, const char *queryString);
extern List * PreprocessDropDatabaseStmt(Node *node, const char *queryString, extern List * PreprocessDropDatabaseStmt(Node *node, const char *queryString,
ProcessUtilityContext processUtilityContext); ProcessUtilityContext processUtilityContext);

View File

@ -14,11 +14,8 @@ create user create_drop_db_test_user;
set citus.enable_create_database_propagation=on; set citus.enable_create_database_propagation=on;
CREATE DATABASE mydatabase CREATE DATABASE mydatabase
WITH OWNER = create_drop_db_test_user WITH OWNER = create_drop_db_test_user
TEMPLATE = 'template0'
ENCODING = 'UTF8' ENCODING = 'UTF8'
CONNECTION LIMIT = 10 CONNECTION LIMIT = 10
LC_COLLATE = 'C'
LC_CTYPE = 'C'
TABLESPACE = create_drop_db_tablespace TABLESPACE = create_drop_db_tablespace
ALLOW_CONNECTIONS = true ALLOW_CONNECTIONS = true
IS_TEMPLATE = false; IS_TEMPLATE = false;
@ -74,12 +71,9 @@ select 1 from citus_remove_node('localhost', :worker_2_port);
--test with is_template true and allow connections false --test with is_template true and allow connections false
CREATE DATABASE mydatabase CREATE DATABASE mydatabase
WITH TEMPLATE = 'template0'
OWNER = create_drop_db_test_user OWNER = create_drop_db_test_user
CONNECTION LIMIT = 10 CONNECTION LIMIT = 10
ENCODING = 'UTF8' ENCODING = 'UTF8'
LC_COLLATE = 'C'
LC_CTYPE = 'C'
TABLESPACE = create_drop_db_tablespace TABLESPACE = create_drop_db_tablespace
ALLOW_CONNECTIONS = false ALLOW_CONNECTIONS = false
IS_TEMPLATE = false; IS_TEMPLATE = false;
@ -161,11 +155,8 @@ SELECT result from run_command_on_all_nodes(
-- create a template database with all options set and allow connections false -- create a template database with all options set and allow connections false
CREATE DATABASE my_template_database CREATE DATABASE my_template_database
WITH TEMPLATE = 'template0' WITH OWNER = create_drop_db_test_user
OWNER = create_drop_db_test_user
ENCODING = 'UTF8' ENCODING = 'UTF8'
LC_COLLATE = 'C'
LC_CTYPE = 'C'
TABLESPACE = create_drop_db_tablespace TABLESPACE = create_drop_db_tablespace
ALLOW_CONNECTIONS = false ALLOW_CONNECTIONS = false
IS_TEMPLATE = true; IS_TEMPLATE = true;
@ -248,6 +239,35 @@ NOTICE: issuing DROP DATABASE IF EXISTS "mydatabase#1'2"
DETAIL: on server postgres@localhost:xxxxx connectionId: xxxxxxx DETAIL: on server postgres@localhost:xxxxx connectionId: xxxxxxx
NOTICE: issuing DROP DATABASE IF EXISTS "mydatabase#1'2" NOTICE: issuing DROP DATABASE IF EXISTS "mydatabase#1'2"
DETAIL: on server postgres@localhost:xxxxx connectionId: xxxxxxx DETAIL: on server postgres@localhost:xxxxx connectionId: xxxxxxx
--test for unsupported options
CREATE DATABASE mydatabase
with CONNECTION LIMIT = 10
ENCODING = 'UTF8'
LC_CTYPE = 'C.UTF-8'
ALLOW_CONNECTIONS = false
IS_TEMPLATE = false;
ERROR: CREATE DATABASE option "lc_ctype" is not supported
CREATE DATABASE mydatabase
with CONNECTION LIMIT = 10
ENCODING = 'UTF8'
LC_CTYPE = 'C.UTF-8'
ALLOW_CONNECTIONS = false
IS_TEMPLATE = false;
ERROR: CREATE DATABASE option "lc_ctype" is not supported
CREATE DATABASE mydatabase
with CONNECTION LIMIT = 10
ENCODING = 'UTF8'
LC_COLLATE = 'C.UTF-8'
ALLOW_CONNECTIONS = false
IS_TEMPLATE = false;
ERROR: CREATE DATABASE option "lc_collate" is not supported
CREATE DATABASE mydatabase
with CONNECTION LIMIT = 10
ENCODING = 'UTF8'
LOCALE = 'C.UTF-8'
ALLOW_CONNECTIONS = false
IS_TEMPLATE = false;
ERROR: CREATE DATABASE option "locale" is not supported
--clean up resources created by this test --clean up resources created by this test
drop tablespace create_drop_db_tablespace; drop tablespace create_drop_db_tablespace;
\c - - - :worker_1_port \c - - - :worker_1_port

View File

@ -23,24 +23,17 @@ set citus.enable_create_database_propagation=on;
SET citus.log_remote_commands = true; SET citus.log_remote_commands = true;
set citus.grep_remote_commands = '%CREATE DATABASE%'; set citus.grep_remote_commands = '%CREATE DATABASE%';
CREATE DATABASE mydatabase CREATE DATABASE mydatabase
WITH TEMPLATE = 'template0' WITH
OWNER = create_drop_db_test_user OWNER = create_drop_db_test_user
CONNECTION LIMIT = 10 CONNECTION LIMIT = 10
ENCODING = 'UTF8' ENCODING = 'UTF8'
STRATEGY = 'wal_log'
LOCALE = ''
LC_COLLATE = 'POSIX'
LC_CTYPE = 'POSIX'
ICU_LOCALE = 'und'
LOCALE_PROVIDER = 'icu'
COLLATION_VERSION = '1.0'
TABLESPACE = create_drop_db_tablespace TABLESPACE = create_drop_db_tablespace
ALLOW_CONNECTIONS = true ALLOW_CONNECTIONS = true
IS_TEMPLATE = false IS_TEMPLATE = false
OID = 966345; OID = 966345;
NOTICE: issuing CREATE DATABASE mydatabase TEMPLATE template0 OWNER create_drop_db_test_user CONNECTION LIMIT 10 ENCODING 'UTF8' STRATEGY 'wal_log' LOCALE '' LC_COLLATE 'POSIX' LC_CTYPE 'POSIX' ICU_LOCALE 'und' LOCALE_PROVIDER 'icu' COLLATION_VERSION '1.0' TABLESPACE create_drop_db_tablespace ALLOW_CONNECTIONS true IS_TEMPLATE false OID 966345 NOTICE: issuing CREATE DATABASE mydatabase OWNER create_drop_db_test_user CONNECTION LIMIT 10 ENCODING 'UTF8' TABLESPACE create_drop_db_tablespace ALLOW_CONNECTIONS true IS_TEMPLATE false OID 966345
DETAIL: on server postgres@localhost:xxxxx connectionId: xxxxxxx DETAIL: on server postgres@localhost:xxxxx connectionId: xxxxxxx
NOTICE: issuing CREATE DATABASE mydatabase TEMPLATE template0 OWNER create_drop_db_test_user CONNECTION LIMIT 10 ENCODING 'UTF8' STRATEGY 'wal_log' LOCALE '' LC_COLLATE 'POSIX' LC_CTYPE 'POSIX' ICU_LOCALE 'und' LOCALE_PROVIDER 'icu' COLLATION_VERSION '1.0' TABLESPACE create_drop_db_tablespace ALLOW_CONNECTIONS true IS_TEMPLATE false OID 966345 NOTICE: issuing CREATE DATABASE mydatabase OWNER create_drop_db_test_user CONNECTION LIMIT 10 ENCODING 'UTF8' TABLESPACE create_drop_db_tablespace ALLOW_CONNECTIONS true IS_TEMPLATE false OID 966345
DETAIL: on server postgres@localhost:xxxxx connectionId: xxxxxxx DETAIL: on server postgres@localhost:xxxxx connectionId: xxxxxxx
SET citus.log_remote_commands = false; SET citus.log_remote_commands = false;
SELECT result from run_command_on_all_nodes( SELECT result from run_command_on_all_nodes(
@ -104,16 +97,11 @@ set citus.grep_remote_commands = '%CREATE DATABASE%';
CREATE DATABASE mydatabase2 CREATE DATABASE mydatabase2
WITH OWNER = create_drop_db_test_user WITH OWNER = create_drop_db_test_user
ENCODING = 'UTF8' ENCODING = 'UTF8'
STRATEGY = 'wal_log'
LOCALE = 'en_US.utf8'
LC_COLLATE = 'POSIX'
LC_CTYPE = 'POSIX'
COLLATION_VERSION = '1.0'
TABLESPACE = create_drop_db_tablespace TABLESPACE = create_drop_db_tablespace
ALLOW_CONNECTIONS = true ALLOW_CONNECTIONS = true
IS_TEMPLATE = false IS_TEMPLATE = false
OID = 966345; OID = 966345;
NOTICE: issuing CREATE DATABASE mydatabase2 OWNER create_drop_db_test_user ENCODING 'UTF8' STRATEGY 'wal_log' LOCALE 'en_US.utf8' LC_COLLATE 'POSIX' LC_CTYPE 'POSIX' COLLATION_VERSION '1.0' TABLESPACE create_drop_db_tablespace ALLOW_CONNECTIONS true IS_TEMPLATE false OID 966345 NOTICE: issuing CREATE DATABASE mydatabase2 OWNER create_drop_db_test_user ENCODING 'UTF8' TABLESPACE create_drop_db_tablespace ALLOW_CONNECTIONS true IS_TEMPLATE false OID 966345
DETAIL: on server postgres@localhost:xxxxx connectionId: xxxxxxx DETAIL: on server postgres@localhost:xxxxx connectionId: xxxxxxx
SET citus.log_remote_commands = false; SET citus.log_remote_commands = false;
SELECT result from run_command_on_all_nodes( SELECT result from run_command_on_all_nodes(
@ -196,22 +184,15 @@ SET citus.log_remote_commands = true;
set citus.grep_remote_commands = '%CREATE DATABASE%'; set citus.grep_remote_commands = '%CREATE DATABASE%';
-- create a template database with all options set and allow connections false -- create a template database with all options set and allow connections false
CREATE DATABASE my_template_database CREATE DATABASE my_template_database
WITH TEMPLATE = 'template0' WITH OWNER = create_drop_db_test_user
OWNER = create_drop_db_test_user
ENCODING = 'UTF8' ENCODING = 'UTF8'
STRATEGY = 'wal_log'
LOCALE = 'en_US.utf8'
LC_COLLATE = 'POSIX'
LC_CTYPE = 'POSIX'
ICU_LOCALE = 'en-US'
LOCALE_PROVIDER = 'icu'
COLLATION_VERSION = '1.0' COLLATION_VERSION = '1.0'
TABLESPACE = create_drop_db_tablespace TABLESPACE = create_drop_db_tablespace
ALLOW_CONNECTIONS = false ALLOW_CONNECTIONS = false
IS_TEMPLATE = true; IS_TEMPLATE = true;
NOTICE: issuing CREATE DATABASE my_template_database TEMPLATE template0 OWNER create_drop_db_test_user ENCODING 'UTF8' STRATEGY 'wal_log' LOCALE 'en_US.utf8' LC_COLLATE 'POSIX' LC_CTYPE 'POSIX' ICU_LOCALE 'en-US' LOCALE_PROVIDER 'icu' COLLATION_VERSION '1.0' TABLESPACE create_drop_db_tablespace ALLOW_CONNECTIONS false IS_TEMPLATE true NOTICE: issuing CREATE DATABASE my_template_database OWNER create_drop_db_test_user ENCODING 'UTF8' COLLATION_VERSION '1.0' TABLESPACE create_drop_db_tablespace ALLOW_CONNECTIONS false IS_TEMPLATE true
DETAIL: on server postgres@localhost:xxxxx connectionId: xxxxxxx DETAIL: on server postgres@localhost:xxxxx connectionId: xxxxxxx
NOTICE: issuing CREATE DATABASE my_template_database TEMPLATE template0 OWNER create_drop_db_test_user ENCODING 'UTF8' STRATEGY 'wal_log' LOCALE 'en_US.utf8' LC_COLLATE 'POSIX' LC_CTYPE 'POSIX' ICU_LOCALE 'en-US' LOCALE_PROVIDER 'icu' COLLATION_VERSION '1.0' TABLESPACE create_drop_db_tablespace ALLOW_CONNECTIONS false IS_TEMPLATE true NOTICE: issuing CREATE DATABASE my_template_database OWNER create_drop_db_test_user ENCODING 'UTF8' COLLATION_VERSION '1.0' TABLESPACE create_drop_db_tablespace ALLOW_CONNECTIONS false IS_TEMPLATE true
DETAIL: on server postgres@localhost:xxxxx connectionId: xxxxxxx DETAIL: on server postgres@localhost:xxxxx connectionId: xxxxxxx
SET citus.log_remote_commands = false; SET citus.log_remote_commands = false;
SELECT result from run_command_on_all_nodes( SELECT result from run_command_on_all_nodes(
@ -235,10 +216,6 @@ SELECT result from run_command_on_all_nodes(
[{"datacl": null, "datname": "my_template_database", "datctype": "C", "encoding": "UTF8", "datcollate": "C", "tablespace": "create_drop_db_tablespace", "datallowconn": false, "datconnlimit": -1, "datistemplate": true, "database_owner": "create_drop_db_test_user"}] [{"datacl": null, "datname": "my_template_database", "datctype": "C", "encoding": "UTF8", "datcollate": "C", "tablespace": "create_drop_db_tablespace", "datallowconn": false, "datconnlimit": -1, "datistemplate": true, "database_owner": "create_drop_db_test_user"}]
(3 rows) (3 rows)
SET citus.log_remote_commands = true;
set citus.grep_remote_commands = '%DROP DATABASE%';
drop database my_template_database;
ERROR: cannot drop a template database
SET citus.log_remote_commands = false; SET citus.log_remote_commands = false;
SELECT result from run_command_on_all_nodes( SELECT result from run_command_on_all_nodes(
$$ $$
@ -275,7 +252,6 @@ SELECT result from run_command_on_all_nodes(
UPDATE 1 UPDATE 1
(3 rows) (3 rows)
;
set citus.grep_remote_commands = '%DROP DATABASE%'; set citus.grep_remote_commands = '%DROP DATABASE%';
drop database my_template_database; drop database my_template_database;
NOTICE: issuing DROP DATABASE my_template_database NOTICE: issuing DROP DATABASE my_template_database

View File

@ -21,17 +21,12 @@ set citus.enable_create_database_propagation=on;
CREATE DATABASE mydatabase CREATE DATABASE mydatabase
WITH OWNER = create_drop_db_test_user WITH OWNER = create_drop_db_test_user
TEMPLATE = 'template0'
ENCODING = 'UTF8' ENCODING = 'UTF8'
CONNECTION LIMIT = 10 CONNECTION LIMIT = 10
LC_COLLATE = 'C'
LC_CTYPE = 'C'
TABLESPACE = create_drop_db_tablespace TABLESPACE = create_drop_db_tablespace
ALLOW_CONNECTIONS = true ALLOW_CONNECTIONS = true
IS_TEMPLATE = false; IS_TEMPLATE = false;
SELECT result from run_command_on_all_nodes( SELECT result from run_command_on_all_nodes(
$$ $$
SELECT jsonb_agg(to_jsonb(q2.*)) FROM ( SELECT jsonb_agg(to_jsonb(q2.*)) FROM (
@ -73,12 +68,9 @@ select 1 from citus_remove_node('localhost', :worker_2_port);
--test with is_template true and allow connections false --test with is_template true and allow connections false
CREATE DATABASE mydatabase CREATE DATABASE mydatabase
WITH TEMPLATE = 'template0'
OWNER = create_drop_db_test_user OWNER = create_drop_db_test_user
CONNECTION LIMIT = 10 CONNECTION LIMIT = 10
ENCODING = 'UTF8' ENCODING = 'UTF8'
LC_COLLATE = 'C'
LC_CTYPE = 'C'
TABLESPACE = create_drop_db_tablespace TABLESPACE = create_drop_db_tablespace
ALLOW_CONNECTIONS = false ALLOW_CONNECTIONS = false
IS_TEMPLATE = false; IS_TEMPLATE = false;
@ -139,11 +131,8 @@ SELECT result from run_command_on_all_nodes(
-- create a template database with all options set and allow connections false -- create a template database with all options set and allow connections false
CREATE DATABASE my_template_database CREATE DATABASE my_template_database
WITH TEMPLATE = 'template0' WITH OWNER = create_drop_db_test_user
OWNER = create_drop_db_test_user
ENCODING = 'UTF8' ENCODING = 'UTF8'
LC_COLLATE = 'C'
LC_CTYPE = 'C'
TABLESPACE = create_drop_db_tablespace TABLESPACE = create_drop_db_tablespace
ALLOW_CONNECTIONS = false ALLOW_CONNECTIONS = false
IS_TEMPLATE = true; IS_TEMPLATE = true;
@ -203,6 +192,37 @@ create database "mydatabase#1'2";
set citus.grep_remote_commands = '%DROP DATABASE%'; set citus.grep_remote_commands = '%DROP DATABASE%';
drop database if exists "mydatabase#1'2"; drop database if exists "mydatabase#1'2";
--test for unsupported options
CREATE DATABASE mydatabase
with CONNECTION LIMIT = 10
ENCODING = 'UTF8'
LC_CTYPE = 'C.UTF-8'
ALLOW_CONNECTIONS = false
IS_TEMPLATE = false;
CREATE DATABASE mydatabase
with CONNECTION LIMIT = 10
ENCODING = 'UTF8'
LC_CTYPE = 'C.UTF-8'
ALLOW_CONNECTIONS = false
IS_TEMPLATE = false;
CREATE DATABASE mydatabase
with CONNECTION LIMIT = 10
ENCODING = 'UTF8'
LC_COLLATE = 'C.UTF-8'
ALLOW_CONNECTIONS = false
IS_TEMPLATE = false;
CREATE DATABASE mydatabase
with CONNECTION LIMIT = 10
ENCODING = 'UTF8'
LOCALE = 'C.UTF-8'
ALLOW_CONNECTIONS = false
IS_TEMPLATE = false;
--clean up resources created by this test --clean up resources created by this test
drop tablespace create_drop_db_tablespace; drop tablespace create_drop_db_tablespace;

View File

@ -29,17 +29,10 @@ set citus.enable_create_database_propagation=on;
SET citus.log_remote_commands = true; SET citus.log_remote_commands = true;
set citus.grep_remote_commands = '%CREATE DATABASE%'; set citus.grep_remote_commands = '%CREATE DATABASE%';
CREATE DATABASE mydatabase CREATE DATABASE mydatabase
WITH TEMPLATE = 'template0' WITH
OWNER = create_drop_db_test_user OWNER = create_drop_db_test_user
CONNECTION LIMIT = 10 CONNECTION LIMIT = 10
ENCODING = 'UTF8' ENCODING = 'UTF8'
STRATEGY = 'wal_log'
LOCALE = ''
LC_COLLATE = 'POSIX'
LC_CTYPE = 'POSIX'
ICU_LOCALE = 'und'
LOCALE_PROVIDER = 'icu'
COLLATION_VERSION = '1.0'
TABLESPACE = create_drop_db_tablespace TABLESPACE = create_drop_db_tablespace
ALLOW_CONNECTIONS = true ALLOW_CONNECTIONS = true
IS_TEMPLATE = false IS_TEMPLATE = false
@ -91,11 +84,6 @@ set citus.grep_remote_commands = '%CREATE DATABASE%';
CREATE DATABASE mydatabase2 CREATE DATABASE mydatabase2
WITH OWNER = create_drop_db_test_user WITH OWNER = create_drop_db_test_user
ENCODING = 'UTF8' ENCODING = 'UTF8'
STRATEGY = 'wal_log'
LOCALE = 'en_US.utf8'
LC_COLLATE = 'POSIX'
LC_CTYPE = 'POSIX'
COLLATION_VERSION = '1.0'
TABLESPACE = create_drop_db_tablespace TABLESPACE = create_drop_db_tablespace
ALLOW_CONNECTIONS = true ALLOW_CONNECTIONS = true
IS_TEMPLATE = false IS_TEMPLATE = false
@ -161,15 +149,8 @@ set citus.grep_remote_commands = '%CREATE DATABASE%';
-- create a template database with all options set and allow connections false -- create a template database with all options set and allow connections false
CREATE DATABASE my_template_database CREATE DATABASE my_template_database
WITH TEMPLATE = 'template0' WITH OWNER = create_drop_db_test_user
OWNER = create_drop_db_test_user
ENCODING = 'UTF8' ENCODING = 'UTF8'
STRATEGY = 'wal_log'
LOCALE = 'en_US.utf8'
LC_COLLATE = 'POSIX'
LC_CTYPE = 'POSIX'
ICU_LOCALE = 'en-US'
LOCALE_PROVIDER = 'icu'
COLLATION_VERSION = '1.0' COLLATION_VERSION = '1.0'
TABLESPACE = create_drop_db_tablespace TABLESPACE = create_drop_db_tablespace
ALLOW_CONNECTIONS = false ALLOW_CONNECTIONS = false
@ -192,9 +173,6 @@ SELECT result from run_command_on_all_nodes(
$$ $$
) ORDER BY result; ) ORDER BY result;
SET citus.log_remote_commands = true;
set citus.grep_remote_commands = '%DROP DATABASE%';
drop database my_template_database;
SET citus.log_remote_commands = false; SET citus.log_remote_commands = false;
@ -222,7 +200,6 @@ SELECT result from run_command_on_all_nodes(
$$ $$
) ORDER BY result; ) ORDER BY result;
;
set citus.grep_remote_commands = '%DROP DATABASE%'; set citus.grep_remote_commands = '%DROP DATABASE%';
drop database my_template_database; drop database my_template_database;