in ext/pg_query/pg_query_deparse.c [6046:6295]
static void deparseRenameStmt(StringInfo str, RenameStmt *rename_stmt)
{
List *l = NULL;
appendStringInfoString(str, "ALTER ");
switch (rename_stmt->renameType)
{
case OBJECT_AGGREGATE:
appendStringInfoString(str, "AGGREGATE ");
break;
case OBJECT_COLLATION:
appendStringInfoString(str, "COLLATION ");
break;
case OBJECT_CONVERSION:
appendStringInfoString(str, "CONVERSION ");
break;
case OBJECT_DATABASE:
appendStringInfoString(str, "DATABASE ");
break;
case OBJECT_DOMAIN:
case OBJECT_DOMCONSTRAINT:
appendStringInfoString(str, "DOMAIN ");
break;
case OBJECT_FDW:
appendStringInfoString(str, "FOREIGN DATA WRAPPER ");
break;
case OBJECT_FUNCTION:
appendStringInfoString(str, "FUNCTION ");
break;
case OBJECT_ROLE:
appendStringInfoString(str, "ROLE ");
break;
case OBJECT_LANGUAGE:
appendStringInfoString(str, "LANGUAGE ");
break;
case OBJECT_OPCLASS:
appendStringInfoString(str, "OPERATOR CLASS ");
break;
case OBJECT_OPFAMILY:
appendStringInfoString(str, "OPERATOR FAMILY ");
break;
case OBJECT_POLICY:
appendStringInfoString(str, "POLICY ");
break;
case OBJECT_PROCEDURE:
appendStringInfoString(str, "PROCEDURE ");
break;
case OBJECT_PUBLICATION:
appendStringInfoString(str, "PUBLICATION ");
break;
case OBJECT_ROUTINE:
appendStringInfoString(str, "ROUTINE ");
break;
case OBJECT_SCHEMA:
appendStringInfoString(str, "SCHEMA ");
break;
case OBJECT_FOREIGN_SERVER:
appendStringInfoString(str, "SERVER ");
break;
case OBJECT_SUBSCRIPTION:
appendStringInfoString(str, "SUBSCRIPTION ");
break;
case OBJECT_TABLE:
case OBJECT_TABCONSTRAINT:
appendStringInfoString(str, "TABLE ");
break;
case OBJECT_COLUMN:
switch (rename_stmt->relationType)
{
case OBJECT_TABLE:
appendStringInfoString(str, "TABLE ");
break;
case OBJECT_FOREIGN_TABLE:
appendStringInfoString(str, "FOREIGN TABLE ");
break;
case OBJECT_VIEW:
appendStringInfoString(str, "VIEW ");
break;
case OBJECT_MATVIEW:
appendStringInfoString(str, "MATERIALIZED VIEW ");
break;
default:
Assert(false);
}
break;
case OBJECT_SEQUENCE:
appendStringInfoString(str, "SEQUENCE ");
break;
case OBJECT_VIEW:
appendStringInfoString(str, "VIEW ");
break;
case OBJECT_MATVIEW:
appendStringInfoString(str, "MATERIALIZED VIEW ");
break;
case OBJECT_INDEX:
appendStringInfoString(str, "INDEX ");
break;
case OBJECT_FOREIGN_TABLE:
appendStringInfoString(str, "FOREIGN TABLE ");
break;
case OBJECT_RULE:
appendStringInfoString(str, "RULE ");
break;
case OBJECT_TRIGGER:
appendStringInfoString(str, "TRIGGER ");
break;
case OBJECT_EVENT_TRIGGER:
appendStringInfoString(str, "EVENT TRIGGER ");
break;
case OBJECT_TABLESPACE:
appendStringInfoString(str, "TABLESPACE ");
break;
case OBJECT_STATISTIC_EXT:
appendStringInfoString(str, "STATISTICS ");
break;
case OBJECT_TSPARSER:
appendStringInfoString(str, "TEXT SEARCH PARSER ");
break;
case OBJECT_TSDICTIONARY:
appendStringInfoString(str, "TEXT SEARCH DICTIONARY ");
break;
case OBJECT_TSTEMPLATE:
appendStringInfoString(str, "TEXT SEARCH TEMPLATE ");
break;
case OBJECT_TSCONFIGURATION:
appendStringInfoString(str, "TEXT SEARCH CONFIGURATION ");
break;
case OBJECT_TYPE:
case OBJECT_ATTRIBUTE:
appendStringInfoString(str, "TYPE ");
break;
default:
Assert(false);
break;
}
if (rename_stmt->missing_ok)
appendStringInfoString(str, "IF EXISTS ");
switch (rename_stmt->renameType)
{
case OBJECT_AGGREGATE:
deparseAggregateWithArgtypes(str, castNode(ObjectWithArgs, rename_stmt->object));
appendStringInfoString(str, " RENAME ");
break;
case OBJECT_DOMCONSTRAINT:
deparseAnyName(str, castNode(List, rename_stmt->object));
appendStringInfoString(str, " RENAME CONSTRAINT ");
appendStringInfoString(str, quote_identifier(rename_stmt->subname));
appendStringInfoChar(str, ' ');
break;
case OBJECT_OPCLASS:
case OBJECT_OPFAMILY:
l = castNode(List, rename_stmt->object);
deparseAnyNameSkipFirst(str, l);
appendStringInfoString(str, " USING ");
appendStringInfoString(str, quote_identifier(strVal(linitial(l))));
appendStringInfoString(str, " RENAME ");
break;
case OBJECT_POLICY:
appendStringInfoString(str, quote_identifier(rename_stmt->subname));
appendStringInfoString(str, " ON ");
deparseRangeVar(str, rename_stmt->relation, DEPARSE_NODE_CONTEXT_NONE);
appendStringInfoString(str, " RENAME ");
break;
case OBJECT_FUNCTION:
case OBJECT_PROCEDURE:
case OBJECT_ROUTINE:
deparseFunctionWithArgtypes(str, castNode(ObjectWithArgs, rename_stmt->object));
appendStringInfoString(str, " RENAME ");
break;
case OBJECT_SUBSCRIPTION:
deparseColId(str, strVal(rename_stmt->object));
appendStringInfoString(str, " RENAME ");
break;
case OBJECT_TABLE:
case OBJECT_SEQUENCE:
case OBJECT_VIEW:
case OBJECT_MATVIEW:
case OBJECT_INDEX:
case OBJECT_FOREIGN_TABLE:
deparseRangeVar(str, rename_stmt->relation, DEPARSE_NODE_CONTEXT_NONE);
appendStringInfoString(str, " RENAME ");
break;
case OBJECT_COLUMN:
deparseRangeVar(str, rename_stmt->relation, DEPARSE_NODE_CONTEXT_NONE);
appendStringInfoString(str, " RENAME COLUMN ");
appendStringInfoString(str, quote_identifier(rename_stmt->subname));
appendStringInfoChar(str, ' ');
break;
case OBJECT_TABCONSTRAINT:
deparseRangeVar(str, rename_stmt->relation, DEPARSE_NODE_CONTEXT_NONE);
appendStringInfoString(str, " RENAME CONSTRAINT ");
appendStringInfoString(str, quote_identifier(rename_stmt->subname));
appendStringInfoChar(str, ' ');
break;
case OBJECT_RULE:
case OBJECT_TRIGGER:
appendStringInfoString(str, quote_identifier(rename_stmt->subname));
appendStringInfoString(str, " ON ");
deparseRangeVar(str, rename_stmt->relation, DEPARSE_NODE_CONTEXT_NONE);
appendStringInfoString(str, " RENAME ");
break;
case OBJECT_FDW:
case OBJECT_LANGUAGE:
case OBJECT_PUBLICATION:
case OBJECT_FOREIGN_SERVER:
case OBJECT_EVENT_TRIGGER:
appendStringInfoString(str, quote_identifier(strVal(rename_stmt->object)));
appendStringInfoString(str, " RENAME ");
break;
case OBJECT_DATABASE:
case OBJECT_ROLE:
case OBJECT_SCHEMA:
case OBJECT_TABLESPACE:
appendStringInfoString(str, quote_identifier(rename_stmt->subname));
appendStringInfoString(str, " RENAME ");
break;
case OBJECT_COLLATION:
case OBJECT_CONVERSION:
case OBJECT_DOMAIN:
case OBJECT_STATISTIC_EXT:
case OBJECT_TSPARSER:
case OBJECT_TSDICTIONARY:
case OBJECT_TSTEMPLATE:
case OBJECT_TSCONFIGURATION:
case OBJECT_TYPE:
deparseAnyName(str, castNode(List, rename_stmt->object));
appendStringInfoString(str, " RENAME ");
break;
case OBJECT_ATTRIBUTE:
deparseRangeVar(str, rename_stmt->relation, DEPARSE_NODE_CONTEXT_ALTER_TYPE);
appendStringInfoString(str, " RENAME ATTRIBUTE ");
appendStringInfoString(str, quote_identifier(rename_stmt->subname));
appendStringInfoChar(str, ' ');
break;
default:
Assert(false);
break;
}
appendStringInfoString(str, "TO ");
appendStringInfoString(str, quote_identifier(rename_stmt->newname));
appendStringInfoChar(str, ' ');
deparseOptDropBehavior(str, rename_stmt->behavior);
removeTrailingSpace(str);
}