/*------------------------------------------------------------------------- * * deparse_table_stmts.c * All routines to deparse table statements. * This file contains all entry points specific for table statement deparsing as well as * functions that are currently only used for deparsing of the table statements. * * Copyright (c) Citus Data, Inc. * *------------------------------------------------------------------------- */ #include "postgres.h" #include "distributed/deparser.h" #include "nodes/nodes.h" #include "nodes/parsenodes.h" #include "utils/builtins.h" static void AppendAlterTableSchemaStmt(StringInfo buf, AlterObjectSchemaStmt *stmt); char * DeparseAlterTableSchemaStmt(Node *node) { AlterObjectSchemaStmt *stmt = castNode(AlterObjectSchemaStmt, node); StringInfoData str = { 0 }; initStringInfo(&str); Assert(stmt->objectType == OBJECT_TABLE); AppendAlterTableSchemaStmt(&str, stmt); return str.data; } static void AppendAlterTableSchemaStmt(StringInfo buf, AlterObjectSchemaStmt *stmt) { Assert(stmt->objectType == OBJECT_TABLE); appendStringInfo(buf, "ALTER TABLE "); if (stmt->missing_ok) { appendStringInfo(buf, "IF EXISTS "); } char *tableName = quote_qualified_identifier(stmt->relation->schemaname, stmt->relation->relname); const char *newSchemaName = quote_identifier(stmt->newschema); appendStringInfo(buf, "%s SET SCHEMA %s;", tableName, newSchemaName); }