diff --git a/src/backend/distributed/deparser/citus_setutils.c b/src/backend/distributed/deparser/citus_setutils.c index d384c9a5e..62d97f0d2 100644 --- a/src/backend/distributed/deparser/citus_setutils.c +++ b/src/backend/distributed/deparser/citus_setutils.c @@ -29,7 +29,7 @@ AppendVarSetValue(StringInfo buf, VariableSetStmt *setStmt) Assert(setStmt->kind == VAR_SET_VALUE); - foreach (varArgCell, setStmt->args) + foreach(varArgCell, setStmt->args) { Node *varArgNode = lfirst(varArgCell); A_Const *varArgConst = NULL; @@ -37,11 +37,11 @@ AppendVarSetValue(StringInfo buf, VariableSetStmt *setStmt) if (IsA(varArgNode, A_Const)) { - varArgConst = (A_Const *)varArgNode; + varArgConst = (A_Const *) varArgNode; } else if (IsA(varArgNode, TypeCast)) { - TypeCast *varArgTypeCast = (TypeCast *)varArgNode; + TypeCast *varArgTypeCast = (TypeCast *) varArgNode; varArgConst = castNode(A_Const, varArgTypeCast->arg); typeName = varArgTypeCast->typeName; @@ -65,59 +65,59 @@ AppendVarSetValue(StringInfo buf, VariableSetStmt *setStmt) appendStringInfo(buf, " SET %s =", quote_identifier(setStmt->name)); } - Node *value = (Node *)&varArgConst->val; + Node *value = (Node *) &varArgConst->val; switch (value->type) { - case T_Integer: - { - appendStringInfo(buf, " %d", intVal(value)); - break; - } - - case T_Float: - { - appendStringInfo(buf, " %s", strVal(value)); - break; - } - - case T_String: - { - if (typeName != NULL) + case T_Integer: { - /* - * Must be a ConstInterval argument for TIME ZONE. Coerce - * to interval and back to normalize the value and account - * for any typmod. - */ - Oid typoid = InvalidOid; - int32 typmod = -1; - - typenameTypeIdAndMod(NULL, typeName, &typoid, &typmod); - Assert(typoid == INTERVALOID); - - Datum interval = - DirectFunctionCall3(interval_in, - CStringGetDatum(strVal(value)), - ObjectIdGetDatum(InvalidOid), - Int32GetDatum(typmod)); - - char *intervalout = - DatumGetCString(DirectFunctionCall1(interval_out, - interval)); - appendStringInfo(buf, " INTERVAL '%s'", intervalout); + appendStringInfo(buf, " %d", intVal(value)); + break; } - else + + case T_Float: { - appendStringInfo(buf, " %s", quote_literal_cstr(strVal(value))); + appendStringInfo(buf, " %s", strVal(value)); + break; } - break; - } - default: - { - elog(ERROR, "Unexpected Value type in VAR_SET_VALUE arguments."); - break; - } + case T_String: + { + if (typeName != NULL) + { + /* + * Must be a ConstInterval argument for TIME ZONE. Coerce + * to interval and back to normalize the value and account + * for any typmod. + */ + Oid typoid = InvalidOid; + int32 typmod = -1; + + typenameTypeIdAndMod(NULL, typeName, &typoid, &typmod); + Assert(typoid == INTERVALOID); + + Datum interval = + DirectFunctionCall3(interval_in, + CStringGetDatum(strVal(value)), + ObjectIdGetDatum(InvalidOid), + Int32GetDatum(typmod)); + + char *intervalout = + DatumGetCString(DirectFunctionCall1(interval_out, + interval)); + appendStringInfo(buf, " INTERVAL '%s'", intervalout); + } + else + { + appendStringInfo(buf, " %s", quote_literal_cstr(strVal(value))); + } + break; + } + + default: + { + elog(ERROR, "Unexpected Value type in VAR_SET_VALUE arguments."); + break; + } } } } @@ -126,47 +126,48 @@ AppendVarSetValue(StringInfo buf, VariableSetStmt *setStmt) /* * AppendVariableSetDb appends a string representing the VariableSetStmt to a buffer */ -void AppendVariableSet(StringInfo buf, VariableSetStmt *setStmt) +void +AppendVariableSet(StringInfo buf, VariableSetStmt *setStmt) { switch (setStmt->kind) { - case VAR_SET_VALUE: - { - AppendVarSetValue(buf, setStmt); - break; - } + case VAR_SET_VALUE: + { + AppendVarSetValue(buf, setStmt); + break; + } - case VAR_SET_CURRENT: - { - appendStringInfo(buf, " SET %s FROM CURRENT", quote_identifier(setStmt->name)); - break; - } + case VAR_SET_CURRENT: + { + appendStringInfo(buf, " SET %s FROM CURRENT", quote_identifier( + setStmt->name)); + break; + } - case VAR_SET_DEFAULT: - { - appendStringInfo(buf, " SET %s TO DEFAULT", quote_identifier(setStmt->name)); - break; - } + case VAR_SET_DEFAULT: + { + appendStringInfo(buf, " SET %s TO DEFAULT", quote_identifier(setStmt->name)); + break; + } - case VAR_RESET: - { - appendStringInfo(buf, " RESET %s", quote_identifier(setStmt->name)); - break; - } + case VAR_RESET: + { + appendStringInfo(buf, " RESET %s", quote_identifier(setStmt->name)); + break; + } - case VAR_RESET_ALL: - { - appendStringInfoString(buf, " RESET ALL"); - break; - } + case VAR_RESET_ALL: + { + appendStringInfoString(buf, " RESET ALL"); + break; + } - /* VAR_SET_MULTI is a special case for SET TRANSACTION that should not occur here */ - case VAR_SET_MULTI: - default: - { - ereport(ERROR, (errmsg("Unable to deparse SET statement"))); - break; - } + /* VAR_SET_MULTI is a special case for SET TRANSACTION that should not occur here */ + case VAR_SET_MULTI: + default: + { + ereport(ERROR, (errmsg("Unable to deparse SET statement"))); + break; + } } } - diff --git a/src/backend/distributed/deparser/deparse_database_stmts.c b/src/backend/distributed/deparser/deparse_database_stmts.c index 697e7c09c..72fb28c67 100644 --- a/src/backend/distributed/deparser/deparse_database_stmts.c +++ b/src/backend/distributed/deparser/deparse_database_stmts.c @@ -35,7 +35,7 @@ char * DeparseAlterDatabaseOwnerStmt(Node *node) { AlterOwnerStmt *stmt = castNode(AlterOwnerStmt, node); - StringInfoData str = {0}; + StringInfoData str = { 0 }; initStringInfo(&str); Assert(stmt->objectType == OBJECT_DATABASE); @@ -45,6 +45,7 @@ DeparseAlterDatabaseOwnerStmt(Node *node) return str.data; } + static void AppendAlterDatabaseOwnerStmt(StringInfo buf, AlterOwnerStmt *stmt) { @@ -52,17 +53,18 @@ AppendAlterDatabaseOwnerStmt(StringInfo buf, AlterOwnerStmt *stmt) appendStringInfo(buf, "ALTER DATABASE %s OWNER TO %s;", - quote_identifier(strVal((String *)stmt->object)), + quote_identifier(strVal((String *) stmt->object)), RoleSpecString(stmt->newowner, true)); } + static void AppendGrantDatabases(StringInfo buf, GrantStmt *stmt) { ListCell *cell = NULL; appendStringInfo(buf, " ON DATABASE "); - foreach (cell, stmt->objects) + foreach(cell, stmt->objects) { char *database = strVal(lfirst(cell)); appendStringInfoString(buf, quote_identifier(database)); @@ -73,6 +75,7 @@ AppendGrantDatabases(StringInfo buf, GrantStmt *stmt) } } + static void AppendGrantOnDatabaseStmt(StringInfo buf, GrantStmt *stmt) { @@ -85,17 +88,19 @@ AppendGrantOnDatabaseStmt(StringInfo buf, GrantStmt *stmt) AppendGrantSharedSuffix(buf, stmt); } + static void AppendDefElemIsTemplate(StringInfo buf, DefElem *def) { appendStringInfo(buf, "WITH %s %s", quote_identifier(def->defname), - quote_literal_cstr(strVal(def->arg))); + quote_literal_cstr(strVal(def->arg))); } + static void AppendDefElemConnLimit(StringInfo buf, DefElem *def) { - appendStringInfo(buf, "WITH CONNECTION LIMIT %ld", (long int)defGetNumeric(def)); + appendStringInfo(buf, "WITH CONNECTION LIMIT %ld", (long int) defGetNumeric(def)); } @@ -108,7 +113,7 @@ AppendAlterDatabaseStmt(StringInfo buf, AlterDatabaseStmt *stmt) { ListCell *cell = NULL; appendStringInfo(buf, "WITH "); - foreach (cell, stmt->options) + foreach(cell, stmt->options) { DefElem *def = castNode(DefElem, lfirst(cell)); if (strcmp(def->defname, "is_template") == 0) @@ -121,7 +126,6 @@ AppendAlterDatabaseStmt(StringInfo buf, AlterDatabaseStmt *stmt) } else if (strcmp(def->defname, "tablespace") == 0) { - ereport(ERROR, errmsg("SET tablespace is not supported")); } @@ -142,13 +146,14 @@ AppendAlterDatabaseStmt(StringInfo buf, AlterDatabaseStmt *stmt) appendStringInfo(buf, ";"); } + char * DeparseGrantOnDatabaseStmt(Node *node) { GrantStmt *stmt = castNode(GrantStmt, node); Assert(stmt->objtype == OBJECT_DATABASE); - StringInfoData str = {0}; + StringInfoData str = { 0 }; initStringInfo(&str); AppendGrantOnDatabaseStmt(&str, stmt); @@ -156,12 +161,13 @@ DeparseGrantOnDatabaseStmt(Node *node) return str.data; } + char * DeparseAlterDatabaseStmt(Node *node) { AlterDatabaseStmt *stmt = castNode(AlterDatabaseStmt, node); - StringInfoData str = {0}; + StringInfoData str = { 0 }; initStringInfo(&str); AppendAlterDatabaseStmt(&str, stmt); @@ -169,11 +175,12 @@ DeparseAlterDatabaseStmt(Node *node) return str.data; } + #if PG_VERSION_NUM >= PG_VERSION_15 char * DeparseAlterDatabaseRefreshCollStmt(Node *node) { - AlterDatabaseRefreshCollStmt *stmt = (AlterDatabaseRefreshCollStmt *)node; + AlterDatabaseRefreshCollStmt *stmt = (AlterDatabaseRefreshCollStmt *) node; StringInfoData str; initStringInfo(&str); @@ -185,8 +192,8 @@ DeparseAlterDatabaseRefreshCollStmt(Node *node) return str.data; } -#endif +#endif static void @@ -199,12 +206,13 @@ AppendAlterDatabaseSetStmt(StringInfo buf, AlterDatabaseSetStmt *stmt) AppendVariableSet(buf, varSetStmt); } + char * DeparseAlterDatabaseSetStmt(Node *node) { AlterDatabaseSetStmt *stmt = castNode(AlterDatabaseSetStmt, node); - StringInfoData str = {0}; + StringInfoData str = { 0 }; initStringInfo(&str); AppendAlterDatabaseSetStmt(&str, stmt); diff --git a/src/backend/distributed/deparser/deparse_function_stmts.c b/src/backend/distributed/deparser/deparse_function_stmts.c index 0612d794c..a5bc52e5a 100644 --- a/src/backend/distributed/deparser/deparse_function_stmts.c +++ b/src/backend/distributed/deparser/deparse_function_stmts.c @@ -299,7 +299,6 @@ AppendDefElemSupport(StringInfo buf, DefElem *def) } - /* * DeparseRenameFunctionStmt builds and returns a string representing the RenameStmt */