citus/src/backend/distributed/deparser/deparse_table_stmts.c

49 lines
1.4 KiB
C

/*-------------------------------------------------------------------------
*
* 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);
}