I've been annoyed several times lately by having to update
the list of node types embodied in test_oat_hooks.c's
nodetag_to_string().  I got around to looking at that more
closely, and realized that it is only used for utility
statements, which (a) are a very small subset of the node
types that that function knows about, and (b) we already
have a mechanism to get string identifiers for, and (c)
those identifiers are already standard parts of our user API,
unlike the strings exposed by nodetag_to_string().  I do not
think that test_oat_hooks.c has any business imposing
an extra maintenance burden on us all, so I propose
nuking nodetag_to_string() from orbit, as attached.

(Incidentally, this improves test_oat_hooks's own
reported code coverage from 14.0% to 76.1%, because
so much of that switch is dead code.)

                        regards, tom lane

diff --git a/src/test/modules/test_oat_hooks/expected/test_oat_hooks.out b/src/test/modules/test_oat_hooks/expected/test_oat_hooks.out
index 30828a7da3..b053bc75cc 100644
--- a/src/test/modules/test_oat_hooks/expected/test_oat_hooks.out
+++ b/src/test/modules/test_oat_hooks/expected/test_oat_hooks.out
@@ -11,26 +11,26 @@ LOAD 'test_oat_hooks';
 SET test_oat_hooks.audit = true;
 NOTICE:  in object_access_hook_str: superuser attempting alter (subId=0x1000, set) [test_oat_hooks.audit]
 NOTICE:  in object_access_hook_str: superuser finished alter (subId=0x1000, set) [test_oat_hooks.audit]
-NOTICE:  in process utility: superuser finished set
+NOTICE:  in process utility: superuser finished SET
 -- Creating privileges on an existent custom GUC should create precisely the
 -- right privileges, not overly conservative ones.
 GRANT SET ON PARAMETER test_oat_hooks.user_var2 TO regress_role_joe;
-NOTICE:  in process utility: superuser attempting GrantStmt
-NOTICE:  in process utility: superuser finished GrantStmt
+NOTICE:  in process utility: superuser attempting GRANT
+NOTICE:  in process utility: superuser finished GRANT
 GRANT SET ON PARAMETER test_oat_hooks.super_var2 TO regress_role_joe;
-NOTICE:  in process utility: superuser attempting GrantStmt
-NOTICE:  in process utility: superuser finished GrantStmt
+NOTICE:  in process utility: superuser attempting GRANT
+NOTICE:  in process utility: superuser finished GRANT
 -- Granting multiple privileges on a parameter should be reported correctly to
 -- the OAT hook, but beware that WITH GRANT OPTION is not represented.
 GRANT SET, ALTER SYSTEM ON PARAMETER none.such TO regress_role_joe;
-NOTICE:  in process utility: superuser attempting GrantStmt
-NOTICE:  in process utility: superuser finished GrantStmt
+NOTICE:  in process utility: superuser attempting GRANT
+NOTICE:  in process utility: superuser finished GRANT
 GRANT SET, ALTER SYSTEM ON PARAMETER another.bogus TO regress_role_joe WITH GRANT OPTION;
-NOTICE:  in process utility: superuser attempting GrantStmt
-NOTICE:  in process utility: superuser finished GrantStmt
+NOTICE:  in process utility: superuser attempting GRANT
+NOTICE:  in process utility: superuser finished GRANT
 -- Check when the hooks fire relative to dependency based abort of a drop
 DROP ROLE regress_role_joe;
-NOTICE:  in process utility: superuser attempting DropRoleStmt
+NOTICE:  in process utility: superuser attempting DROP ROLE
 NOTICE:  in object access: superuser attempting drop (subId=0x0) []
 NOTICE:  in object access: superuser finished drop (subId=0x0) []
 ERROR:  role "regress_role_joe" cannot be dropped because some objects depend on it
@@ -42,30 +42,30 @@ privileges for parameter none.such
 privileges for parameter another.bogus
 -- Check the behavior of the hooks relative to do-nothing grants and revokes
 GRANT SET ON PARAMETER maintenance_work_mem TO PUBLIC;
-NOTICE:  in process utility: superuser attempting GrantStmt
-NOTICE:  in process utility: superuser finished GrantStmt
+NOTICE:  in process utility: superuser attempting GRANT
+NOTICE:  in process utility: superuser finished GRANT
 REVOKE SET ON PARAMETER maintenance_work_mem FROM PUBLIC;
-NOTICE:  in process utility: superuser attempting GrantStmt
-NOTICE:  in process utility: superuser finished GrantStmt
+NOTICE:  in process utility: superuser attempting REVOKE
+NOTICE:  in process utility: superuser finished REVOKE
 REVOKE ALTER SYSTEM ON PARAMETER maintenance_work_mem FROM PUBLIC;
-NOTICE:  in process utility: superuser attempting GrantStmt
-NOTICE:  in process utility: superuser finished GrantStmt
+NOTICE:  in process utility: superuser attempting REVOKE
+NOTICE:  in process utility: superuser finished REVOKE
 -- Check the behavior of the hooks relative to unrecognized parameters
 GRANT ALL ON PARAMETER "none.such" TO PUBLIC;
-NOTICE:  in process utility: superuser attempting GrantStmt
-NOTICE:  in process utility: superuser finished GrantStmt
+NOTICE:  in process utility: superuser attempting GRANT
+NOTICE:  in process utility: superuser finished GRANT
 -- Check relative to an operation that causes the catalog entry to be deleted
 REVOKE ALL ON PARAMETER "none.such" FROM PUBLIC;
-NOTICE:  in process utility: superuser attempting GrantStmt
-NOTICE:  in process utility: superuser finished GrantStmt
+NOTICE:  in process utility: superuser attempting REVOKE
+NOTICE:  in process utility: superuser finished REVOKE
 -- Create objects for use in the test
 CREATE USER regress_test_user;
-NOTICE:  in process utility: superuser attempting CreateRoleStmt
+NOTICE:  in process utility: superuser attempting CREATE ROLE
 NOTICE:  in object access: superuser attempting create (subId=0x0) [explicit]
 NOTICE:  in object access: superuser finished create (subId=0x0) [explicit]
-NOTICE:  in process utility: superuser finished CreateRoleStmt
+NOTICE:  in process utility: superuser finished CREATE ROLE
 CREATE TABLE regress_test_table (t text);
-NOTICE:  in process utility: superuser attempting CreateStmt
+NOTICE:  in process utility: superuser attempting CREATE TABLE
 NOTICE:  in object access: superuser attempting namespace search (subId=0x0) [no report on violation, allowed]
 LINE 1: CREATE TABLE regress_test_table (t text);
                      ^
@@ -82,25 +82,25 @@ NOTICE:  in object access: superuser attempting create (subId=0x0) [internal]
 NOTICE:  in object access: superuser finished create (subId=0x0) [internal]
 NOTICE:  in object access: superuser attempting create (subId=0x0) [internal]
 NOTICE:  in object access: superuser finished create (subId=0x0) [internal]
-NOTICE:  in process utility: superuser finished CreateStmt
+NOTICE:  in process utility: superuser finished CREATE TABLE
 CREATE INDEX regress_test_table_t_idx ON regress_test_table (t);
-NOTICE:  in process utility: superuser attempting IndexStmt
+NOTICE:  in process utility: superuser attempting CREATE INDEX
 NOTICE:  in object access: superuser attempting create (subId=0x0) [explicit]
 NOTICE:  in object access: superuser finished create (subId=0x0) [explicit]
-NOTICE:  in process utility: superuser finished IndexStmt
+NOTICE:  in process utility: superuser finished CREATE INDEX
 GRANT SELECT ON Table regress_test_table TO public;
-NOTICE:  in process utility: superuser attempting GrantStmt
-NOTICE:  in process utility: superuser finished GrantStmt
+NOTICE:  in process utility: superuser attempting GRANT
+NOTICE:  in process utility: superuser finished GRANT
 CREATE FUNCTION regress_test_func (t text) RETURNS text AS $$
 	SELECT $1;
 $$ LANGUAGE sql;
-NOTICE:  in process utility: superuser attempting CreateFunctionStmt
+NOTICE:  in process utility: superuser attempting CREATE FUNCTION
 NOTICE:  in object access: superuser attempting create (subId=0x0) [explicit]
 NOTICE:  in object access: superuser finished create (subId=0x0) [explicit]
-NOTICE:  in process utility: superuser finished CreateFunctionStmt
+NOTICE:  in process utility: superuser finished CREATE FUNCTION
 GRANT EXECUTE ON FUNCTION regress_test_func (text) TO public;
-NOTICE:  in process utility: superuser attempting GrantStmt
-NOTICE:  in process utility: superuser finished GrantStmt
+NOTICE:  in process utility: superuser attempting GRANT
+NOTICE:  in process utility: superuser finished GRANT
 -- Do a few things as superuser
 SELECT * FROM regress_test_table;
 NOTICE:  in executor check perms: superuser attempting execute
@@ -118,31 +118,31 @@ NOTICE:  in executor check perms: superuser finished execute
 (1 row)
 
 SET work_mem = 8192;
-NOTICE:  in process utility: superuser attempting set
+NOTICE:  in process utility: superuser attempting SET
 NOTICE:  in object_access_hook_str: superuser attempting alter (subId=0x1000, set) [work_mem]
 NOTICE:  in object_access_hook_str: superuser finished alter (subId=0x1000, set) [work_mem]
-NOTICE:  in process utility: superuser finished set
+NOTICE:  in process utility: superuser finished SET
 RESET work_mem;
-NOTICE:  in process utility: superuser attempting set
+NOTICE:  in process utility: superuser attempting RESET
 NOTICE:  in object_access_hook_str: superuser attempting alter (subId=0x1000, set) [work_mem]
 NOTICE:  in object_access_hook_str: superuser finished alter (subId=0x1000, set) [work_mem]
-NOTICE:  in process utility: superuser finished set
+NOTICE:  in process utility: superuser finished RESET
 ALTER SYSTEM SET work_mem = 8192;
-NOTICE:  in process utility: superuser attempting alter system
+NOTICE:  in process utility: superuser attempting ALTER SYSTEM
 NOTICE:  in object_access_hook_str: superuser attempting alter (subId=0x2000, alter system) [work_mem]
 NOTICE:  in object_access_hook_str: superuser finished alter (subId=0x2000, alter system) [work_mem]
-NOTICE:  in process utility: superuser finished alter system
+NOTICE:  in process utility: superuser finished ALTER SYSTEM
 ALTER SYSTEM RESET work_mem;
-NOTICE:  in process utility: superuser attempting alter system
+NOTICE:  in process utility: superuser attempting ALTER SYSTEM
 NOTICE:  in object_access_hook_str: superuser attempting alter (subId=0x2000, alter system) [work_mem]
 NOTICE:  in object_access_hook_str: superuser finished alter (subId=0x2000, alter system) [work_mem]
-NOTICE:  in process utility: superuser finished alter system
+NOTICE:  in process utility: superuser finished ALTER SYSTEM
 -- Do those same things as non-superuser
 SET SESSION AUTHORIZATION regress_test_user;
-NOTICE:  in process utility: superuser attempting set
+NOTICE:  in process utility: superuser attempting SET
 NOTICE:  in object_access_hook_str: non-superuser attempting alter (subId=0x1000, set) [session_authorization]
 NOTICE:  in object_access_hook_str: non-superuser finished alter (subId=0x1000, set) [session_authorization]
-NOTICE:  in process utility: non-superuser finished set
+NOTICE:  in process utility: non-superuser finished SET
 SELECT * FROM regress_test_table;
 NOTICE:  in object access: non-superuser attempting namespace search (subId=0x0) [no report on violation, allowed]
 LINE 1: SELECT * FROM regress_test_table;
@@ -165,83 +165,83 @@ NOTICE:  in executor check perms: non-superuser finished execute
 (1 row)
 
 SET work_mem = 8192;
-NOTICE:  in process utility: non-superuser attempting set
+NOTICE:  in process utility: non-superuser attempting SET
 NOTICE:  in object_access_hook_str: non-superuser attempting alter (subId=0x1000, set) [work_mem]
 NOTICE:  in object_access_hook_str: non-superuser finished alter (subId=0x1000, set) [work_mem]
-NOTICE:  in process utility: non-superuser finished set
+NOTICE:  in process utility: non-superuser finished SET
 RESET work_mem;
-NOTICE:  in process utility: non-superuser attempting set
+NOTICE:  in process utility: non-superuser attempting RESET
 NOTICE:  in object_access_hook_str: non-superuser attempting alter (subId=0x1000, set) [work_mem]
 NOTICE:  in object_access_hook_str: non-superuser finished alter (subId=0x1000, set) [work_mem]
-NOTICE:  in process utility: non-superuser finished set
+NOTICE:  in process utility: non-superuser finished RESET
 ALTER SYSTEM SET work_mem = 8192;
-NOTICE:  in process utility: non-superuser attempting alter system
+NOTICE:  in process utility: non-superuser attempting ALTER SYSTEM
 ERROR:  permission denied to set parameter "work_mem"
 ALTER SYSTEM RESET work_mem;
-NOTICE:  in process utility: non-superuser attempting alter system
+NOTICE:  in process utility: non-superuser attempting ALTER SYSTEM
 ERROR:  permission denied to set parameter "work_mem"
 SET test_oat_hooks.user_var1 = true;
-NOTICE:  in process utility: non-superuser attempting set
+NOTICE:  in process utility: non-superuser attempting SET
 NOTICE:  in object_access_hook_str: non-superuser attempting alter (subId=0x1000, set) [test_oat_hooks.user_var1]
 NOTICE:  in object_access_hook_str: non-superuser finished alter (subId=0x1000, set) [test_oat_hooks.user_var1]
-NOTICE:  in process utility: non-superuser finished set
+NOTICE:  in process utility: non-superuser finished SET
 SET test_oat_hooks.super_var1 = true;
-NOTICE:  in process utility: non-superuser attempting set
+NOTICE:  in process utility: non-superuser attempting SET
 ERROR:  permission denied to set parameter "test_oat_hooks.super_var1"
 ALTER SYSTEM SET test_oat_hooks.user_var1 = true;
-NOTICE:  in process utility: non-superuser attempting alter system
+NOTICE:  in process utility: non-superuser attempting ALTER SYSTEM
 ERROR:  permission denied to set parameter "test_oat_hooks.user_var1"
 ALTER SYSTEM SET test_oat_hooks.super_var1 = true;
-NOTICE:  in process utility: non-superuser attempting alter system
+NOTICE:  in process utility: non-superuser attempting ALTER SYSTEM
 ERROR:  permission denied to set parameter "test_oat_hooks.super_var1"
 SET test_oat_hooks.user_var2 = true;
-NOTICE:  in process utility: non-superuser attempting set
+NOTICE:  in process utility: non-superuser attempting SET
 NOTICE:  in object_access_hook_str: non-superuser attempting alter (subId=0x1000, set) [test_oat_hooks.user_var2]
 NOTICE:  in object_access_hook_str: non-superuser finished alter (subId=0x1000, set) [test_oat_hooks.user_var2]
-NOTICE:  in process utility: non-superuser finished set
+NOTICE:  in process utility: non-superuser finished SET
 SET test_oat_hooks.super_var2 = true;
-NOTICE:  in process utility: non-superuser attempting set
+NOTICE:  in process utility: non-superuser attempting SET
 ERROR:  permission denied to set parameter "test_oat_hooks.super_var2"
 ALTER SYSTEM SET test_oat_hooks.user_var2 = true;
-NOTICE:  in process utility: non-superuser attempting alter system
+NOTICE:  in process utility: non-superuser attempting ALTER SYSTEM
 ERROR:  permission denied to set parameter "test_oat_hooks.user_var2"
 ALTER SYSTEM SET test_oat_hooks.super_var2 = true;
-NOTICE:  in process utility: non-superuser attempting alter system
+NOTICE:  in process utility: non-superuser attempting ALTER SYSTEM
 ERROR:  permission denied to set parameter "test_oat_hooks.super_var2"
 RESET SESSION AUTHORIZATION;
-NOTICE:  in process utility: non-superuser attempting set
+NOTICE:  in process utility: non-superuser attempting RESET
 NOTICE:  in object_access_hook_str: superuser attempting alter (subId=0x1000, set) [session_authorization]
 NOTICE:  in object_access_hook_str: superuser finished alter (subId=0x1000, set) [session_authorization]
-NOTICE:  in process utility: superuser finished set
+NOTICE:  in process utility: superuser finished RESET
 -- Turn off non-superuser permissions
 SET test_oat_hooks.deny_set_variable = true;
-NOTICE:  in process utility: superuser attempting set
+NOTICE:  in process utility: superuser attempting SET
 NOTICE:  in object_access_hook_str: superuser attempting alter (subId=0x1000, set) [test_oat_hooks.deny_set_variable]
 NOTICE:  in object_access_hook_str: superuser finished alter (subId=0x1000, set) [test_oat_hooks.deny_set_variable]
-NOTICE:  in process utility: superuser finished set
+NOTICE:  in process utility: superuser finished SET
 SET test_oat_hooks.deny_alter_system = true;
-NOTICE:  in process utility: superuser attempting set
+NOTICE:  in process utility: superuser attempting SET
 NOTICE:  in object_access_hook_str: superuser attempting alter (subId=0x1000, set) [test_oat_hooks.deny_alter_system]
 NOTICE:  in object_access_hook_str: superuser finished alter (subId=0x1000, set) [test_oat_hooks.deny_alter_system]
-NOTICE:  in process utility: superuser finished set
+NOTICE:  in process utility: superuser finished SET
 SET test_oat_hooks.deny_object_access = true;
-NOTICE:  in process utility: superuser attempting set
+NOTICE:  in process utility: superuser attempting SET
 NOTICE:  in object_access_hook_str: superuser attempting alter (subId=0x1000, set) [test_oat_hooks.deny_object_access]
 NOTICE:  in object_access_hook_str: superuser finished alter (subId=0x1000, set) [test_oat_hooks.deny_object_access]
-NOTICE:  in process utility: superuser finished set
+NOTICE:  in process utility: superuser finished SET
 SET test_oat_hooks.deny_exec_perms = true;
-NOTICE:  in process utility: superuser attempting set
+NOTICE:  in process utility: superuser attempting SET
 NOTICE:  in object_access_hook_str: superuser attempting alter (subId=0x1000, set) [test_oat_hooks.deny_exec_perms]
 NOTICE:  in object_access_hook_str: superuser finished alter (subId=0x1000, set) [test_oat_hooks.deny_exec_perms]
-NOTICE:  in process utility: superuser finished set
+NOTICE:  in process utility: superuser finished SET
 SET test_oat_hooks.deny_utility_commands = true;
-NOTICE:  in process utility: superuser attempting set
+NOTICE:  in process utility: superuser attempting SET
 NOTICE:  in object_access_hook_str: superuser attempting alter (subId=0x1000, set) [test_oat_hooks.deny_utility_commands]
 NOTICE:  in object_access_hook_str: superuser finished alter (subId=0x1000, set) [test_oat_hooks.deny_utility_commands]
-NOTICE:  in process utility: superuser finished set
+NOTICE:  in process utility: superuser finished SET
 -- Try again as non-superuser with permissions denied
 SET SESSION AUTHORIZATION regress_test_user;
-NOTICE:  in process utility: superuser attempting set
+NOTICE:  in process utility: superuser attempting SET
 NOTICE:  in object_access_hook_str: non-superuser attempting alter (subId=0x1000, set) [session_authorization]
 ERROR:  permission denied: set session_authorization
 SELECT * FROM regress_test_table;
@@ -266,39 +266,39 @@ NOTICE:  in executor check perms: superuser finished execute
 (1 row)
 
 SET work_mem = 8192;
-NOTICE:  in process utility: superuser attempting set
+NOTICE:  in process utility: superuser attempting SET
 NOTICE:  in object_access_hook_str: superuser attempting alter (subId=0x1000, set) [work_mem]
 NOTICE:  in object_access_hook_str: superuser finished alter (subId=0x1000, set) [work_mem]
-NOTICE:  in process utility: superuser finished set
+NOTICE:  in process utility: superuser finished SET
 RESET work_mem;
-NOTICE:  in process utility: superuser attempting set
+NOTICE:  in process utility: superuser attempting RESET
 NOTICE:  in object_access_hook_str: superuser attempting alter (subId=0x1000, set) [work_mem]
 NOTICE:  in object_access_hook_str: superuser finished alter (subId=0x1000, set) [work_mem]
-NOTICE:  in process utility: superuser finished set
+NOTICE:  in process utility: superuser finished RESET
 ALTER SYSTEM SET work_mem = 8192;
-NOTICE:  in process utility: superuser attempting alter system
+NOTICE:  in process utility: superuser attempting ALTER SYSTEM
 NOTICE:  in object_access_hook_str: superuser attempting alter (subId=0x2000, alter system) [work_mem]
 NOTICE:  in object_access_hook_str: superuser finished alter (subId=0x2000, alter system) [work_mem]
-NOTICE:  in process utility: superuser finished alter system
+NOTICE:  in process utility: superuser finished ALTER SYSTEM
 ALTER SYSTEM RESET work_mem;
-NOTICE:  in process utility: superuser attempting alter system
+NOTICE:  in process utility: superuser attempting ALTER SYSTEM
 NOTICE:  in object_access_hook_str: superuser attempting alter (subId=0x2000, alter system) [work_mem]
 NOTICE:  in object_access_hook_str: superuser finished alter (subId=0x2000, alter system) [work_mem]
-NOTICE:  in process utility: superuser finished alter system
+NOTICE:  in process utility: superuser finished ALTER SYSTEM
 -- try labelled drops
 RESET SESSION AUTHORIZATION;
-NOTICE:  in process utility: superuser attempting set
+NOTICE:  in process utility: superuser attempting RESET
 NOTICE:  in object_access_hook_str: superuser attempting alter (subId=0x1000, set) [session_authorization]
 NOTICE:  in object_access_hook_str: superuser finished alter (subId=0x1000, set) [session_authorization]
-NOTICE:  in process utility: superuser finished set
+NOTICE:  in process utility: superuser finished RESET
 DROP INDEX CONCURRENTLY regress_test_table_t_idx;
-NOTICE:  in process utility: superuser attempting DropStmt
+NOTICE:  in process utility: superuser attempting DROP INDEX
 NOTICE:  in object access: superuser attempting drop (subId=0x0) [concurrent drop,]
 NOTICE:  in object access: superuser finished drop (subId=0x0) [concurrent drop,]
-NOTICE:  in process utility: superuser finished DropStmt
+NOTICE:  in process utility: superuser finished DROP INDEX
 -- Clean up
 SET test_oat_hooks.audit = false;
-NOTICE:  in process utility: superuser attempting set
+NOTICE:  in process utility: superuser attempting SET
 DROP ROLE regress_role_joe;  -- fails
 ERROR:  role "regress_role_joe" cannot be dropped because some objects depend on it
 DETAIL:  privileges for parameter test_oat_hooks.user_var1
diff --git a/src/test/modules/test_oat_hooks/test_oat_hooks.c b/src/test/modules/test_oat_hooks/test_oat_hooks.c
index 8aa59bf18a..4b4e259cd2 100644
--- a/src/test/modules/test_oat_hooks/test_oat_hooks.c
+++ b/src/test/modules/test_oat_hooks/test_oat_hooks.c
@@ -64,7 +64,6 @@ static void REGRESS_utility_command(PlannedStmt *pstmt,
 									DestReceiver *dest, QueryCompletion *qc);
 
 /* Helper functions */
-static const char *nodetag_to_string(NodeTag tag);
 static char *accesstype_to_string(ObjectAccessType access, int subId);
 static char *accesstype_arg_to_string(ObjectAccessType access, void *arg);
 
@@ -388,25 +387,7 @@ REGRESS_utility_command(PlannedStmt *pstmt,
 						QueryCompletion *qc)
 {
 	Node	   *parsetree = pstmt->utilityStmt;
-
-	const char *action;
-	NodeTag		tag = nodeTag(parsetree);
-
-	switch (tag)
-	{
-		case T_VariableSetStmt:
-			action = "set";
-			break;
-		case T_AlterSystemStmt:
-			action = "alter system";
-			break;
-		case T_LoadStmt:
-			action = "load";
-			break;
-		default:
-			action = nodetag_to_string(tag);
-			break;
-	}
+	const char *action = GetCommandTagName(CreateCommandTag(parsetree));
 
 	audit_attempt("process utility",
 				  pstrdup(action),
@@ -434,1304 +415,6 @@ REGRESS_utility_command(PlannedStmt *pstmt,
 				  NULL);
 }
 
-static const char *
-nodetag_to_string(NodeTag tag)
-{
-	switch (tag)
-	{
-		case T_Invalid:
-			return "Invalid";
-			break;
-		case T_IndexInfo:
-			return "IndexInfo";
-			break;
-		case T_ExprContext:
-			return "ExprContext";
-			break;
-		case T_ProjectionInfo:
-			return "ProjectionInfo";
-			break;
-		case T_JunkFilter:
-			return "JunkFilter";
-			break;
-		case T_OnConflictSetState:
-			return "OnConflictSetState";
-			break;
-		case T_ResultRelInfo:
-			return "ResultRelInfo";
-			break;
-		case T_EState:
-			return "EState";
-			break;
-		case T_TupleTableSlot:
-			return "TupleTableSlot";
-			break;
-		case T_Result:
-			return "Result";
-			break;
-		case T_ProjectSet:
-			return "ProjectSet";
-			break;
-		case T_ModifyTable:
-			return "ModifyTable";
-			break;
-		case T_Append:
-			return "Append";
-			break;
-		case T_MergeAppend:
-			return "MergeAppend";
-			break;
-		case T_RecursiveUnion:
-			return "RecursiveUnion";
-			break;
-		case T_BitmapAnd:
-			return "BitmapAnd";
-			break;
-		case T_BitmapOr:
-			return "BitmapOr";
-			break;
-		case T_SeqScan:
-			return "SeqScan";
-			break;
-		case T_SampleScan:
-			return "SampleScan";
-			break;
-		case T_IndexScan:
-			return "IndexScan";
-			break;
-		case T_IndexOnlyScan:
-			return "IndexOnlyScan";
-			break;
-		case T_BitmapIndexScan:
-			return "BitmapIndexScan";
-			break;
-		case T_BitmapHeapScan:
-			return "BitmapHeapScan";
-			break;
-		case T_TidScan:
-			return "TidScan";
-			break;
-		case T_TidRangeScan:
-			return "TidRangeScan";
-			break;
-		case T_SubqueryScan:
-			return "SubqueryScan";
-			break;
-		case T_FunctionScan:
-			return "FunctionScan";
-			break;
-		case T_ValuesScan:
-			return "ValuesScan";
-			break;
-		case T_TableFuncScan:
-			return "TableFuncScan";
-			break;
-		case T_CteScan:
-			return "CteScan";
-			break;
-		case T_NamedTuplestoreScan:
-			return "NamedTuplestoreScan";
-			break;
-		case T_WorkTableScan:
-			return "WorkTableScan";
-			break;
-		case T_ForeignScan:
-			return "ForeignScan";
-			break;
-		case T_CustomScan:
-			return "CustomScan";
-			break;
-		case T_NestLoop:
-			return "NestLoop";
-			break;
-		case T_MergeJoin:
-			return "MergeJoin";
-			break;
-		case T_HashJoin:
-			return "HashJoin";
-			break;
-		case T_Material:
-			return "Material";
-			break;
-		case T_Memoize:
-			return "Memoize";
-			break;
-		case T_Sort:
-			return "Sort";
-			break;
-		case T_IncrementalSort:
-			return "IncrementalSort";
-			break;
-		case T_Group:
-			return "Group";
-			break;
-		case T_Agg:
-			return "Agg";
-			break;
-		case T_WindowAgg:
-			return "WindowAgg";
-			break;
-		case T_Unique:
-			return "Unique";
-			break;
-		case T_Gather:
-			return "Gather";
-			break;
-		case T_GatherMerge:
-			return "GatherMerge";
-			break;
-		case T_Hash:
-			return "Hash";
-			break;
-		case T_SetOp:
-			return "SetOp";
-			break;
-		case T_LockRows:
-			return "LockRows";
-			break;
-		case T_Limit:
-			return "Limit";
-			break;
-		case T_NestLoopParam:
-			return "NestLoopParam";
-			break;
-		case T_PlanRowMark:
-			return "PlanRowMark";
-			break;
-		case T_PartitionPruneInfo:
-			return "PartitionPruneInfo";
-			break;
-		case T_PartitionedRelPruneInfo:
-			return "PartitionedRelPruneInfo";
-			break;
-		case T_PartitionPruneStepOp:
-			return "PartitionPruneStepOp";
-			break;
-		case T_PartitionPruneStepCombine:
-			return "PartitionPruneStepCombine";
-			break;
-		case T_PlanInvalItem:
-			return "PlanInvalItem";
-			break;
-		case T_ResultState:
-			return "ResultState";
-			break;
-		case T_ProjectSetState:
-			return "ProjectSetState";
-			break;
-		case T_ModifyTableState:
-			return "ModifyTableState";
-			break;
-		case T_AppendState:
-			return "AppendState";
-			break;
-		case T_MergeAppendState:
-			return "MergeAppendState";
-			break;
-		case T_RecursiveUnionState:
-			return "RecursiveUnionState";
-			break;
-		case T_BitmapAndState:
-			return "BitmapAndState";
-			break;
-		case T_BitmapOrState:
-			return "BitmapOrState";
-			break;
-		case T_ScanState:
-			return "ScanState";
-			break;
-		case T_SeqScanState:
-			return "SeqScanState";
-			break;
-		case T_SampleScanState:
-			return "SampleScanState";
-			break;
-		case T_IndexScanState:
-			return "IndexScanState";
-			break;
-		case T_IndexOnlyScanState:
-			return "IndexOnlyScanState";
-			break;
-		case T_BitmapIndexScanState:
-			return "BitmapIndexScanState";
-			break;
-		case T_BitmapHeapScanState:
-			return "BitmapHeapScanState";
-			break;
-		case T_TidScanState:
-			return "TidScanState";
-			break;
-		case T_TidRangeScanState:
-			return "TidRangeScanState";
-			break;
-		case T_SubqueryScanState:
-			return "SubqueryScanState";
-			break;
-		case T_FunctionScanState:
-			return "FunctionScanState";
-			break;
-		case T_TableFuncScanState:
-			return "TableFuncScanState";
-			break;
-		case T_ValuesScanState:
-			return "ValuesScanState";
-			break;
-		case T_CteScanState:
-			return "CteScanState";
-			break;
-		case T_NamedTuplestoreScanState:
-			return "NamedTuplestoreScanState";
-			break;
-		case T_WorkTableScanState:
-			return "WorkTableScanState";
-			break;
-		case T_ForeignScanState:
-			return "ForeignScanState";
-			break;
-		case T_CustomScanState:
-			return "CustomScanState";
-			break;
-		case T_JoinState:
-			return "JoinState";
-			break;
-		case T_NestLoopState:
-			return "NestLoopState";
-			break;
-		case T_MergeJoinState:
-			return "MergeJoinState";
-			break;
-		case T_HashJoinState:
-			return "HashJoinState";
-			break;
-		case T_MaterialState:
-			return "MaterialState";
-			break;
-		case T_MemoizeState:
-			return "MemoizeState";
-			break;
-		case T_SortState:
-			return "SortState";
-			break;
-		case T_IncrementalSortState:
-			return "IncrementalSortState";
-			break;
-		case T_GroupState:
-			return "GroupState";
-			break;
-		case T_AggState:
-			return "AggState";
-			break;
-		case T_WindowAggState:
-			return "WindowAggState";
-			break;
-		case T_UniqueState:
-			return "UniqueState";
-			break;
-		case T_GatherState:
-			return "GatherState";
-			break;
-		case T_GatherMergeState:
-			return "GatherMergeState";
-			break;
-		case T_HashState:
-			return "HashState";
-			break;
-		case T_SetOpState:
-			return "SetOpState";
-			break;
-		case T_LockRowsState:
-			return "LockRowsState";
-			break;
-		case T_LimitState:
-			return "LimitState";
-			break;
-		case T_Alias:
-			return "Alias";
-			break;
-		case T_RangeVar:
-			return "RangeVar";
-			break;
-		case T_TableFunc:
-			return "TableFunc";
-			break;
-		case T_Var:
-			return "Var";
-			break;
-		case T_Const:
-			return "Const";
-			break;
-		case T_Param:
-			return "Param";
-			break;
-		case T_Aggref:
-			return "Aggref";
-			break;
-		case T_GroupingFunc:
-			return "GroupingFunc";
-			break;
-		case T_WindowFunc:
-			return "WindowFunc";
-			break;
-		case T_SubscriptingRef:
-			return "SubscriptingRef";
-			break;
-		case T_FuncExpr:
-			return "FuncExpr";
-			break;
-		case T_NamedArgExpr:
-			return "NamedArgExpr";
-			break;
-		case T_OpExpr:
-			return "OpExpr";
-			break;
-		case T_DistinctExpr:
-			return "DistinctExpr";
-			break;
-		case T_NullIfExpr:
-			return "NullIfExpr";
-			break;
-		case T_ScalarArrayOpExpr:
-			return "ScalarArrayOpExpr";
-			break;
-		case T_BoolExpr:
-			return "BoolExpr";
-			break;
-		case T_SubLink:
-			return "SubLink";
-			break;
-		case T_SubPlan:
-			return "SubPlan";
-			break;
-		case T_AlternativeSubPlan:
-			return "AlternativeSubPlan";
-			break;
-		case T_FieldSelect:
-			return "FieldSelect";
-			break;
-		case T_FieldStore:
-			return "FieldStore";
-			break;
-		case T_RelabelType:
-			return "RelabelType";
-			break;
-		case T_CoerceViaIO:
-			return "CoerceViaIO";
-			break;
-		case T_ArrayCoerceExpr:
-			return "ArrayCoerceExpr";
-			break;
-		case T_ConvertRowtypeExpr:
-			return "ConvertRowtypeExpr";
-			break;
-		case T_CollateExpr:
-			return "CollateExpr";
-			break;
-		case T_CaseExpr:
-			return "CaseExpr";
-			break;
-		case T_CaseWhen:
-			return "CaseWhen";
-			break;
-		case T_CaseTestExpr:
-			return "CaseTestExpr";
-			break;
-		case T_ArrayExpr:
-			return "ArrayExpr";
-			break;
-		case T_RowExpr:
-			return "RowExpr";
-			break;
-		case T_RowCompareExpr:
-			return "RowCompareExpr";
-			break;
-		case T_CoalesceExpr:
-			return "CoalesceExpr";
-			break;
-		case T_MinMaxExpr:
-			return "MinMaxExpr";
-			break;
-		case T_SQLValueFunction:
-			return "SQLValueFunction";
-			break;
-		case T_XmlExpr:
-			return "XmlExpr";
-			break;
-		case T_NullTest:
-			return "NullTest";
-			break;
-		case T_BooleanTest:
-			return "BooleanTest";
-			break;
-		case T_CoerceToDomain:
-			return "CoerceToDomain";
-			break;
-		case T_CoerceToDomainValue:
-			return "CoerceToDomainValue";
-			break;
-		case T_SetToDefault:
-			return "SetToDefault";
-			break;
-		case T_CurrentOfExpr:
-			return "CurrentOfExpr";
-			break;
-		case T_NextValueExpr:
-			return "NextValueExpr";
-			break;
-		case T_InferenceElem:
-			return "InferenceElem";
-			break;
-		case T_TargetEntry:
-			return "TargetEntry";
-			break;
-		case T_RangeTblRef:
-			return "RangeTblRef";
-			break;
-		case T_JoinExpr:
-			return "JoinExpr";
-			break;
-		case T_FromExpr:
-			return "FromExpr";
-			break;
-		case T_OnConflictExpr:
-			return "OnConflictExpr";
-			break;
-		case T_IntoClause:
-			return "IntoClause";
-			break;
-		case T_ExprState:
-			return "ExprState";
-			break;
-		case T_WindowFuncExprState:
-			return "WindowFuncExprState";
-			break;
-		case T_SetExprState:
-			return "SetExprState";
-			break;
-		case T_SubPlanState:
-			return "SubPlanState";
-			break;
-		case T_DomainConstraintState:
-			return "DomainConstraintState";
-			break;
-		case T_PlannerInfo:
-			return "PlannerInfo";
-			break;
-		case T_PlannerGlobal:
-			return "PlannerGlobal";
-			break;
-		case T_RelOptInfo:
-			return "RelOptInfo";
-			break;
-		case T_IndexOptInfo:
-			return "IndexOptInfo";
-			break;
-		case T_ForeignKeyOptInfo:
-			return "ForeignKeyOptInfo";
-			break;
-		case T_ParamPathInfo:
-			return "ParamPathInfo";
-			break;
-		case T_Path:
-			return "Path";
-			break;
-		case T_IndexPath:
-			return "IndexPath";
-			break;
-		case T_BitmapHeapPath:
-			return "BitmapHeapPath";
-			break;
-		case T_BitmapAndPath:
-			return "BitmapAndPath";
-			break;
-		case T_BitmapOrPath:
-			return "BitmapOrPath";
-			break;
-		case T_TidPath:
-			return "TidPath";
-			break;
-		case T_TidRangePath:
-			return "TidRangePath";
-			break;
-		case T_SubqueryScanPath:
-			return "SubqueryScanPath";
-			break;
-		case T_ForeignPath:
-			return "ForeignPath";
-			break;
-		case T_CustomPath:
-			return "CustomPath";
-			break;
-		case T_NestPath:
-			return "NestPath";
-			break;
-		case T_MergePath:
-			return "MergePath";
-			break;
-		case T_HashPath:
-			return "HashPath";
-			break;
-		case T_AppendPath:
-			return "AppendPath";
-			break;
-		case T_MergeAppendPath:
-			return "MergeAppendPath";
-			break;
-		case T_GroupResultPath:
-			return "GroupResultPath";
-			break;
-		case T_MaterialPath:
-			return "MaterialPath";
-			break;
-		case T_MemoizePath:
-			return "MemoizePath";
-			break;
-		case T_UniquePath:
-			return "UniquePath";
-			break;
-		case T_GatherPath:
-			return "GatherPath";
-			break;
-		case T_GatherMergePath:
-			return "GatherMergePath";
-			break;
-		case T_ProjectionPath:
-			return "ProjectionPath";
-			break;
-		case T_ProjectSetPath:
-			return "ProjectSetPath";
-			break;
-		case T_SortPath:
-			return "SortPath";
-			break;
-		case T_IncrementalSortPath:
-			return "IncrementalSortPath";
-			break;
-		case T_GroupPath:
-			return "GroupPath";
-			break;
-		case T_UpperUniquePath:
-			return "UpperUniquePath";
-			break;
-		case T_AggPath:
-			return "AggPath";
-			break;
-		case T_GroupingSetsPath:
-			return "GroupingSetsPath";
-			break;
-		case T_MinMaxAggPath:
-			return "MinMaxAggPath";
-			break;
-		case T_WindowAggPath:
-			return "WindowAggPath";
-			break;
-		case T_SetOpPath:
-			return "SetOpPath";
-			break;
-		case T_RecursiveUnionPath:
-			return "RecursiveUnionPath";
-			break;
-		case T_LockRowsPath:
-			return "LockRowsPath";
-			break;
-		case T_ModifyTablePath:
-			return "ModifyTablePath";
-			break;
-		case T_LimitPath:
-			return "LimitPath";
-			break;
-		case T_EquivalenceClass:
-			return "EquivalenceClass";
-			break;
-		case T_EquivalenceMember:
-			return "EquivalenceMember";
-			break;
-		case T_PathKey:
-			return "PathKey";
-			break;
-		case T_PathTarget:
-			return "PathTarget";
-			break;
-		case T_RestrictInfo:
-			return "RestrictInfo";
-			break;
-		case T_IndexClause:
-			return "IndexClause";
-			break;
-		case T_PlaceHolderVar:
-			return "PlaceHolderVar";
-			break;
-		case T_SpecialJoinInfo:
-			return "SpecialJoinInfo";
-			break;
-		case T_AppendRelInfo:
-			return "AppendRelInfo";
-			break;
-		case T_RowIdentityVarInfo:
-			return "RowIdentityVarInfo";
-			break;
-		case T_PlaceHolderInfo:
-			return "PlaceHolderInfo";
-			break;
-		case T_MinMaxAggInfo:
-			return "MinMaxAggInfo";
-			break;
-		case T_PlannerParamItem:
-			return "PlannerParamItem";
-			break;
-		case T_RollupData:
-			return "RollupData";
-			break;
-		case T_GroupingSetData:
-			return "GroupingSetData";
-			break;
-		case T_StatisticExtInfo:
-			return "StatisticExtInfo";
-			break;
-		case T_AllocSetContext:
-			return "AllocSetContext";
-			break;
-		case T_SlabContext:
-			return "SlabContext";
-			break;
-		case T_GenerationContext:
-			return "GenerationContext";
-			break;
-		case T_Integer:
-			return "Integer";
-			break;
-		case T_Float:
-			return "Float";
-			break;
-		case T_Boolean:
-			return "Boolean";
-			break;
-		case T_String:
-			return "String";
-			break;
-		case T_BitString:
-			return "BitString";
-			break;
-		case T_List:
-			return "List";
-			break;
-		case T_IntList:
-			return "IntList";
-			break;
-		case T_OidList:
-			return "OidList";
-			break;
-		case T_XidList:
-			return "XidList";
-			break;
-		case T_ExtensibleNode:
-			return "ExtensibleNode";
-			break;
-		case T_RawStmt:
-			return "RawStmt";
-			break;
-		case T_Query:
-			return "Query";
-			break;
-		case T_PlannedStmt:
-			return "PlannedStmt";
-			break;
-		case T_InsertStmt:
-			return "InsertStmt";
-			break;
-		case T_DeleteStmt:
-			return "DeleteStmt";
-			break;
-		case T_UpdateStmt:
-			return "UpdateStmt";
-			break;
-		case T_SelectStmt:
-			return "SelectStmt";
-			break;
-		case T_ReturnStmt:
-			return "ReturnStmt";
-			break;
-		case T_PLAssignStmt:
-			return "PLAssignStmt";
-			break;
-		case T_AlterTableStmt:
-			return "AlterTableStmt";
-			break;
-		case T_AlterTableCmd:
-			return "AlterTableCmd";
-			break;
-		case T_AlterDomainStmt:
-			return "AlterDomainStmt";
-			break;
-		case T_SetOperationStmt:
-			return "SetOperationStmt";
-			break;
-		case T_GrantStmt:
-			return "GrantStmt";
-			break;
-		case T_GrantRoleStmt:
-			return "GrantRoleStmt";
-			break;
-		case T_AlterDefaultPrivilegesStmt:
-			return "AlterDefaultPrivilegesStmt";
-			break;
-		case T_ClosePortalStmt:
-			return "ClosePortalStmt";
-			break;
-		case T_ClusterStmt:
-			return "ClusterStmt";
-			break;
-		case T_CopyStmt:
-			return "CopyStmt";
-			break;
-		case T_CreateStmt:
-			return "CreateStmt";
-			break;
-		case T_DefineStmt:
-			return "DefineStmt";
-			break;
-		case T_DropStmt:
-			return "DropStmt";
-			break;
-		case T_TruncateStmt:
-			return "TruncateStmt";
-			break;
-		case T_CommentStmt:
-			return "CommentStmt";
-			break;
-		case T_FetchStmt:
-			return "FetchStmt";
-			break;
-		case T_IndexStmt:
-			return "IndexStmt";
-			break;
-		case T_CreateFunctionStmt:
-			return "CreateFunctionStmt";
-			break;
-		case T_AlterFunctionStmt:
-			return "AlterFunctionStmt";
-			break;
-		case T_DoStmt:
-			return "DoStmt";
-			break;
-		case T_RenameStmt:
-			return "RenameStmt";
-			break;
-		case T_RuleStmt:
-			return "RuleStmt";
-			break;
-		case T_NotifyStmt:
-			return "NotifyStmt";
-			break;
-		case T_ListenStmt:
-			return "ListenStmt";
-			break;
-		case T_UnlistenStmt:
-			return "UnlistenStmt";
-			break;
-		case T_TransactionStmt:
-			return "TransactionStmt";
-			break;
-		case T_ViewStmt:
-			return "ViewStmt";
-			break;
-		case T_LoadStmt:
-			return "LoadStmt";
-			break;
-		case T_CreateDomainStmt:
-			return "CreateDomainStmt";
-			break;
-		case T_CreatedbStmt:
-			return "CreatedbStmt";
-			break;
-		case T_DropdbStmt:
-			return "DropdbStmt";
-			break;
-		case T_VacuumStmt:
-			return "VacuumStmt";
-			break;
-		case T_ExplainStmt:
-			return "ExplainStmt";
-			break;
-		case T_CreateTableAsStmt:
-			return "CreateTableAsStmt";
-			break;
-		case T_CreateSeqStmt:
-			return "CreateSeqStmt";
-			break;
-		case T_AlterSeqStmt:
-			return "AlterSeqStmt";
-			break;
-		case T_VariableSetStmt:
-			return "VariableSetStmt";
-			break;
-		case T_VariableShowStmt:
-			return "VariableShowStmt";
-			break;
-		case T_DiscardStmt:
-			return "DiscardStmt";
-			break;
-		case T_CreateTrigStmt:
-			return "CreateTrigStmt";
-			break;
-		case T_CreatePLangStmt:
-			return "CreatePLangStmt";
-			break;
-		case T_CreateRoleStmt:
-			return "CreateRoleStmt";
-			break;
-		case T_AlterRoleStmt:
-			return "AlterRoleStmt";
-			break;
-		case T_DropRoleStmt:
-			return "DropRoleStmt";
-			break;
-		case T_LockStmt:
-			return "LockStmt";
-			break;
-		case T_ConstraintsSetStmt:
-			return "ConstraintsSetStmt";
-			break;
-		case T_ReindexStmt:
-			return "ReindexStmt";
-			break;
-		case T_CheckPointStmt:
-			return "CheckPointStmt";
-			break;
-		case T_CreateSchemaStmt:
-			return "CreateSchemaStmt";
-			break;
-		case T_AlterDatabaseStmt:
-			return "AlterDatabaseStmt";
-			break;
-		case T_AlterDatabaseRefreshCollStmt:
-			return "AlterDatabaseRefreshCollStmt";
-			break;
-		case T_AlterDatabaseSetStmt:
-			return "AlterDatabaseSetStmt";
-			break;
-		case T_AlterRoleSetStmt:
-			return "AlterRoleSetStmt";
-			break;
-		case T_CreateConversionStmt:
-			return "CreateConversionStmt";
-			break;
-		case T_CreateCastStmt:
-			return "CreateCastStmt";
-			break;
-		case T_CreateOpClassStmt:
-			return "CreateOpClassStmt";
-			break;
-		case T_CreateOpFamilyStmt:
-			return "CreateOpFamilyStmt";
-			break;
-		case T_AlterOpFamilyStmt:
-			return "AlterOpFamilyStmt";
-			break;
-		case T_PrepareStmt:
-			return "PrepareStmt";
-			break;
-		case T_ExecuteStmt:
-			return "ExecuteStmt";
-			break;
-		case T_DeallocateStmt:
-			return "DeallocateStmt";
-			break;
-		case T_DeclareCursorStmt:
-			return "DeclareCursorStmt";
-			break;
-		case T_CreateTableSpaceStmt:
-			return "CreateTableSpaceStmt";
-			break;
-		case T_DropTableSpaceStmt:
-			return "DropTableSpaceStmt";
-			break;
-		case T_AlterObjectDependsStmt:
-			return "AlterObjectDependsStmt";
-			break;
-		case T_AlterObjectSchemaStmt:
-			return "AlterObjectSchemaStmt";
-			break;
-		case T_AlterOwnerStmt:
-			return "AlterOwnerStmt";
-			break;
-		case T_AlterOperatorStmt:
-			return "AlterOperatorStmt";
-			break;
-		case T_AlterTypeStmt:
-			return "AlterTypeStmt";
-			break;
-		case T_DropOwnedStmt:
-			return "DropOwnedStmt";
-			break;
-		case T_ReassignOwnedStmt:
-			return "ReassignOwnedStmt";
-			break;
-		case T_CompositeTypeStmt:
-			return "CompositeTypeStmt";
-			break;
-		case T_CreateEnumStmt:
-			return "CreateEnumStmt";
-			break;
-		case T_CreateRangeStmt:
-			return "CreateRangeStmt";
-			break;
-		case T_AlterEnumStmt:
-			return "AlterEnumStmt";
-			break;
-		case T_AlterTSDictionaryStmt:
-			return "AlterTSDictionaryStmt";
-			break;
-		case T_AlterTSConfigurationStmt:
-			return "AlterTSConfigurationStmt";
-			break;
-		case T_CreateFdwStmt:
-			return "CreateFdwStmt";
-			break;
-		case T_AlterFdwStmt:
-			return "AlterFdwStmt";
-			break;
-		case T_CreateForeignServerStmt:
-			return "CreateForeignServerStmt";
-			break;
-		case T_AlterForeignServerStmt:
-			return "AlterForeignServerStmt";
-			break;
-		case T_CreateUserMappingStmt:
-			return "CreateUserMappingStmt";
-			break;
-		case T_AlterUserMappingStmt:
-			return "AlterUserMappingStmt";
-			break;
-		case T_DropUserMappingStmt:
-			return "DropUserMappingStmt";
-			break;
-		case T_AlterTableSpaceOptionsStmt:
-			return "AlterTableSpaceOptionsStmt";
-			break;
-		case T_AlterTableMoveAllStmt:
-			return "AlterTableMoveAllStmt";
-			break;
-		case T_SecLabelStmt:
-			return "SecLabelStmt";
-			break;
-		case T_CreateForeignTableStmt:
-			return "CreateForeignTableStmt";
-			break;
-		case T_ImportForeignSchemaStmt:
-			return "ImportForeignSchemaStmt";
-			break;
-		case T_CreateExtensionStmt:
-			return "CreateExtensionStmt";
-			break;
-		case T_AlterExtensionStmt:
-			return "AlterExtensionStmt";
-			break;
-		case T_AlterExtensionContentsStmt:
-			return "AlterExtensionContentsStmt";
-			break;
-		case T_CreateEventTrigStmt:
-			return "CreateEventTrigStmt";
-			break;
-		case T_AlterEventTrigStmt:
-			return "AlterEventTrigStmt";
-			break;
-		case T_RefreshMatViewStmt:
-			return "RefreshMatViewStmt";
-			break;
-		case T_ReplicaIdentityStmt:
-			return "ReplicaIdentityStmt";
-			break;
-		case T_AlterSystemStmt:
-			return "AlterSystemStmt";
-			break;
-		case T_CreatePolicyStmt:
-			return "CreatePolicyStmt";
-			break;
-		case T_AlterPolicyStmt:
-			return "AlterPolicyStmt";
-			break;
-		case T_CreateTransformStmt:
-			return "CreateTransformStmt";
-			break;
-		case T_CreateAmStmt:
-			return "CreateAmStmt";
-			break;
-		case T_CreatePublicationStmt:
-			return "CreatePublicationStmt";
-			break;
-		case T_AlterPublicationStmt:
-			return "AlterPublicationStmt";
-			break;
-		case T_CreateSubscriptionStmt:
-			return "CreateSubscriptionStmt";
-			break;
-		case T_AlterSubscriptionStmt:
-			return "AlterSubscriptionStmt";
-			break;
-		case T_DropSubscriptionStmt:
-			return "DropSubscriptionStmt";
-			break;
-		case T_CreateStatsStmt:
-			return "CreateStatsStmt";
-			break;
-		case T_AlterCollationStmt:
-			return "AlterCollationStmt";
-			break;
-		case T_CallStmt:
-			return "CallStmt";
-			break;
-		case T_AlterStatsStmt:
-			return "AlterStatsStmt";
-			break;
-		case T_A_Expr:
-			return "A_Expr";
-			break;
-		case T_ColumnRef:
-			return "ColumnRef";
-			break;
-		case T_ParamRef:
-			return "ParamRef";
-			break;
-		case T_A_Const:
-			return "A_Const";
-			break;
-		case T_FuncCall:
-			return "FuncCall";
-			break;
-		case T_A_Star:
-			return "A_Star";
-			break;
-		case T_A_Indices:
-			return "A_Indices";
-			break;
-		case T_A_Indirection:
-			return "A_Indirection";
-			break;
-		case T_A_ArrayExpr:
-			return "A_ArrayExpr";
-			break;
-		case T_ResTarget:
-			return "ResTarget";
-			break;
-		case T_MultiAssignRef:
-			return "MultiAssignRef";
-			break;
-		case T_TypeCast:
-			return "TypeCast";
-			break;
-		case T_CollateClause:
-			return "CollateClause";
-			break;
-		case T_SortBy:
-			return "SortBy";
-			break;
-		case T_WindowDef:
-			return "WindowDef";
-			break;
-		case T_RangeSubselect:
-			return "RangeSubselect";
-			break;
-		case T_RangeFunction:
-			return "RangeFunction";
-			break;
-		case T_RangeTableSample:
-			return "RangeTableSample";
-			break;
-		case T_RangeTableFunc:
-			return "RangeTableFunc";
-			break;
-		case T_RangeTableFuncCol:
-			return "RangeTableFuncCol";
-			break;
-		case T_TypeName:
-			return "TypeName";
-			break;
-		case T_ColumnDef:
-			return "ColumnDef";
-			break;
-		case T_IndexElem:
-			return "IndexElem";
-			break;
-		case T_StatsElem:
-			return "StatsElem";
-			break;
-		case T_Constraint:
-			return "Constraint";
-			break;
-		case T_DefElem:
-			return "DefElem";
-			break;
-		case T_RangeTblEntry:
-			return "RangeTblEntry";
-			break;
-		case T_RangeTblFunction:
-			return "RangeTblFunction";
-			break;
-		case T_TableSampleClause:
-			return "TableSampleClause";
-			break;
-		case T_WithCheckOption:
-			return "WithCheckOption";
-			break;
-		case T_SortGroupClause:
-			return "SortGroupClause";
-			break;
-		case T_GroupingSet:
-			return "GroupingSet";
-			break;
-		case T_WindowClause:
-			return "WindowClause";
-			break;
-		case T_ObjectWithArgs:
-			return "ObjectWithArgs";
-			break;
-		case T_AccessPriv:
-			return "AccessPriv";
-			break;
-		case T_CreateOpClassItem:
-			return "CreateOpClassItem";
-			break;
-		case T_TableLikeClause:
-			return "TableLikeClause";
-			break;
-		case T_FunctionParameter:
-			return "FunctionParameter";
-			break;
-		case T_LockingClause:
-			return "LockingClause";
-			break;
-		case T_RowMarkClause:
-			return "RowMarkClause";
-			break;
-		case T_XmlSerialize:
-			return "XmlSerialize";
-			break;
-		case T_WithClause:
-			return "WithClause";
-			break;
-		case T_InferClause:
-			return "InferClause";
-			break;
-		case T_OnConflictClause:
-			return "OnConflictClause";
-			break;
-		case T_CTESearchClause:
-			return "CTESearchClause";
-			break;
-		case T_CTECycleClause:
-			return "CTECycleClause";
-			break;
-		case T_CommonTableExpr:
-			return "CommonTableExpr";
-			break;
-		case T_RoleSpec:
-			return "RoleSpec";
-			break;
-		case T_TriggerTransition:
-			return "TriggerTransition";
-			break;
-		case T_PartitionElem:
-			return "PartitionElem";
-			break;
-		case T_PartitionSpec:
-			return "PartitionSpec";
-			break;
-		case T_PartitionBoundSpec:
-			return "PartitionBoundSpec";
-			break;
-		case T_PartitionRangeDatum:
-			return "PartitionRangeDatum";
-			break;
-		case T_PartitionCmd:
-			return "PartitionCmd";
-			break;
-		case T_VacuumRelation:
-			return "VacuumRelation";
-			break;
-		case T_PublicationObjSpec:
-			return "PublicationObjSpec";
-			break;
-		case T_PublicationTable:
-			return "PublicationTable";
-			break;
-		case T_IdentifySystemCmd:
-			return "IdentifySystemCmd";
-			break;
-		case T_BaseBackupCmd:
-			return "BaseBackupCmd";
-			break;
-		case T_CreateReplicationSlotCmd:
-			return "CreateReplicationSlotCmd";
-			break;
-		case T_DropReplicationSlotCmd:
-			return "DropReplicationSlotCmd";
-			break;
-		case T_ReadReplicationSlotCmd:
-			return "ReadReplicationSlotCmd";
-			break;
-		case T_StartReplicationCmd:
-			return "StartReplicationCmd";
-			break;
-		case T_TimeLineHistoryCmd:
-			return "TimeLineHistoryCmd";
-			break;
-		case T_TriggerData:
-			return "TriggerData";
-			break;
-		case T_EventTriggerData:
-			return "EventTriggerData";
-			break;
-		case T_ReturnSetInfo:
-			return "ReturnSetInfo";
-			break;
-		case T_WindowObjectData:
-			return "WindowObjectData";
-			break;
-		case T_TIDBitmap:
-			return "TIDBitmap";
-			break;
-		case T_InlineCodeBlock:
-			return "InlineCodeBlock";
-			break;
-		case T_FdwRoutine:
-			return "FdwRoutine";
-			break;
-		case T_IndexAmRoutine:
-			return "IndexAmRoutine";
-			break;
-		case T_TableAmRoutine:
-			return "TableAmRoutine";
-			break;
-		case T_TsmRoutine:
-			return "TsmRoutine";
-			break;
-		case T_ForeignKeyCacheInfo:
-			return "ForeignKeyCacheInfo";
-			break;
-		case T_CallContext:
-			return "CallContext";
-			break;
-		case T_SupportRequestSimplify:
-			return "SupportRequestSimplify";
-			break;
-		case T_SupportRequestSelectivity:
-			return "SupportRequestSelectivity";
-			break;
-		case T_SupportRequestCost:
-			return "SupportRequestCost";
-			break;
-		case T_SupportRequestRows:
-			return "SupportRequestRows";
-			break;
-		case T_SupportRequestIndexCondition:
-			return "SupportRequestIndexCondition";
-			break;
-		default:
-			break;
-	}
-	return "UNRECOGNIZED NodeTag";
-}
-
 static char *
 accesstype_to_string(ObjectAccessType access, int subId)
 {

Reply via email to