return command;
}
+static char *
+deparse_AlterEnumStmt(Oid objectId, Node *parsetree)
+{
+ AlterEnumStmt *node = (AlterEnumStmt *) parsetree;
+ ObjTree *alterEnum;
+ ObjTree *tmp;
+ char *command;
+
+ alterEnum =
+ new_objtree_VA("ALTER TYPE %{identity}D ADD VALUE %{if_not_exists}s %{value}L %{position}s",
+ 0);
+
+ append_string_object(alterEnum, "if_not_exists",
+ node->skipIfExists ? "IF NOT EXISTS" : "");
+ append_object_object(alterEnum, "identity",
+ new_objtree_for_qualname_id(TypeRelationId,
+ objectId));
+ append_string_object(alterEnum, "value", node->newVal);
+ tmp = new_objtree_VA("%{after_or_before}s %{neighbour}L", 0);
+ if (node->newValNeighbor)
+ {
+ append_string_object(tmp, "after_or_before",
+ node->newValIsAfter ? "AFTER" : "BEFORE");
+ append_string_object(tmp, "neighbour", node->newValNeighbor);
+ }
+ else
+ {
+ append_bool_object(tmp, "present", false);
+ }
+ append_object_object(alterEnum, "position", tmp);
+
+ command = jsonize_objtree(alterEnum);
+ free_objtree(alterEnum);
+
+ return command;
+}
+
static char *
deparse_parsenode_cmd(StashedCommand *cmd)
{
command = NULL;
break;
+ case T_AlterTableStmt:
+ command = NULL;
+ break;
+
+ case T_AlterEnumStmt:
+ command = deparse_AlterEnumStmt(objectId, parsetree);
+ break;
+
default:
command = NULL;
elog(LOG, "unrecognized node type: %d",
break;
case T_AlterEnumStmt: /* ALTER TYPE (enum) */
- AlterEnum((AlterEnumStmt *) parsetree, isTopLevel);
+ objectId = AlterEnum((AlterEnumStmt *) parsetree, isTopLevel);
+ EventTriggerStashCommand(objectId, OBJECT_TYPE, parsetree);
break;
case T_ViewStmt: /* CREATE VIEW */