From 961510bfcfc938048aa2487f3ea3d222a391ad38 Mon Sep 17 00:00:00 2001 From: gindibay Date: Thu, 7 Sep 2023 18:14:50 +0300 Subject: [PATCH] Fixes alter database set errorss --- .../distributed/deparser/citus_setutils.c | 3 +- .../deparser/deparse_database_stmts.c | 12 ++-- .../sql/alter_database_propagation.sql | 58 +++++++++---------- 3 files changed, 35 insertions(+), 38 deletions(-) diff --git a/src/backend/distributed/deparser/citus_setutils.c b/src/backend/distributed/deparser/citus_setutils.c index 62d97f0d2..481a2860b 100644 --- a/src/backend/distributed/deparser/citus_setutils.c +++ b/src/backend/distributed/deparser/citus_setutils.c @@ -12,6 +12,7 @@ #include "commands/defrem.h" #include "distributed/log_utils.h" #include "parser/parse_type.h" +#include "nodes/print.h" void AppendVarSetValue(StringInfo buf, VariableSetStmt *setStmt); @@ -76,7 +77,7 @@ AppendVarSetValue(StringInfo buf, VariableSetStmt *setStmt) case T_Float: { - appendStringInfo(buf, " %s", strVal(value)); + appendStringInfo(buf, " %s", nodeToString(value)); break; } diff --git a/src/backend/distributed/deparser/deparse_database_stmts.c b/src/backend/distributed/deparser/deparse_database_stmts.c index a57329fd2..de4b5f606 100644 --- a/src/backend/distributed/deparser/deparse_database_stmts.c +++ b/src/backend/distributed/deparser/deparse_database_stmts.c @@ -89,7 +89,7 @@ AppendGrantOnDatabaseStmt(StringInfo buf, GrantStmt *stmt) static void AppendDefElemIsTemplate(StringInfo buf, DefElem *def) { - appendStringInfo(buf, "WITH %s %s", quote_identifier(def->defname), + appendStringInfo(buf, " %s %s", quote_identifier(def->defname), quote_literal_cstr(strVal(def->arg))); } @@ -97,7 +97,7 @@ AppendDefElemIsTemplate(StringInfo buf, DefElem *def) static void AppendDefElemConnLimit(StringInfo buf, DefElem *def) { - appendStringInfo(buf, "WITH CONNECTION LIMIT %ld", (long int) defGetNumeric(def)); + appendStringInfo(buf, " CONNECTION LIMIT %ld", (long int) defGetNumeric(def)); } @@ -109,9 +109,10 @@ AppendAlterDatabaseStmt(StringInfo buf, AlterDatabaseStmt *stmt) if (stmt->options) { ListCell *cell = NULL; - appendStringInfo(buf, "WITH "); + appendStringInfo(buf, "WITH"); foreach(cell, stmt->options) { + DefElem *def = castNode(DefElem, lfirst(cell)); if (strcmp(def->defname, "is_template") == 0) { @@ -121,11 +122,6 @@ AppendAlterDatabaseStmt(StringInfo buf, AlterDatabaseStmt *stmt) { AppendDefElemConnLimit(buf, def); } - else if (strcmp(def->defname, "tablespace") == 0) - { - ereport(ERROR, - errmsg("SET tablespace is not supported")); - } else if (strcmp(def->defname, "allow_connections") == 0) { ereport(ERROR, diff --git a/src/test/regress/sql/alter_database_propagation.sql b/src/test/regress/sql/alter_database_propagation.sql index 777ba56b4..e5b363130 100644 --- a/src/test/regress/sql/alter_database_propagation.sql +++ b/src/test/regress/sql/alter_database_propagation.sql @@ -15,45 +15,45 @@ alter database regression with IS_TEMPLATE false; -- this statement will get error since we don't have a multiple database support for now alter database regression rename to regression2; -alter database regression set archive_mode to on; +alter database regression set default_transaction_read_only = true; -set archive_mode to off; -alter database regression set archive_mode from current; -alter database regression set archive_mode to DEFAULT; -alter database regression set RESET archive_mode; +set default_transaction_read_only = false; -alter database regression set archive_timeout to 100; - -set archive_timeout to 50; -alter database regression set archive_timeout from current; -alter database regression set archive_timeout to DEFAULT; -alter database regression set RESET archive_timeout; - - -ALTER DATABASE regression SET checkpoint_completion_target TO 0.9; - -set checkpoint_completion_target to 0.5; - -alter database regression set checkpoint_completion_target from current; -alter database regression set checkpoint_completion_target to DEFAULT; -alter database regression set RESET checkpoint_completion_target; +alter database regression set default_transaction_read_only from current; +alter database regression set default_transaction_read_only to DEFAULT; +alter database regression RESET default_transaction_read_only; alter database regression SET TIME ZONE '-7'; -set TIME ZONE '-8'; -alter database regression set TIME ZONE from current; -alter database regression set TIME ZONE to DEFAULT; -alter database regression set RESET TIME ZONE; +alter database regression set TIME ZONE LOCAL; +alter database regression set TIME ZONE DEFAULT; +alter database regression RESET TIME ZONE; -alter database regression set SET TIME ZONE INTERVAL '-08:00' HOUR TO MINUTE; +alter database regression SET TIME ZONE INTERVAL '-08:00' HOUR TO MINUTE; -set TIME ZONE INTERVAL '-07:00' HOUR TO MINUTE; -alter database regression set TIME ZONE INTERVAL from current; -alter database regression set TIME ZONE INTERVAL to DEFAULT; -alter database regression set RESET TIME ZONE INTERVAL; +alter database regression RESET TIME ZONE; +alter database regression set default_transaction_isolation = 'serializable'; +set default_transaction_isolation = 'read committed'; +alter database regression set default_transaction_isolation from current; +alter database regression set default_transaction_isolation to DEFAULT; +alter database regression RESET default_transaction_isolation; + +alter database regression set statement_timeout = 1000; +set statement_timeout = 2000; + +alter database regression set statement_timeout from current; +alter database regression set statement_timeout to DEFAULT; +alter database regression RESET statement_timeout; + +alter database regression set lock_timeout = 1201.5; +set lock_timeout = 1202.5; + +alter database regression set lock_timeout from current; +alter database regression set lock_timeout to DEFAULT; +alter database regression RESET lock_timeout;