mirror of https://github.com/citusdata/citus.git
49 lines
1.4 KiB
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);
|
|
}
|