From 81c39a6f3b3fc912a1f13590004ed38f0f0f433f Mon Sep 17 00:00:00 2001 From: Petr Jelinek Date: Tue, 25 Nov 2014 15:38:38 +0100 Subject: [PATCH] deparse: Support for ALTER TABLE ONLY --- src/backend/tcop/deparse_utility.c | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/src/backend/tcop/deparse_utility.c b/src/backend/tcop/deparse_utility.c index df333209f8..3359011670 100644 --- a/src/backend/tcop/deparse_utility.c +++ b/src/backend/tcop/deparse_utility.c @@ -67,6 +67,7 @@ #include "nodes/makefuncs.h" #include "nodes/parsenodes.h" #include "parser/analyze.h" +#include "parser/parse_clause.h" #include "parser/parse_collate.h" #include "parser/parse_expr.h" #include "parser/parse_relation.h" @@ -4320,13 +4321,17 @@ deparse_AlterTableStmt(StashedCommand *cmd) List *subcmds = NIL; ListCell *cell; char *command; + AlterTableStmt *node = (AlterTableStmt *) cmd->parsetree; rel = heap_open(cmd->d.alterTable.objectId, AccessShareLock); dpcontext = deparse_context_for(RelationGetRelationName(rel), cmd->d.alterTable.objectId); alterTableStmt = - new_objtree_VA("ALTER TABLE %{identity}D %{subcmds:, }s", 0); + new_objtree_VA("ALTER TABLE %{only}s %{identity}D %{subcmds:, }s", 0); + append_string_object(alterTableStmt, "only", + interpretInhOption(node->relation->inhOpt) ? + "" : "ONLY"); tmp = new_objtree_for_qualname(rel->rd_rel->relnamespace, RelationGetRelationName(rel)); append_object_object(alterTableStmt, "identity", tmp); @@ -4354,8 +4359,10 @@ deparse_AlterTableStmt(StashedCommand *cmd) new_object_object(NULL, tmp)); break; + case AT_DropColumn: case AT_DropColumnRecurse: case AT_ValidateConstraintRecurse: + case AT_DropConstraint: case AT_DropConstraintRecurse: case AT_AddOidsRecurse: case AT_AddIndexConstraint: @@ -4441,13 +4448,6 @@ deparse_AlterTableStmt(StashedCommand *cmd) subcmds = lappend(subcmds, new_object_object(NULL, tmp)); break; - case AT_DropColumn: - tmp = new_objtree_VA("DROP COLUMN %{column}I", - 2, "type", ObjTypeString, "drop column", - "column", ObjTypeString, subcmd->name); - subcmds = lappend(subcmds, new_object_object(NULL, tmp)); - break; - case AT_AddIndex: { Oid idxOid = substashed->oid; @@ -4504,13 +4504,6 @@ deparse_AlterTableStmt(StashedCommand *cmd) subcmds = lappend(subcmds, new_object_object(NULL, tmp)); break; - case AT_DropConstraint: - tmp = new_objtree_VA("DROP CONSTRAINT %{constraint}I", 2, - "type", ObjTypeString, "drop constraint", - "constraint", ObjTypeString, subcmd->name); - subcmds = lappend(subcmds, new_object_object(NULL, tmp)); - break; - case AT_AlterColumnType: tmp = new_objtree_VA("ALTER COLUMN %{column}I SET DATA TYPE %{datatype}T collate_clause using_clause", 2, "type", ObjTypeString, "alter column type", -- 2.39.5