You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudberry.apache.org by ch...@apache.org on 2025/09/21 12:38:02 UTC

(cloudberry) branch cbdb-postgres-merge updated: Revert "add outfuncs.funcs.c readfuncs.funcs.c"

This is an automated email from the ASF dual-hosted git repository.

chenjinbao1989 pushed a commit to branch cbdb-postgres-merge
in repository https://gitbox.apache.org/repos/asf/cloudberry.git


The following commit(s) were added to refs/heads/cbdb-postgres-merge by this push:
     new 60208be5458 Revert "add outfuncs.funcs.c readfuncs.funcs.c"
60208be5458 is described below

commit 60208be5458ed54b8dd3497f4e8cf85c26be8021
Author: Jinbao Chen <ch...@gmail.com>
AuthorDate: Sun Sep 21 20:37:49 2025 +0800

    Revert "add outfuncs.funcs.c readfuncs.funcs.c"
    
    This reverts commit f73b70be435039a32bb6586d227d22d214cb2d60.
---
 src/backend/nodes/.gitignore        |    2 +
 src/backend/nodes/outfuncs.funcs.c  | 5619 -----------------------------------
 src/backend/nodes/readfuncs.funcs.c | 4896 ------------------------------
 3 files changed, 2 insertions(+), 10515 deletions(-)

diff --git a/src/backend/nodes/.gitignore b/src/backend/nodes/.gitignore
index 50951caf536..0c14b5697b4 100644
--- a/src/backend/nodes/.gitignore
+++ b/src/backend/nodes/.gitignore
@@ -1,2 +1,4 @@
 /node-support-stamp
 /nodetags.h
+/*funcs.funcs.c
+/*funcs.switch.c
diff --git a/src/backend/nodes/outfuncs.funcs.c b/src/backend/nodes/outfuncs.funcs.c
deleted file mode 100644
index 70530e94077..00000000000
--- a/src/backend/nodes/outfuncs.funcs.c
+++ /dev/null
@@ -1,5619 +0,0 @@
-/*-------------------------------------------------------------------------
- *
- * outfuncs.funcs.c
- *    Generated node infrastructure code
- *
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
- * Portions Copyright (c) 1994, Regents of the University of California
- *
- * NOTES
- *  ******************************
- *  *** DO NOT EDIT THIS FILE! ***
- *  ******************************
- *
- *  It has been GENERATED by src/backend/nodes/gen_node_support.pl
- *
- *-------------------------------------------------------------------------
- */
-#include "access/amapi.h"
-#include "access/sdir.h"
-#include "access/tableam.h"
-#include "access/tsmapi.h"
-#include "commands/event_trigger.h"
-#include "commands/trigger.h"
-#include "executor/tuptable.h"
-#include "foreign/fdwapi.h"
-#include "nodes/bitmapset.h"
-#include "nodes/execnodes.h"
-#include "nodes/extensible.h"
-#include "nodes/lockoptions.h"
-#include "nodes/miscnodes.h"
-#include "nodes/nodes.h"
-#include "nodes/parsenodes.h"
-#include "nodes/pathnodes.h"
-#include "nodes/plannodes.h"
-#include "nodes/primnodes.h"
-#include "nodes/replnodes.h"
-#include "nodes/supportnodes.h"
-#include "nodes/value.h"
-#include "utils/rel.h"
-
-static void
-_outAlias(StringInfo str, const Alias *node)
-{
-	WRITE_NODE_TYPE("ALIAS");
-
-	WRITE_STRING_FIELD(aliasname);
-	WRITE_NODE_FIELD(colnames);
-}
-
-static void
-_outRangeVar(StringInfo str, const RangeVar *node)
-{
-	WRITE_NODE_TYPE("RANGEVAR");
-
-	WRITE_STRING_FIELD(catalogname);
-	WRITE_STRING_FIELD(schemaname);
-	WRITE_STRING_FIELD(relname);
-	WRITE_BOOL_FIELD(inh);
-	WRITE_CHAR_FIELD(relpersistence);
-	WRITE_NODE_FIELD(alias);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outTableFunc(StringInfo str, const TableFunc *node)
-{
-	WRITE_NODE_TYPE("TABLEFUNC");
-
-	WRITE_NODE_FIELD(ns_uris);
-	WRITE_NODE_FIELD(ns_names);
-	WRITE_NODE_FIELD(docexpr);
-	WRITE_NODE_FIELD(rowexpr);
-	WRITE_NODE_FIELD(colnames);
-	WRITE_NODE_FIELD(coltypes);
-	WRITE_NODE_FIELD(coltypmods);
-	WRITE_NODE_FIELD(colcollations);
-	WRITE_NODE_FIELD(colexprs);
-	WRITE_NODE_FIELD(coldefexprs);
-	WRITE_BITMAPSET_FIELD(notnulls);
-	WRITE_INT_FIELD(ordinalitycol);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outIntoClause(StringInfo str, const IntoClause *node)
-{
-	WRITE_NODE_TYPE("INTOCLAUSE");
-
-	WRITE_NODE_FIELD(rel);
-	WRITE_NODE_FIELD(colNames);
-	WRITE_STRING_FIELD(accessMethod);
-	WRITE_NODE_FIELD(options);
-	WRITE_ENUM_FIELD(onCommit, OnCommitAction);
-	WRITE_STRING_FIELD(tableSpaceName);
-	WRITE_NODE_FIELD(viewQuery);
-	WRITE_BOOL_FIELD(skipData);
-}
-
-static void
-_outVar(StringInfo str, const Var *node)
-{
-	WRITE_NODE_TYPE("VAR");
-
-	WRITE_INT_FIELD(varno);
-	WRITE_INT_FIELD(varattno);
-	WRITE_OID_FIELD(vartype);
-	WRITE_INT_FIELD(vartypmod);
-	WRITE_OID_FIELD(varcollid);
-	WRITE_BITMAPSET_FIELD(varnullingrels);
-	WRITE_UINT_FIELD(varlevelsup);
-	WRITE_UINT_FIELD(varnosyn);
-	WRITE_INT_FIELD(varattnosyn);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outParam(StringInfo str, const Param *node)
-{
-	WRITE_NODE_TYPE("PARAM");
-
-	WRITE_ENUM_FIELD(paramkind, ParamKind);
-	WRITE_INT_FIELD(paramid);
-	WRITE_OID_FIELD(paramtype);
-	WRITE_INT_FIELD(paramtypmod);
-	WRITE_OID_FIELD(paramcollid);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outAggref(StringInfo str, const Aggref *node)
-{
-	WRITE_NODE_TYPE("AGGREF");
-
-	WRITE_OID_FIELD(aggfnoid);
-	WRITE_OID_FIELD(aggtype);
-	WRITE_OID_FIELD(aggcollid);
-	WRITE_OID_FIELD(inputcollid);
-	WRITE_OID_FIELD(aggtranstype);
-	WRITE_NODE_FIELD(aggargtypes);
-	WRITE_NODE_FIELD(aggdirectargs);
-	WRITE_NODE_FIELD(args);
-	WRITE_NODE_FIELD(aggorder);
-	WRITE_NODE_FIELD(aggdistinct);
-	WRITE_NODE_FIELD(aggfilter);
-	WRITE_BOOL_FIELD(aggstar);
-	WRITE_BOOL_FIELD(aggvariadic);
-	WRITE_CHAR_FIELD(aggkind);
-	WRITE_BOOL_FIELD(aggpresorted);
-	WRITE_UINT_FIELD(agglevelsup);
-	WRITE_ENUM_FIELD(aggsplit, AggSplit);
-	WRITE_INT_FIELD(aggno);
-	WRITE_INT_FIELD(aggtransno);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outGroupingFunc(StringInfo str, const GroupingFunc *node)
-{
-	WRITE_NODE_TYPE("GROUPINGFUNC");
-
-	WRITE_NODE_FIELD(args);
-	WRITE_NODE_FIELD(refs);
-	WRITE_NODE_FIELD(cols);
-	WRITE_UINT_FIELD(agglevelsup);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outWindowFunc(StringInfo str, const WindowFunc *node)
-{
-	WRITE_NODE_TYPE("WINDOWFUNC");
-
-	WRITE_OID_FIELD(winfnoid);
-	WRITE_OID_FIELD(wintype);
-	WRITE_OID_FIELD(wincollid);
-	WRITE_OID_FIELD(inputcollid);
-	WRITE_NODE_FIELD(args);
-	WRITE_NODE_FIELD(aggfilter);
-	WRITE_UINT_FIELD(winref);
-	WRITE_BOOL_FIELD(winstar);
-	WRITE_BOOL_FIELD(winagg);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outSubscriptingRef(StringInfo str, const SubscriptingRef *node)
-{
-	WRITE_NODE_TYPE("SUBSCRIPTINGREF");
-
-	WRITE_OID_FIELD(refcontainertype);
-	WRITE_OID_FIELD(refelemtype);
-	WRITE_OID_FIELD(refrestype);
-	WRITE_INT_FIELD(reftypmod);
-	WRITE_OID_FIELD(refcollid);
-	WRITE_NODE_FIELD(refupperindexpr);
-	WRITE_NODE_FIELD(reflowerindexpr);
-	WRITE_NODE_FIELD(refexpr);
-	WRITE_NODE_FIELD(refassgnexpr);
-}
-
-static void
-_outFuncExpr(StringInfo str, const FuncExpr *node)
-{
-	WRITE_NODE_TYPE("FUNCEXPR");
-
-	WRITE_OID_FIELD(funcid);
-	WRITE_OID_FIELD(funcresulttype);
-	WRITE_BOOL_FIELD(funcretset);
-	WRITE_BOOL_FIELD(funcvariadic);
-	WRITE_ENUM_FIELD(funcformat, CoercionForm);
-	WRITE_OID_FIELD(funccollid);
-	WRITE_OID_FIELD(inputcollid);
-	WRITE_NODE_FIELD(args);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outNamedArgExpr(StringInfo str, const NamedArgExpr *node)
-{
-	WRITE_NODE_TYPE("NAMEDARGEXPR");
-
-	WRITE_NODE_FIELD(arg);
-	WRITE_STRING_FIELD(name);
-	WRITE_INT_FIELD(argnumber);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outOpExpr(StringInfo str, const OpExpr *node)
-{
-	WRITE_NODE_TYPE("OPEXPR");
-
-	WRITE_OID_FIELD(opno);
-	WRITE_OID_FIELD(opfuncid);
-	WRITE_OID_FIELD(opresulttype);
-	WRITE_BOOL_FIELD(opretset);
-	WRITE_OID_FIELD(opcollid);
-	WRITE_OID_FIELD(inputcollid);
-	WRITE_NODE_FIELD(args);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outDistinctExpr(StringInfo str, const DistinctExpr *node)
-{
-	WRITE_NODE_TYPE("DISTINCTEXPR");
-
-	WRITE_OID_FIELD(opno);
-	WRITE_OID_FIELD(opfuncid);
-	WRITE_OID_FIELD(opresulttype);
-	WRITE_BOOL_FIELD(opretset);
-	WRITE_OID_FIELD(opcollid);
-	WRITE_OID_FIELD(inputcollid);
-	WRITE_NODE_FIELD(args);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outNullIfExpr(StringInfo str, const NullIfExpr *node)
-{
-	WRITE_NODE_TYPE("NULLIFEXPR");
-
-	WRITE_OID_FIELD(opno);
-	WRITE_OID_FIELD(opfuncid);
-	WRITE_OID_FIELD(opresulttype);
-	WRITE_BOOL_FIELD(opretset);
-	WRITE_OID_FIELD(opcollid);
-	WRITE_OID_FIELD(inputcollid);
-	WRITE_NODE_FIELD(args);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outScalarArrayOpExpr(StringInfo str, const ScalarArrayOpExpr *node)
-{
-	WRITE_NODE_TYPE("SCALARARRAYOPEXPR");
-
-	WRITE_OID_FIELD(opno);
-	WRITE_OID_FIELD(opfuncid);
-	WRITE_OID_FIELD(hashfuncid);
-	WRITE_OID_FIELD(negfuncid);
-	WRITE_BOOL_FIELD(useOr);
-	WRITE_OID_FIELD(inputcollid);
-	WRITE_NODE_FIELD(args);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outSubLink(StringInfo str, const SubLink *node)
-{
-	WRITE_NODE_TYPE("SUBLINK");
-
-	WRITE_ENUM_FIELD(subLinkType, SubLinkType);
-	WRITE_INT_FIELD(subLinkId);
-	WRITE_NODE_FIELD(testexpr);
-	WRITE_NODE_FIELD(operName);
-	WRITE_NODE_FIELD(subselect);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outSubPlan(StringInfo str, const SubPlan *node)
-{
-	WRITE_NODE_TYPE("SUBPLAN");
-
-	WRITE_ENUM_FIELD(subLinkType, SubLinkType);
-	WRITE_NODE_FIELD(testexpr);
-	WRITE_NODE_FIELD(paramIds);
-	WRITE_INT_FIELD(plan_id);
-	WRITE_STRING_FIELD(plan_name);
-	WRITE_OID_FIELD(firstColType);
-	WRITE_INT_FIELD(firstColTypmod);
-	WRITE_OID_FIELD(firstColCollation);
-	WRITE_BOOL_FIELD(useHashTable);
-	WRITE_BOOL_FIELD(unknownEqFalse);
-	WRITE_BOOL_FIELD(parallel_safe);
-	WRITE_NODE_FIELD(setParam);
-	WRITE_NODE_FIELD(parParam);
-	WRITE_NODE_FIELD(args);
-	WRITE_FLOAT_FIELD(startup_cost);
-	WRITE_FLOAT_FIELD(per_call_cost);
-}
-
-static void
-_outAlternativeSubPlan(StringInfo str, const AlternativeSubPlan *node)
-{
-	WRITE_NODE_TYPE("ALTERNATIVESUBPLAN");
-
-	WRITE_NODE_FIELD(subplans);
-}
-
-static void
-_outFieldSelect(StringInfo str, const FieldSelect *node)
-{
-	WRITE_NODE_TYPE("FIELDSELECT");
-
-	WRITE_NODE_FIELD(arg);
-	WRITE_INT_FIELD(fieldnum);
-	WRITE_OID_FIELD(resulttype);
-	WRITE_INT_FIELD(resulttypmod);
-	WRITE_OID_FIELD(resultcollid);
-}
-
-static void
-_outFieldStore(StringInfo str, const FieldStore *node)
-{
-	WRITE_NODE_TYPE("FIELDSTORE");
-
-	WRITE_NODE_FIELD(arg);
-	WRITE_NODE_FIELD(newvals);
-	WRITE_NODE_FIELD(fieldnums);
-	WRITE_OID_FIELD(resulttype);
-}
-
-static void
-_outRelabelType(StringInfo str, const RelabelType *node)
-{
-	WRITE_NODE_TYPE("RELABELTYPE");
-
-	WRITE_NODE_FIELD(arg);
-	WRITE_OID_FIELD(resulttype);
-	WRITE_INT_FIELD(resulttypmod);
-	WRITE_OID_FIELD(resultcollid);
-	WRITE_ENUM_FIELD(relabelformat, CoercionForm);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outCoerceViaIO(StringInfo str, const CoerceViaIO *node)
-{
-	WRITE_NODE_TYPE("COERCEVIAIO");
-
-	WRITE_NODE_FIELD(arg);
-	WRITE_OID_FIELD(resulttype);
-	WRITE_OID_FIELD(resultcollid);
-	WRITE_ENUM_FIELD(coerceformat, CoercionForm);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outArrayCoerceExpr(StringInfo str, const ArrayCoerceExpr *node)
-{
-	WRITE_NODE_TYPE("ARRAYCOERCEEXPR");
-
-	WRITE_NODE_FIELD(arg);
-	WRITE_NODE_FIELD(elemexpr);
-	WRITE_OID_FIELD(resulttype);
-	WRITE_INT_FIELD(resulttypmod);
-	WRITE_OID_FIELD(resultcollid);
-	WRITE_ENUM_FIELD(coerceformat, CoercionForm);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outConvertRowtypeExpr(StringInfo str, const ConvertRowtypeExpr *node)
-{
-	WRITE_NODE_TYPE("CONVERTROWTYPEEXPR");
-
-	WRITE_NODE_FIELD(arg);
-	WRITE_OID_FIELD(resulttype);
-	WRITE_ENUM_FIELD(convertformat, CoercionForm);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outCollateExpr(StringInfo str, const CollateExpr *node)
-{
-	WRITE_NODE_TYPE("COLLATEEXPR");
-
-	WRITE_NODE_FIELD(arg);
-	WRITE_OID_FIELD(collOid);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outCaseExpr(StringInfo str, const CaseExpr *node)
-{
-	WRITE_NODE_TYPE("CASEEXPR");
-
-	WRITE_OID_FIELD(casetype);
-	WRITE_OID_FIELD(casecollid);
-	WRITE_NODE_FIELD(arg);
-	WRITE_NODE_FIELD(args);
-	WRITE_NODE_FIELD(defresult);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outCaseWhen(StringInfo str, const CaseWhen *node)
-{
-	WRITE_NODE_TYPE("CASEWHEN");
-
-	WRITE_NODE_FIELD(expr);
-	WRITE_NODE_FIELD(result);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outCaseTestExpr(StringInfo str, const CaseTestExpr *node)
-{
-	WRITE_NODE_TYPE("CASETESTEXPR");
-
-	WRITE_OID_FIELD(typeId);
-	WRITE_INT_FIELD(typeMod);
-	WRITE_OID_FIELD(collation);
-}
-
-static void
-_outArrayExpr(StringInfo str, const ArrayExpr *node)
-{
-	WRITE_NODE_TYPE("ARRAYEXPR");
-
-	WRITE_OID_FIELD(array_typeid);
-	WRITE_OID_FIELD(array_collid);
-	WRITE_OID_FIELD(element_typeid);
-	WRITE_NODE_FIELD(elements);
-	WRITE_BOOL_FIELD(multidims);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outRowExpr(StringInfo str, const RowExpr *node)
-{
-	WRITE_NODE_TYPE("ROWEXPR");
-
-	WRITE_NODE_FIELD(args);
-	WRITE_OID_FIELD(row_typeid);
-	WRITE_ENUM_FIELD(row_format, CoercionForm);
-	WRITE_NODE_FIELD(colnames);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outRowCompareExpr(StringInfo str, const RowCompareExpr *node)
-{
-	WRITE_NODE_TYPE("ROWCOMPAREEXPR");
-
-	WRITE_ENUM_FIELD(rctype, RowCompareType);
-	WRITE_NODE_FIELD(opnos);
-	WRITE_NODE_FIELD(opfamilies);
-	WRITE_NODE_FIELD(inputcollids);
-	WRITE_NODE_FIELD(largs);
-	WRITE_NODE_FIELD(rargs);
-}
-
-static void
-_outCoalesceExpr(StringInfo str, const CoalesceExpr *node)
-{
-	WRITE_NODE_TYPE("COALESCEEXPR");
-
-	WRITE_OID_FIELD(coalescetype);
-	WRITE_OID_FIELD(coalescecollid);
-	WRITE_NODE_FIELD(args);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outMinMaxExpr(StringInfo str, const MinMaxExpr *node)
-{
-	WRITE_NODE_TYPE("MINMAXEXPR");
-
-	WRITE_OID_FIELD(minmaxtype);
-	WRITE_OID_FIELD(minmaxcollid);
-	WRITE_OID_FIELD(inputcollid);
-	WRITE_ENUM_FIELD(op, MinMaxOp);
-	WRITE_NODE_FIELD(args);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outSQLValueFunction(StringInfo str, const SQLValueFunction *node)
-{
-	WRITE_NODE_TYPE("SQLVALUEFUNCTION");
-
-	WRITE_ENUM_FIELD(op, SQLValueFunctionOp);
-	WRITE_OID_FIELD(type);
-	WRITE_INT_FIELD(typmod);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outXmlExpr(StringInfo str, const XmlExpr *node)
-{
-	WRITE_NODE_TYPE("XMLEXPR");
-
-	WRITE_ENUM_FIELD(op, XmlExprOp);
-	WRITE_STRING_FIELD(name);
-	WRITE_NODE_FIELD(named_args);
-	WRITE_NODE_FIELD(arg_names);
-	WRITE_NODE_FIELD(args);
-	WRITE_ENUM_FIELD(xmloption, XmlOptionType);
-	WRITE_BOOL_FIELD(indent);
-	WRITE_OID_FIELD(type);
-	WRITE_INT_FIELD(typmod);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outJsonFormat(StringInfo str, const JsonFormat *node)
-{
-	WRITE_NODE_TYPE("JSONFORMAT");
-
-	WRITE_ENUM_FIELD(format_type, JsonFormatType);
-	WRITE_ENUM_FIELD(encoding, JsonEncoding);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outJsonReturning(StringInfo str, const JsonReturning *node)
-{
-	WRITE_NODE_TYPE("JSONRETURNING");
-
-	WRITE_NODE_FIELD(format);
-	WRITE_OID_FIELD(typid);
-	WRITE_INT_FIELD(typmod);
-}
-
-static void
-_outJsonValueExpr(StringInfo str, const JsonValueExpr *node)
-{
-	WRITE_NODE_TYPE("JSONVALUEEXPR");
-
-	WRITE_NODE_FIELD(raw_expr);
-	WRITE_NODE_FIELD(formatted_expr);
-	WRITE_NODE_FIELD(format);
-}
-
-static void
-_outJsonConstructorExpr(StringInfo str, const JsonConstructorExpr *node)
-{
-	WRITE_NODE_TYPE("JSONCONSTRUCTOREXPR");
-
-	WRITE_ENUM_FIELD(type, JsonConstructorType);
-	WRITE_NODE_FIELD(args);
-	WRITE_NODE_FIELD(func);
-	WRITE_NODE_FIELD(coercion);
-	WRITE_NODE_FIELD(returning);
-	WRITE_BOOL_FIELD(absent_on_null);
-	WRITE_BOOL_FIELD(unique);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outJsonIsPredicate(StringInfo str, const JsonIsPredicate *node)
-{
-	WRITE_NODE_TYPE("JSONISPREDICATE");
-
-	WRITE_NODE_FIELD(expr);
-	WRITE_NODE_FIELD(format);
-	WRITE_ENUM_FIELD(item_type, JsonValueType);
-	WRITE_BOOL_FIELD(unique_keys);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outNullTest(StringInfo str, const NullTest *node)
-{
-	WRITE_NODE_TYPE("NULLTEST");
-
-	WRITE_NODE_FIELD(arg);
-	WRITE_ENUM_FIELD(nulltesttype, NullTestType);
-	WRITE_BOOL_FIELD(argisrow);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outBooleanTest(StringInfo str, const BooleanTest *node)
-{
-	WRITE_NODE_TYPE("BOOLEANTEST");
-
-	WRITE_NODE_FIELD(arg);
-	WRITE_ENUM_FIELD(booltesttype, BoolTestType);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outCoerceToDomain(StringInfo str, const CoerceToDomain *node)
-{
-	WRITE_NODE_TYPE("COERCETODOMAIN");
-
-	WRITE_NODE_FIELD(arg);
-	WRITE_OID_FIELD(resulttype);
-	WRITE_INT_FIELD(resulttypmod);
-	WRITE_OID_FIELD(resultcollid);
-	WRITE_ENUM_FIELD(coercionformat, CoercionForm);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outCoerceToDomainValue(StringInfo str, const CoerceToDomainValue *node)
-{
-	WRITE_NODE_TYPE("COERCETODOMAINVALUE");
-
-	WRITE_OID_FIELD(typeId);
-	WRITE_INT_FIELD(typeMod);
-	WRITE_OID_FIELD(collation);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outSetToDefault(StringInfo str, const SetToDefault *node)
-{
-	WRITE_NODE_TYPE("SETTODEFAULT");
-
-	WRITE_OID_FIELD(typeId);
-	WRITE_INT_FIELD(typeMod);
-	WRITE_OID_FIELD(collation);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outCurrentOfExpr(StringInfo str, const CurrentOfExpr *node)
-{
-	WRITE_NODE_TYPE("CURRENTOFEXPR");
-
-	WRITE_UINT_FIELD(cvarno);
-	WRITE_STRING_FIELD(cursor_name);
-	WRITE_INT_FIELD(cursor_param);
-}
-
-static void
-_outNextValueExpr(StringInfo str, const NextValueExpr *node)
-{
-	WRITE_NODE_TYPE("NEXTVALUEEXPR");
-
-	WRITE_OID_FIELD(seqid);
-	WRITE_OID_FIELD(typeId);
-}
-
-static void
-_outInferenceElem(StringInfo str, const InferenceElem *node)
-{
-	WRITE_NODE_TYPE("INFERENCEELEM");
-
-	WRITE_NODE_FIELD(expr);
-	WRITE_OID_FIELD(infercollid);
-	WRITE_OID_FIELD(inferopclass);
-}
-
-static void
-_outTargetEntry(StringInfo str, const TargetEntry *node)
-{
-	WRITE_NODE_TYPE("TARGETENTRY");
-
-	WRITE_NODE_FIELD(expr);
-	WRITE_INT_FIELD(resno);
-	WRITE_STRING_FIELD(resname);
-	WRITE_UINT_FIELD(ressortgroupref);
-	WRITE_OID_FIELD(resorigtbl);
-	WRITE_INT_FIELD(resorigcol);
-	WRITE_BOOL_FIELD(resjunk);
-}
-
-static void
-_outRangeTblRef(StringInfo str, const RangeTblRef *node)
-{
-	WRITE_NODE_TYPE("RANGETBLREF");
-
-	WRITE_INT_FIELD(rtindex);
-}
-
-static void
-_outJoinExpr(StringInfo str, const JoinExpr *node)
-{
-	WRITE_NODE_TYPE("JOINEXPR");
-
-	WRITE_ENUM_FIELD(jointype, JoinType);
-	WRITE_BOOL_FIELD(isNatural);
-	WRITE_NODE_FIELD(larg);
-	WRITE_NODE_FIELD(rarg);
-	WRITE_NODE_FIELD(usingClause);
-	WRITE_NODE_FIELD(join_using_alias);
-	WRITE_NODE_FIELD(quals);
-	WRITE_NODE_FIELD(alias);
-	WRITE_INT_FIELD(rtindex);
-}
-
-static void
-_outFromExpr(StringInfo str, const FromExpr *node)
-{
-	WRITE_NODE_TYPE("FROMEXPR");
-
-	WRITE_NODE_FIELD(fromlist);
-	WRITE_NODE_FIELD(quals);
-}
-
-static void
-_outOnConflictExpr(StringInfo str, const OnConflictExpr *node)
-{
-	WRITE_NODE_TYPE("ONCONFLICTEXPR");
-
-	WRITE_ENUM_FIELD(action, OnConflictAction);
-	WRITE_NODE_FIELD(arbiterElems);
-	WRITE_NODE_FIELD(arbiterWhere);
-	WRITE_OID_FIELD(constraint);
-	WRITE_NODE_FIELD(onConflictSet);
-	WRITE_NODE_FIELD(onConflictWhere);
-	WRITE_INT_FIELD(exclRelIndex);
-	WRITE_NODE_FIELD(exclRelTlist);
-}
-
-static void
-_outQuery(StringInfo str, const Query *node)
-{
-	WRITE_NODE_TYPE("QUERY");
-
-	WRITE_ENUM_FIELD(commandType, CmdType);
-	WRITE_ENUM_FIELD(querySource, QuerySource);
-	WRITE_BOOL_FIELD(canSetTag);
-	WRITE_NODE_FIELD(utilityStmt);
-	WRITE_INT_FIELD(resultRelation);
-	WRITE_BOOL_FIELD(hasAggs);
-	WRITE_BOOL_FIELD(hasWindowFuncs);
-	WRITE_BOOL_FIELD(hasTargetSRFs);
-	WRITE_BOOL_FIELD(hasSubLinks);
-	WRITE_BOOL_FIELD(hasDistinctOn);
-	WRITE_BOOL_FIELD(hasRecursive);
-	WRITE_BOOL_FIELD(hasModifyingCTE);
-	WRITE_BOOL_FIELD(hasForUpdate);
-	WRITE_BOOL_FIELD(hasRowSecurity);
-	WRITE_BOOL_FIELD(isReturn);
-	WRITE_NODE_FIELD(cteList);
-	WRITE_NODE_FIELD(rtable);
-	WRITE_NODE_FIELD(rteperminfos);
-	WRITE_NODE_FIELD(jointree);
-	WRITE_NODE_FIELD(mergeActionList);
-	WRITE_BOOL_FIELD(mergeUseOuterJoin);
-	WRITE_NODE_FIELD(targetList);
-	WRITE_ENUM_FIELD(override, OverridingKind);
-	WRITE_NODE_FIELD(onConflict);
-	WRITE_NODE_FIELD(returningList);
-	WRITE_NODE_FIELD(groupClause);
-	WRITE_BOOL_FIELD(groupDistinct);
-	WRITE_NODE_FIELD(groupingSets);
-	WRITE_NODE_FIELD(havingQual);
-	WRITE_NODE_FIELD(windowClause);
-	WRITE_NODE_FIELD(distinctClause);
-	WRITE_NODE_FIELD(sortClause);
-	WRITE_NODE_FIELD(limitOffset);
-	WRITE_NODE_FIELD(limitCount);
-	WRITE_ENUM_FIELD(limitOption, LimitOption);
-	WRITE_NODE_FIELD(rowMarks);
-	WRITE_NODE_FIELD(setOperations);
-	WRITE_NODE_FIELD(constraintDeps);
-	WRITE_NODE_FIELD(withCheckOptions);
-	WRITE_LOCATION_FIELD(stmt_location);
-	WRITE_INT_FIELD(stmt_len);
-}
-
-static void
-_outTypeName(StringInfo str, const TypeName *node)
-{
-	WRITE_NODE_TYPE("TYPENAME");
-
-	WRITE_NODE_FIELD(names);
-	WRITE_OID_FIELD(typeOid);
-	WRITE_BOOL_FIELD(setof);
-	WRITE_BOOL_FIELD(pct_type);
-	WRITE_NODE_FIELD(typmods);
-	WRITE_INT_FIELD(typemod);
-	WRITE_NODE_FIELD(arrayBounds);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outColumnRef(StringInfo str, const ColumnRef *node)
-{
-	WRITE_NODE_TYPE("COLUMNREF");
-
-	WRITE_NODE_FIELD(fields);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outParamRef(StringInfo str, const ParamRef *node)
-{
-	WRITE_NODE_TYPE("PARAMREF");
-
-	WRITE_INT_FIELD(number);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outTypeCast(StringInfo str, const TypeCast *node)
-{
-	WRITE_NODE_TYPE("TYPECAST");
-
-	WRITE_NODE_FIELD(arg);
-	WRITE_NODE_FIELD(typeName);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outCollateClause(StringInfo str, const CollateClause *node)
-{
-	WRITE_NODE_TYPE("COLLATECLAUSE");
-
-	WRITE_NODE_FIELD(arg);
-	WRITE_NODE_FIELD(collname);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outRoleSpec(StringInfo str, const RoleSpec *node)
-{
-	WRITE_NODE_TYPE("ROLESPEC");
-
-	WRITE_ENUM_FIELD(roletype, RoleSpecType);
-	WRITE_STRING_FIELD(rolename);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outFuncCall(StringInfo str, const FuncCall *node)
-{
-	WRITE_NODE_TYPE("FUNCCALL");
-
-	WRITE_NODE_FIELD(funcname);
-	WRITE_NODE_FIELD(args);
-	WRITE_NODE_FIELD(agg_order);
-	WRITE_NODE_FIELD(agg_filter);
-	WRITE_NODE_FIELD(over);
-	WRITE_BOOL_FIELD(agg_within_group);
-	WRITE_BOOL_FIELD(agg_star);
-	WRITE_BOOL_FIELD(agg_distinct);
-	WRITE_BOOL_FIELD(func_variadic);
-	WRITE_ENUM_FIELD(funcformat, CoercionForm);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outA_Star(StringInfo str, const A_Star *node)
-{
-	WRITE_NODE_TYPE("A_STAR");
-
-}
-
-static void
-_outA_Indices(StringInfo str, const A_Indices *node)
-{
-	WRITE_NODE_TYPE("A_INDICES");
-
-	WRITE_BOOL_FIELD(is_slice);
-	WRITE_NODE_FIELD(lidx);
-	WRITE_NODE_FIELD(uidx);
-}
-
-static void
-_outA_Indirection(StringInfo str, const A_Indirection *node)
-{
-	WRITE_NODE_TYPE("A_INDIRECTION");
-
-	WRITE_NODE_FIELD(arg);
-	WRITE_NODE_FIELD(indirection);
-}
-
-static void
-_outA_ArrayExpr(StringInfo str, const A_ArrayExpr *node)
-{
-	WRITE_NODE_TYPE("A_ARRAYEXPR");
-
-	WRITE_NODE_FIELD(elements);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outResTarget(StringInfo str, const ResTarget *node)
-{
-	WRITE_NODE_TYPE("RESTARGET");
-
-	WRITE_STRING_FIELD(name);
-	WRITE_NODE_FIELD(indirection);
-	WRITE_NODE_FIELD(val);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outMultiAssignRef(StringInfo str, const MultiAssignRef *node)
-{
-	WRITE_NODE_TYPE("MULTIASSIGNREF");
-
-	WRITE_NODE_FIELD(source);
-	WRITE_INT_FIELD(colno);
-	WRITE_INT_FIELD(ncolumns);
-}
-
-static void
-_outSortBy(StringInfo str, const SortBy *node)
-{
-	WRITE_NODE_TYPE("SORTBY");
-
-	WRITE_NODE_FIELD(node);
-	WRITE_ENUM_FIELD(sortby_dir, SortByDir);
-	WRITE_ENUM_FIELD(sortby_nulls, SortByNulls);
-	WRITE_NODE_FIELD(useOp);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outWindowDef(StringInfo str, const WindowDef *node)
-{
-	WRITE_NODE_TYPE("WINDOWDEF");
-
-	WRITE_STRING_FIELD(name);
-	WRITE_STRING_FIELD(refname);
-	WRITE_NODE_FIELD(partitionClause);
-	WRITE_NODE_FIELD(orderClause);
-	WRITE_INT_FIELD(frameOptions);
-	WRITE_NODE_FIELD(startOffset);
-	WRITE_NODE_FIELD(endOffset);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outRangeSubselect(StringInfo str, const RangeSubselect *node)
-{
-	WRITE_NODE_TYPE("RANGESUBSELECT");
-
-	WRITE_BOOL_FIELD(lateral);
-	WRITE_NODE_FIELD(subquery);
-	WRITE_NODE_FIELD(alias);
-}
-
-static void
-_outRangeFunction(StringInfo str, const RangeFunction *node)
-{
-	WRITE_NODE_TYPE("RANGEFUNCTION");
-
-	WRITE_BOOL_FIELD(lateral);
-	WRITE_BOOL_FIELD(ordinality);
-	WRITE_BOOL_FIELD(is_rowsfrom);
-	WRITE_NODE_FIELD(functions);
-	WRITE_NODE_FIELD(alias);
-	WRITE_NODE_FIELD(coldeflist);
-}
-
-static void
-_outRangeTableFunc(StringInfo str, const RangeTableFunc *node)
-{
-	WRITE_NODE_TYPE("RANGETABLEFUNC");
-
-	WRITE_BOOL_FIELD(lateral);
-	WRITE_NODE_FIELD(docexpr);
-	WRITE_NODE_FIELD(rowexpr);
-	WRITE_NODE_FIELD(namespaces);
-	WRITE_NODE_FIELD(columns);
-	WRITE_NODE_FIELD(alias);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outRangeTableFuncCol(StringInfo str, const RangeTableFuncCol *node)
-{
-	WRITE_NODE_TYPE("RANGETABLEFUNCCOL");
-
-	WRITE_STRING_FIELD(colname);
-	WRITE_NODE_FIELD(typeName);
-	WRITE_BOOL_FIELD(for_ordinality);
-	WRITE_BOOL_FIELD(is_not_null);
-	WRITE_NODE_FIELD(colexpr);
-	WRITE_NODE_FIELD(coldefexpr);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outRangeTableSample(StringInfo str, const RangeTableSample *node)
-{
-	WRITE_NODE_TYPE("RANGETABLESAMPLE");
-
-	WRITE_NODE_FIELD(relation);
-	WRITE_NODE_FIELD(method);
-	WRITE_NODE_FIELD(args);
-	WRITE_NODE_FIELD(repeatable);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outColumnDef(StringInfo str, const ColumnDef *node)
-{
-	WRITE_NODE_TYPE("COLUMNDEF");
-
-	WRITE_STRING_FIELD(colname);
-	WRITE_NODE_FIELD(typeName);
-	WRITE_STRING_FIELD(compression);
-	WRITE_INT_FIELD(inhcount);
-	WRITE_BOOL_FIELD(is_local);
-	WRITE_BOOL_FIELD(is_not_null);
-	WRITE_BOOL_FIELD(is_from_type);
-	WRITE_CHAR_FIELD(storage);
-	WRITE_STRING_FIELD(storage_name);
-	WRITE_NODE_FIELD(raw_default);
-	WRITE_NODE_FIELD(cooked_default);
-	WRITE_CHAR_FIELD(identity);
-	WRITE_NODE_FIELD(identitySequence);
-	WRITE_CHAR_FIELD(generated);
-	WRITE_NODE_FIELD(collClause);
-	WRITE_OID_FIELD(collOid);
-	WRITE_NODE_FIELD(constraints);
-	WRITE_NODE_FIELD(fdwoptions);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outTableLikeClause(StringInfo str, const TableLikeClause *node)
-{
-	WRITE_NODE_TYPE("TABLELIKECLAUSE");
-
-	WRITE_NODE_FIELD(relation);
-	WRITE_UINT_FIELD(options);
-	WRITE_OID_FIELD(relationOid);
-}
-
-static void
-_outIndexElem(StringInfo str, const IndexElem *node)
-{
-	WRITE_NODE_TYPE("INDEXELEM");
-
-	WRITE_STRING_FIELD(name);
-	WRITE_NODE_FIELD(expr);
-	WRITE_STRING_FIELD(indexcolname);
-	WRITE_NODE_FIELD(collation);
-	WRITE_NODE_FIELD(opclass);
-	WRITE_NODE_FIELD(opclassopts);
-	WRITE_ENUM_FIELD(ordering, SortByDir);
-	WRITE_ENUM_FIELD(nulls_ordering, SortByNulls);
-}
-
-static void
-_outDefElem(StringInfo str, const DefElem *node)
-{
-	WRITE_NODE_TYPE("DEFELEM");
-
-	WRITE_STRING_FIELD(defnamespace);
-	WRITE_STRING_FIELD(defname);
-	WRITE_NODE_FIELD(arg);
-	WRITE_ENUM_FIELD(defaction, DefElemAction);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outLockingClause(StringInfo str, const LockingClause *node)
-{
-	WRITE_NODE_TYPE("LOCKINGCLAUSE");
-
-	WRITE_NODE_FIELD(lockedRels);
-	WRITE_ENUM_FIELD(strength, LockClauseStrength);
-	WRITE_ENUM_FIELD(waitPolicy, LockWaitPolicy);
-}
-
-static void
-_outXmlSerialize(StringInfo str, const XmlSerialize *node)
-{
-	WRITE_NODE_TYPE("XMLSERIALIZE");
-
-	WRITE_ENUM_FIELD(xmloption, XmlOptionType);
-	WRITE_NODE_FIELD(expr);
-	WRITE_NODE_FIELD(typeName);
-	WRITE_BOOL_FIELD(indent);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outPartitionElem(StringInfo str, const PartitionElem *node)
-{
-	WRITE_NODE_TYPE("PARTITIONELEM");
-
-	WRITE_STRING_FIELD(name);
-	WRITE_NODE_FIELD(expr);
-	WRITE_NODE_FIELD(collation);
-	WRITE_NODE_FIELD(opclass);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outPartitionSpec(StringInfo str, const PartitionSpec *node)
-{
-	WRITE_NODE_TYPE("PARTITIONSPEC");
-
-	WRITE_ENUM_FIELD(strategy, PartitionStrategy);
-	WRITE_NODE_FIELD(partParams);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outPartitionBoundSpec(StringInfo str, const PartitionBoundSpec *node)
-{
-	WRITE_NODE_TYPE("PARTITIONBOUNDSPEC");
-
-	WRITE_CHAR_FIELD(strategy);
-	WRITE_BOOL_FIELD(is_default);
-	WRITE_INT_FIELD(modulus);
-	WRITE_INT_FIELD(remainder);
-	WRITE_NODE_FIELD(listdatums);
-	WRITE_NODE_FIELD(lowerdatums);
-	WRITE_NODE_FIELD(upperdatums);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outPartitionRangeDatum(StringInfo str, const PartitionRangeDatum *node)
-{
-	WRITE_NODE_TYPE("PARTITIONRANGEDATUM");
-
-	WRITE_ENUM_FIELD(kind, PartitionRangeDatumKind);
-	WRITE_NODE_FIELD(value);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outPartitionCmd(StringInfo str, const PartitionCmd *node)
-{
-	WRITE_NODE_TYPE("PARTITIONCMD");
-
-	WRITE_NODE_FIELD(name);
-	WRITE_NODE_FIELD(bound);
-	WRITE_BOOL_FIELD(concurrent);
-}
-
-static void
-_outRTEPermissionInfo(StringInfo str, const RTEPermissionInfo *node)
-{
-	WRITE_NODE_TYPE("RTEPERMISSIONINFO");
-
-	WRITE_OID_FIELD(relid);
-	WRITE_BOOL_FIELD(inh);
-	WRITE_UINT64_FIELD(requiredPerms);
-	WRITE_OID_FIELD(checkAsUser);
-	WRITE_BITMAPSET_FIELD(selectedCols);
-	WRITE_BITMAPSET_FIELD(insertedCols);
-	WRITE_BITMAPSET_FIELD(updatedCols);
-}
-
-static void
-_outRangeTblFunction(StringInfo str, const RangeTblFunction *node)
-{
-	WRITE_NODE_TYPE("RANGETBLFUNCTION");
-
-	WRITE_NODE_FIELD(funcexpr);
-	WRITE_INT_FIELD(funccolcount);
-	WRITE_NODE_FIELD(funccolnames);
-	WRITE_NODE_FIELD(funccoltypes);
-	WRITE_NODE_FIELD(funccoltypmods);
-	WRITE_NODE_FIELD(funccolcollations);
-	WRITE_BITMAPSET_FIELD(funcparams);
-}
-
-static void
-_outTableSampleClause(StringInfo str, const TableSampleClause *node)
-{
-	WRITE_NODE_TYPE("TABLESAMPLECLAUSE");
-
-	WRITE_OID_FIELD(tsmhandler);
-	WRITE_NODE_FIELD(args);
-	WRITE_NODE_FIELD(repeatable);
-}
-
-static void
-_outWithCheckOption(StringInfo str, const WithCheckOption *node)
-{
-	WRITE_NODE_TYPE("WITHCHECKOPTION");
-
-	WRITE_ENUM_FIELD(kind, WCOKind);
-	WRITE_STRING_FIELD(relname);
-	WRITE_STRING_FIELD(polname);
-	WRITE_NODE_FIELD(qual);
-	WRITE_BOOL_FIELD(cascaded);
-}
-
-static void
-_outSortGroupClause(StringInfo str, const SortGroupClause *node)
-{
-	WRITE_NODE_TYPE("SORTGROUPCLAUSE");
-
-	WRITE_UINT_FIELD(tleSortGroupRef);
-	WRITE_OID_FIELD(eqop);
-	WRITE_OID_FIELD(sortop);
-	WRITE_BOOL_FIELD(nulls_first);
-	WRITE_BOOL_FIELD(hashable);
-}
-
-static void
-_outGroupingSet(StringInfo str, const GroupingSet *node)
-{
-	WRITE_NODE_TYPE("GROUPINGSET");
-
-	WRITE_ENUM_FIELD(kind, GroupingSetKind);
-	WRITE_NODE_FIELD(content);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outWindowClause(StringInfo str, const WindowClause *node)
-{
-	WRITE_NODE_TYPE("WINDOWCLAUSE");
-
-	WRITE_STRING_FIELD(name);
-	WRITE_STRING_FIELD(refname);
-	WRITE_NODE_FIELD(partitionClause);
-	WRITE_NODE_FIELD(orderClause);
-	WRITE_INT_FIELD(frameOptions);
-	WRITE_NODE_FIELD(startOffset);
-	WRITE_NODE_FIELD(endOffset);
-	WRITE_NODE_FIELD(runCondition);
-	WRITE_OID_FIELD(startInRangeFunc);
-	WRITE_OID_FIELD(endInRangeFunc);
-	WRITE_OID_FIELD(inRangeColl);
-	WRITE_BOOL_FIELD(inRangeAsc);
-	WRITE_BOOL_FIELD(inRangeNullsFirst);
-	WRITE_UINT_FIELD(winref);
-	WRITE_BOOL_FIELD(copiedOrder);
-}
-
-static void
-_outRowMarkClause(StringInfo str, const RowMarkClause *node)
-{
-	WRITE_NODE_TYPE("ROWMARKCLAUSE");
-
-	WRITE_UINT_FIELD(rti);
-	WRITE_ENUM_FIELD(strength, LockClauseStrength);
-	WRITE_ENUM_FIELD(waitPolicy, LockWaitPolicy);
-	WRITE_BOOL_FIELD(pushedDown);
-}
-
-static void
-_outWithClause(StringInfo str, const WithClause *node)
-{
-	WRITE_NODE_TYPE("WITHCLAUSE");
-
-	WRITE_NODE_FIELD(ctes);
-	WRITE_BOOL_FIELD(recursive);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outInferClause(StringInfo str, const InferClause *node)
-{
-	WRITE_NODE_TYPE("INFERCLAUSE");
-
-	WRITE_NODE_FIELD(indexElems);
-	WRITE_NODE_FIELD(whereClause);
-	WRITE_STRING_FIELD(conname);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outOnConflictClause(StringInfo str, const OnConflictClause *node)
-{
-	WRITE_NODE_TYPE("ONCONFLICTCLAUSE");
-
-	WRITE_ENUM_FIELD(action, OnConflictAction);
-	WRITE_NODE_FIELD(infer);
-	WRITE_NODE_FIELD(targetList);
-	WRITE_NODE_FIELD(whereClause);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outCTESearchClause(StringInfo str, const CTESearchClause *node)
-{
-	WRITE_NODE_TYPE("CTESEARCHCLAUSE");
-
-	WRITE_NODE_FIELD(search_col_list);
-	WRITE_BOOL_FIELD(search_breadth_first);
-	WRITE_STRING_FIELD(search_seq_column);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outCTECycleClause(StringInfo str, const CTECycleClause *node)
-{
-	WRITE_NODE_TYPE("CTECYCLECLAUSE");
-
-	WRITE_NODE_FIELD(cycle_col_list);
-	WRITE_STRING_FIELD(cycle_mark_column);
-	WRITE_NODE_FIELD(cycle_mark_value);
-	WRITE_NODE_FIELD(cycle_mark_default);
-	WRITE_STRING_FIELD(cycle_path_column);
-	WRITE_LOCATION_FIELD(location);
-	WRITE_OID_FIELD(cycle_mark_type);
-	WRITE_INT_FIELD(cycle_mark_typmod);
-	WRITE_OID_FIELD(cycle_mark_collation);
-	WRITE_OID_FIELD(cycle_mark_neop);
-}
-
-static void
-_outCommonTableExpr(StringInfo str, const CommonTableExpr *node)
-{
-	WRITE_NODE_TYPE("COMMONTABLEEXPR");
-
-	WRITE_STRING_FIELD(ctename);
-	WRITE_NODE_FIELD(aliascolnames);
-	WRITE_ENUM_FIELD(ctematerialized, CTEMaterialize);
-	WRITE_NODE_FIELD(ctequery);
-	WRITE_NODE_FIELD(search_clause);
-	WRITE_NODE_FIELD(cycle_clause);
-	WRITE_LOCATION_FIELD(location);
-	WRITE_BOOL_FIELD(cterecursive);
-	WRITE_INT_FIELD(cterefcount);
-	WRITE_NODE_FIELD(ctecolnames);
-	WRITE_NODE_FIELD(ctecoltypes);
-	WRITE_NODE_FIELD(ctecoltypmods);
-	WRITE_NODE_FIELD(ctecolcollations);
-}
-
-static void
-_outMergeWhenClause(StringInfo str, const MergeWhenClause *node)
-{
-	WRITE_NODE_TYPE("MERGEWHENCLAUSE");
-
-	WRITE_BOOL_FIELD(matched);
-	WRITE_ENUM_FIELD(commandType, CmdType);
-	WRITE_ENUM_FIELD(override, OverridingKind);
-	WRITE_NODE_FIELD(condition);
-	WRITE_NODE_FIELD(targetList);
-	WRITE_NODE_FIELD(values);
-}
-
-static void
-_outMergeAction(StringInfo str, const MergeAction *node)
-{
-	WRITE_NODE_TYPE("MERGEACTION");
-
-	WRITE_BOOL_FIELD(matched);
-	WRITE_ENUM_FIELD(commandType, CmdType);
-	WRITE_ENUM_FIELD(override, OverridingKind);
-	WRITE_NODE_FIELD(qual);
-	WRITE_NODE_FIELD(targetList);
-	WRITE_NODE_FIELD(updateColnos);
-}
-
-static void
-_outTriggerTransition(StringInfo str, const TriggerTransition *node)
-{
-	WRITE_NODE_TYPE("TRIGGERTRANSITION");
-
-	WRITE_STRING_FIELD(name);
-	WRITE_BOOL_FIELD(isNew);
-	WRITE_BOOL_FIELD(isTable);
-}
-
-static void
-_outJsonOutput(StringInfo str, const JsonOutput *node)
-{
-	WRITE_NODE_TYPE("JSONOUTPUT");
-
-	WRITE_NODE_FIELD(typeName);
-	WRITE_NODE_FIELD(returning);
-}
-
-static void
-_outJsonKeyValue(StringInfo str, const JsonKeyValue *node)
-{
-	WRITE_NODE_TYPE("JSONKEYVALUE");
-
-	WRITE_NODE_FIELD(key);
-	WRITE_NODE_FIELD(value);
-}
-
-static void
-_outJsonObjectConstructor(StringInfo str, const JsonObjectConstructor *node)
-{
-	WRITE_NODE_TYPE("JSONOBJECTCONSTRUCTOR");
-
-	WRITE_NODE_FIELD(exprs);
-	WRITE_NODE_FIELD(output);
-	WRITE_BOOL_FIELD(absent_on_null);
-	WRITE_BOOL_FIELD(unique);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outJsonArrayConstructor(StringInfo str, const JsonArrayConstructor *node)
-{
-	WRITE_NODE_TYPE("JSONARRAYCONSTRUCTOR");
-
-	WRITE_NODE_FIELD(exprs);
-	WRITE_NODE_FIELD(output);
-	WRITE_BOOL_FIELD(absent_on_null);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outJsonArrayQueryConstructor(StringInfo str, const JsonArrayQueryConstructor *node)
-{
-	WRITE_NODE_TYPE("JSONARRAYQUERYCONSTRUCTOR");
-
-	WRITE_NODE_FIELD(query);
-	WRITE_NODE_FIELD(output);
-	WRITE_NODE_FIELD(format);
-	WRITE_BOOL_FIELD(absent_on_null);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outJsonAggConstructor(StringInfo str, const JsonAggConstructor *node)
-{
-	WRITE_NODE_TYPE("JSONAGGCONSTRUCTOR");
-
-	WRITE_NODE_FIELD(output);
-	WRITE_NODE_FIELD(agg_filter);
-	WRITE_NODE_FIELD(agg_order);
-	WRITE_NODE_FIELD(over);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outJsonObjectAgg(StringInfo str, const JsonObjectAgg *node)
-{
-	WRITE_NODE_TYPE("JSONOBJECTAGG");
-
-	WRITE_NODE_FIELD(constructor);
-	WRITE_NODE_FIELD(arg);
-	WRITE_BOOL_FIELD(absent_on_null);
-	WRITE_BOOL_FIELD(unique);
-}
-
-static void
-_outJsonArrayAgg(StringInfo str, const JsonArrayAgg *node)
-{
-	WRITE_NODE_TYPE("JSONARRAYAGG");
-
-	WRITE_NODE_FIELD(constructor);
-	WRITE_NODE_FIELD(arg);
-	WRITE_BOOL_FIELD(absent_on_null);
-}
-
-static void
-_outRawStmt(StringInfo str, const RawStmt *node)
-{
-	WRITE_NODE_TYPE("RAWSTMT");
-
-	WRITE_NODE_FIELD(stmt);
-	WRITE_LOCATION_FIELD(stmt_location);
-	WRITE_INT_FIELD(stmt_len);
-}
-
-static void
-_outInsertStmt(StringInfo str, const InsertStmt *node)
-{
-	WRITE_NODE_TYPE("INSERTSTMT");
-
-	WRITE_NODE_FIELD(relation);
-	WRITE_NODE_FIELD(cols);
-	WRITE_NODE_FIELD(selectStmt);
-	WRITE_NODE_FIELD(onConflictClause);
-	WRITE_NODE_FIELD(returningList);
-	WRITE_NODE_FIELD(withClause);
-	WRITE_ENUM_FIELD(override, OverridingKind);
-}
-
-static void
-_outDeleteStmt(StringInfo str, const DeleteStmt *node)
-{
-	WRITE_NODE_TYPE("DELETESTMT");
-
-	WRITE_NODE_FIELD(relation);
-	WRITE_NODE_FIELD(usingClause);
-	WRITE_NODE_FIELD(whereClause);
-	WRITE_NODE_FIELD(returningList);
-	WRITE_NODE_FIELD(withClause);
-}
-
-static void
-_outUpdateStmt(StringInfo str, const UpdateStmt *node)
-{
-	WRITE_NODE_TYPE("UPDATESTMT");
-
-	WRITE_NODE_FIELD(relation);
-	WRITE_NODE_FIELD(targetList);
-	WRITE_NODE_FIELD(whereClause);
-	WRITE_NODE_FIELD(fromClause);
-	WRITE_NODE_FIELD(returningList);
-	WRITE_NODE_FIELD(withClause);
-}
-
-static void
-_outMergeStmt(StringInfo str, const MergeStmt *node)
-{
-	WRITE_NODE_TYPE("MERGESTMT");
-
-	WRITE_NODE_FIELD(relation);
-	WRITE_NODE_FIELD(sourceRelation);
-	WRITE_NODE_FIELD(joinCondition);
-	WRITE_NODE_FIELD(mergeWhenClauses);
-	WRITE_NODE_FIELD(withClause);
-}
-
-static void
-_outSelectStmt(StringInfo str, const SelectStmt *node)
-{
-	WRITE_NODE_TYPE("SELECTSTMT");
-
-	WRITE_NODE_FIELD(distinctClause);
-	WRITE_NODE_FIELD(intoClause);
-	WRITE_NODE_FIELD(targetList);
-	WRITE_NODE_FIELD(fromClause);
-	WRITE_NODE_FIELD(whereClause);
-	WRITE_NODE_FIELD(groupClause);
-	WRITE_BOOL_FIELD(groupDistinct);
-	WRITE_NODE_FIELD(havingClause);
-	WRITE_NODE_FIELD(windowClause);
-	WRITE_NODE_FIELD(valuesLists);
-	WRITE_NODE_FIELD(sortClause);
-	WRITE_NODE_FIELD(limitOffset);
-	WRITE_NODE_FIELD(limitCount);
-	WRITE_ENUM_FIELD(limitOption, LimitOption);
-	WRITE_NODE_FIELD(lockingClause);
-	WRITE_NODE_FIELD(withClause);
-	WRITE_ENUM_FIELD(op, SetOperation);
-	WRITE_BOOL_FIELD(all);
-	WRITE_NODE_FIELD(larg);
-	WRITE_NODE_FIELD(rarg);
-}
-
-static void
-_outSetOperationStmt(StringInfo str, const SetOperationStmt *node)
-{
-	WRITE_NODE_TYPE("SETOPERATIONSTMT");
-
-	WRITE_ENUM_FIELD(op, SetOperation);
-	WRITE_BOOL_FIELD(all);
-	WRITE_NODE_FIELD(larg);
-	WRITE_NODE_FIELD(rarg);
-	WRITE_NODE_FIELD(colTypes);
-	WRITE_NODE_FIELD(colTypmods);
-	WRITE_NODE_FIELD(colCollations);
-	WRITE_NODE_FIELD(groupClauses);
-}
-
-static void
-_outReturnStmt(StringInfo str, const ReturnStmt *node)
-{
-	WRITE_NODE_TYPE("RETURNSTMT");
-
-	WRITE_NODE_FIELD(returnval);
-}
-
-static void
-_outPLAssignStmt(StringInfo str, const PLAssignStmt *node)
-{
-	WRITE_NODE_TYPE("PLASSIGNSTMT");
-
-	WRITE_STRING_FIELD(name);
-	WRITE_NODE_FIELD(indirection);
-	WRITE_INT_FIELD(nnames);
-	WRITE_NODE_FIELD(val);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outCreateSchemaStmt(StringInfo str, const CreateSchemaStmt *node)
-{
-	WRITE_NODE_TYPE("CREATESCHEMASTMT");
-
-	WRITE_STRING_FIELD(schemaname);
-	WRITE_NODE_FIELD(authrole);
-	WRITE_NODE_FIELD(schemaElts);
-	WRITE_BOOL_FIELD(if_not_exists);
-}
-
-static void
-_outAlterTableStmt(StringInfo str, const AlterTableStmt *node)
-{
-	WRITE_NODE_TYPE("ALTERTABLESTMT");
-
-	WRITE_NODE_FIELD(relation);
-	WRITE_NODE_FIELD(cmds);
-	WRITE_ENUM_FIELD(objtype, ObjectType);
-	WRITE_BOOL_FIELD(missing_ok);
-}
-
-static void
-_outReplicaIdentityStmt(StringInfo str, const ReplicaIdentityStmt *node)
-{
-	WRITE_NODE_TYPE("REPLICAIDENTITYSTMT");
-
-	WRITE_CHAR_FIELD(identity_type);
-	WRITE_STRING_FIELD(name);
-}
-
-static void
-_outAlterTableCmd(StringInfo str, const AlterTableCmd *node)
-{
-	WRITE_NODE_TYPE("ALTERTABLECMD");
-
-	WRITE_ENUM_FIELD(subtype, AlterTableType);
-	WRITE_STRING_FIELD(name);
-	WRITE_INT_FIELD(num);
-	WRITE_NODE_FIELD(newowner);
-	WRITE_NODE_FIELD(def);
-	WRITE_ENUM_FIELD(behavior, DropBehavior);
-	WRITE_BOOL_FIELD(missing_ok);
-	WRITE_BOOL_FIELD(recurse);
-}
-
-static void
-_outAlterCollationStmt(StringInfo str, const AlterCollationStmt *node)
-{
-	WRITE_NODE_TYPE("ALTERCOLLATIONSTMT");
-
-	WRITE_NODE_FIELD(collname);
-}
-
-static void
-_outAlterDomainStmt(StringInfo str, const AlterDomainStmt *node)
-{
-	WRITE_NODE_TYPE("ALTERDOMAINSTMT");
-
-	WRITE_CHAR_FIELD(subtype);
-	WRITE_NODE_FIELD(typeName);
-	WRITE_STRING_FIELD(name);
-	WRITE_NODE_FIELD(def);
-	WRITE_ENUM_FIELD(behavior, DropBehavior);
-	WRITE_BOOL_FIELD(missing_ok);
-}
-
-static void
-_outGrantStmt(StringInfo str, const GrantStmt *node)
-{
-	WRITE_NODE_TYPE("GRANTSTMT");
-
-	WRITE_BOOL_FIELD(is_grant);
-	WRITE_ENUM_FIELD(targtype, GrantTargetType);
-	WRITE_ENUM_FIELD(objtype, ObjectType);
-	WRITE_NODE_FIELD(objects);
-	WRITE_NODE_FIELD(privileges);
-	WRITE_NODE_FIELD(grantees);
-	WRITE_BOOL_FIELD(grant_option);
-	WRITE_NODE_FIELD(grantor);
-	WRITE_ENUM_FIELD(behavior, DropBehavior);
-}
-
-static void
-_outObjectWithArgs(StringInfo str, const ObjectWithArgs *node)
-{
-	WRITE_NODE_TYPE("OBJECTWITHARGS");
-
-	WRITE_NODE_FIELD(objname);
-	WRITE_NODE_FIELD(objargs);
-	WRITE_NODE_FIELD(objfuncargs);
-	WRITE_BOOL_FIELD(args_unspecified);
-}
-
-static void
-_outAccessPriv(StringInfo str, const AccessPriv *node)
-{
-	WRITE_NODE_TYPE("ACCESSPRIV");
-
-	WRITE_STRING_FIELD(priv_name);
-	WRITE_NODE_FIELD(cols);
-}
-
-static void
-_outGrantRoleStmt(StringInfo str, const GrantRoleStmt *node)
-{
-	WRITE_NODE_TYPE("GRANTROLESTMT");
-
-	WRITE_NODE_FIELD(granted_roles);
-	WRITE_NODE_FIELD(grantee_roles);
-	WRITE_BOOL_FIELD(is_grant);
-	WRITE_NODE_FIELD(opt);
-	WRITE_NODE_FIELD(grantor);
-	WRITE_ENUM_FIELD(behavior, DropBehavior);
-}
-
-static void
-_outAlterDefaultPrivilegesStmt(StringInfo str, const AlterDefaultPrivilegesStmt *node)
-{
-	WRITE_NODE_TYPE("ALTERDEFAULTPRIVILEGESSTMT");
-
-	WRITE_NODE_FIELD(options);
-	WRITE_NODE_FIELD(action);
-}
-
-static void
-_outCopyStmt(StringInfo str, const CopyStmt *node)
-{
-	WRITE_NODE_TYPE("COPYSTMT");
-
-	WRITE_NODE_FIELD(relation);
-	WRITE_NODE_FIELD(query);
-	WRITE_NODE_FIELD(attlist);
-	WRITE_BOOL_FIELD(is_from);
-	WRITE_BOOL_FIELD(is_program);
-	WRITE_STRING_FIELD(filename);
-	WRITE_NODE_FIELD(options);
-	WRITE_NODE_FIELD(whereClause);
-}
-
-static void
-_outVariableSetStmt(StringInfo str, const VariableSetStmt *node)
-{
-	WRITE_NODE_TYPE("VARIABLESETSTMT");
-
-	WRITE_ENUM_FIELD(kind, VariableSetKind);
-	WRITE_STRING_FIELD(name);
-	WRITE_NODE_FIELD(args);
-	WRITE_BOOL_FIELD(is_local);
-}
-
-static void
-_outVariableShowStmt(StringInfo str, const VariableShowStmt *node)
-{
-	WRITE_NODE_TYPE("VARIABLESHOWSTMT");
-
-	WRITE_STRING_FIELD(name);
-}
-
-static void
-_outCreateStmt(StringInfo str, const CreateStmt *node)
-{
-	WRITE_NODE_TYPE("CREATESTMT");
-
-	WRITE_NODE_FIELD(relation);
-	WRITE_NODE_FIELD(tableElts);
-	WRITE_NODE_FIELD(inhRelations);
-	WRITE_NODE_FIELD(partbound);
-	WRITE_NODE_FIELD(partspec);
-	WRITE_NODE_FIELD(ofTypename);
-	WRITE_NODE_FIELD(constraints);
-	WRITE_NODE_FIELD(options);
-	WRITE_ENUM_FIELD(oncommit, OnCommitAction);
-	WRITE_STRING_FIELD(tablespacename);
-	WRITE_STRING_FIELD(accessMethod);
-	WRITE_BOOL_FIELD(if_not_exists);
-}
-
-static void
-_outCreateTableSpaceStmt(StringInfo str, const CreateTableSpaceStmt *node)
-{
-	WRITE_NODE_TYPE("CREATETABLESPACESTMT");
-
-	WRITE_STRING_FIELD(tablespacename);
-	WRITE_NODE_FIELD(owner);
-	WRITE_STRING_FIELD(location);
-	WRITE_NODE_FIELD(options);
-}
-
-static void
-_outDropTableSpaceStmt(StringInfo str, const DropTableSpaceStmt *node)
-{
-	WRITE_NODE_TYPE("DROPTABLESPACESTMT");
-
-	WRITE_STRING_FIELD(tablespacename);
-	WRITE_BOOL_FIELD(missing_ok);
-}
-
-static void
-_outAlterTableSpaceOptionsStmt(StringInfo str, const AlterTableSpaceOptionsStmt *node)
-{
-	WRITE_NODE_TYPE("ALTERTABLESPACEOPTIONSSTMT");
-
-	WRITE_STRING_FIELD(tablespacename);
-	WRITE_NODE_FIELD(options);
-	WRITE_BOOL_FIELD(isReset);
-}
-
-static void
-_outAlterTableMoveAllStmt(StringInfo str, const AlterTableMoveAllStmt *node)
-{
-	WRITE_NODE_TYPE("ALTERTABLEMOVEALLSTMT");
-
-	WRITE_STRING_FIELD(orig_tablespacename);
-	WRITE_ENUM_FIELD(objtype, ObjectType);
-	WRITE_NODE_FIELD(roles);
-	WRITE_STRING_FIELD(new_tablespacename);
-	WRITE_BOOL_FIELD(nowait);
-}
-
-static void
-_outCreateExtensionStmt(StringInfo str, const CreateExtensionStmt *node)
-{
-	WRITE_NODE_TYPE("CREATEEXTENSIONSTMT");
-
-	WRITE_STRING_FIELD(extname);
-	WRITE_BOOL_FIELD(if_not_exists);
-	WRITE_NODE_FIELD(options);
-}
-
-static void
-_outAlterExtensionStmt(StringInfo str, const AlterExtensionStmt *node)
-{
-	WRITE_NODE_TYPE("ALTEREXTENSIONSTMT");
-
-	WRITE_STRING_FIELD(extname);
-	WRITE_NODE_FIELD(options);
-}
-
-static void
-_outAlterExtensionContentsStmt(StringInfo str, const AlterExtensionContentsStmt *node)
-{
-	WRITE_NODE_TYPE("ALTEREXTENSIONCONTENTSSTMT");
-
-	WRITE_STRING_FIELD(extname);
-	WRITE_INT_FIELD(action);
-	WRITE_ENUM_FIELD(objtype, ObjectType);
-	WRITE_NODE_FIELD(object);
-}
-
-static void
-_outCreateFdwStmt(StringInfo str, const CreateFdwStmt *node)
-{
-	WRITE_NODE_TYPE("CREATEFDWSTMT");
-
-	WRITE_STRING_FIELD(fdwname);
-	WRITE_NODE_FIELD(func_options);
-	WRITE_NODE_FIELD(options);
-}
-
-static void
-_outAlterFdwStmt(StringInfo str, const AlterFdwStmt *node)
-{
-	WRITE_NODE_TYPE("ALTERFDWSTMT");
-
-	WRITE_STRING_FIELD(fdwname);
-	WRITE_NODE_FIELD(func_options);
-	WRITE_NODE_FIELD(options);
-}
-
-static void
-_outCreateForeignServerStmt(StringInfo str, const CreateForeignServerStmt *node)
-{
-	WRITE_NODE_TYPE("CREATEFOREIGNSERVERSTMT");
-
-	WRITE_STRING_FIELD(servername);
-	WRITE_STRING_FIELD(servertype);
-	WRITE_STRING_FIELD(version);
-	WRITE_STRING_FIELD(fdwname);
-	WRITE_BOOL_FIELD(if_not_exists);
-	WRITE_NODE_FIELD(options);
-}
-
-static void
-_outAlterForeignServerStmt(StringInfo str, const AlterForeignServerStmt *node)
-{
-	WRITE_NODE_TYPE("ALTERFOREIGNSERVERSTMT");
-
-	WRITE_STRING_FIELD(servername);
-	WRITE_STRING_FIELD(version);
-	WRITE_NODE_FIELD(options);
-	WRITE_BOOL_FIELD(has_version);
-}
-
-static void
-_outCreateForeignTableStmt(StringInfo str, const CreateForeignTableStmt *node)
-{
-	WRITE_NODE_TYPE("CREATEFOREIGNTABLESTMT");
-
-	WRITE_NODE_FIELD(base.relation);
-	WRITE_NODE_FIELD(base.tableElts);
-	WRITE_NODE_FIELD(base.inhRelations);
-	WRITE_NODE_FIELD(base.partbound);
-	WRITE_NODE_FIELD(base.partspec);
-	WRITE_NODE_FIELD(base.ofTypename);
-	WRITE_NODE_FIELD(base.constraints);
-	WRITE_NODE_FIELD(base.options);
-	WRITE_ENUM_FIELD(base.oncommit, OnCommitAction);
-	WRITE_STRING_FIELD(base.tablespacename);
-	WRITE_STRING_FIELD(base.accessMethod);
-	WRITE_BOOL_FIELD(base.if_not_exists);
-	WRITE_STRING_FIELD(servername);
-	WRITE_NODE_FIELD(options);
-}
-
-static void
-_outCreateUserMappingStmt(StringInfo str, const CreateUserMappingStmt *node)
-{
-	WRITE_NODE_TYPE("CREATEUSERMAPPINGSTMT");
-
-	WRITE_NODE_FIELD(user);
-	WRITE_STRING_FIELD(servername);
-	WRITE_BOOL_FIELD(if_not_exists);
-	WRITE_NODE_FIELD(options);
-}
-
-static void
-_outAlterUserMappingStmt(StringInfo str, const AlterUserMappingStmt *node)
-{
-	WRITE_NODE_TYPE("ALTERUSERMAPPINGSTMT");
-
-	WRITE_NODE_FIELD(user);
-	WRITE_STRING_FIELD(servername);
-	WRITE_NODE_FIELD(options);
-}
-
-static void
-_outDropUserMappingStmt(StringInfo str, const DropUserMappingStmt *node)
-{
-	WRITE_NODE_TYPE("DROPUSERMAPPINGSTMT");
-
-	WRITE_NODE_FIELD(user);
-	WRITE_STRING_FIELD(servername);
-	WRITE_BOOL_FIELD(missing_ok);
-}
-
-static void
-_outImportForeignSchemaStmt(StringInfo str, const ImportForeignSchemaStmt *node)
-{
-	WRITE_NODE_TYPE("IMPORTFOREIGNSCHEMASTMT");
-
-	WRITE_STRING_FIELD(server_name);
-	WRITE_STRING_FIELD(remote_schema);
-	WRITE_STRING_FIELD(local_schema);
-	WRITE_ENUM_FIELD(list_type, ImportForeignSchemaType);
-	WRITE_NODE_FIELD(table_list);
-	WRITE_NODE_FIELD(options);
-}
-
-static void
-_outCreatePolicyStmt(StringInfo str, const CreatePolicyStmt *node)
-{
-	WRITE_NODE_TYPE("CREATEPOLICYSTMT");
-
-	WRITE_STRING_FIELD(policy_name);
-	WRITE_NODE_FIELD(table);
-	WRITE_STRING_FIELD(cmd_name);
-	WRITE_BOOL_FIELD(permissive);
-	WRITE_NODE_FIELD(roles);
-	WRITE_NODE_FIELD(qual);
-	WRITE_NODE_FIELD(with_check);
-}
-
-static void
-_outAlterPolicyStmt(StringInfo str, const AlterPolicyStmt *node)
-{
-	WRITE_NODE_TYPE("ALTERPOLICYSTMT");
-
-	WRITE_STRING_FIELD(policy_name);
-	WRITE_NODE_FIELD(table);
-	WRITE_NODE_FIELD(roles);
-	WRITE_NODE_FIELD(qual);
-	WRITE_NODE_FIELD(with_check);
-}
-
-static void
-_outCreateAmStmt(StringInfo str, const CreateAmStmt *node)
-{
-	WRITE_NODE_TYPE("CREATEAMSTMT");
-
-	WRITE_STRING_FIELD(amname);
-	WRITE_NODE_FIELD(handler_name);
-	WRITE_CHAR_FIELD(amtype);
-}
-
-static void
-_outCreateTrigStmt(StringInfo str, const CreateTrigStmt *node)
-{
-	WRITE_NODE_TYPE("CREATETRIGSTMT");
-
-	WRITE_BOOL_FIELD(replace);
-	WRITE_BOOL_FIELD(isconstraint);
-	WRITE_STRING_FIELD(trigname);
-	WRITE_NODE_FIELD(relation);
-	WRITE_NODE_FIELD(funcname);
-	WRITE_NODE_FIELD(args);
-	WRITE_BOOL_FIELD(row);
-	WRITE_INT_FIELD(timing);
-	WRITE_INT_FIELD(events);
-	WRITE_NODE_FIELD(columns);
-	WRITE_NODE_FIELD(whenClause);
-	WRITE_NODE_FIELD(transitionRels);
-	WRITE_BOOL_FIELD(deferrable);
-	WRITE_BOOL_FIELD(initdeferred);
-	WRITE_NODE_FIELD(constrrel);
-}
-
-static void
-_outCreateEventTrigStmt(StringInfo str, const CreateEventTrigStmt *node)
-{
-	WRITE_NODE_TYPE("CREATEEVENTTRIGSTMT");
-
-	WRITE_STRING_FIELD(trigname);
-	WRITE_STRING_FIELD(eventname);
-	WRITE_NODE_FIELD(whenclause);
-	WRITE_NODE_FIELD(funcname);
-}
-
-static void
-_outAlterEventTrigStmt(StringInfo str, const AlterEventTrigStmt *node)
-{
-	WRITE_NODE_TYPE("ALTEREVENTTRIGSTMT");
-
-	WRITE_STRING_FIELD(trigname);
-	WRITE_CHAR_FIELD(tgenabled);
-}
-
-static void
-_outCreatePLangStmt(StringInfo str, const CreatePLangStmt *node)
-{
-	WRITE_NODE_TYPE("CREATEPLANGSTMT");
-
-	WRITE_BOOL_FIELD(replace);
-	WRITE_STRING_FIELD(plname);
-	WRITE_NODE_FIELD(plhandler);
-	WRITE_NODE_FIELD(plinline);
-	WRITE_NODE_FIELD(plvalidator);
-	WRITE_BOOL_FIELD(pltrusted);
-}
-
-static void
-_outCreateRoleStmt(StringInfo str, const CreateRoleStmt *node)
-{
-	WRITE_NODE_TYPE("CREATEROLESTMT");
-
-	WRITE_ENUM_FIELD(stmt_type, RoleStmtType);
-	WRITE_STRING_FIELD(role);
-	WRITE_NODE_FIELD(options);
-}
-
-static void
-_outAlterRoleStmt(StringInfo str, const AlterRoleStmt *node)
-{
-	WRITE_NODE_TYPE("ALTERROLESTMT");
-
-	WRITE_NODE_FIELD(role);
-	WRITE_NODE_FIELD(options);
-	WRITE_INT_FIELD(action);
-}
-
-static void
-_outAlterRoleSetStmt(StringInfo str, const AlterRoleSetStmt *node)
-{
-	WRITE_NODE_TYPE("ALTERROLESETSTMT");
-
-	WRITE_NODE_FIELD(role);
-	WRITE_STRING_FIELD(database);
-	WRITE_NODE_FIELD(setstmt);
-}
-
-static void
-_outDropRoleStmt(StringInfo str, const DropRoleStmt *node)
-{
-	WRITE_NODE_TYPE("DROPROLESTMT");
-
-	WRITE_NODE_FIELD(roles);
-	WRITE_BOOL_FIELD(missing_ok);
-}
-
-static void
-_outCreateSeqStmt(StringInfo str, const CreateSeqStmt *node)
-{
-	WRITE_NODE_TYPE("CREATESEQSTMT");
-
-	WRITE_NODE_FIELD(sequence);
-	WRITE_NODE_FIELD(options);
-	WRITE_OID_FIELD(ownerId);
-	WRITE_BOOL_FIELD(for_identity);
-	WRITE_BOOL_FIELD(if_not_exists);
-}
-
-static void
-_outAlterSeqStmt(StringInfo str, const AlterSeqStmt *node)
-{
-	WRITE_NODE_TYPE("ALTERSEQSTMT");
-
-	WRITE_NODE_FIELD(sequence);
-	WRITE_NODE_FIELD(options);
-	WRITE_BOOL_FIELD(for_identity);
-	WRITE_BOOL_FIELD(missing_ok);
-}
-
-static void
-_outDefineStmt(StringInfo str, const DefineStmt *node)
-{
-	WRITE_NODE_TYPE("DEFINESTMT");
-
-	WRITE_ENUM_FIELD(kind, ObjectType);
-	WRITE_BOOL_FIELD(oldstyle);
-	WRITE_NODE_FIELD(defnames);
-	WRITE_NODE_FIELD(args);
-	WRITE_NODE_FIELD(definition);
-	WRITE_BOOL_FIELD(if_not_exists);
-	WRITE_BOOL_FIELD(replace);
-}
-
-static void
-_outCreateDomainStmt(StringInfo str, const CreateDomainStmt *node)
-{
-	WRITE_NODE_TYPE("CREATEDOMAINSTMT");
-
-	WRITE_NODE_FIELD(domainname);
-	WRITE_NODE_FIELD(typeName);
-	WRITE_NODE_FIELD(collClause);
-	WRITE_NODE_FIELD(constraints);
-}
-
-static void
-_outCreateOpClassStmt(StringInfo str, const CreateOpClassStmt *node)
-{
-	WRITE_NODE_TYPE("CREATEOPCLASSSTMT");
-
-	WRITE_NODE_FIELD(opclassname);
-	WRITE_NODE_FIELD(opfamilyname);
-	WRITE_STRING_FIELD(amname);
-	WRITE_NODE_FIELD(datatype);
-	WRITE_NODE_FIELD(items);
-	WRITE_BOOL_FIELD(isDefault);
-}
-
-static void
-_outCreateOpClassItem(StringInfo str, const CreateOpClassItem *node)
-{
-	WRITE_NODE_TYPE("CREATEOPCLASSITEM");
-
-	WRITE_INT_FIELD(itemtype);
-	WRITE_NODE_FIELD(name);
-	WRITE_INT_FIELD(number);
-	WRITE_NODE_FIELD(order_family);
-	WRITE_NODE_FIELD(class_args);
-	WRITE_NODE_FIELD(storedtype);
-}
-
-static void
-_outCreateOpFamilyStmt(StringInfo str, const CreateOpFamilyStmt *node)
-{
-	WRITE_NODE_TYPE("CREATEOPFAMILYSTMT");
-
-	WRITE_NODE_FIELD(opfamilyname);
-	WRITE_STRING_FIELD(amname);
-}
-
-static void
-_outAlterOpFamilyStmt(StringInfo str, const AlterOpFamilyStmt *node)
-{
-	WRITE_NODE_TYPE("ALTEROPFAMILYSTMT");
-
-	WRITE_NODE_FIELD(opfamilyname);
-	WRITE_STRING_FIELD(amname);
-	WRITE_BOOL_FIELD(isDrop);
-	WRITE_NODE_FIELD(items);
-}
-
-static void
-_outDropStmt(StringInfo str, const DropStmt *node)
-{
-	WRITE_NODE_TYPE("DROPSTMT");
-
-	WRITE_NODE_FIELD(objects);
-	WRITE_ENUM_FIELD(removeType, ObjectType);
-	WRITE_ENUM_FIELD(behavior, DropBehavior);
-	WRITE_BOOL_FIELD(missing_ok);
-	WRITE_BOOL_FIELD(concurrent);
-}
-
-static void
-_outTruncateStmt(StringInfo str, const TruncateStmt *node)
-{
-	WRITE_NODE_TYPE("TRUNCATESTMT");
-
-	WRITE_NODE_FIELD(relations);
-	WRITE_BOOL_FIELD(restart_seqs);
-	WRITE_ENUM_FIELD(behavior, DropBehavior);
-}
-
-static void
-_outCommentStmt(StringInfo str, const CommentStmt *node)
-{
-	WRITE_NODE_TYPE("COMMENTSTMT");
-
-	WRITE_ENUM_FIELD(objtype, ObjectType);
-	WRITE_NODE_FIELD(object);
-	WRITE_STRING_FIELD(comment);
-}
-
-static void
-_outSecLabelStmt(StringInfo str, const SecLabelStmt *node)
-{
-	WRITE_NODE_TYPE("SECLABELSTMT");
-
-	WRITE_ENUM_FIELD(objtype, ObjectType);
-	WRITE_NODE_FIELD(object);
-	WRITE_STRING_FIELD(provider);
-	WRITE_STRING_FIELD(label);
-}
-
-static void
-_outDeclareCursorStmt(StringInfo str, const DeclareCursorStmt *node)
-{
-	WRITE_NODE_TYPE("DECLARECURSORSTMT");
-
-	WRITE_STRING_FIELD(portalname);
-	WRITE_INT_FIELD(options);
-	WRITE_NODE_FIELD(query);
-}
-
-static void
-_outClosePortalStmt(StringInfo str, const ClosePortalStmt *node)
-{
-	WRITE_NODE_TYPE("CLOSEPORTALSTMT");
-
-	WRITE_STRING_FIELD(portalname);
-}
-
-static void
-_outFetchStmt(StringInfo str, const FetchStmt *node)
-{
-	WRITE_NODE_TYPE("FETCHSTMT");
-
-	WRITE_ENUM_FIELD(direction, FetchDirection);
-	WRITE_LONG_FIELD(howMany);
-	WRITE_STRING_FIELD(portalname);
-	WRITE_BOOL_FIELD(ismove);
-}
-
-static void
-_outIndexStmt(StringInfo str, const IndexStmt *node)
-{
-	WRITE_NODE_TYPE("INDEXSTMT");
-
-	WRITE_STRING_FIELD(idxname);
-	WRITE_NODE_FIELD(relation);
-	WRITE_STRING_FIELD(accessMethod);
-	WRITE_STRING_FIELD(tableSpace);
-	WRITE_NODE_FIELD(indexParams);
-	WRITE_NODE_FIELD(indexIncludingParams);
-	WRITE_NODE_FIELD(options);
-	WRITE_NODE_FIELD(whereClause);
-	WRITE_NODE_FIELD(excludeOpNames);
-	WRITE_STRING_FIELD(idxcomment);
-	WRITE_OID_FIELD(indexOid);
-	WRITE_OID_FIELD(oldNumber);
-	WRITE_UINT_FIELD(oldCreateSubid);
-	WRITE_UINT_FIELD(oldFirstRelfilelocatorSubid);
-	WRITE_BOOL_FIELD(unique);
-	WRITE_BOOL_FIELD(nulls_not_distinct);
-	WRITE_BOOL_FIELD(primary);
-	WRITE_BOOL_FIELD(isconstraint);
-	WRITE_BOOL_FIELD(deferrable);
-	WRITE_BOOL_FIELD(initdeferred);
-	WRITE_BOOL_FIELD(transformed);
-	WRITE_BOOL_FIELD(concurrent);
-	WRITE_BOOL_FIELD(if_not_exists);
-	WRITE_BOOL_FIELD(reset_default_tblspc);
-}
-
-static void
-_outCreateStatsStmt(StringInfo str, const CreateStatsStmt *node)
-{
-	WRITE_NODE_TYPE("CREATESTATSSTMT");
-
-	WRITE_NODE_FIELD(defnames);
-	WRITE_NODE_FIELD(stat_types);
-	WRITE_NODE_FIELD(exprs);
-	WRITE_NODE_FIELD(relations);
-	WRITE_STRING_FIELD(stxcomment);
-	WRITE_BOOL_FIELD(transformed);
-	WRITE_BOOL_FIELD(if_not_exists);
-}
-
-static void
-_outStatsElem(StringInfo str, const StatsElem *node)
-{
-	WRITE_NODE_TYPE("STATSELEM");
-
-	WRITE_STRING_FIELD(name);
-	WRITE_NODE_FIELD(expr);
-}
-
-static void
-_outAlterStatsStmt(StringInfo str, const AlterStatsStmt *node)
-{
-	WRITE_NODE_TYPE("ALTERSTATSSTMT");
-
-	WRITE_NODE_FIELD(defnames);
-	WRITE_INT_FIELD(stxstattarget);
-	WRITE_BOOL_FIELD(missing_ok);
-}
-
-static void
-_outCreateFunctionStmt(StringInfo str, const CreateFunctionStmt *node)
-{
-	WRITE_NODE_TYPE("CREATEFUNCTIONSTMT");
-
-	WRITE_BOOL_FIELD(is_procedure);
-	WRITE_BOOL_FIELD(replace);
-	WRITE_NODE_FIELD(funcname);
-	WRITE_NODE_FIELD(parameters);
-	WRITE_NODE_FIELD(returnType);
-	WRITE_NODE_FIELD(options);
-	WRITE_NODE_FIELD(sql_body);
-}
-
-static void
-_outFunctionParameter(StringInfo str, const FunctionParameter *node)
-{
-	WRITE_NODE_TYPE("FUNCTIONPARAMETER");
-
-	WRITE_STRING_FIELD(name);
-	WRITE_NODE_FIELD(argType);
-	WRITE_ENUM_FIELD(mode, FunctionParameterMode);
-	WRITE_NODE_FIELD(defexpr);
-}
-
-static void
-_outAlterFunctionStmt(StringInfo str, const AlterFunctionStmt *node)
-{
-	WRITE_NODE_TYPE("ALTERFUNCTIONSTMT");
-
-	WRITE_ENUM_FIELD(objtype, ObjectType);
-	WRITE_NODE_FIELD(func);
-	WRITE_NODE_FIELD(actions);
-}
-
-static void
-_outDoStmt(StringInfo str, const DoStmt *node)
-{
-	WRITE_NODE_TYPE("DOSTMT");
-
-	WRITE_NODE_FIELD(args);
-}
-
-static void
-_outCallStmt(StringInfo str, const CallStmt *node)
-{
-	WRITE_NODE_TYPE("CALLSTMT");
-
-	WRITE_NODE_FIELD(funccall);
-	WRITE_NODE_FIELD(funcexpr);
-	WRITE_NODE_FIELD(outargs);
-}
-
-static void
-_outRenameStmt(StringInfo str, const RenameStmt *node)
-{
-	WRITE_NODE_TYPE("RENAMESTMT");
-
-	WRITE_ENUM_FIELD(renameType, ObjectType);
-	WRITE_ENUM_FIELD(relationType, ObjectType);
-	WRITE_NODE_FIELD(relation);
-	WRITE_NODE_FIELD(object);
-	WRITE_STRING_FIELD(subname);
-	WRITE_STRING_FIELD(newname);
-	WRITE_ENUM_FIELD(behavior, DropBehavior);
-	WRITE_BOOL_FIELD(missing_ok);
-}
-
-static void
-_outAlterObjectDependsStmt(StringInfo str, const AlterObjectDependsStmt *node)
-{
-	WRITE_NODE_TYPE("ALTEROBJECTDEPENDSSTMT");
-
-	WRITE_ENUM_FIELD(objectType, ObjectType);
-	WRITE_NODE_FIELD(relation);
-	WRITE_NODE_FIELD(object);
-	WRITE_NODE_FIELD(extname);
-	WRITE_BOOL_FIELD(remove);
-}
-
-static void
-_outAlterObjectSchemaStmt(StringInfo str, const AlterObjectSchemaStmt *node)
-{
-	WRITE_NODE_TYPE("ALTEROBJECTSCHEMASTMT");
-
-	WRITE_ENUM_FIELD(objectType, ObjectType);
-	WRITE_NODE_FIELD(relation);
-	WRITE_NODE_FIELD(object);
-	WRITE_STRING_FIELD(newschema);
-	WRITE_BOOL_FIELD(missing_ok);
-}
-
-static void
-_outAlterOwnerStmt(StringInfo str, const AlterOwnerStmt *node)
-{
-	WRITE_NODE_TYPE("ALTEROWNERSTMT");
-
-	WRITE_ENUM_FIELD(objectType, ObjectType);
-	WRITE_NODE_FIELD(relation);
-	WRITE_NODE_FIELD(object);
-	WRITE_NODE_FIELD(newowner);
-}
-
-static void
-_outAlterOperatorStmt(StringInfo str, const AlterOperatorStmt *node)
-{
-	WRITE_NODE_TYPE("ALTEROPERATORSTMT");
-
-	WRITE_NODE_FIELD(opername);
-	WRITE_NODE_FIELD(options);
-}
-
-static void
-_outAlterTypeStmt(StringInfo str, const AlterTypeStmt *node)
-{
-	WRITE_NODE_TYPE("ALTERTYPESTMT");
-
-	WRITE_NODE_FIELD(typeName);
-	WRITE_NODE_FIELD(options);
-}
-
-static void
-_outRuleStmt(StringInfo str, const RuleStmt *node)
-{
-	WRITE_NODE_TYPE("RULESTMT");
-
-	WRITE_NODE_FIELD(relation);
-	WRITE_STRING_FIELD(rulename);
-	WRITE_NODE_FIELD(whereClause);
-	WRITE_ENUM_FIELD(event, CmdType);
-	WRITE_BOOL_FIELD(instead);
-	WRITE_NODE_FIELD(actions);
-	WRITE_BOOL_FIELD(replace);
-}
-
-static void
-_outNotifyStmt(StringInfo str, const NotifyStmt *node)
-{
-	WRITE_NODE_TYPE("NOTIFYSTMT");
-
-	WRITE_STRING_FIELD(conditionname);
-	WRITE_STRING_FIELD(payload);
-}
-
-static void
-_outListenStmt(StringInfo str, const ListenStmt *node)
-{
-	WRITE_NODE_TYPE("LISTENSTMT");
-
-	WRITE_STRING_FIELD(conditionname);
-}
-
-static void
-_outUnlistenStmt(StringInfo str, const UnlistenStmt *node)
-{
-	WRITE_NODE_TYPE("UNLISTENSTMT");
-
-	WRITE_STRING_FIELD(conditionname);
-}
-
-static void
-_outTransactionStmt(StringInfo str, const TransactionStmt *node)
-{
-	WRITE_NODE_TYPE("TRANSACTIONSTMT");
-
-	WRITE_ENUM_FIELD(kind, TransactionStmtKind);
-	WRITE_NODE_FIELD(options);
-	WRITE_STRING_FIELD(savepoint_name);
-	WRITE_STRING_FIELD(gid);
-	WRITE_BOOL_FIELD(chain);
-}
-
-static void
-_outCompositeTypeStmt(StringInfo str, const CompositeTypeStmt *node)
-{
-	WRITE_NODE_TYPE("COMPOSITETYPESTMT");
-
-	WRITE_NODE_FIELD(typevar);
-	WRITE_NODE_FIELD(coldeflist);
-}
-
-static void
-_outCreateEnumStmt(StringInfo str, const CreateEnumStmt *node)
-{
-	WRITE_NODE_TYPE("CREATEENUMSTMT");
-
-	WRITE_NODE_FIELD(typeName);
-	WRITE_NODE_FIELD(vals);
-}
-
-static void
-_outCreateRangeStmt(StringInfo str, const CreateRangeStmt *node)
-{
-	WRITE_NODE_TYPE("CREATERANGESTMT");
-
-	WRITE_NODE_FIELD(typeName);
-	WRITE_NODE_FIELD(params);
-}
-
-static void
-_outAlterEnumStmt(StringInfo str, const AlterEnumStmt *node)
-{
-	WRITE_NODE_TYPE("ALTERENUMSTMT");
-
-	WRITE_NODE_FIELD(typeName);
-	WRITE_STRING_FIELD(oldVal);
-	WRITE_STRING_FIELD(newVal);
-	WRITE_STRING_FIELD(newValNeighbor);
-	WRITE_BOOL_FIELD(newValIsAfter);
-	WRITE_BOOL_FIELD(skipIfNewValExists);
-}
-
-static void
-_outViewStmt(StringInfo str, const ViewStmt *node)
-{
-	WRITE_NODE_TYPE("VIEWSTMT");
-
-	WRITE_NODE_FIELD(view);
-	WRITE_NODE_FIELD(aliases);
-	WRITE_NODE_FIELD(query);
-	WRITE_BOOL_FIELD(replace);
-	WRITE_NODE_FIELD(options);
-	WRITE_ENUM_FIELD(withCheckOption, ViewCheckOption);
-}
-
-static void
-_outLoadStmt(StringInfo str, const LoadStmt *node)
-{
-	WRITE_NODE_TYPE("LOADSTMT");
-
-	WRITE_STRING_FIELD(filename);
-}
-
-static void
-_outCreatedbStmt(StringInfo str, const CreatedbStmt *node)
-{
-	WRITE_NODE_TYPE("CREATEDBSTMT");
-
-	WRITE_STRING_FIELD(dbname);
-	WRITE_NODE_FIELD(options);
-}
-
-static void
-_outAlterDatabaseStmt(StringInfo str, const AlterDatabaseStmt *node)
-{
-	WRITE_NODE_TYPE("ALTERDATABASESTMT");
-
-	WRITE_STRING_FIELD(dbname);
-	WRITE_NODE_FIELD(options);
-}
-
-static void
-_outAlterDatabaseRefreshCollStmt(StringInfo str, const AlterDatabaseRefreshCollStmt *node)
-{
-	WRITE_NODE_TYPE("ALTERDATABASEREFRESHCOLLSTMT");
-
-	WRITE_STRING_FIELD(dbname);
-}
-
-static void
-_outAlterDatabaseSetStmt(StringInfo str, const AlterDatabaseSetStmt *node)
-{
-	WRITE_NODE_TYPE("ALTERDATABASESETSTMT");
-
-	WRITE_STRING_FIELD(dbname);
-	WRITE_NODE_FIELD(setstmt);
-}
-
-static void
-_outDropdbStmt(StringInfo str, const DropdbStmt *node)
-{
-	WRITE_NODE_TYPE("DROPDBSTMT");
-
-	WRITE_STRING_FIELD(dbname);
-	WRITE_BOOL_FIELD(missing_ok);
-	WRITE_NODE_FIELD(options);
-}
-
-static void
-_outAlterSystemStmt(StringInfo str, const AlterSystemStmt *node)
-{
-	WRITE_NODE_TYPE("ALTERSYSTEMSTMT");
-
-	WRITE_NODE_FIELD(setstmt);
-}
-
-static void
-_outClusterStmt(StringInfo str, const ClusterStmt *node)
-{
-	WRITE_NODE_TYPE("CLUSTERSTMT");
-
-	WRITE_NODE_FIELD(relation);
-	WRITE_STRING_FIELD(indexname);
-	WRITE_NODE_FIELD(params);
-}
-
-static void
-_outVacuumStmt(StringInfo str, const VacuumStmt *node)
-{
-	WRITE_NODE_TYPE("VACUUMSTMT");
-
-	WRITE_NODE_FIELD(options);
-	WRITE_NODE_FIELD(rels);
-	WRITE_BOOL_FIELD(is_vacuumcmd);
-}
-
-static void
-_outVacuumRelation(StringInfo str, const VacuumRelation *node)
-{
-	WRITE_NODE_TYPE("VACUUMRELATION");
-
-	WRITE_NODE_FIELD(relation);
-	WRITE_OID_FIELD(oid);
-	WRITE_NODE_FIELD(va_cols);
-}
-
-static void
-_outExplainStmt(StringInfo str, const ExplainStmt *node)
-{
-	WRITE_NODE_TYPE("EXPLAINSTMT");
-
-	WRITE_NODE_FIELD(query);
-	WRITE_NODE_FIELD(options);
-}
-
-static void
-_outCreateTableAsStmt(StringInfo str, const CreateTableAsStmt *node)
-{
-	WRITE_NODE_TYPE("CREATETABLEASSTMT");
-
-	WRITE_NODE_FIELD(query);
-	WRITE_NODE_FIELD(into);
-	WRITE_ENUM_FIELD(objtype, ObjectType);
-	WRITE_BOOL_FIELD(is_select_into);
-	WRITE_BOOL_FIELD(if_not_exists);
-}
-
-static void
-_outRefreshMatViewStmt(StringInfo str, const RefreshMatViewStmt *node)
-{
-	WRITE_NODE_TYPE("REFRESHMATVIEWSTMT");
-
-	WRITE_BOOL_FIELD(concurrent);
-	WRITE_BOOL_FIELD(skipData);
-	WRITE_NODE_FIELD(relation);
-}
-
-static void
-_outCheckPointStmt(StringInfo str, const CheckPointStmt *node)
-{
-	WRITE_NODE_TYPE("CHECKPOINTSTMT");
-
-}
-
-static void
-_outDiscardStmt(StringInfo str, const DiscardStmt *node)
-{
-	WRITE_NODE_TYPE("DISCARDSTMT");
-
-	WRITE_ENUM_FIELD(target, DiscardMode);
-}
-
-static void
-_outLockStmt(StringInfo str, const LockStmt *node)
-{
-	WRITE_NODE_TYPE("LOCKSTMT");
-
-	WRITE_NODE_FIELD(relations);
-	WRITE_INT_FIELD(mode);
-	WRITE_BOOL_FIELD(nowait);
-}
-
-static void
-_outConstraintsSetStmt(StringInfo str, const ConstraintsSetStmt *node)
-{
-	WRITE_NODE_TYPE("CONSTRAINTSSETSTMT");
-
-	WRITE_NODE_FIELD(constraints);
-	WRITE_BOOL_FIELD(deferred);
-}
-
-static void
-_outReindexStmt(StringInfo str, const ReindexStmt *node)
-{
-	WRITE_NODE_TYPE("REINDEXSTMT");
-
-	WRITE_ENUM_FIELD(kind, ReindexObjectType);
-	WRITE_NODE_FIELD(relation);
-	WRITE_STRING_FIELD(name);
-	WRITE_NODE_FIELD(params);
-}
-
-static void
-_outCreateConversionStmt(StringInfo str, const CreateConversionStmt *node)
-{
-	WRITE_NODE_TYPE("CREATECONVERSIONSTMT");
-
-	WRITE_NODE_FIELD(conversion_name);
-	WRITE_STRING_FIELD(for_encoding_name);
-	WRITE_STRING_FIELD(to_encoding_name);
-	WRITE_NODE_FIELD(func_name);
-	WRITE_BOOL_FIELD(def);
-}
-
-static void
-_outCreateCastStmt(StringInfo str, const CreateCastStmt *node)
-{
-	WRITE_NODE_TYPE("CREATECASTSTMT");
-
-	WRITE_NODE_FIELD(sourcetype);
-	WRITE_NODE_FIELD(targettype);
-	WRITE_NODE_FIELD(func);
-	WRITE_ENUM_FIELD(context, CoercionContext);
-	WRITE_BOOL_FIELD(inout);
-}
-
-static void
-_outCreateTransformStmt(StringInfo str, const CreateTransformStmt *node)
-{
-	WRITE_NODE_TYPE("CREATETRANSFORMSTMT");
-
-	WRITE_BOOL_FIELD(replace);
-	WRITE_NODE_FIELD(type_name);
-	WRITE_STRING_FIELD(lang);
-	WRITE_NODE_FIELD(fromsql);
-	WRITE_NODE_FIELD(tosql);
-}
-
-static void
-_outPrepareStmt(StringInfo str, const PrepareStmt *node)
-{
-	WRITE_NODE_TYPE("PREPARESTMT");
-
-	WRITE_STRING_FIELD(name);
-	WRITE_NODE_FIELD(argtypes);
-	WRITE_NODE_FIELD(query);
-}
-
-static void
-_outExecuteStmt(StringInfo str, const ExecuteStmt *node)
-{
-	WRITE_NODE_TYPE("EXECUTESTMT");
-
-	WRITE_STRING_FIELD(name);
-	WRITE_NODE_FIELD(params);
-}
-
-static void
-_outDeallocateStmt(StringInfo str, const DeallocateStmt *node)
-{
-	WRITE_NODE_TYPE("DEALLOCATESTMT");
-
-	WRITE_STRING_FIELD(name);
-}
-
-static void
-_outDropOwnedStmt(StringInfo str, const DropOwnedStmt *node)
-{
-	WRITE_NODE_TYPE("DROPOWNEDSTMT");
-
-	WRITE_NODE_FIELD(roles);
-	WRITE_ENUM_FIELD(behavior, DropBehavior);
-}
-
-static void
-_outReassignOwnedStmt(StringInfo str, const ReassignOwnedStmt *node)
-{
-	WRITE_NODE_TYPE("REASSIGNOWNEDSTMT");
-
-	WRITE_NODE_FIELD(roles);
-	WRITE_NODE_FIELD(newrole);
-}
-
-static void
-_outAlterTSDictionaryStmt(StringInfo str, const AlterTSDictionaryStmt *node)
-{
-	WRITE_NODE_TYPE("ALTERTSDICTIONARYSTMT");
-
-	WRITE_NODE_FIELD(dictname);
-	WRITE_NODE_FIELD(options);
-}
-
-static void
-_outAlterTSConfigurationStmt(StringInfo str, const AlterTSConfigurationStmt *node)
-{
-	WRITE_NODE_TYPE("ALTERTSCONFIGURATIONSTMT");
-
-	WRITE_ENUM_FIELD(kind, AlterTSConfigType);
-	WRITE_NODE_FIELD(cfgname);
-	WRITE_NODE_FIELD(tokentype);
-	WRITE_NODE_FIELD(dicts);
-	WRITE_BOOL_FIELD(override);
-	WRITE_BOOL_FIELD(replace);
-	WRITE_BOOL_FIELD(missing_ok);
-}
-
-static void
-_outPublicationTable(StringInfo str, const PublicationTable *node)
-{
-	WRITE_NODE_TYPE("PUBLICATIONTABLE");
-
-	WRITE_NODE_FIELD(relation);
-	WRITE_NODE_FIELD(whereClause);
-	WRITE_NODE_FIELD(columns);
-}
-
-static void
-_outPublicationObjSpec(StringInfo str, const PublicationObjSpec *node)
-{
-	WRITE_NODE_TYPE("PUBLICATIONOBJSPEC");
-
-	WRITE_ENUM_FIELD(pubobjtype, PublicationObjSpecType);
-	WRITE_STRING_FIELD(name);
-	WRITE_NODE_FIELD(pubtable);
-	WRITE_LOCATION_FIELD(location);
-}
-
-static void
-_outCreatePublicationStmt(StringInfo str, const CreatePublicationStmt *node)
-{
-	WRITE_NODE_TYPE("CREATEPUBLICATIONSTMT");
-
-	WRITE_STRING_FIELD(pubname);
-	WRITE_NODE_FIELD(options);
-	WRITE_NODE_FIELD(pubobjects);
-	WRITE_BOOL_FIELD(for_all_tables);
-}
-
-static void
-_outAlterPublicationStmt(StringInfo str, const AlterPublicationStmt *node)
-{
-	WRITE_NODE_TYPE("ALTERPUBLICATIONSTMT");
-
-	WRITE_STRING_FIELD(pubname);
-	WRITE_NODE_FIELD(options);
-	WRITE_NODE_FIELD(pubobjects);
-	WRITE_BOOL_FIELD(for_all_tables);
-	WRITE_ENUM_FIELD(action, AlterPublicationAction);
-}
-
-static void
-_outCreateSubscriptionStmt(StringInfo str, const CreateSubscriptionStmt *node)
-{
-	WRITE_NODE_TYPE("CREATESUBSCRIPTIONSTMT");
-
-	WRITE_STRING_FIELD(subname);
-	WRITE_STRING_FIELD(conninfo);
-	WRITE_NODE_FIELD(publication);
-	WRITE_NODE_FIELD(options);
-}
-
-static void
-_outAlterSubscriptionStmt(StringInfo str, const AlterSubscriptionStmt *node)
-{
-	WRITE_NODE_TYPE("ALTERSUBSCRIPTIONSTMT");
-
-	WRITE_ENUM_FIELD(kind, AlterSubscriptionType);
-	WRITE_STRING_FIELD(subname);
-	WRITE_STRING_FIELD(conninfo);
-	WRITE_NODE_FIELD(publication);
-	WRITE_NODE_FIELD(options);
-}
-
-static void
-_outDropSubscriptionStmt(StringInfo str, const DropSubscriptionStmt *node)
-{
-	WRITE_NODE_TYPE("DROPSUBSCRIPTIONSTMT");
-
-	WRITE_STRING_FIELD(subname);
-	WRITE_BOOL_FIELD(missing_ok);
-	WRITE_ENUM_FIELD(behavior, DropBehavior);
-}
-
-static void
-_outPlannerGlobal(StringInfo str, const PlannerGlobal *node)
-{
-	WRITE_NODE_TYPE("PLANNERGLOBAL");
-
-	WRITE_NODE_FIELD(subplans);
-	WRITE_BITMAPSET_FIELD(rewindPlanIDs);
-	WRITE_NODE_FIELD(finalrtable);
-	WRITE_NODE_FIELD(finalrteperminfos);
-	WRITE_NODE_FIELD(finalrowmarks);
-	WRITE_NODE_FIELD(resultRelations);
-	WRITE_NODE_FIELD(appendRelations);
-	WRITE_NODE_FIELD(relationOids);
-	WRITE_NODE_FIELD(invalItems);
-	WRITE_NODE_FIELD(paramExecTypes);
-	WRITE_UINT_FIELD(lastPHId);
-	WRITE_UINT_FIELD(lastRowMarkId);
-	WRITE_INT_FIELD(lastPlanNodeId);
-	WRITE_BOOL_FIELD(transientPlan);
-	WRITE_BOOL_FIELD(dependsOnRole);
-	WRITE_BOOL_FIELD(parallelModeOK);
-	WRITE_BOOL_FIELD(parallelModeNeeded);
-	WRITE_CHAR_FIELD(maxParallelHazard);
-}
-
-static void
-_outPlannerInfo(StringInfo str, const PlannerInfo *node)
-{
-	WRITE_NODE_TYPE("PLANNERINFO");
-
-	WRITE_NODE_FIELD(parse);
-	WRITE_NODE_FIELD(glob);
-	WRITE_UINT_FIELD(query_level);
-	WRITE_NODE_FIELD(plan_params);
-	WRITE_BITMAPSET_FIELD(outer_params);
-	WRITE_NODE_ARRAY(simple_rel_array, node->simple_rel_array_size);
-	WRITE_INT_FIELD(simple_rel_array_size);
-	WRITE_BITMAPSET_FIELD(all_baserels);
-	WRITE_BITMAPSET_FIELD(outer_join_rels);
-	WRITE_BITMAPSET_FIELD(all_query_rels);
-	WRITE_NODE_FIELD(join_rel_list);
-	WRITE_INT_FIELD(join_cur_level);
-	WRITE_NODE_FIELD(init_plans);
-	WRITE_NODE_FIELD(cte_plan_ids);
-	WRITE_NODE_FIELD(multiexpr_params);
-	WRITE_NODE_FIELD(join_domains);
-	WRITE_NODE_FIELD(eq_classes);
-	WRITE_BOOL_FIELD(ec_merging_done);
-	WRITE_NODE_FIELD(canon_pathkeys);
-	WRITE_NODE_FIELD(left_join_clauses);
-	WRITE_NODE_FIELD(right_join_clauses);
-	WRITE_NODE_FIELD(full_join_clauses);
-	WRITE_NODE_FIELD(join_info_list);
-	WRITE_INT_FIELD(last_rinfo_serial);
-	WRITE_BITMAPSET_FIELD(all_result_relids);
-	WRITE_BITMAPSET_FIELD(leaf_result_relids);
-	WRITE_NODE_FIELD(append_rel_list);
-	WRITE_NODE_FIELD(row_identity_vars);
-	WRITE_NODE_FIELD(rowMarks);
-	WRITE_NODE_FIELD(placeholder_list);
-	WRITE_NODE_FIELD(fkey_list);
-	WRITE_NODE_FIELD(query_pathkeys);
-	WRITE_NODE_FIELD(group_pathkeys);
-	WRITE_INT_FIELD(num_groupby_pathkeys);
-	WRITE_NODE_FIELD(window_pathkeys);
-	WRITE_NODE_FIELD(distinct_pathkeys);
-	WRITE_NODE_FIELD(sort_pathkeys);
-	WRITE_NODE_FIELD(processed_groupClause);
-	WRITE_NODE_FIELD(processed_distinctClause);
-	WRITE_NODE_FIELD(processed_tlist);
-	WRITE_NODE_FIELD(update_colnos);
-	WRITE_NODE_FIELD(minmax_aggs);
-	WRITE_FLOAT_FIELD(total_table_pages);
-	WRITE_FLOAT_FIELD(tuple_fraction);
-	WRITE_FLOAT_FIELD(limit_tuples);
-	WRITE_UINT_FIELD(qual_security_level);
-	WRITE_BOOL_FIELD(hasJoinRTEs);
-	WRITE_BOOL_FIELD(hasLateralRTEs);
-	WRITE_BOOL_FIELD(hasHavingQual);
-	WRITE_BOOL_FIELD(hasPseudoConstantQuals);
-	WRITE_BOOL_FIELD(hasAlternativeSubPlans);
-	WRITE_BOOL_FIELD(placeholdersFrozen);
-	WRITE_BOOL_FIELD(hasRecursion);
-	WRITE_NODE_FIELD(agginfos);
-	WRITE_NODE_FIELD(aggtransinfos);
-	WRITE_INT_FIELD(numOrderedAggs);
-	WRITE_BOOL_FIELD(hasNonPartialAggs);
-	WRITE_BOOL_FIELD(hasNonSerialAggs);
-	WRITE_INT_FIELD(wt_param_id);
-	WRITE_NODE_FIELD(non_recursive_path);
-	WRITE_BITMAPSET_FIELD(curOuterRels);
-	WRITE_NODE_FIELD(curOuterParams);
-	WRITE_BOOL_FIELD(partColsUpdated);
-}
-
-static void
-_outRelOptInfo(StringInfo str, const RelOptInfo *node)
-{
-	WRITE_NODE_TYPE("RELOPTINFO");
-
-	WRITE_ENUM_FIELD(reloptkind, RelOptKind);
-	WRITE_BITMAPSET_FIELD(relids);
-	WRITE_FLOAT_FIELD(rows);
-	WRITE_BOOL_FIELD(consider_startup);
-	WRITE_BOOL_FIELD(consider_param_startup);
-	WRITE_BOOL_FIELD(consider_parallel);
-	WRITE_NODE_FIELD(reltarget);
-	WRITE_NODE_FIELD(pathlist);
-	WRITE_NODE_FIELD(ppilist);
-	WRITE_NODE_FIELD(partial_pathlist);
-	WRITE_NODE_FIELD(cheapest_startup_path);
-	WRITE_NODE_FIELD(cheapest_total_path);
-	WRITE_NODE_FIELD(cheapest_unique_path);
-	WRITE_NODE_FIELD(cheapest_parameterized_paths);
-	WRITE_BITMAPSET_FIELD(direct_lateral_relids);
-	WRITE_BITMAPSET_FIELD(lateral_relids);
-	WRITE_UINT_FIELD(relid);
-	WRITE_OID_FIELD(reltablespace);
-	WRITE_ENUM_FIELD(rtekind, RTEKind);
-	WRITE_INT_FIELD(min_attr);
-	WRITE_INT_FIELD(max_attr);
-	WRITE_BITMAPSET_FIELD(nulling_relids);
-	WRITE_NODE_FIELD(lateral_vars);
-	WRITE_BITMAPSET_FIELD(lateral_referencers);
-	WRITE_NODE_FIELD(indexlist);
-	WRITE_NODE_FIELD(statlist);
-	WRITE_UINT_FIELD(pages);
-	WRITE_FLOAT_FIELD(tuples);
-	WRITE_FLOAT_FIELD(allvisfrac);
-	WRITE_BITMAPSET_FIELD(eclass_indexes);
-	WRITE_NODE_FIELD(subroot);
-	WRITE_NODE_FIELD(subplan_params);
-	WRITE_INT_FIELD(rel_parallel_workers);
-	WRITE_UINT_FIELD(amflags);
-	WRITE_OID_FIELD(serverid);
-	WRITE_OID_FIELD(userid);
-	WRITE_BOOL_FIELD(useridiscurrent);
-	WRITE_NODE_FIELD(unique_for_rels);
-	WRITE_NODE_FIELD(non_unique_for_rels);
-	WRITE_NODE_FIELD(baserestrictinfo);
-	WRITE_FLOAT_FIELD(baserestrictcost.startup);
-	WRITE_FLOAT_FIELD(baserestrictcost.per_tuple);
-	WRITE_UINT_FIELD(baserestrict_min_security);
-	WRITE_NODE_FIELD(joininfo);
-	WRITE_BOOL_FIELD(has_eclass_joins);
-	WRITE_BOOL_FIELD(consider_partitionwise_join);
-	WRITE_BITMAPSET_FIELD(top_parent_relids);
-	WRITE_INT_FIELD(nparts);
-	WRITE_BOOL_FIELD(partbounds_merged);
-	WRITE_NODE_FIELD(partition_qual);
-	WRITE_BITMAPSET_FIELD(live_parts);
-	WRITE_BITMAPSET_FIELD(all_partrels);
-}
-
-static void
-_outIndexOptInfo(StringInfo str, const IndexOptInfo *node)
-{
-	WRITE_NODE_TYPE("INDEXOPTINFO");
-
-	WRITE_OID_FIELD(indexoid);
-	WRITE_OID_FIELD(reltablespace);
-	WRITE_UINT_FIELD(pages);
-	WRITE_FLOAT_FIELD(tuples);
-	WRITE_INT_FIELD(tree_height);
-	WRITE_INT_FIELD(ncolumns);
-	WRITE_INT_FIELD(nkeycolumns);
-	WRITE_INT_ARRAY(indexkeys, node->ncolumns);
-	WRITE_OID_ARRAY(indexcollations, node->nkeycolumns);
-	WRITE_OID_ARRAY(opfamily, node->nkeycolumns);
-	WRITE_OID_ARRAY(opcintype, node->nkeycolumns);
-	WRITE_OID_ARRAY(sortopfamily, node->nkeycolumns);
-	WRITE_BOOL_ARRAY(reverse_sort, node->nkeycolumns);
-	WRITE_BOOL_ARRAY(nulls_first, node->nkeycolumns);
-	WRITE_BOOL_ARRAY(canreturn, node->ncolumns);
-	WRITE_OID_FIELD(relam);
-	WRITE_NODE_FIELD(indpred);
-	WRITE_NODE_FIELD(indextlist);
-	WRITE_NODE_FIELD(indrestrictinfo);
-	WRITE_BOOL_FIELD(predOK);
-	WRITE_BOOL_FIELD(unique);
-	WRITE_BOOL_FIELD(immediate);
-	WRITE_BOOL_FIELD(hypothetical);
-	WRITE_BOOL_FIELD(amcanorderbyop);
-	WRITE_BOOL_FIELD(amoptionalkey);
-	WRITE_BOOL_FIELD(amsearcharray);
-	WRITE_BOOL_FIELD(amsearchnulls);
-	WRITE_BOOL_FIELD(amhasgettuple);
-	WRITE_BOOL_FIELD(amhasgetbitmap);
-	WRITE_BOOL_FIELD(amcanparallel);
-	WRITE_BOOL_FIELD(amcanmarkpos);
-}
-
-static void
-_outStatisticExtInfo(StringInfo str, const StatisticExtInfo *node)
-{
-	WRITE_NODE_TYPE("STATISTICEXTINFO");
-
-	WRITE_OID_FIELD(statOid);
-	WRITE_BOOL_FIELD(inherit);
-	WRITE_CHAR_FIELD(kind);
-	WRITE_BITMAPSET_FIELD(keys);
-	WRITE_NODE_FIELD(exprs);
-}
-
-static void
-_outJoinDomain(StringInfo str, const JoinDomain *node)
-{
-	WRITE_NODE_TYPE("JOINDOMAIN");
-
-	WRITE_BITMAPSET_FIELD(jd_relids);
-}
-
-static void
-_outEquivalenceMember(StringInfo str, const EquivalenceMember *node)
-{
-	WRITE_NODE_TYPE("EQUIVALENCEMEMBER");
-
-	WRITE_NODE_FIELD(em_expr);
-	WRITE_BITMAPSET_FIELD(em_relids);
-	WRITE_BOOL_FIELD(em_is_const);
-	WRITE_BOOL_FIELD(em_is_child);
-	WRITE_OID_FIELD(em_datatype);
-	WRITE_NODE_FIELD(em_jdomain);
-}
-
-static void
-_outPathKey(StringInfo str, const PathKey *node)
-{
-	WRITE_NODE_TYPE("PATHKEY");
-
-	WRITE_NODE_FIELD(pk_eclass);
-	WRITE_OID_FIELD(pk_opfamily);
-	WRITE_INT_FIELD(pk_strategy);
-	WRITE_BOOL_FIELD(pk_nulls_first);
-}
-
-static void
-_outPathTarget(StringInfo str, const PathTarget *node)
-{
-	WRITE_NODE_TYPE("PATHTARGET");
-
-	WRITE_NODE_FIELD(exprs);
-	WRITE_INDEX_ARRAY(sortgrouprefs, list_length(node->exprs));
-	WRITE_FLOAT_FIELD(cost.startup);
-	WRITE_FLOAT_FIELD(cost.per_tuple);
-	WRITE_INT_FIELD(width);
-	WRITE_ENUM_FIELD(has_volatile_expr, VolatileFunctionStatus);
-}
-
-static void
-_outParamPathInfo(StringInfo str, const ParamPathInfo *node)
-{
-	WRITE_NODE_TYPE("PARAMPATHINFO");
-
-	WRITE_BITMAPSET_FIELD(ppi_req_outer);
-	WRITE_FLOAT_FIELD(ppi_rows);
-	WRITE_NODE_FIELD(ppi_clauses);
-	WRITE_BITMAPSET_FIELD(ppi_serials);
-}
-
-static void
-_outPath(StringInfo str, const Path *node)
-{
-	WRITE_NODE_TYPE("PATH");
-
-	WRITE_ENUM_FIELD(pathtype, NodeTag);
-	appendStringInfoString(str, " :parent_relids ");
-	outBitmapset(str, node->parent->relids);
-	if (node->pathtarget != node->parent->reltarget)
-		WRITE_NODE_FIELD(pathtarget);
-	appendStringInfoString(str, " :required_outer ");
-	if (node->param_info)
-		outBitmapset(str, node->param_info->ppi_req_outer);
-	else
-		outBitmapset(str, NULL);
-	WRITE_BOOL_FIELD(parallel_aware);
-	WRITE_BOOL_FIELD(parallel_safe);
-	WRITE_INT_FIELD(parallel_workers);
-	WRITE_FLOAT_FIELD(rows);
-	WRITE_FLOAT_FIELD(startup_cost);
-	WRITE_FLOAT_FIELD(total_cost);
-	WRITE_NODE_FIELD(pathkeys);
-}
-
-static void
-_outIndexPath(StringInfo str, const IndexPath *node)
-{
-	WRITE_NODE_TYPE("INDEXPATH");
-
-	WRITE_ENUM_FIELD(path.pathtype, NodeTag);
-	appendStringInfoString(str, " :parent_relids ");
-	outBitmapset(str, node->path.parent->relids);
-	if (node->path.pathtarget != node->path.parent->reltarget)
-		WRITE_NODE_FIELD(path.pathtarget);
-	appendStringInfoString(str, " :required_outer ");
-	if (node->path.param_info)
-		outBitmapset(str, node->path.param_info->ppi_req_outer);
-	else
-		outBitmapset(str, NULL);
-	WRITE_BOOL_FIELD(path.parallel_aware);
-	WRITE_BOOL_FIELD(path.parallel_safe);
-	WRITE_INT_FIELD(path.parallel_workers);
-	WRITE_FLOAT_FIELD(path.rows);
-	WRITE_FLOAT_FIELD(path.startup_cost);
-	WRITE_FLOAT_FIELD(path.total_cost);
-	WRITE_NODE_FIELD(path.pathkeys);
-	WRITE_NODE_FIELD(indexinfo);
-	WRITE_NODE_FIELD(indexclauses);
-	WRITE_NODE_FIELD(indexorderbys);
-	WRITE_NODE_FIELD(indexorderbycols);
-	WRITE_ENUM_FIELD(indexscandir, ScanDirection);
-	WRITE_FLOAT_FIELD(indextotalcost);
-	WRITE_FLOAT_FIELD(indexselectivity);
-}
-
-static void
-_outIndexClause(StringInfo str, const IndexClause *node)
-{
-	WRITE_NODE_TYPE("INDEXCLAUSE");
-
-	WRITE_NODE_FIELD(rinfo);
-	WRITE_NODE_FIELD(indexquals);
-	WRITE_BOOL_FIELD(lossy);
-	WRITE_INT_FIELD(indexcol);
-	WRITE_NODE_FIELD(indexcols);
-}
-
-static void
-_outBitmapHeapPath(StringInfo str, const BitmapHeapPath *node)
-{
-	WRITE_NODE_TYPE("BITMAPHEAPPATH");
-
-	WRITE_ENUM_FIELD(path.pathtype, NodeTag);
-	appendStringInfoString(str, " :parent_relids ");
-	outBitmapset(str, node->path.parent->relids);
-	if (node->path.pathtarget != node->path.parent->reltarget)
-		WRITE_NODE_FIELD(path.pathtarget);
-	appendStringInfoString(str, " :required_outer ");
-	if (node->path.param_info)
-		outBitmapset(str, node->path.param_info->ppi_req_outer);
-	else
-		outBitmapset(str, NULL);
-	WRITE_BOOL_FIELD(path.parallel_aware);
-	WRITE_BOOL_FIELD(path.parallel_safe);
-	WRITE_INT_FIELD(path.parallel_workers);
-	WRITE_FLOAT_FIELD(path.rows);
-	WRITE_FLOAT_FIELD(path.startup_cost);
-	WRITE_FLOAT_FIELD(path.total_cost);
-	WRITE_NODE_FIELD(path.pathkeys);
-	WRITE_NODE_FIELD(bitmapqual);
-}
-
-static void
-_outBitmapAndPath(StringInfo str, const BitmapAndPath *node)
-{
-	WRITE_NODE_TYPE("BITMAPANDPATH");
-
-	WRITE_ENUM_FIELD(path.pathtype, NodeTag);
-	appendStringInfoString(str, " :parent_relids ");
-	outBitmapset(str, node->path.parent->relids);
-	if (node->path.pathtarget != node->path.parent->reltarget)
-		WRITE_NODE_FIELD(path.pathtarget);
-	appendStringInfoString(str, " :required_outer ");
-	if (node->path.param_info)
-		outBitmapset(str, node->path.param_info->ppi_req_outer);
-	else
-		outBitmapset(str, NULL);
-	WRITE_BOOL_FIELD(path.parallel_aware);
-	WRITE_BOOL_FIELD(path.parallel_safe);
-	WRITE_INT_FIELD(path.parallel_workers);
-	WRITE_FLOAT_FIELD(path.rows);
-	WRITE_FLOAT_FIELD(path.startup_cost);
-	WRITE_FLOAT_FIELD(path.total_cost);
-	WRITE_NODE_FIELD(path.pathkeys);
-	WRITE_NODE_FIELD(bitmapquals);
-	WRITE_FLOAT_FIELD(bitmapselectivity);
-}
-
-static void
-_outBitmapOrPath(StringInfo str, const BitmapOrPath *node)
-{
-	WRITE_NODE_TYPE("BITMAPORPATH");
-
-	WRITE_ENUM_FIELD(path.pathtype, NodeTag);
-	appendStringInfoString(str, " :parent_relids ");
-	outBitmapset(str, node->path.parent->relids);
-	if (node->path.pathtarget != node->path.parent->reltarget)
-		WRITE_NODE_FIELD(path.pathtarget);
-	appendStringInfoString(str, " :required_outer ");
-	if (node->path.param_info)
-		outBitmapset(str, node->path.param_info->ppi_req_outer);
-	else
-		outBitmapset(str, NULL);
-	WRITE_BOOL_FIELD(path.parallel_aware);
-	WRITE_BOOL_FIELD(path.parallel_safe);
-	WRITE_INT_FIELD(path.parallel_workers);
-	WRITE_FLOAT_FIELD(path.rows);
-	WRITE_FLOAT_FIELD(path.startup_cost);
-	WRITE_FLOAT_FIELD(path.total_cost);
-	WRITE_NODE_FIELD(path.pathkeys);
-	WRITE_NODE_FIELD(bitmapquals);
-	WRITE_FLOAT_FIELD(bitmapselectivity);
-}
-
-static void
-_outTidPath(StringInfo str, const TidPath *node)
-{
-	WRITE_NODE_TYPE("TIDPATH");
-
-	WRITE_ENUM_FIELD(path.pathtype, NodeTag);
-	appendStringInfoString(str, " :parent_relids ");
-	outBitmapset(str, node->path.parent->relids);
-	if (node->path.pathtarget != node->path.parent->reltarget)
-		WRITE_NODE_FIELD(path.pathtarget);
-	appendStringInfoString(str, " :required_outer ");
-	if (node->path.param_info)
-		outBitmapset(str, node->path.param_info->ppi_req_outer);
-	else
-		outBitmapset(str, NULL);
-	WRITE_BOOL_FIELD(path.parallel_aware);
-	WRITE_BOOL_FIELD(path.parallel_safe);
-	WRITE_INT_FIELD(path.parallel_workers);
-	WRITE_FLOAT_FIELD(path.rows);
-	WRITE_FLOAT_FIELD(path.startup_cost);
-	WRITE_FLOAT_FIELD(path.total_cost);
-	WRITE_NODE_FIELD(path.pathkeys);
-	WRITE_NODE_FIELD(tidquals);
-}
-
-static void
-_outTidRangePath(StringInfo str, const TidRangePath *node)
-{
-	WRITE_NODE_TYPE("TIDRANGEPATH");
-
-	WRITE_ENUM_FIELD(path.pathtype, NodeTag);
-	appendStringInfoString(str, " :parent_relids ");
-	outBitmapset(str, node->path.parent->relids);
-	if (node->path.pathtarget != node->path.parent->reltarget)
-		WRITE_NODE_FIELD(path.pathtarget);
-	appendStringInfoString(str, " :required_outer ");
-	if (node->path.param_info)
-		outBitmapset(str, node->path.param_info->ppi_req_outer);
-	else
-		outBitmapset(str, NULL);
-	WRITE_BOOL_FIELD(path.parallel_aware);
-	WRITE_BOOL_FIELD(path.parallel_safe);
-	WRITE_INT_FIELD(path.parallel_workers);
-	WRITE_FLOAT_FIELD(path.rows);
-	WRITE_FLOAT_FIELD(path.startup_cost);
-	WRITE_FLOAT_FIELD(path.total_cost);
-	WRITE_NODE_FIELD(path.pathkeys);
-	WRITE_NODE_FIELD(tidrangequals);
-}
-
-static void
-_outSubqueryScanPath(StringInfo str, const SubqueryScanPath *node)
-{
-	WRITE_NODE_TYPE("SUBQUERYSCANPATH");
-
-	WRITE_ENUM_FIELD(path.pathtype, NodeTag);
-	appendStringInfoString(str, " :parent_relids ");
-	outBitmapset(str, node->path.parent->relids);
-	if (node->path.pathtarget != node->path.parent->reltarget)
-		WRITE_NODE_FIELD(path.pathtarget);
-	appendStringInfoString(str, " :required_outer ");
-	if (node->path.param_info)
-		outBitmapset(str, node->path.param_info->ppi_req_outer);
-	else
-		outBitmapset(str, NULL);
-	WRITE_BOOL_FIELD(path.parallel_aware);
-	WRITE_BOOL_FIELD(path.parallel_safe);
-	WRITE_INT_FIELD(path.parallel_workers);
-	WRITE_FLOAT_FIELD(path.rows);
-	WRITE_FLOAT_FIELD(path.startup_cost);
-	WRITE_FLOAT_FIELD(path.total_cost);
-	WRITE_NODE_FIELD(path.pathkeys);
-	WRITE_NODE_FIELD(subpath);
-}
-
-static void
-_outForeignPath(StringInfo str, const ForeignPath *node)
-{
-	WRITE_NODE_TYPE("FOREIGNPATH");
-
-	WRITE_ENUM_FIELD(path.pathtype, NodeTag);
-	appendStringInfoString(str, " :parent_relids ");
-	outBitmapset(str, node->path.parent->relids);
-	if (node->path.pathtarget != node->path.parent->reltarget)
-		WRITE_NODE_FIELD(path.pathtarget);
-	appendStringInfoString(str, " :required_outer ");
-	if (node->path.param_info)
-		outBitmapset(str, node->path.param_info->ppi_req_outer);
-	else
-		outBitmapset(str, NULL);
-	WRITE_BOOL_FIELD(path.parallel_aware);
-	WRITE_BOOL_FIELD(path.parallel_safe);
-	WRITE_INT_FIELD(path.parallel_workers);
-	WRITE_FLOAT_FIELD(path.rows);
-	WRITE_FLOAT_FIELD(path.startup_cost);
-	WRITE_FLOAT_FIELD(path.total_cost);
-	WRITE_NODE_FIELD(path.pathkeys);
-	WRITE_NODE_FIELD(fdw_outerpath);
-	WRITE_NODE_FIELD(fdw_private);
-}
-
-static void
-_outCustomPath(StringInfo str, const CustomPath *node)
-{
-	WRITE_NODE_TYPE("CUSTOMPATH");
-
-	WRITE_ENUM_FIELD(path.pathtype, NodeTag);
-	appendStringInfoString(str, " :parent_relids ");
-	outBitmapset(str, node->path.parent->relids);
-	if (node->path.pathtarget != node->path.parent->reltarget)
-		WRITE_NODE_FIELD(path.pathtarget);
-	appendStringInfoString(str, " :required_outer ");
-	if (node->path.param_info)
-		outBitmapset(str, node->path.param_info->ppi_req_outer);
-	else
-		outBitmapset(str, NULL);
-	WRITE_BOOL_FIELD(path.parallel_aware);
-	WRITE_BOOL_FIELD(path.parallel_safe);
-	WRITE_INT_FIELD(path.parallel_workers);
-	WRITE_FLOAT_FIELD(path.rows);
-	WRITE_FLOAT_FIELD(path.startup_cost);
-	WRITE_FLOAT_FIELD(path.total_cost);
-	WRITE_NODE_FIELD(path.pathkeys);
-	WRITE_UINT_FIELD(flags);
-	WRITE_NODE_FIELD(custom_paths);
-	WRITE_NODE_FIELD(custom_private);
-
-	/* CustomName is a key to lookup CustomScanMethods */
-	appendStringInfoString(str, " :methods ");
-	outToken(str, node->methods->CustomName);
-}
-
-static void
-_outAppendPath(StringInfo str, const AppendPath *node)
-{
-	WRITE_NODE_TYPE("APPENDPATH");
-
-	WRITE_ENUM_FIELD(path.pathtype, NodeTag);
-	appendStringInfoString(str, " :parent_relids ");
-	outBitmapset(str, node->path.parent->relids);
-	if (node->path.pathtarget != node->path.parent->reltarget)
-		WRITE_NODE_FIELD(path.pathtarget);
-	appendStringInfoString(str, " :required_outer ");
-	if (node->path.param_info)
-		outBitmapset(str, node->path.param_info->ppi_req_outer);
-	else
-		outBitmapset(str, NULL);
-	WRITE_BOOL_FIELD(path.parallel_aware);
-	WRITE_BOOL_FIELD(path.parallel_safe);
-	WRITE_INT_FIELD(path.parallel_workers);
-	WRITE_FLOAT_FIELD(path.rows);
-	WRITE_FLOAT_FIELD(path.startup_cost);
-	WRITE_FLOAT_FIELD(path.total_cost);
-	WRITE_NODE_FIELD(path.pathkeys);
-	WRITE_NODE_FIELD(subpaths);
-	WRITE_INT_FIELD(first_partial_path);
-	WRITE_FLOAT_FIELD(limit_tuples);
-}
-
-static void
-_outMergeAppendPath(StringInfo str, const MergeAppendPath *node)
-{
-	WRITE_NODE_TYPE("MERGEAPPENDPATH");
-
-	WRITE_ENUM_FIELD(path.pathtype, NodeTag);
-	appendStringInfoString(str, " :parent_relids ");
-	outBitmapset(str, node->path.parent->relids);
-	if (node->path.pathtarget != node->path.parent->reltarget)
-		WRITE_NODE_FIELD(path.pathtarget);
-	appendStringInfoString(str, " :required_outer ");
-	if (node->path.param_info)
-		outBitmapset(str, node->path.param_info->ppi_req_outer);
-	else
-		outBitmapset(str, NULL);
-	WRITE_BOOL_FIELD(path.parallel_aware);
-	WRITE_BOOL_FIELD(path.parallel_safe);
-	WRITE_INT_FIELD(path.parallel_workers);
-	WRITE_FLOAT_FIELD(path.rows);
-	WRITE_FLOAT_FIELD(path.startup_cost);
-	WRITE_FLOAT_FIELD(path.total_cost);
-	WRITE_NODE_FIELD(path.pathkeys);
-	WRITE_NODE_FIELD(subpaths);
-	WRITE_FLOAT_FIELD(limit_tuples);
-}
-
-static void
-_outGroupResultPath(StringInfo str, const GroupResultPath *node)
-{
-	WRITE_NODE_TYPE("GROUPRESULTPATH");
-
-	WRITE_ENUM_FIELD(path.pathtype, NodeTag);
-	appendStringInfoString(str, " :parent_relids ");
-	outBitmapset(str, node->path.parent->relids);
-	if (node->path.pathtarget != node->path.parent->reltarget)
-		WRITE_NODE_FIELD(path.pathtarget);
-	appendStringInfoString(str, " :required_outer ");
-	if (node->path.param_info)
-		outBitmapset(str, node->path.param_info->ppi_req_outer);
-	else
-		outBitmapset(str, NULL);
-	WRITE_BOOL_FIELD(path.parallel_aware);
-	WRITE_BOOL_FIELD(path.parallel_safe);
-	WRITE_INT_FIELD(path.parallel_workers);
-	WRITE_FLOAT_FIELD(path.rows);
-	WRITE_FLOAT_FIELD(path.startup_cost);
-	WRITE_FLOAT_FIELD(path.total_cost);
-	WRITE_NODE_FIELD(path.pathkeys);
-	WRITE_NODE_FIELD(quals);
-}
-
-static void
-_outMaterialPath(StringInfo str, const MaterialPath *node)
-{
-	WRITE_NODE_TYPE("MATERIALPATH");
-
-	WRITE_ENUM_FIELD(path.pathtype, NodeTag);
-	appendStringInfoString(str, " :parent_relids ");
-	outBitmapset(str, node->path.parent->relids);
-	if (node->path.pathtarget != node->path.parent->reltarget)
-		WRITE_NODE_FIELD(path.pathtarget);
-	appendStringInfoString(str, " :required_outer ");
-	if (node->path.param_info)
-		outBitmapset(str, node->path.param_info->ppi_req_outer);
-	else
-		outBitmapset(str, NULL);
-	WRITE_BOOL_FIELD(path.parallel_aware);
-	WRITE_BOOL_FIELD(path.parallel_safe);
-	WRITE_INT_FIELD(path.parallel_workers);
-	WRITE_FLOAT_FIELD(path.rows);
-	WRITE_FLOAT_FIELD(path.startup_cost);
-	WRITE_FLOAT_FIELD(path.total_cost);
-	WRITE_NODE_FIELD(path.pathkeys);
-	WRITE_NODE_FIELD(subpath);
-}
-
-static void
-_outMemoizePath(StringInfo str, const MemoizePath *node)
-{
-	WRITE_NODE_TYPE("MEMOIZEPATH");
-
-	WRITE_ENUM_FIELD(path.pathtype, NodeTag);
-	appendStringInfoString(str, " :parent_relids ");
-	outBitmapset(str, node->path.parent->relids);
-	if (node->path.pathtarget != node->path.parent->reltarget)
-		WRITE_NODE_FIELD(path.pathtarget);
-	appendStringInfoString(str, " :required_outer ");
-	if (node->path.param_info)
-		outBitmapset(str, node->path.param_info->ppi_req_outer);
-	else
-		outBitmapset(str, NULL);
-	WRITE_BOOL_FIELD(path.parallel_aware);
-	WRITE_BOOL_FIELD(path.parallel_safe);
-	WRITE_INT_FIELD(path.parallel_workers);
-	WRITE_FLOAT_FIELD(path.rows);
-	WRITE_FLOAT_FIELD(path.startup_cost);
-	WRITE_FLOAT_FIELD(path.total_cost);
-	WRITE_NODE_FIELD(path.pathkeys);
-	WRITE_NODE_FIELD(subpath);
-	WRITE_NODE_FIELD(hash_operators);
-	WRITE_NODE_FIELD(param_exprs);
-	WRITE_BOOL_FIELD(singlerow);
-	WRITE_BOOL_FIELD(binary_mode);
-	WRITE_FLOAT_FIELD(calls);
-	WRITE_UINT_FIELD(est_entries);
-}
-
-static void
-_outUniquePath(StringInfo str, const UniquePath *node)
-{
-	WRITE_NODE_TYPE("UNIQUEPATH");
-
-	WRITE_ENUM_FIELD(path.pathtype, NodeTag);
-	appendStringInfoString(str, " :parent_relids ");
-	outBitmapset(str, node->path.parent->relids);
-	if (node->path.pathtarget != node->path.parent->reltarget)
-		WRITE_NODE_FIELD(path.pathtarget);
-	appendStringInfoString(str, " :required_outer ");
-	if (node->path.param_info)
-		outBitmapset(str, node->path.param_info->ppi_req_outer);
-	else
-		outBitmapset(str, NULL);
-	WRITE_BOOL_FIELD(path.parallel_aware);
-	WRITE_BOOL_FIELD(path.parallel_safe);
-	WRITE_INT_FIELD(path.parallel_workers);
-	WRITE_FLOAT_FIELD(path.rows);
-	WRITE_FLOAT_FIELD(path.startup_cost);
-	WRITE_FLOAT_FIELD(path.total_cost);
-	WRITE_NODE_FIELD(path.pathkeys);
-	WRITE_NODE_FIELD(subpath);
-	WRITE_ENUM_FIELD(umethod, UniquePathMethod);
-	WRITE_NODE_FIELD(in_operators);
-	WRITE_NODE_FIELD(uniq_exprs);
-}
-
-static void
-_outGatherPath(StringInfo str, const GatherPath *node)
-{
-	WRITE_NODE_TYPE("GATHERPATH");
-
-	WRITE_ENUM_FIELD(path.pathtype, NodeTag);
-	appendStringInfoString(str, " :parent_relids ");
-	outBitmapset(str, node->path.parent->relids);
-	if (node->path.pathtarget != node->path.parent->reltarget)
-		WRITE_NODE_FIELD(path.pathtarget);
-	appendStringInfoString(str, " :required_outer ");
-	if (node->path.param_info)
-		outBitmapset(str, node->path.param_info->ppi_req_outer);
-	else
-		outBitmapset(str, NULL);
-	WRITE_BOOL_FIELD(path.parallel_aware);
-	WRITE_BOOL_FIELD(path.parallel_safe);
-	WRITE_INT_FIELD(path.parallel_workers);
-	WRITE_FLOAT_FIELD(path.rows);
-	WRITE_FLOAT_FIELD(path.startup_cost);
-	WRITE_FLOAT_FIELD(path.total_cost);
-	WRITE_NODE_FIELD(path.pathkeys);
-	WRITE_NODE_FIELD(subpath);
-	WRITE_BOOL_FIELD(single_copy);
-	WRITE_INT_FIELD(num_workers);
-}
-
-static void
-_outGatherMergePath(StringInfo str, const GatherMergePath *node)
-{
-	WRITE_NODE_TYPE("GATHERMERGEPATH");
-
-	WRITE_ENUM_FIELD(path.pathtype, NodeTag);
-	appendStringInfoString(str, " :parent_relids ");
-	outBitmapset(str, node->path.parent->relids);
-	if (node->path.pathtarget != node->path.parent->reltarget)
-		WRITE_NODE_FIELD(path.pathtarget);
-	appendStringInfoString(str, " :required_outer ");
-	if (node->path.param_info)
-		outBitmapset(str, node->path.param_info->ppi_req_outer);
-	else
-		outBitmapset(str, NULL);
-	WRITE_BOOL_FIELD(path.parallel_aware);
-	WRITE_BOOL_FIELD(path.parallel_safe);
-	WRITE_INT_FIELD(path.parallel_workers);
-	WRITE_FLOAT_FIELD(path.rows);
-	WRITE_FLOAT_FIELD(path.startup_cost);
-	WRITE_FLOAT_FIELD(path.total_cost);
-	WRITE_NODE_FIELD(path.pathkeys);
-	WRITE_NODE_FIELD(subpath);
-	WRITE_INT_FIELD(num_workers);
-}
-
-static void
-_outNestPath(StringInfo str, const NestPath *node)
-{
-	WRITE_NODE_TYPE("NESTPATH");
-
-	WRITE_ENUM_FIELD(jpath.path.pathtype, NodeTag);
-	appendStringInfoString(str, " :parent_relids ");
-	outBitmapset(str, node->jpath.path.parent->relids);
-	if (node->jpath.path.pathtarget != node->jpath.path.parent->reltarget)
-		WRITE_NODE_FIELD(jpath.path.pathtarget);
-	appendStringInfoString(str, " :required_outer ");
-	if (node->jpath.path.param_info)
-		outBitmapset(str, node->jpath.path.param_info->ppi_req_outer);
-	else
-		outBitmapset(str, NULL);
-	WRITE_BOOL_FIELD(jpath.path.parallel_aware);
-	WRITE_BOOL_FIELD(jpath.path.parallel_safe);
-	WRITE_INT_FIELD(jpath.path.parallel_workers);
-	WRITE_FLOAT_FIELD(jpath.path.rows);
-	WRITE_FLOAT_FIELD(jpath.path.startup_cost);
-	WRITE_FLOAT_FIELD(jpath.path.total_cost);
-	WRITE_NODE_FIELD(jpath.path.pathkeys);
-	WRITE_ENUM_FIELD(jpath.jointype, JoinType);
-	WRITE_BOOL_FIELD(jpath.inner_unique);
-	WRITE_NODE_FIELD(jpath.outerjoinpath);
-	WRITE_NODE_FIELD(jpath.innerjoinpath);
-	WRITE_NODE_FIELD(jpath.joinrestrictinfo);
-}
-
-static void
-_outMergePath(StringInfo str, const MergePath *node)
-{
-	WRITE_NODE_TYPE("MERGEPATH");
-
-	WRITE_ENUM_FIELD(jpath.path.pathtype, NodeTag);
-	appendStringInfoString(str, " :parent_relids ");
-	outBitmapset(str, node->jpath.path.parent->relids);
-	if (node->jpath.path.pathtarget != node->jpath.path.parent->reltarget)
-		WRITE_NODE_FIELD(jpath.path.pathtarget);
-	appendStringInfoString(str, " :required_outer ");
-	if (node->jpath.path.param_info)
-		outBitmapset(str, node->jpath.path.param_info->ppi_req_outer);
-	else
-		outBitmapset(str, NULL);
-	WRITE_BOOL_FIELD(jpath.path.parallel_aware);
-	WRITE_BOOL_FIELD(jpath.path.parallel_safe);
-	WRITE_INT_FIELD(jpath.path.parallel_workers);
-	WRITE_FLOAT_FIELD(jpath.path.rows);
-	WRITE_FLOAT_FIELD(jpath.path.startup_cost);
-	WRITE_FLOAT_FIELD(jpath.path.total_cost);
-	WRITE_NODE_FIELD(jpath.path.pathkeys);
-	WRITE_ENUM_FIELD(jpath.jointype, JoinType);
-	WRITE_BOOL_FIELD(jpath.inner_unique);
-	WRITE_NODE_FIELD(jpath.outerjoinpath);
-	WRITE_NODE_FIELD(jpath.innerjoinpath);
-	WRITE_NODE_FIELD(jpath.joinrestrictinfo);
-	WRITE_NODE_FIELD(path_mergeclauses);
-	WRITE_NODE_FIELD(outersortkeys);
-	WRITE_NODE_FIELD(innersortkeys);
-	WRITE_BOOL_FIELD(skip_mark_restore);
-	WRITE_BOOL_FIELD(materialize_inner);
-}
-
-static void
-_outHashPath(StringInfo str, const HashPath *node)
-{
-	WRITE_NODE_TYPE("HASHPATH");
-
-	WRITE_ENUM_FIELD(jpath.path.pathtype, NodeTag);
-	appendStringInfoString(str, " :parent_relids ");
-	outBitmapset(str, node->jpath.path.parent->relids);
-	if (node->jpath.path.pathtarget != node->jpath.path.parent->reltarget)
-		WRITE_NODE_FIELD(jpath.path.pathtarget);
-	appendStringInfoString(str, " :required_outer ");
-	if (node->jpath.path.param_info)
-		outBitmapset(str, node->jpath.path.param_info->ppi_req_outer);
-	else
-		outBitmapset(str, NULL);
-	WRITE_BOOL_FIELD(jpath.path.parallel_aware);
-	WRITE_BOOL_FIELD(jpath.path.parallel_safe);
-	WRITE_INT_FIELD(jpath.path.parallel_workers);
-	WRITE_FLOAT_FIELD(jpath.path.rows);
-	WRITE_FLOAT_FIELD(jpath.path.startup_cost);
-	WRITE_FLOAT_FIELD(jpath.path.total_cost);
-	WRITE_NODE_FIELD(jpath.path.pathkeys);
-	WRITE_ENUM_FIELD(jpath.jointype, JoinType);
-	WRITE_BOOL_FIELD(jpath.inner_unique);
-	WRITE_NODE_FIELD(jpath.outerjoinpath);
-	WRITE_NODE_FIELD(jpath.innerjoinpath);
-	WRITE_NODE_FIELD(jpath.joinrestrictinfo);
-	WRITE_NODE_FIELD(path_hashclauses);
-	WRITE_INT_FIELD(num_batches);
-	WRITE_FLOAT_FIELD(inner_rows_total);
-}
-
-static void
-_outProjectionPath(StringInfo str, const ProjectionPath *node)
-{
-	WRITE_NODE_TYPE("PROJECTIONPATH");
-
-	WRITE_ENUM_FIELD(path.pathtype, NodeTag);
-	appendStringInfoString(str, " :parent_relids ");
-	outBitmapset(str, node->path.parent->relids);
-	if (node->path.pathtarget != node->path.parent->reltarget)
-		WRITE_NODE_FIELD(path.pathtarget);
-	appendStringInfoString(str, " :required_outer ");
-	if (node->path.param_info)
-		outBitmapset(str, node->path.param_info->ppi_req_outer);
-	else
-		outBitmapset(str, NULL);
-	WRITE_BOOL_FIELD(path.parallel_aware);
-	WRITE_BOOL_FIELD(path.parallel_safe);
-	WRITE_INT_FIELD(path.parallel_workers);
-	WRITE_FLOAT_FIELD(path.rows);
-	WRITE_FLOAT_FIELD(path.startup_cost);
-	WRITE_FLOAT_FIELD(path.total_cost);
-	WRITE_NODE_FIELD(path.pathkeys);
-	WRITE_NODE_FIELD(subpath);
-	WRITE_BOOL_FIELD(dummypp);
-}
-
-static void
-_outProjectSetPath(StringInfo str, const ProjectSetPath *node)
-{
-	WRITE_NODE_TYPE("PROJECTSETPATH");
-
-	WRITE_ENUM_FIELD(path.pathtype, NodeTag);
-	appendStringInfoString(str, " :parent_relids ");
-	outBitmapset(str, node->path.parent->relids);
-	if (node->path.pathtarget != node->path.parent->reltarget)
-		WRITE_NODE_FIELD(path.pathtarget);
-	appendStringInfoString(str, " :required_outer ");
-	if (node->path.param_info)
-		outBitmapset(str, node->path.param_info->ppi_req_outer);
-	else
-		outBitmapset(str, NULL);
-	WRITE_BOOL_FIELD(path.parallel_aware);
-	WRITE_BOOL_FIELD(path.parallel_safe);
-	WRITE_INT_FIELD(path.parallel_workers);
-	WRITE_FLOAT_FIELD(path.rows);
-	WRITE_FLOAT_FIELD(path.startup_cost);
-	WRITE_FLOAT_FIELD(path.total_cost);
-	WRITE_NODE_FIELD(path.pathkeys);
-	WRITE_NODE_FIELD(subpath);
-}
-
-static void
-_outSortPath(StringInfo str, const SortPath *node)
-{
-	WRITE_NODE_TYPE("SORTPATH");
-
-	WRITE_ENUM_FIELD(path.pathtype, NodeTag);
-	appendStringInfoString(str, " :parent_relids ");
-	outBitmapset(str, node->path.parent->relids);
-	if (node->path.pathtarget != node->path.parent->reltarget)
-		WRITE_NODE_FIELD(path.pathtarget);
-	appendStringInfoString(str, " :required_outer ");
-	if (node->path.param_info)
-		outBitmapset(str, node->path.param_info->ppi_req_outer);
-	else
-		outBitmapset(str, NULL);
-	WRITE_BOOL_FIELD(path.parallel_aware);
-	WRITE_BOOL_FIELD(path.parallel_safe);
-	WRITE_INT_FIELD(path.parallel_workers);
-	WRITE_FLOAT_FIELD(path.rows);
-	WRITE_FLOAT_FIELD(path.startup_cost);
-	WRITE_FLOAT_FIELD(path.total_cost);
-	WRITE_NODE_FIELD(path.pathkeys);
-	WRITE_NODE_FIELD(subpath);
-}
-
-static void
-_outIncrementalSortPath(StringInfo str, const IncrementalSortPath *node)
-{
-	WRITE_NODE_TYPE("INCREMENTALSORTPATH");
-
-	WRITE_ENUM_FIELD(spath.path.pathtype, NodeTag);
-	appendStringInfoString(str, " :parent_relids ");
-	outBitmapset(str, node->spath.path.parent->relids);
-	if (node->spath.path.pathtarget != node->spath.path.parent->reltarget)
-		WRITE_NODE_FIELD(spath.path.pathtarget);
-	appendStringInfoString(str, " :required_outer ");
-	if (node->spath.path.param_info)
-		outBitmapset(str, node->spath.path.param_info->ppi_req_outer);
-	else
-		outBitmapset(str, NULL);
-	WRITE_BOOL_FIELD(spath.path.parallel_aware);
-	WRITE_BOOL_FIELD(spath.path.parallel_safe);
-	WRITE_INT_FIELD(spath.path.parallel_workers);
-	WRITE_FLOAT_FIELD(spath.path.rows);
-	WRITE_FLOAT_FIELD(spath.path.startup_cost);
-	WRITE_FLOAT_FIELD(spath.path.total_cost);
-	WRITE_NODE_FIELD(spath.path.pathkeys);
-	WRITE_NODE_FIELD(spath.subpath);
-	WRITE_INT_FIELD(nPresortedCols);
-}
-
-static void
-_outGroupPath(StringInfo str, const GroupPath *node)
-{
-	WRITE_NODE_TYPE("GROUPPATH");
-
-	WRITE_ENUM_FIELD(path.pathtype, NodeTag);
-	appendStringInfoString(str, " :parent_relids ");
-	outBitmapset(str, node->path.parent->relids);
-	if (node->path.pathtarget != node->path.parent->reltarget)
-		WRITE_NODE_FIELD(path.pathtarget);
-	appendStringInfoString(str, " :required_outer ");
-	if (node->path.param_info)
-		outBitmapset(str, node->path.param_info->ppi_req_outer);
-	else
-		outBitmapset(str, NULL);
-	WRITE_BOOL_FIELD(path.parallel_aware);
-	WRITE_BOOL_FIELD(path.parallel_safe);
-	WRITE_INT_FIELD(path.parallel_workers);
-	WRITE_FLOAT_FIELD(path.rows);
-	WRITE_FLOAT_FIELD(path.startup_cost);
-	WRITE_FLOAT_FIELD(path.total_cost);
-	WRITE_NODE_FIELD(path.pathkeys);
-	WRITE_NODE_FIELD(subpath);
-	WRITE_NODE_FIELD(groupClause);
-	WRITE_NODE_FIELD(qual);
-}
-
-static void
-_outUpperUniquePath(StringInfo str, const UpperUniquePath *node)
-{
-	WRITE_NODE_TYPE("UPPERUNIQUEPATH");
-
-	WRITE_ENUM_FIELD(path.pathtype, NodeTag);
-	appendStringInfoString(str, " :parent_relids ");
-	outBitmapset(str, node->path.parent->relids);
-	if (node->path.pathtarget != node->path.parent->reltarget)
-		WRITE_NODE_FIELD(path.pathtarget);
-	appendStringInfoString(str, " :required_outer ");
-	if (node->path.param_info)
-		outBitmapset(str, node->path.param_info->ppi_req_outer);
-	else
-		outBitmapset(str, NULL);
-	WRITE_BOOL_FIELD(path.parallel_aware);
-	WRITE_BOOL_FIELD(path.parallel_safe);
-	WRITE_INT_FIELD(path.parallel_workers);
-	WRITE_FLOAT_FIELD(path.rows);
-	WRITE_FLOAT_FIELD(path.startup_cost);
-	WRITE_FLOAT_FIELD(path.total_cost);
-	WRITE_NODE_FIELD(path.pathkeys);
-	WRITE_NODE_FIELD(subpath);
-	WRITE_INT_FIELD(numkeys);
-}
-
-static void
-_outAggPath(StringInfo str, const AggPath *node)
-{
-	WRITE_NODE_TYPE("AGGPATH");
-
-	WRITE_ENUM_FIELD(path.pathtype, NodeTag);
-	appendStringInfoString(str, " :parent_relids ");
-	outBitmapset(str, node->path.parent->relids);
-	if (node->path.pathtarget != node->path.parent->reltarget)
-		WRITE_NODE_FIELD(path.pathtarget);
-	appendStringInfoString(str, " :required_outer ");
-	if (node->path.param_info)
-		outBitmapset(str, node->path.param_info->ppi_req_outer);
-	else
-		outBitmapset(str, NULL);
-	WRITE_BOOL_FIELD(path.parallel_aware);
-	WRITE_BOOL_FIELD(path.parallel_safe);
-	WRITE_INT_FIELD(path.parallel_workers);
-	WRITE_FLOAT_FIELD(path.rows);
-	WRITE_FLOAT_FIELD(path.startup_cost);
-	WRITE_FLOAT_FIELD(path.total_cost);
-	WRITE_NODE_FIELD(path.pathkeys);
-	WRITE_NODE_FIELD(subpath);
-	WRITE_ENUM_FIELD(aggstrategy, AggStrategy);
-	WRITE_ENUM_FIELD(aggsplit, AggSplit);
-	WRITE_FLOAT_FIELD(numGroups);
-	WRITE_UINT64_FIELD(transitionSpace);
-	WRITE_NODE_FIELD(groupClause);
-	WRITE_NODE_FIELD(qual);
-}
-
-static void
-_outGroupingSetData(StringInfo str, const GroupingSetData *node)
-{
-	WRITE_NODE_TYPE("GROUPINGSETDATA");
-
-	WRITE_NODE_FIELD(set);
-	WRITE_FLOAT_FIELD(numGroups);
-}
-
-static void
-_outRollupData(StringInfo str, const RollupData *node)
-{
-	WRITE_NODE_TYPE("ROLLUPDATA");
-
-	WRITE_NODE_FIELD(groupClause);
-	WRITE_NODE_FIELD(gsets);
-	WRITE_NODE_FIELD(gsets_data);
-	WRITE_FLOAT_FIELD(numGroups);
-	WRITE_BOOL_FIELD(hashable);
-	WRITE_BOOL_FIELD(is_hashed);
-}
-
-static void
-_outGroupingSetsPath(StringInfo str, const GroupingSetsPath *node)
-{
-	WRITE_NODE_TYPE("GROUPINGSETSPATH");
-
-	WRITE_ENUM_FIELD(path.pathtype, NodeTag);
-	appendStringInfoString(str, " :parent_relids ");
-	outBitmapset(str, node->path.parent->relids);
-	if (node->path.pathtarget != node->path.parent->reltarget)
-		WRITE_NODE_FIELD(path.pathtarget);
-	appendStringInfoString(str, " :required_outer ");
-	if (node->path.param_info)
-		outBitmapset(str, node->path.param_info->ppi_req_outer);
-	else
-		outBitmapset(str, NULL);
-	WRITE_BOOL_FIELD(path.parallel_aware);
-	WRITE_BOOL_FIELD(path.parallel_safe);
-	WRITE_INT_FIELD(path.parallel_workers);
-	WRITE_FLOAT_FIELD(path.rows);
-	WRITE_FLOAT_FIELD(path.startup_cost);
-	WRITE_FLOAT_FIELD(path.total_cost);
-	WRITE_NODE_FIELD(path.pathkeys);
-	WRITE_NODE_FIELD(subpath);
-	WRITE_ENUM_FIELD(aggstrategy, AggStrategy);
-	WRITE_NODE_FIELD(rollups);
-	WRITE_NODE_FIELD(qual);
-	WRITE_UINT64_FIELD(transitionSpace);
-}
-
-static void
-_outMinMaxAggPath(StringInfo str, const MinMaxAggPath *node)
-{
-	WRITE_NODE_TYPE("MINMAXAGGPATH");
-
-	WRITE_ENUM_FIELD(path.pathtype, NodeTag);
-	appendStringInfoString(str, " :parent_relids ");
-	outBitmapset(str, node->path.parent->relids);
-	if (node->path.pathtarget != node->path.parent->reltarget)
-		WRITE_NODE_FIELD(path.pathtarget);
-	appendStringInfoString(str, " :required_outer ");
-	if (node->path.param_info)
-		outBitmapset(str, node->path.param_info->ppi_req_outer);
-	else
-		outBitmapset(str, NULL);
-	WRITE_BOOL_FIELD(path.parallel_aware);
-	WRITE_BOOL_FIELD(path.parallel_safe);
-	WRITE_INT_FIELD(path.parallel_workers);
-	WRITE_FLOAT_FIELD(path.rows);
-	WRITE_FLOAT_FIELD(path.startup_cost);
-	WRITE_FLOAT_FIELD(path.total_cost);
-	WRITE_NODE_FIELD(path.pathkeys);
-	WRITE_NODE_FIELD(mmaggregates);
-	WRITE_NODE_FIELD(quals);
-}
-
-static void
-_outWindowAggPath(StringInfo str, const WindowAggPath *node)
-{
-	WRITE_NODE_TYPE("WINDOWAGGPATH");
-
-	WRITE_ENUM_FIELD(path.pathtype, NodeTag);
-	appendStringInfoString(str, " :parent_relids ");
-	outBitmapset(str, node->path.parent->relids);
-	if (node->path.pathtarget != node->path.parent->reltarget)
-		WRITE_NODE_FIELD(path.pathtarget);
-	appendStringInfoString(str, " :required_outer ");
-	if (node->path.param_info)
-		outBitmapset(str, node->path.param_info->ppi_req_outer);
-	else
-		outBitmapset(str, NULL);
-	WRITE_BOOL_FIELD(path.parallel_aware);
-	WRITE_BOOL_FIELD(path.parallel_safe);
-	WRITE_INT_FIELD(path.parallel_workers);
-	WRITE_FLOAT_FIELD(path.rows);
-	WRITE_FLOAT_FIELD(path.startup_cost);
-	WRITE_FLOAT_FIELD(path.total_cost);
-	WRITE_NODE_FIELD(path.pathkeys);
-	WRITE_NODE_FIELD(subpath);
-	WRITE_NODE_FIELD(winclause);
-	WRITE_NODE_FIELD(qual);
-	WRITE_BOOL_FIELD(topwindow);
-}
-
-static void
-_outSetOpPath(StringInfo str, const SetOpPath *node)
-{
-	WRITE_NODE_TYPE("SETOPPATH");
-
-	WRITE_ENUM_FIELD(path.pathtype, NodeTag);
-	appendStringInfoString(str, " :parent_relids ");
-	outBitmapset(str, node->path.parent->relids);
-	if (node->path.pathtarget != node->path.parent->reltarget)
-		WRITE_NODE_FIELD(path.pathtarget);
-	appendStringInfoString(str, " :required_outer ");
-	if (node->path.param_info)
-		outBitmapset(str, node->path.param_info->ppi_req_outer);
-	else
-		outBitmapset(str, NULL);
-	WRITE_BOOL_FIELD(path.parallel_aware);
-	WRITE_BOOL_FIELD(path.parallel_safe);
-	WRITE_INT_FIELD(path.parallel_workers);
-	WRITE_FLOAT_FIELD(path.rows);
-	WRITE_FLOAT_FIELD(path.startup_cost);
-	WRITE_FLOAT_FIELD(path.total_cost);
-	WRITE_NODE_FIELD(path.pathkeys);
-	WRITE_NODE_FIELD(subpath);
-	WRITE_ENUM_FIELD(cmd, SetOpCmd);
-	WRITE_ENUM_FIELD(strategy, SetOpStrategy);
-	WRITE_NODE_FIELD(distinctList);
-	WRITE_INT_FIELD(flagColIdx);
-	WRITE_INT_FIELD(firstFlag);
-	WRITE_FLOAT_FIELD(numGroups);
-}
-
-static void
-_outRecursiveUnionPath(StringInfo str, const RecursiveUnionPath *node)
-{
-	WRITE_NODE_TYPE("RECURSIVEUNIONPATH");
-
-	WRITE_ENUM_FIELD(path.pathtype, NodeTag);
-	appendStringInfoString(str, " :parent_relids ");
-	outBitmapset(str, node->path.parent->relids);
-	if (node->path.pathtarget != node->path.parent->reltarget)
-		WRITE_NODE_FIELD(path.pathtarget);
-	appendStringInfoString(str, " :required_outer ");
-	if (node->path.param_info)
-		outBitmapset(str, node->path.param_info->ppi_req_outer);
-	else
-		outBitmapset(str, NULL);
-	WRITE_BOOL_FIELD(path.parallel_aware);
-	WRITE_BOOL_FIELD(path.parallel_safe);
-	WRITE_INT_FIELD(path.parallel_workers);
-	WRITE_FLOAT_FIELD(path.rows);
-	WRITE_FLOAT_FIELD(path.startup_cost);
-	WRITE_FLOAT_FIELD(path.total_cost);
-	WRITE_NODE_FIELD(path.pathkeys);
-	WRITE_NODE_FIELD(leftpath);
-	WRITE_NODE_FIELD(rightpath);
-	WRITE_NODE_FIELD(distinctList);
-	WRITE_INT_FIELD(wtParam);
-	WRITE_FLOAT_FIELD(numGroups);
-}
-
-static void
-_outLockRowsPath(StringInfo str, const LockRowsPath *node)
-{
-	WRITE_NODE_TYPE("LOCKROWSPATH");
-
-	WRITE_ENUM_FIELD(path.pathtype, NodeTag);
-	appendStringInfoString(str, " :parent_relids ");
-	outBitmapset(str, node->path.parent->relids);
-	if (node->path.pathtarget != node->path.parent->reltarget)
-		WRITE_NODE_FIELD(path.pathtarget);
-	appendStringInfoString(str, " :required_outer ");
-	if (node->path.param_info)
-		outBitmapset(str, node->path.param_info->ppi_req_outer);
-	else
-		outBitmapset(str, NULL);
-	WRITE_BOOL_FIELD(path.parallel_aware);
-	WRITE_BOOL_FIELD(path.parallel_safe);
-	WRITE_INT_FIELD(path.parallel_workers);
-	WRITE_FLOAT_FIELD(path.rows);
-	WRITE_FLOAT_FIELD(path.startup_cost);
-	WRITE_FLOAT_FIELD(path.total_cost);
-	WRITE_NODE_FIELD(path.pathkeys);
-	WRITE_NODE_FIELD(subpath);
-	WRITE_NODE_FIELD(rowMarks);
-	WRITE_INT_FIELD(epqParam);
-}
-
-static void
-_outModifyTablePath(StringInfo str, const ModifyTablePath *node)
-{
-	WRITE_NODE_TYPE("MODIFYTABLEPATH");
-
-	WRITE_ENUM_FIELD(path.pathtype, NodeTag);
-	appendStringInfoString(str, " :parent_relids ");
-	outBitmapset(str, node->path.parent->relids);
-	if (node->path.pathtarget != node->path.parent->reltarget)
-		WRITE_NODE_FIELD(path.pathtarget);
-	appendStringInfoString(str, " :required_outer ");
-	if (node->path.param_info)
-		outBitmapset(str, node->path.param_info->ppi_req_outer);
-	else
-		outBitmapset(str, NULL);
-	WRITE_BOOL_FIELD(path.parallel_aware);
-	WRITE_BOOL_FIELD(path.parallel_safe);
-	WRITE_INT_FIELD(path.parallel_workers);
-	WRITE_FLOAT_FIELD(path.rows);
-	WRITE_FLOAT_FIELD(path.startup_cost);
-	WRITE_FLOAT_FIELD(path.total_cost);
-	WRITE_NODE_FIELD(path.pathkeys);
-	WRITE_NODE_FIELD(subpath);
-	WRITE_ENUM_FIELD(operation, CmdType);
-	WRITE_BOOL_FIELD(canSetTag);
-	WRITE_UINT_FIELD(nominalRelation);
-	WRITE_UINT_FIELD(rootRelation);
-	WRITE_BOOL_FIELD(partColsUpdated);
-	WRITE_NODE_FIELD(resultRelations);
-	WRITE_NODE_FIELD(updateColnosLists);
-	WRITE_NODE_FIELD(withCheckOptionLists);
-	WRITE_NODE_FIELD(returningLists);
-	WRITE_NODE_FIELD(rowMarks);
-	WRITE_NODE_FIELD(onconflict);
-	WRITE_INT_FIELD(epqParam);
-	WRITE_NODE_FIELD(mergeActionLists);
-}
-
-static void
-_outLimitPath(StringInfo str, const LimitPath *node)
-{
-	WRITE_NODE_TYPE("LIMITPATH");
-
-	WRITE_ENUM_FIELD(path.pathtype, NodeTag);
-	appendStringInfoString(str, " :parent_relids ");
-	outBitmapset(str, node->path.parent->relids);
-	if (node->path.pathtarget != node->path.parent->reltarget)
-		WRITE_NODE_FIELD(path.pathtarget);
-	appendStringInfoString(str, " :required_outer ");
-	if (node->path.param_info)
-		outBitmapset(str, node->path.param_info->ppi_req_outer);
-	else
-		outBitmapset(str, NULL);
-	WRITE_BOOL_FIELD(path.parallel_aware);
-	WRITE_BOOL_FIELD(path.parallel_safe);
-	WRITE_INT_FIELD(path.parallel_workers);
-	WRITE_FLOAT_FIELD(path.rows);
-	WRITE_FLOAT_FIELD(path.startup_cost);
-	WRITE_FLOAT_FIELD(path.total_cost);
-	WRITE_NODE_FIELD(path.pathkeys);
-	WRITE_NODE_FIELD(subpath);
-	WRITE_NODE_FIELD(limitOffset);
-	WRITE_NODE_FIELD(limitCount);
-	WRITE_ENUM_FIELD(limitOption, LimitOption);
-}
-
-static void
-_outRestrictInfo(StringInfo str, const RestrictInfo *node)
-{
-	WRITE_NODE_TYPE("RESTRICTINFO");
-
-	WRITE_NODE_FIELD(clause);
-	WRITE_BOOL_FIELD(is_pushed_down);
-	WRITE_BOOL_FIELD(can_join);
-	WRITE_BOOL_FIELD(pseudoconstant);
-	WRITE_BOOL_FIELD(has_clone);
-	WRITE_BOOL_FIELD(is_clone);
-	WRITE_BOOL_FIELD(leakproof);
-	WRITE_ENUM_FIELD(has_volatile, VolatileFunctionStatus);
-	WRITE_UINT_FIELD(security_level);
-	WRITE_INT_FIELD(num_base_rels);
-	WRITE_BITMAPSET_FIELD(clause_relids);
-	WRITE_BITMAPSET_FIELD(required_relids);
-	WRITE_BITMAPSET_FIELD(incompatible_relids);
-	WRITE_BITMAPSET_FIELD(outer_relids);
-	WRITE_BITMAPSET_FIELD(left_relids);
-	WRITE_BITMAPSET_FIELD(right_relids);
-	WRITE_NODE_FIELD(orclause);
-	WRITE_INT_FIELD(rinfo_serial);
-	WRITE_FLOAT_FIELD(eval_cost.startup);
-	WRITE_FLOAT_FIELD(eval_cost.per_tuple);
-	WRITE_FLOAT_FIELD(norm_selec);
-	WRITE_FLOAT_FIELD(outer_selec);
-	WRITE_NODE_FIELD(mergeopfamilies);
-	WRITE_NODE_FIELD(left_em);
-	WRITE_NODE_FIELD(right_em);
-	WRITE_BOOL_FIELD(outer_is_left);
-	WRITE_OID_FIELD(hashjoinoperator);
-	WRITE_FLOAT_FIELD(left_bucketsize);
-	WRITE_FLOAT_FIELD(right_bucketsize);
-	WRITE_FLOAT_FIELD(left_mcvfreq);
-	WRITE_FLOAT_FIELD(right_mcvfreq);
-	WRITE_OID_FIELD(left_hasheqoperator);
-	WRITE_OID_FIELD(right_hasheqoperator);
-}
-
-static void
-_outPlaceHolderVar(StringInfo str, const PlaceHolderVar *node)
-{
-	WRITE_NODE_TYPE("PLACEHOLDERVAR");
-
-	WRITE_NODE_FIELD(phexpr);
-	WRITE_BITMAPSET_FIELD(phrels);
-	WRITE_BITMAPSET_FIELD(phnullingrels);
-	WRITE_UINT_FIELD(phid);
-	WRITE_UINT_FIELD(phlevelsup);
-}
-
-static void
-_outSpecialJoinInfo(StringInfo str, const SpecialJoinInfo *node)
-{
-	WRITE_NODE_TYPE("SPECIALJOININFO");
-
-	WRITE_BITMAPSET_FIELD(min_lefthand);
-	WRITE_BITMAPSET_FIELD(min_righthand);
-	WRITE_BITMAPSET_FIELD(syn_lefthand);
-	WRITE_BITMAPSET_FIELD(syn_righthand);
-	WRITE_ENUM_FIELD(jointype, JoinType);
-	WRITE_UINT_FIELD(ojrelid);
-	WRITE_BITMAPSET_FIELD(commute_above_l);
-	WRITE_BITMAPSET_FIELD(commute_above_r);
-	WRITE_BITMAPSET_FIELD(commute_below_l);
-	WRITE_BITMAPSET_FIELD(commute_below_r);
-	WRITE_BOOL_FIELD(lhs_strict);
-	WRITE_BOOL_FIELD(semi_can_btree);
-	WRITE_BOOL_FIELD(semi_can_hash);
-	WRITE_NODE_FIELD(semi_operators);
-	WRITE_NODE_FIELD(semi_rhs_exprs);
-}
-
-static void
-_outOuterJoinClauseInfo(StringInfo str, const OuterJoinClauseInfo *node)
-{
-	WRITE_NODE_TYPE("OUTERJOINCLAUSEINFO");
-
-	WRITE_NODE_FIELD(rinfo);
-	WRITE_NODE_FIELD(sjinfo);
-}
-
-static void
-_outAppendRelInfo(StringInfo str, const AppendRelInfo *node)
-{
-	WRITE_NODE_TYPE("APPENDRELINFO");
-
-	WRITE_UINT_FIELD(parent_relid);
-	WRITE_UINT_FIELD(child_relid);
-	WRITE_OID_FIELD(parent_reltype);
-	WRITE_OID_FIELD(child_reltype);
-	WRITE_NODE_FIELD(translated_vars);
-	WRITE_INT_FIELD(num_child_cols);
-	WRITE_ATTRNUMBER_ARRAY(parent_colnos, node->num_child_cols);
-	WRITE_OID_FIELD(parent_reloid);
-}
-
-static void
-_outRowIdentityVarInfo(StringInfo str, const RowIdentityVarInfo *node)
-{
-	WRITE_NODE_TYPE("ROWIDENTITYVARINFO");
-
-	WRITE_NODE_FIELD(rowidvar);
-	WRITE_INT_FIELD(rowidwidth);
-	WRITE_STRING_FIELD(rowidname);
-	WRITE_BITMAPSET_FIELD(rowidrels);
-}
-
-static void
-_outPlaceHolderInfo(StringInfo str, const PlaceHolderInfo *node)
-{
-	WRITE_NODE_TYPE("PLACEHOLDERINFO");
-
-	WRITE_UINT_FIELD(phid);
-	WRITE_NODE_FIELD(ph_var);
-	WRITE_BITMAPSET_FIELD(ph_eval_at);
-	WRITE_BITMAPSET_FIELD(ph_lateral);
-	WRITE_BITMAPSET_FIELD(ph_needed);
-	WRITE_INT_FIELD(ph_width);
-}
-
-static void
-_outMinMaxAggInfo(StringInfo str, const MinMaxAggInfo *node)
-{
-	WRITE_NODE_TYPE("MINMAXAGGINFO");
-
-	WRITE_OID_FIELD(aggfnoid);
-	WRITE_OID_FIELD(aggsortop);
-	WRITE_NODE_FIELD(target);
-	WRITE_NODE_FIELD(path);
-	WRITE_FLOAT_FIELD(pathcost);
-	WRITE_NODE_FIELD(param);
-}
-
-static void
-_outPlannerParamItem(StringInfo str, const PlannerParamItem *node)
-{
-	WRITE_NODE_TYPE("PLANNERPARAMITEM");
-
-	WRITE_NODE_FIELD(item);
-	WRITE_INT_FIELD(paramId);
-}
-
-static void
-_outAggInfo(StringInfo str, const AggInfo *node)
-{
-	WRITE_NODE_TYPE("AGGINFO");
-
-	WRITE_NODE_FIELD(aggrefs);
-	WRITE_INT_FIELD(transno);
-	WRITE_BOOL_FIELD(shareable);
-	WRITE_OID_FIELD(finalfn_oid);
-}
-
-static void
-_outAggTransInfo(StringInfo str, const AggTransInfo *node)
-{
-	WRITE_NODE_TYPE("AGGTRANSINFO");
-
-	WRITE_NODE_FIELD(args);
-	WRITE_NODE_FIELD(aggfilter);
-	WRITE_OID_FIELD(transfn_oid);
-	WRITE_OID_FIELD(serialfn_oid);
-	WRITE_OID_FIELD(deserialfn_oid);
-	WRITE_OID_FIELD(combinefn_oid);
-	WRITE_OID_FIELD(aggtranstype);
-	WRITE_INT_FIELD(aggtranstypmod);
-	WRITE_INT_FIELD(transtypeLen);
-	WRITE_BOOL_FIELD(transtypeByVal);
-	WRITE_INT_FIELD(aggtransspace);
-	WRITE_BOOL_FIELD(initValueIsNull);
-}
-
-static void
-_outPlannedStmt(StringInfo str, const PlannedStmt *node)
-{
-	WRITE_NODE_TYPE("PLANNEDSTMT");
-
-	WRITE_ENUM_FIELD(commandType, CmdType);
-	WRITE_UINT64_FIELD(queryId);
-	WRITE_BOOL_FIELD(hasReturning);
-	WRITE_BOOL_FIELD(hasModifyingCTE);
-	WRITE_BOOL_FIELD(canSetTag);
-	WRITE_BOOL_FIELD(transientPlan);
-	WRITE_BOOL_FIELD(dependsOnRole);
-	WRITE_BOOL_FIELD(parallelModeNeeded);
-	WRITE_INT_FIELD(jitFlags);
-	WRITE_NODE_FIELD(planTree);
-	WRITE_NODE_FIELD(rtable);
-	WRITE_NODE_FIELD(permInfos);
-	WRITE_NODE_FIELD(resultRelations);
-	WRITE_NODE_FIELD(appendRelations);
-	WRITE_NODE_FIELD(subplans);
-	WRITE_BITMAPSET_FIELD(rewindPlanIDs);
-	WRITE_NODE_FIELD(rowMarks);
-	WRITE_NODE_FIELD(relationOids);
-	WRITE_NODE_FIELD(invalItems);
-	WRITE_NODE_FIELD(paramExecTypes);
-	WRITE_NODE_FIELD(utilityStmt);
-	WRITE_LOCATION_FIELD(stmt_location);
-	WRITE_INT_FIELD(stmt_len);
-}
-
-static void
-_outResult(StringInfo str, const Result *node)
-{
-	WRITE_NODE_TYPE("RESULT");
-
-	WRITE_FLOAT_FIELD(plan.startup_cost);
-	WRITE_FLOAT_FIELD(plan.total_cost);
-	WRITE_FLOAT_FIELD(plan.plan_rows);
-	WRITE_INT_FIELD(plan.plan_width);
-	WRITE_BOOL_FIELD(plan.parallel_aware);
-	WRITE_BOOL_FIELD(plan.parallel_safe);
-	WRITE_BOOL_FIELD(plan.async_capable);
-	WRITE_INT_FIELD(plan.plan_node_id);
-	WRITE_NODE_FIELD(plan.targetlist);
-	WRITE_NODE_FIELD(plan.qual);
-	WRITE_NODE_FIELD(plan.lefttree);
-	WRITE_NODE_FIELD(plan.righttree);
-	WRITE_NODE_FIELD(plan.initPlan);
-	WRITE_BITMAPSET_FIELD(plan.extParam);
-	WRITE_BITMAPSET_FIELD(plan.allParam);
-	WRITE_NODE_FIELD(resconstantqual);
-}
-
-static void
-_outProjectSet(StringInfo str, const ProjectSet *node)
-{
-	WRITE_NODE_TYPE("PROJECTSET");
-
-	WRITE_FLOAT_FIELD(plan.startup_cost);
-	WRITE_FLOAT_FIELD(plan.total_cost);
-	WRITE_FLOAT_FIELD(plan.plan_rows);
-	WRITE_INT_FIELD(plan.plan_width);
-	WRITE_BOOL_FIELD(plan.parallel_aware);
-	WRITE_BOOL_FIELD(plan.parallel_safe);
-	WRITE_BOOL_FIELD(plan.async_capable);
-	WRITE_INT_FIELD(plan.plan_node_id);
-	WRITE_NODE_FIELD(plan.targetlist);
-	WRITE_NODE_FIELD(plan.qual);
-	WRITE_NODE_FIELD(plan.lefttree);
-	WRITE_NODE_FIELD(plan.righttree);
-	WRITE_NODE_FIELD(plan.initPlan);
-	WRITE_BITMAPSET_FIELD(plan.extParam);
-	WRITE_BITMAPSET_FIELD(plan.allParam);
-}
-
-static void
-_outModifyTable(StringInfo str, const ModifyTable *node)
-{
-	WRITE_NODE_TYPE("MODIFYTABLE");
-
-	WRITE_FLOAT_FIELD(plan.startup_cost);
-	WRITE_FLOAT_FIELD(plan.total_cost);
-	WRITE_FLOAT_FIELD(plan.plan_rows);
-	WRITE_INT_FIELD(plan.plan_width);
-	WRITE_BOOL_FIELD(plan.parallel_aware);
-	WRITE_BOOL_FIELD(plan.parallel_safe);
-	WRITE_BOOL_FIELD(plan.async_capable);
-	WRITE_INT_FIELD(plan.plan_node_id);
-	WRITE_NODE_FIELD(plan.targetlist);
-	WRITE_NODE_FIELD(plan.qual);
-	WRITE_NODE_FIELD(plan.lefttree);
-	WRITE_NODE_FIELD(plan.righttree);
-	WRITE_NODE_FIELD(plan.initPlan);
-	WRITE_BITMAPSET_FIELD(plan.extParam);
-	WRITE_BITMAPSET_FIELD(plan.allParam);
-	WRITE_ENUM_FIELD(operation, CmdType);
-	WRITE_BOOL_FIELD(canSetTag);
-	WRITE_UINT_FIELD(nominalRelation);
-	WRITE_UINT_FIELD(rootRelation);
-	WRITE_BOOL_FIELD(partColsUpdated);
-	WRITE_NODE_FIELD(resultRelations);
-	WRITE_NODE_FIELD(updateColnosLists);
-	WRITE_NODE_FIELD(withCheckOptionLists);
-	WRITE_NODE_FIELD(returningLists);
-	WRITE_NODE_FIELD(fdwPrivLists);
-	WRITE_BITMAPSET_FIELD(fdwDirectModifyPlans);
-	WRITE_NODE_FIELD(rowMarks);
-	WRITE_INT_FIELD(epqParam);
-	WRITE_ENUM_FIELD(onConflictAction, OnConflictAction);
-	WRITE_NODE_FIELD(arbiterIndexes);
-	WRITE_NODE_FIELD(onConflictSet);
-	WRITE_NODE_FIELD(onConflictCols);
-	WRITE_NODE_FIELD(onConflictWhere);
-	WRITE_UINT_FIELD(exclRelRTI);
-	WRITE_NODE_FIELD(exclRelTlist);
-	WRITE_NODE_FIELD(mergeActionLists);
-}
-
-static void
-_outAppend(StringInfo str, const Append *node)
-{
-	WRITE_NODE_TYPE("APPEND");
-
-	WRITE_FLOAT_FIELD(plan.startup_cost);
-	WRITE_FLOAT_FIELD(plan.total_cost);
-	WRITE_FLOAT_FIELD(plan.plan_rows);
-	WRITE_INT_FIELD(plan.plan_width);
-	WRITE_BOOL_FIELD(plan.parallel_aware);
-	WRITE_BOOL_FIELD(plan.parallel_safe);
-	WRITE_BOOL_FIELD(plan.async_capable);
-	WRITE_INT_FIELD(plan.plan_node_id);
-	WRITE_NODE_FIELD(plan.targetlist);
-	WRITE_NODE_FIELD(plan.qual);
-	WRITE_NODE_FIELD(plan.lefttree);
-	WRITE_NODE_FIELD(plan.righttree);
-	WRITE_NODE_FIELD(plan.initPlan);
-	WRITE_BITMAPSET_FIELD(plan.extParam);
-	WRITE_BITMAPSET_FIELD(plan.allParam);
-	WRITE_BITMAPSET_FIELD(apprelids);
-	WRITE_NODE_FIELD(appendplans);
-	WRITE_INT_FIELD(nasyncplans);
-	WRITE_INT_FIELD(first_partial_plan);
-	WRITE_NODE_FIELD(part_prune_info);
-}
-
-static void
-_outMergeAppend(StringInfo str, const MergeAppend *node)
-{
-	WRITE_NODE_TYPE("MERGEAPPEND");
-
-	WRITE_FLOAT_FIELD(plan.startup_cost);
-	WRITE_FLOAT_FIELD(plan.total_cost);
-	WRITE_FLOAT_FIELD(plan.plan_rows);
-	WRITE_INT_FIELD(plan.plan_width);
-	WRITE_BOOL_FIELD(plan.parallel_aware);
-	WRITE_BOOL_FIELD(plan.parallel_safe);
-	WRITE_BOOL_FIELD(plan.async_capable);
-	WRITE_INT_FIELD(plan.plan_node_id);
-	WRITE_NODE_FIELD(plan.targetlist);
-	WRITE_NODE_FIELD(plan.qual);
-	WRITE_NODE_FIELD(plan.lefttree);
-	WRITE_NODE_FIELD(plan.righttree);
-	WRITE_NODE_FIELD(plan.initPlan);
-	WRITE_BITMAPSET_FIELD(plan.extParam);
-	WRITE_BITMAPSET_FIELD(plan.allParam);
-	WRITE_BITMAPSET_FIELD(apprelids);
-	WRITE_NODE_FIELD(mergeplans);
-	WRITE_INT_FIELD(numCols);
-	WRITE_ATTRNUMBER_ARRAY(sortColIdx, node->numCols);
-	WRITE_OID_ARRAY(sortOperators, node->numCols);
-	WRITE_OID_ARRAY(collations, node->numCols);
-	WRITE_BOOL_ARRAY(nullsFirst, node->numCols);
-	WRITE_NODE_FIELD(part_prune_info);
-}
-
-static void
-_outRecursiveUnion(StringInfo str, const RecursiveUnion *node)
-{
-	WRITE_NODE_TYPE("RECURSIVEUNION");
-
-	WRITE_FLOAT_FIELD(plan.startup_cost);
-	WRITE_FLOAT_FIELD(plan.total_cost);
-	WRITE_FLOAT_FIELD(plan.plan_rows);
-	WRITE_INT_FIELD(plan.plan_width);
-	WRITE_BOOL_FIELD(plan.parallel_aware);
-	WRITE_BOOL_FIELD(plan.parallel_safe);
-	WRITE_BOOL_FIELD(plan.async_capable);
-	WRITE_INT_FIELD(plan.plan_node_id);
-	WRITE_NODE_FIELD(plan.targetlist);
-	WRITE_NODE_FIELD(plan.qual);
-	WRITE_NODE_FIELD(plan.lefttree);
-	WRITE_NODE_FIELD(plan.righttree);
-	WRITE_NODE_FIELD(plan.initPlan);
-	WRITE_BITMAPSET_FIELD(plan.extParam);
-	WRITE_BITMAPSET_FIELD(plan.allParam);
-	WRITE_INT_FIELD(wtParam);
-	WRITE_INT_FIELD(numCols);
-	WRITE_ATTRNUMBER_ARRAY(dupColIdx, node->numCols);
-	WRITE_OID_ARRAY(dupOperators, node->numCols);
-	WRITE_OID_ARRAY(dupCollations, node->numCols);
-	WRITE_LONG_FIELD(numGroups);
-}
-
-static void
-_outBitmapAnd(StringInfo str, const BitmapAnd *node)
-{
-	WRITE_NODE_TYPE("BITMAPAND");
-
-	WRITE_FLOAT_FIELD(plan.startup_cost);
-	WRITE_FLOAT_FIELD(plan.total_cost);
-	WRITE_FLOAT_FIELD(plan.plan_rows);
-	WRITE_INT_FIELD(plan.plan_width);
-	WRITE_BOOL_FIELD(plan.parallel_aware);
-	WRITE_BOOL_FIELD(plan.parallel_safe);
-	WRITE_BOOL_FIELD(plan.async_capable);
-	WRITE_INT_FIELD(plan.plan_node_id);
-	WRITE_NODE_FIELD(plan.targetlist);
-	WRITE_NODE_FIELD(plan.qual);
-	WRITE_NODE_FIELD(plan.lefttree);
-	WRITE_NODE_FIELD(plan.righttree);
-	WRITE_NODE_FIELD(plan.initPlan);
-	WRITE_BITMAPSET_FIELD(plan.extParam);
-	WRITE_BITMAPSET_FIELD(plan.allParam);
-	WRITE_NODE_FIELD(bitmapplans);
-}
-
-static void
-_outBitmapOr(StringInfo str, const BitmapOr *node)
-{
-	WRITE_NODE_TYPE("BITMAPOR");
-
-	WRITE_FLOAT_FIELD(plan.startup_cost);
-	WRITE_FLOAT_FIELD(plan.total_cost);
-	WRITE_FLOAT_FIELD(plan.plan_rows);
-	WRITE_INT_FIELD(plan.plan_width);
-	WRITE_BOOL_FIELD(plan.parallel_aware);
-	WRITE_BOOL_FIELD(plan.parallel_safe);
-	WRITE_BOOL_FIELD(plan.async_capable);
-	WRITE_INT_FIELD(plan.plan_node_id);
-	WRITE_NODE_FIELD(plan.targetlist);
-	WRITE_NODE_FIELD(plan.qual);
-	WRITE_NODE_FIELD(plan.lefttree);
-	WRITE_NODE_FIELD(plan.righttree);
-	WRITE_NODE_FIELD(plan.initPlan);
-	WRITE_BITMAPSET_FIELD(plan.extParam);
-	WRITE_BITMAPSET_FIELD(plan.allParam);
-	WRITE_BOOL_FIELD(isshared);
-	WRITE_NODE_FIELD(bitmapplans);
-}
-
-static void
-_outSeqScan(StringInfo str, const SeqScan *node)
-{
-	WRITE_NODE_TYPE("SEQSCAN");
-
-	WRITE_FLOAT_FIELD(scan.plan.startup_cost);
-	WRITE_FLOAT_FIELD(scan.plan.total_cost);
-	WRITE_FLOAT_FIELD(scan.plan.plan_rows);
-	WRITE_INT_FIELD(scan.plan.plan_width);
-	WRITE_BOOL_FIELD(scan.plan.parallel_aware);
-	WRITE_BOOL_FIELD(scan.plan.parallel_safe);
-	WRITE_BOOL_FIELD(scan.plan.async_capable);
-	WRITE_INT_FIELD(scan.plan.plan_node_id);
-	WRITE_NODE_FIELD(scan.plan.targetlist);
-	WRITE_NODE_FIELD(scan.plan.qual);
-	WRITE_NODE_FIELD(scan.plan.lefttree);
-	WRITE_NODE_FIELD(scan.plan.righttree);
-	WRITE_NODE_FIELD(scan.plan.initPlan);
-	WRITE_BITMAPSET_FIELD(scan.plan.extParam);
-	WRITE_BITMAPSET_FIELD(scan.plan.allParam);
-	WRITE_UINT_FIELD(scan.scanrelid);
-}
-
-static void
-_outSampleScan(StringInfo str, const SampleScan *node)
-{
-	WRITE_NODE_TYPE("SAMPLESCAN");
-
-	WRITE_FLOAT_FIELD(scan.plan.startup_cost);
-	WRITE_FLOAT_FIELD(scan.plan.total_cost);
-	WRITE_FLOAT_FIELD(scan.plan.plan_rows);
-	WRITE_INT_FIELD(scan.plan.plan_width);
-	WRITE_BOOL_FIELD(scan.plan.parallel_aware);
-	WRITE_BOOL_FIELD(scan.plan.parallel_safe);
-	WRITE_BOOL_FIELD(scan.plan.async_capable);
-	WRITE_INT_FIELD(scan.plan.plan_node_id);
-	WRITE_NODE_FIELD(scan.plan.targetlist);
-	WRITE_NODE_FIELD(scan.plan.qual);
-	WRITE_NODE_FIELD(scan.plan.lefttree);
-	WRITE_NODE_FIELD(scan.plan.righttree);
-	WRITE_NODE_FIELD(scan.plan.initPlan);
-	WRITE_BITMAPSET_FIELD(scan.plan.extParam);
-	WRITE_BITMAPSET_FIELD(scan.plan.allParam);
-	WRITE_UINT_FIELD(scan.scanrelid);
-	WRITE_NODE_FIELD(tablesample);
-}
-
-static void
-_outIndexScan(StringInfo str, const IndexScan *node)
-{
-	WRITE_NODE_TYPE("INDEXSCAN");
-
-	WRITE_FLOAT_FIELD(scan.plan.startup_cost);
-	WRITE_FLOAT_FIELD(scan.plan.total_cost);
-	WRITE_FLOAT_FIELD(scan.plan.plan_rows);
-	WRITE_INT_FIELD(scan.plan.plan_width);
-	WRITE_BOOL_FIELD(scan.plan.parallel_aware);
-	WRITE_BOOL_FIELD(scan.plan.parallel_safe);
-	WRITE_BOOL_FIELD(scan.plan.async_capable);
-	WRITE_INT_FIELD(scan.plan.plan_node_id);
-	WRITE_NODE_FIELD(scan.plan.targetlist);
-	WRITE_NODE_FIELD(scan.plan.qual);
-	WRITE_NODE_FIELD(scan.plan.lefttree);
-	WRITE_NODE_FIELD(scan.plan.righttree);
-	WRITE_NODE_FIELD(scan.plan.initPlan);
-	WRITE_BITMAPSET_FIELD(scan.plan.extParam);
-	WRITE_BITMAPSET_FIELD(scan.plan.allParam);
-	WRITE_UINT_FIELD(scan.scanrelid);
-	WRITE_OID_FIELD(indexid);
-	WRITE_NODE_FIELD(indexqual);
-	WRITE_NODE_FIELD(indexqualorig);
-	WRITE_NODE_FIELD(indexorderby);
-	WRITE_NODE_FIELD(indexorderbyorig);
-	WRITE_NODE_FIELD(indexorderbyops);
-	WRITE_ENUM_FIELD(indexorderdir, ScanDirection);
-}
-
-static void
-_outIndexOnlyScan(StringInfo str, const IndexOnlyScan *node)
-{
-	WRITE_NODE_TYPE("INDEXONLYSCAN");
-
-	WRITE_FLOAT_FIELD(scan.plan.startup_cost);
-	WRITE_FLOAT_FIELD(scan.plan.total_cost);
-	WRITE_FLOAT_FIELD(scan.plan.plan_rows);
-	WRITE_INT_FIELD(scan.plan.plan_width);
-	WRITE_BOOL_FIELD(scan.plan.parallel_aware);
-	WRITE_BOOL_FIELD(scan.plan.parallel_safe);
-	WRITE_BOOL_FIELD(scan.plan.async_capable);
-	WRITE_INT_FIELD(scan.plan.plan_node_id);
-	WRITE_NODE_FIELD(scan.plan.targetlist);
-	WRITE_NODE_FIELD(scan.plan.qual);
-	WRITE_NODE_FIELD(scan.plan.lefttree);
-	WRITE_NODE_FIELD(scan.plan.righttree);
-	WRITE_NODE_FIELD(scan.plan.initPlan);
-	WRITE_BITMAPSET_FIELD(scan.plan.extParam);
-	WRITE_BITMAPSET_FIELD(scan.plan.allParam);
-	WRITE_UINT_FIELD(scan.scanrelid);
-	WRITE_OID_FIELD(indexid);
-	WRITE_NODE_FIELD(indexqual);
-	WRITE_NODE_FIELD(recheckqual);
-	WRITE_NODE_FIELD(indexorderby);
-	WRITE_NODE_FIELD(indextlist);
-	WRITE_ENUM_FIELD(indexorderdir, ScanDirection);
-}
-
-static void
-_outBitmapIndexScan(StringInfo str, const BitmapIndexScan *node)
-{
-	WRITE_NODE_TYPE("BITMAPINDEXSCAN");
-
-	WRITE_FLOAT_FIELD(scan.plan.startup_cost);
-	WRITE_FLOAT_FIELD(scan.plan.total_cost);
-	WRITE_FLOAT_FIELD(scan.plan.plan_rows);
-	WRITE_INT_FIELD(scan.plan.plan_width);
-	WRITE_BOOL_FIELD(scan.plan.parallel_aware);
-	WRITE_BOOL_FIELD(scan.plan.parallel_safe);
-	WRITE_BOOL_FIELD(scan.plan.async_capable);
-	WRITE_INT_FIELD(scan.plan.plan_node_id);
-	WRITE_NODE_FIELD(scan.plan.targetlist);
-	WRITE_NODE_FIELD(scan.plan.qual);
-	WRITE_NODE_FIELD(scan.plan.lefttree);
-	WRITE_NODE_FIELD(scan.plan.righttree);
-	WRITE_NODE_FIELD(scan.plan.initPlan);
-	WRITE_BITMAPSET_FIELD(scan.plan.extParam);
-	WRITE_BITMAPSET_FIELD(scan.plan.allParam);
-	WRITE_UINT_FIELD(scan.scanrelid);
-	WRITE_OID_FIELD(indexid);
-	WRITE_BOOL_FIELD(isshared);
-	WRITE_NODE_FIELD(indexqual);
-	WRITE_NODE_FIELD(indexqualorig);
-}
-
-static void
-_outBitmapHeapScan(StringInfo str, const BitmapHeapScan *node)
-{
-	WRITE_NODE_TYPE("BITMAPHEAPSCAN");
-
-	WRITE_FLOAT_FIELD(scan.plan.startup_cost);
-	WRITE_FLOAT_FIELD(scan.plan.total_cost);
-	WRITE_FLOAT_FIELD(scan.plan.plan_rows);
-	WRITE_INT_FIELD(scan.plan.plan_width);
-	WRITE_BOOL_FIELD(scan.plan.parallel_aware);
-	WRITE_BOOL_FIELD(scan.plan.parallel_safe);
-	WRITE_BOOL_FIELD(scan.plan.async_capable);
-	WRITE_INT_FIELD(scan.plan.plan_node_id);
-	WRITE_NODE_FIELD(scan.plan.targetlist);
-	WRITE_NODE_FIELD(scan.plan.qual);
-	WRITE_NODE_FIELD(scan.plan.lefttree);
-	WRITE_NODE_FIELD(scan.plan.righttree);
-	WRITE_NODE_FIELD(scan.plan.initPlan);
-	WRITE_BITMAPSET_FIELD(scan.plan.extParam);
-	WRITE_BITMAPSET_FIELD(scan.plan.allParam);
-	WRITE_UINT_FIELD(scan.scanrelid);
-	WRITE_NODE_FIELD(bitmapqualorig);
-}
-
-static void
-_outTidScan(StringInfo str, const TidScan *node)
-{
-	WRITE_NODE_TYPE("TIDSCAN");
-
-	WRITE_FLOAT_FIELD(scan.plan.startup_cost);
-	WRITE_FLOAT_FIELD(scan.plan.total_cost);
-	WRITE_FLOAT_FIELD(scan.plan.plan_rows);
-	WRITE_INT_FIELD(scan.plan.plan_width);
-	WRITE_BOOL_FIELD(scan.plan.parallel_aware);
-	WRITE_BOOL_FIELD(scan.plan.parallel_safe);
-	WRITE_BOOL_FIELD(scan.plan.async_capable);
-	WRITE_INT_FIELD(scan.plan.plan_node_id);
-	WRITE_NODE_FIELD(scan.plan.targetlist);
-	WRITE_NODE_FIELD(scan.plan.qual);
-	WRITE_NODE_FIELD(scan.plan.lefttree);
-	WRITE_NODE_FIELD(scan.plan.righttree);
-	WRITE_NODE_FIELD(scan.plan.initPlan);
-	WRITE_BITMAPSET_FIELD(scan.plan.extParam);
-	WRITE_BITMAPSET_FIELD(scan.plan.allParam);
-	WRITE_UINT_FIELD(scan.scanrelid);
-	WRITE_NODE_FIELD(tidquals);
-}
-
-static void
-_outTidRangeScan(StringInfo str, const TidRangeScan *node)
-{
-	WRITE_NODE_TYPE("TIDRANGESCAN");
-
-	WRITE_FLOAT_FIELD(scan.plan.startup_cost);
-	WRITE_FLOAT_FIELD(scan.plan.total_cost);
-	WRITE_FLOAT_FIELD(scan.plan.plan_rows);
-	WRITE_INT_FIELD(scan.plan.plan_width);
-	WRITE_BOOL_FIELD(scan.plan.parallel_aware);
-	WRITE_BOOL_FIELD(scan.plan.parallel_safe);
-	WRITE_BOOL_FIELD(scan.plan.async_capable);
-	WRITE_INT_FIELD(scan.plan.plan_node_id);
-	WRITE_NODE_FIELD(scan.plan.targetlist);
-	WRITE_NODE_FIELD(scan.plan.qual);
-	WRITE_NODE_FIELD(scan.plan.lefttree);
-	WRITE_NODE_FIELD(scan.plan.righttree);
-	WRITE_NODE_FIELD(scan.plan.initPlan);
-	WRITE_BITMAPSET_FIELD(scan.plan.extParam);
-	WRITE_BITMAPSET_FIELD(scan.plan.allParam);
-	WRITE_UINT_FIELD(scan.scanrelid);
-	WRITE_NODE_FIELD(tidrangequals);
-}
-
-static void
-_outSubqueryScan(StringInfo str, const SubqueryScan *node)
-{
-	WRITE_NODE_TYPE("SUBQUERYSCAN");
-
-	WRITE_FLOAT_FIELD(scan.plan.startup_cost);
-	WRITE_FLOAT_FIELD(scan.plan.total_cost);
-	WRITE_FLOAT_FIELD(scan.plan.plan_rows);
-	WRITE_INT_FIELD(scan.plan.plan_width);
-	WRITE_BOOL_FIELD(scan.plan.parallel_aware);
-	WRITE_BOOL_FIELD(scan.plan.parallel_safe);
-	WRITE_BOOL_FIELD(scan.plan.async_capable);
-	WRITE_INT_FIELD(scan.plan.plan_node_id);
-	WRITE_NODE_FIELD(scan.plan.targetlist);
-	WRITE_NODE_FIELD(scan.plan.qual);
-	WRITE_NODE_FIELD(scan.plan.lefttree);
-	WRITE_NODE_FIELD(scan.plan.righttree);
-	WRITE_NODE_FIELD(scan.plan.initPlan);
-	WRITE_BITMAPSET_FIELD(scan.plan.extParam);
-	WRITE_BITMAPSET_FIELD(scan.plan.allParam);
-	WRITE_UINT_FIELD(scan.scanrelid);
-	WRITE_NODE_FIELD(subplan);
-	WRITE_ENUM_FIELD(scanstatus, SubqueryScanStatus);
-}
-
-static void
-_outFunctionScan(StringInfo str, const FunctionScan *node)
-{
-	WRITE_NODE_TYPE("FUNCTIONSCAN");
-
-	WRITE_FLOAT_FIELD(scan.plan.startup_cost);
-	WRITE_FLOAT_FIELD(scan.plan.total_cost);
-	WRITE_FLOAT_FIELD(scan.plan.plan_rows);
-	WRITE_INT_FIELD(scan.plan.plan_width);
-	WRITE_BOOL_FIELD(scan.plan.parallel_aware);
-	WRITE_BOOL_FIELD(scan.plan.parallel_safe);
-	WRITE_BOOL_FIELD(scan.plan.async_capable);
-	WRITE_INT_FIELD(scan.plan.plan_node_id);
-	WRITE_NODE_FIELD(scan.plan.targetlist);
-	WRITE_NODE_FIELD(scan.plan.qual);
-	WRITE_NODE_FIELD(scan.plan.lefttree);
-	WRITE_NODE_FIELD(scan.plan.righttree);
-	WRITE_NODE_FIELD(scan.plan.initPlan);
-	WRITE_BITMAPSET_FIELD(scan.plan.extParam);
-	WRITE_BITMAPSET_FIELD(scan.plan.allParam);
-	WRITE_UINT_FIELD(scan.scanrelid);
-	WRITE_NODE_FIELD(functions);
-	WRITE_BOOL_FIELD(funcordinality);
-}
-
-static void
-_outValuesScan(StringInfo str, const ValuesScan *node)
-{
-	WRITE_NODE_TYPE("VALUESSCAN");
-
-	WRITE_FLOAT_FIELD(scan.plan.startup_cost);
-	WRITE_FLOAT_FIELD(scan.plan.total_cost);
-	WRITE_FLOAT_FIELD(scan.plan.plan_rows);
-	WRITE_INT_FIELD(scan.plan.plan_width);
-	WRITE_BOOL_FIELD(scan.plan.parallel_aware);
-	WRITE_BOOL_FIELD(scan.plan.parallel_safe);
-	WRITE_BOOL_FIELD(scan.plan.async_capable);
-	WRITE_INT_FIELD(scan.plan.plan_node_id);
-	WRITE_NODE_FIELD(scan.plan.targetlist);
-	WRITE_NODE_FIELD(scan.plan.qual);
-	WRITE_NODE_FIELD(scan.plan.lefttree);
-	WRITE_NODE_FIELD(scan.plan.righttree);
-	WRITE_NODE_FIELD(scan.plan.initPlan);
-	WRITE_BITMAPSET_FIELD(scan.plan.extParam);
-	WRITE_BITMAPSET_FIELD(scan.plan.allParam);
-	WRITE_UINT_FIELD(scan.scanrelid);
-	WRITE_NODE_FIELD(values_lists);
-}
-
-static void
-_outTableFuncScan(StringInfo str, const TableFuncScan *node)
-{
-	WRITE_NODE_TYPE("TABLEFUNCSCAN");
-
-	WRITE_FLOAT_FIELD(scan.plan.startup_cost);
-	WRITE_FLOAT_FIELD(scan.plan.total_cost);
-	WRITE_FLOAT_FIELD(scan.plan.plan_rows);
-	WRITE_INT_FIELD(scan.plan.plan_width);
-	WRITE_BOOL_FIELD(scan.plan.parallel_aware);
-	WRITE_BOOL_FIELD(scan.plan.parallel_safe);
-	WRITE_BOOL_FIELD(scan.plan.async_capable);
-	WRITE_INT_FIELD(scan.plan.plan_node_id);
-	WRITE_NODE_FIELD(scan.plan.targetlist);
-	WRITE_NODE_FIELD(scan.plan.qual);
-	WRITE_NODE_FIELD(scan.plan.lefttree);
-	WRITE_NODE_FIELD(scan.plan.righttree);
-	WRITE_NODE_FIELD(scan.plan.initPlan);
-	WRITE_BITMAPSET_FIELD(scan.plan.extParam);
-	WRITE_BITMAPSET_FIELD(scan.plan.allParam);
-	WRITE_UINT_FIELD(scan.scanrelid);
-	WRITE_NODE_FIELD(tablefunc);
-}
-
-static void
-_outCteScan(StringInfo str, const CteScan *node)
-{
-	WRITE_NODE_TYPE("CTESCAN");
-
-	WRITE_FLOAT_FIELD(scan.plan.startup_cost);
-	WRITE_FLOAT_FIELD(scan.plan.total_cost);
-	WRITE_FLOAT_FIELD(scan.plan.plan_rows);
-	WRITE_INT_FIELD(scan.plan.plan_width);
-	WRITE_BOOL_FIELD(scan.plan.parallel_aware);
-	WRITE_BOOL_FIELD(scan.plan.parallel_safe);
-	WRITE_BOOL_FIELD(scan.plan.async_capable);
-	WRITE_INT_FIELD(scan.plan.plan_node_id);
-	WRITE_NODE_FIELD(scan.plan.targetlist);
-	WRITE_NODE_FIELD(scan.plan.qual);
-	WRITE_NODE_FIELD(scan.plan.lefttree);
-	WRITE_NODE_FIELD(scan.plan.righttree);
-	WRITE_NODE_FIELD(scan.plan.initPlan);
-	WRITE_BITMAPSET_FIELD(scan.plan.extParam);
-	WRITE_BITMAPSET_FIELD(scan.plan.allParam);
-	WRITE_UINT_FIELD(scan.scanrelid);
-	WRITE_INT_FIELD(ctePlanId);
-	WRITE_INT_FIELD(cteParam);
-}
-
-static void
-_outNamedTuplestoreScan(StringInfo str, const NamedTuplestoreScan *node)
-{
-	WRITE_NODE_TYPE("NAMEDTUPLESTORESCAN");
-
-	WRITE_FLOAT_FIELD(scan.plan.startup_cost);
-	WRITE_FLOAT_FIELD(scan.plan.total_cost);
-	WRITE_FLOAT_FIELD(scan.plan.plan_rows);
-	WRITE_INT_FIELD(scan.plan.plan_width);
-	WRITE_BOOL_FIELD(scan.plan.parallel_aware);
-	WRITE_BOOL_FIELD(scan.plan.parallel_safe);
-	WRITE_BOOL_FIELD(scan.plan.async_capable);
-	WRITE_INT_FIELD(scan.plan.plan_node_id);
-	WRITE_NODE_FIELD(scan.plan.targetlist);
-	WRITE_NODE_FIELD(scan.plan.qual);
-	WRITE_NODE_FIELD(scan.plan.lefttree);
-	WRITE_NODE_FIELD(scan.plan.righttree);
-	WRITE_NODE_FIELD(scan.plan.initPlan);
-	WRITE_BITMAPSET_FIELD(scan.plan.extParam);
-	WRITE_BITMAPSET_FIELD(scan.plan.allParam);
-	WRITE_UINT_FIELD(scan.scanrelid);
-	WRITE_STRING_FIELD(enrname);
-}
-
-static void
-_outWorkTableScan(StringInfo str, const WorkTableScan *node)
-{
-	WRITE_NODE_TYPE("WORKTABLESCAN");
-
-	WRITE_FLOAT_FIELD(scan.plan.startup_cost);
-	WRITE_FLOAT_FIELD(scan.plan.total_cost);
-	WRITE_FLOAT_FIELD(scan.plan.plan_rows);
-	WRITE_INT_FIELD(scan.plan.plan_width);
-	WRITE_BOOL_FIELD(scan.plan.parallel_aware);
-	WRITE_BOOL_FIELD(scan.plan.parallel_safe);
-	WRITE_BOOL_FIELD(scan.plan.async_capable);
-	WRITE_INT_FIELD(scan.plan.plan_node_id);
-	WRITE_NODE_FIELD(scan.plan.targetlist);
-	WRITE_NODE_FIELD(scan.plan.qual);
-	WRITE_NODE_FIELD(scan.plan.lefttree);
-	WRITE_NODE_FIELD(scan.plan.righttree);
-	WRITE_NODE_FIELD(scan.plan.initPlan);
-	WRITE_BITMAPSET_FIELD(scan.plan.extParam);
-	WRITE_BITMAPSET_FIELD(scan.plan.allParam);
-	WRITE_UINT_FIELD(scan.scanrelid);
-	WRITE_INT_FIELD(wtParam);
-}
-
-static void
-_outForeignScan(StringInfo str, const ForeignScan *node)
-{
-	WRITE_NODE_TYPE("FOREIGNSCAN");
-
-	WRITE_FLOAT_FIELD(scan.plan.startup_cost);
-	WRITE_FLOAT_FIELD(scan.plan.total_cost);
-	WRITE_FLOAT_FIELD(scan.plan.plan_rows);
-	WRITE_INT_FIELD(scan.plan.plan_width);
-	WRITE_BOOL_FIELD(scan.plan.parallel_aware);
-	WRITE_BOOL_FIELD(scan.plan.parallel_safe);
-	WRITE_BOOL_FIELD(scan.plan.async_capable);
-	WRITE_INT_FIELD(scan.plan.plan_node_id);
-	WRITE_NODE_FIELD(scan.plan.targetlist);
-	WRITE_NODE_FIELD(scan.plan.qual);
-	WRITE_NODE_FIELD(scan.plan.lefttree);
-	WRITE_NODE_FIELD(scan.plan.righttree);
-	WRITE_NODE_FIELD(scan.plan.initPlan);
-	WRITE_BITMAPSET_FIELD(scan.plan.extParam);
-	WRITE_BITMAPSET_FIELD(scan.plan.allParam);
-	WRITE_UINT_FIELD(scan.scanrelid);
-	WRITE_ENUM_FIELD(operation, CmdType);
-	WRITE_UINT_FIELD(resultRelation);
-	WRITE_OID_FIELD(checkAsUser);
-	WRITE_OID_FIELD(fs_server);
-	WRITE_NODE_FIELD(fdw_exprs);
-	WRITE_NODE_FIELD(fdw_private);
-	WRITE_NODE_FIELD(fdw_scan_tlist);
-	WRITE_NODE_FIELD(fdw_recheck_quals);
-	WRITE_BITMAPSET_FIELD(fs_relids);
-	WRITE_BITMAPSET_FIELD(fs_base_relids);
-	WRITE_BOOL_FIELD(fsSystemCol);
-}
-
-static void
-_outCustomScan(StringInfo str, const CustomScan *node)
-{
-	WRITE_NODE_TYPE("CUSTOMSCAN");
-
-	WRITE_FLOAT_FIELD(scan.plan.startup_cost);
-	WRITE_FLOAT_FIELD(scan.plan.total_cost);
-	WRITE_FLOAT_FIELD(scan.plan.plan_rows);
-	WRITE_INT_FIELD(scan.plan.plan_width);
-	WRITE_BOOL_FIELD(scan.plan.parallel_aware);
-	WRITE_BOOL_FIELD(scan.plan.parallel_safe);
-	WRITE_BOOL_FIELD(scan.plan.async_capable);
-	WRITE_INT_FIELD(scan.plan.plan_node_id);
-	WRITE_NODE_FIELD(scan.plan.targetlist);
-	WRITE_NODE_FIELD(scan.plan.qual);
-	WRITE_NODE_FIELD(scan.plan.lefttree);
-	WRITE_NODE_FIELD(scan.plan.righttree);
-	WRITE_NODE_FIELD(scan.plan.initPlan);
-	WRITE_BITMAPSET_FIELD(scan.plan.extParam);
-	WRITE_BITMAPSET_FIELD(scan.plan.allParam);
-	WRITE_UINT_FIELD(scan.scanrelid);
-	WRITE_UINT_FIELD(flags);
-	WRITE_NODE_FIELD(custom_plans);
-	WRITE_NODE_FIELD(custom_exprs);
-	WRITE_NODE_FIELD(custom_private);
-	WRITE_NODE_FIELD(custom_scan_tlist);
-	WRITE_BITMAPSET_FIELD(custom_relids);
-
-	/* CustomName is a key to lookup CustomScanMethods */
-	appendStringInfoString(str, " :methods ");
-	outToken(str, node->methods->CustomName);
-}
-
-static void
-_outNestLoop(StringInfo str, const NestLoop *node)
-{
-	WRITE_NODE_TYPE("NESTLOOP");
-
-	WRITE_FLOAT_FIELD(join.plan.startup_cost);
-	WRITE_FLOAT_FIELD(join.plan.total_cost);
-	WRITE_FLOAT_FIELD(join.plan.plan_rows);
-	WRITE_INT_FIELD(join.plan.plan_width);
-	WRITE_BOOL_FIELD(join.plan.parallel_aware);
-	WRITE_BOOL_FIELD(join.plan.parallel_safe);
-	WRITE_BOOL_FIELD(join.plan.async_capable);
-	WRITE_INT_FIELD(join.plan.plan_node_id);
-	WRITE_NODE_FIELD(join.plan.targetlist);
-	WRITE_NODE_FIELD(join.plan.qual);
-	WRITE_NODE_FIELD(join.plan.lefttree);
-	WRITE_NODE_FIELD(join.plan.righttree);
-	WRITE_NODE_FIELD(join.plan.initPlan);
-	WRITE_BITMAPSET_FIELD(join.plan.extParam);
-	WRITE_BITMAPSET_FIELD(join.plan.allParam);
-	WRITE_ENUM_FIELD(join.jointype, JoinType);
-	WRITE_BOOL_FIELD(join.inner_unique);
-	WRITE_NODE_FIELD(join.joinqual);
-	WRITE_NODE_FIELD(nestParams);
-}
-
-static void
-_outNestLoopParam(StringInfo str, const NestLoopParam *node)
-{
-	WRITE_NODE_TYPE("NESTLOOPPARAM");
-
-	WRITE_INT_FIELD(paramno);
-	WRITE_NODE_FIELD(paramval);
-}
-
-static void
-_outMergeJoin(StringInfo str, const MergeJoin *node)
-{
-	WRITE_NODE_TYPE("MERGEJOIN");
-
-	WRITE_FLOAT_FIELD(join.plan.startup_cost);
-	WRITE_FLOAT_FIELD(join.plan.total_cost);
-	WRITE_FLOAT_FIELD(join.plan.plan_rows);
-	WRITE_INT_FIELD(join.plan.plan_width);
-	WRITE_BOOL_FIELD(join.plan.parallel_aware);
-	WRITE_BOOL_FIELD(join.plan.parallel_safe);
-	WRITE_BOOL_FIELD(join.plan.async_capable);
-	WRITE_INT_FIELD(join.plan.plan_node_id);
-	WRITE_NODE_FIELD(join.plan.targetlist);
-	WRITE_NODE_FIELD(join.plan.qual);
-	WRITE_NODE_FIELD(join.plan.lefttree);
-	WRITE_NODE_FIELD(join.plan.righttree);
-	WRITE_NODE_FIELD(join.plan.initPlan);
-	WRITE_BITMAPSET_FIELD(join.plan.extParam);
-	WRITE_BITMAPSET_FIELD(join.plan.allParam);
-	WRITE_ENUM_FIELD(join.jointype, JoinType);
-	WRITE_BOOL_FIELD(join.inner_unique);
-	WRITE_NODE_FIELD(join.joinqual);
-	WRITE_BOOL_FIELD(skip_mark_restore);
-	WRITE_NODE_FIELD(mergeclauses);
-	WRITE_OID_ARRAY(mergeFamilies, list_length(node->mergeclauses));
-	WRITE_OID_ARRAY(mergeCollations, list_length(node->mergeclauses));
-	WRITE_INT_ARRAY(mergeStrategies, list_length(node->mergeclauses));
-	WRITE_BOOL_ARRAY(mergeNullsFirst, list_length(node->mergeclauses));
-}
-
-static void
-_outHashJoin(StringInfo str, const HashJoin *node)
-{
-	WRITE_NODE_TYPE("HASHJOIN");
-
-	WRITE_FLOAT_FIELD(join.plan.startup_cost);
-	WRITE_FLOAT_FIELD(join.plan.total_cost);
-	WRITE_FLOAT_FIELD(join.plan.plan_rows);
-	WRITE_INT_FIELD(join.plan.plan_width);
-	WRITE_BOOL_FIELD(join.plan.parallel_aware);
-	WRITE_BOOL_FIELD(join.plan.parallel_safe);
-	WRITE_BOOL_FIELD(join.plan.async_capable);
-	WRITE_INT_FIELD(join.plan.plan_node_id);
-	WRITE_NODE_FIELD(join.plan.targetlist);
-	WRITE_NODE_FIELD(join.plan.qual);
-	WRITE_NODE_FIELD(join.plan.lefttree);
-	WRITE_NODE_FIELD(join.plan.righttree);
-	WRITE_NODE_FIELD(join.plan.initPlan);
-	WRITE_BITMAPSET_FIELD(join.plan.extParam);
-	WRITE_BITMAPSET_FIELD(join.plan.allParam);
-	WRITE_ENUM_FIELD(join.jointype, JoinType);
-	WRITE_BOOL_FIELD(join.inner_unique);
-	WRITE_NODE_FIELD(join.joinqual);
-	WRITE_NODE_FIELD(hashclauses);
-	WRITE_NODE_FIELD(hashoperators);
-	WRITE_NODE_FIELD(hashcollations);
-	WRITE_NODE_FIELD(hashkeys);
-}
-
-static void
-_outMaterial(StringInfo str, const Material *node)
-{
-	WRITE_NODE_TYPE("MATERIAL");
-
-	WRITE_FLOAT_FIELD(plan.startup_cost);
-	WRITE_FLOAT_FIELD(plan.total_cost);
-	WRITE_FLOAT_FIELD(plan.plan_rows);
-	WRITE_INT_FIELD(plan.plan_width);
-	WRITE_BOOL_FIELD(plan.parallel_aware);
-	WRITE_BOOL_FIELD(plan.parallel_safe);
-	WRITE_BOOL_FIELD(plan.async_capable);
-	WRITE_INT_FIELD(plan.plan_node_id);
-	WRITE_NODE_FIELD(plan.targetlist);
-	WRITE_NODE_FIELD(plan.qual);
-	WRITE_NODE_FIELD(plan.lefttree);
-	WRITE_NODE_FIELD(plan.righttree);
-	WRITE_NODE_FIELD(plan.initPlan);
-	WRITE_BITMAPSET_FIELD(plan.extParam);
-	WRITE_BITMAPSET_FIELD(plan.allParam);
-}
-
-static void
-_outMemoize(StringInfo str, const Memoize *node)
-{
-	WRITE_NODE_TYPE("MEMOIZE");
-
-	WRITE_FLOAT_FIELD(plan.startup_cost);
-	WRITE_FLOAT_FIELD(plan.total_cost);
-	WRITE_FLOAT_FIELD(plan.plan_rows);
-	WRITE_INT_FIELD(plan.plan_width);
-	WRITE_BOOL_FIELD(plan.parallel_aware);
-	WRITE_BOOL_FIELD(plan.parallel_safe);
-	WRITE_BOOL_FIELD(plan.async_capable);
-	WRITE_INT_FIELD(plan.plan_node_id);
-	WRITE_NODE_FIELD(plan.targetlist);
-	WRITE_NODE_FIELD(plan.qual);
-	WRITE_NODE_FIELD(plan.lefttree);
-	WRITE_NODE_FIELD(plan.righttree);
-	WRITE_NODE_FIELD(plan.initPlan);
-	WRITE_BITMAPSET_FIELD(plan.extParam);
-	WRITE_BITMAPSET_FIELD(plan.allParam);
-	WRITE_INT_FIELD(numKeys);
-	WRITE_OID_ARRAY(hashOperators, node->numKeys);
-	WRITE_OID_ARRAY(collations, node->numKeys);
-	WRITE_NODE_FIELD(param_exprs);
-	WRITE_BOOL_FIELD(singlerow);
-	WRITE_BOOL_FIELD(binary_mode);
-	WRITE_UINT_FIELD(est_entries);
-	WRITE_BITMAPSET_FIELD(keyparamids);
-}
-
-static void
-_outSort(StringInfo str, const Sort *node)
-{
-	WRITE_NODE_TYPE("SORT");
-
-	WRITE_FLOAT_FIELD(plan.startup_cost);
-	WRITE_FLOAT_FIELD(plan.total_cost);
-	WRITE_FLOAT_FIELD(plan.plan_rows);
-	WRITE_INT_FIELD(plan.plan_width);
-	WRITE_BOOL_FIELD(plan.parallel_aware);
-	WRITE_BOOL_FIELD(plan.parallel_safe);
-	WRITE_BOOL_FIELD(plan.async_capable);
-	WRITE_INT_FIELD(plan.plan_node_id);
-	WRITE_NODE_FIELD(plan.targetlist);
-	WRITE_NODE_FIELD(plan.qual);
-	WRITE_NODE_FIELD(plan.lefttree);
-	WRITE_NODE_FIELD(plan.righttree);
-	WRITE_NODE_FIELD(plan.initPlan);
-	WRITE_BITMAPSET_FIELD(plan.extParam);
-	WRITE_BITMAPSET_FIELD(plan.allParam);
-	WRITE_INT_FIELD(numCols);
-	WRITE_ATTRNUMBER_ARRAY(sortColIdx, node->numCols);
-	WRITE_OID_ARRAY(sortOperators, node->numCols);
-	WRITE_OID_ARRAY(collations, node->numCols);
-	WRITE_BOOL_ARRAY(nullsFirst, node->numCols);
-}
-
-static void
-_outIncrementalSort(StringInfo str, const IncrementalSort *node)
-{
-	WRITE_NODE_TYPE("INCREMENTALSORT");
-
-	WRITE_FLOAT_FIELD(sort.plan.startup_cost);
-	WRITE_FLOAT_FIELD(sort.plan.total_cost);
-	WRITE_FLOAT_FIELD(sort.plan.plan_rows);
-	WRITE_INT_FIELD(sort.plan.plan_width);
-	WRITE_BOOL_FIELD(sort.plan.parallel_aware);
-	WRITE_BOOL_FIELD(sort.plan.parallel_safe);
-	WRITE_BOOL_FIELD(sort.plan.async_capable);
-	WRITE_INT_FIELD(sort.plan.plan_node_id);
-	WRITE_NODE_FIELD(sort.plan.targetlist);
-	WRITE_NODE_FIELD(sort.plan.qual);
-	WRITE_NODE_FIELD(sort.plan.lefttree);
-	WRITE_NODE_FIELD(sort.plan.righttree);
-	WRITE_NODE_FIELD(sort.plan.initPlan);
-	WRITE_BITMAPSET_FIELD(sort.plan.extParam);
-	WRITE_BITMAPSET_FIELD(sort.plan.allParam);
-	WRITE_INT_FIELD(sort.numCols);
-	WRITE_ATTRNUMBER_ARRAY(sort.sortColIdx, node->sort.numCols);
-	WRITE_OID_ARRAY(sort.sortOperators, node->sort.numCols);
-	WRITE_OID_ARRAY(sort.collations, node->sort.numCols);
-	WRITE_BOOL_ARRAY(sort.nullsFirst, node->sort.numCols);
-	WRITE_INT_FIELD(nPresortedCols);
-}
-
-static void
-_outGroup(StringInfo str, const Group *node)
-{
-	WRITE_NODE_TYPE("GROUP");
-
-	WRITE_FLOAT_FIELD(plan.startup_cost);
-	WRITE_FLOAT_FIELD(plan.total_cost);
-	WRITE_FLOAT_FIELD(plan.plan_rows);
-	WRITE_INT_FIELD(plan.plan_width);
-	WRITE_BOOL_FIELD(plan.parallel_aware);
-	WRITE_BOOL_FIELD(plan.parallel_safe);
-	WRITE_BOOL_FIELD(plan.async_capable);
-	WRITE_INT_FIELD(plan.plan_node_id);
-	WRITE_NODE_FIELD(plan.targetlist);
-	WRITE_NODE_FIELD(plan.qual);
-	WRITE_NODE_FIELD(plan.lefttree);
-	WRITE_NODE_FIELD(plan.righttree);
-	WRITE_NODE_FIELD(plan.initPlan);
-	WRITE_BITMAPSET_FIELD(plan.extParam);
-	WRITE_BITMAPSET_FIELD(plan.allParam);
-	WRITE_INT_FIELD(numCols);
-	WRITE_ATTRNUMBER_ARRAY(grpColIdx, node->numCols);
-	WRITE_OID_ARRAY(grpOperators, node->numCols);
-	WRITE_OID_ARRAY(grpCollations, node->numCols);
-}
-
-static void
-_outAgg(StringInfo str, const Agg *node)
-{
-	WRITE_NODE_TYPE("AGG");
-
-	WRITE_FLOAT_FIELD(plan.startup_cost);
-	WRITE_FLOAT_FIELD(plan.total_cost);
-	WRITE_FLOAT_FIELD(plan.plan_rows);
-	WRITE_INT_FIELD(plan.plan_width);
-	WRITE_BOOL_FIELD(plan.parallel_aware);
-	WRITE_BOOL_FIELD(plan.parallel_safe);
-	WRITE_BOOL_FIELD(plan.async_capable);
-	WRITE_INT_FIELD(plan.plan_node_id);
-	WRITE_NODE_FIELD(plan.targetlist);
-	WRITE_NODE_FIELD(plan.qual);
-	WRITE_NODE_FIELD(plan.lefttree);
-	WRITE_NODE_FIELD(plan.righttree);
-	WRITE_NODE_FIELD(plan.initPlan);
-	WRITE_BITMAPSET_FIELD(plan.extParam);
-	WRITE_BITMAPSET_FIELD(plan.allParam);
-	WRITE_ENUM_FIELD(aggstrategy, AggStrategy);
-	WRITE_ENUM_FIELD(aggsplit, AggSplit);
-	WRITE_INT_FIELD(numCols);
-	WRITE_ATTRNUMBER_ARRAY(grpColIdx, node->numCols);
-	WRITE_OID_ARRAY(grpOperators, node->numCols);
-	WRITE_OID_ARRAY(grpCollations, node->numCols);
-	WRITE_LONG_FIELD(numGroups);
-	WRITE_UINT64_FIELD(transitionSpace);
-	WRITE_BITMAPSET_FIELD(aggParams);
-	WRITE_NODE_FIELD(groupingSets);
-	WRITE_NODE_FIELD(chain);
-}
-
-static void
-_outWindowAgg(StringInfo str, const WindowAgg *node)
-{
-	WRITE_NODE_TYPE("WINDOWAGG");
-
-	WRITE_FLOAT_FIELD(plan.startup_cost);
-	WRITE_FLOAT_FIELD(plan.total_cost);
-	WRITE_FLOAT_FIELD(plan.plan_rows);
-	WRITE_INT_FIELD(plan.plan_width);
-	WRITE_BOOL_FIELD(plan.parallel_aware);
-	WRITE_BOOL_FIELD(plan.parallel_safe);
-	WRITE_BOOL_FIELD(plan.async_capable);
-	WRITE_INT_FIELD(plan.plan_node_id);
-	WRITE_NODE_FIELD(plan.targetlist);
-	WRITE_NODE_FIELD(plan.qual);
-	WRITE_NODE_FIELD(plan.lefttree);
-	WRITE_NODE_FIELD(plan.righttree);
-	WRITE_NODE_FIELD(plan.initPlan);
-	WRITE_BITMAPSET_FIELD(plan.extParam);
-	WRITE_BITMAPSET_FIELD(plan.allParam);
-	WRITE_UINT_FIELD(winref);
-	WRITE_INT_FIELD(partNumCols);
-	WRITE_ATTRNUMBER_ARRAY(partColIdx, node->partNumCols);
-	WRITE_OID_ARRAY(partOperators, node->partNumCols);
-	WRITE_OID_ARRAY(partCollations, node->partNumCols);
-	WRITE_INT_FIELD(ordNumCols);
-	WRITE_ATTRNUMBER_ARRAY(ordColIdx, node->ordNumCols);
-	WRITE_OID_ARRAY(ordOperators, node->ordNumCols);
-	WRITE_OID_ARRAY(ordCollations, node->ordNumCols);
-	WRITE_INT_FIELD(frameOptions);
-	WRITE_NODE_FIELD(startOffset);
-	WRITE_NODE_FIELD(endOffset);
-	WRITE_NODE_FIELD(runCondition);
-	WRITE_NODE_FIELD(runConditionOrig);
-	WRITE_OID_FIELD(startInRangeFunc);
-	WRITE_OID_FIELD(endInRangeFunc);
-	WRITE_OID_FIELD(inRangeColl);
-	WRITE_BOOL_FIELD(inRangeAsc);
-	WRITE_BOOL_FIELD(inRangeNullsFirst);
-	WRITE_BOOL_FIELD(topWindow);
-}
-
-static void
-_outUnique(StringInfo str, const Unique *node)
-{
-	WRITE_NODE_TYPE("UNIQUE");
-
-	WRITE_FLOAT_FIELD(plan.startup_cost);
-	WRITE_FLOAT_FIELD(plan.total_cost);
-	WRITE_FLOAT_FIELD(plan.plan_rows);
-	WRITE_INT_FIELD(plan.plan_width);
-	WRITE_BOOL_FIELD(plan.parallel_aware);
-	WRITE_BOOL_FIELD(plan.parallel_safe);
-	WRITE_BOOL_FIELD(plan.async_capable);
-	WRITE_INT_FIELD(plan.plan_node_id);
-	WRITE_NODE_FIELD(plan.targetlist);
-	WRITE_NODE_FIELD(plan.qual);
-	WRITE_NODE_FIELD(plan.lefttree);
-	WRITE_NODE_FIELD(plan.righttree);
-	WRITE_NODE_FIELD(plan.initPlan);
-	WRITE_BITMAPSET_FIELD(plan.extParam);
-	WRITE_BITMAPSET_FIELD(plan.allParam);
-	WRITE_INT_FIELD(numCols);
-	WRITE_ATTRNUMBER_ARRAY(uniqColIdx, node->numCols);
-	WRITE_OID_ARRAY(uniqOperators, node->numCols);
-	WRITE_OID_ARRAY(uniqCollations, node->numCols);
-}
-
-static void
-_outGather(StringInfo str, const Gather *node)
-{
-	WRITE_NODE_TYPE("GATHER");
-
-	WRITE_FLOAT_FIELD(plan.startup_cost);
-	WRITE_FLOAT_FIELD(plan.total_cost);
-	WRITE_FLOAT_FIELD(plan.plan_rows);
-	WRITE_INT_FIELD(plan.plan_width);
-	WRITE_BOOL_FIELD(plan.parallel_aware);
-	WRITE_BOOL_FIELD(plan.parallel_safe);
-	WRITE_BOOL_FIELD(plan.async_capable);
-	WRITE_INT_FIELD(plan.plan_node_id);
-	WRITE_NODE_FIELD(plan.targetlist);
-	WRITE_NODE_FIELD(plan.qual);
-	WRITE_NODE_FIELD(plan.lefttree);
-	WRITE_NODE_FIELD(plan.righttree);
-	WRITE_NODE_FIELD(plan.initPlan);
-	WRITE_BITMAPSET_FIELD(plan.extParam);
-	WRITE_BITMAPSET_FIELD(plan.allParam);
-	WRITE_INT_FIELD(num_workers);
-	WRITE_INT_FIELD(rescan_param);
-	WRITE_BOOL_FIELD(single_copy);
-	WRITE_BOOL_FIELD(invisible);
-	WRITE_BITMAPSET_FIELD(initParam);
-}
-
-static void
-_outGatherMerge(StringInfo str, const GatherMerge *node)
-{
-	WRITE_NODE_TYPE("GATHERMERGE");
-
-	WRITE_FLOAT_FIELD(plan.startup_cost);
-	WRITE_FLOAT_FIELD(plan.total_cost);
-	WRITE_FLOAT_FIELD(plan.plan_rows);
-	WRITE_INT_FIELD(plan.plan_width);
-	WRITE_BOOL_FIELD(plan.parallel_aware);
-	WRITE_BOOL_FIELD(plan.parallel_safe);
-	WRITE_BOOL_FIELD(plan.async_capable);
-	WRITE_INT_FIELD(plan.plan_node_id);
-	WRITE_NODE_FIELD(plan.targetlist);
-	WRITE_NODE_FIELD(plan.qual);
-	WRITE_NODE_FIELD(plan.lefttree);
-	WRITE_NODE_FIELD(plan.righttree);
-	WRITE_NODE_FIELD(plan.initPlan);
-	WRITE_BITMAPSET_FIELD(plan.extParam);
-	WRITE_BITMAPSET_FIELD(plan.allParam);
-	WRITE_INT_FIELD(num_workers);
-	WRITE_INT_FIELD(rescan_param);
-	WRITE_INT_FIELD(numCols);
-	WRITE_ATTRNUMBER_ARRAY(sortColIdx, node->numCols);
-	WRITE_OID_ARRAY(sortOperators, node->numCols);
-	WRITE_OID_ARRAY(collations, node->numCols);
-	WRITE_BOOL_ARRAY(nullsFirst, node->numCols);
-	WRITE_BITMAPSET_FIELD(initParam);
-}
-
-static void
-_outHash(StringInfo str, const Hash *node)
-{
-	WRITE_NODE_TYPE("HASH");
-
-	WRITE_FLOAT_FIELD(plan.startup_cost);
-	WRITE_FLOAT_FIELD(plan.total_cost);
-	WRITE_FLOAT_FIELD(plan.plan_rows);
-	WRITE_INT_FIELD(plan.plan_width);
-	WRITE_BOOL_FIELD(plan.parallel_aware);
-	WRITE_BOOL_FIELD(plan.parallel_safe);
-	WRITE_BOOL_FIELD(plan.async_capable);
-	WRITE_INT_FIELD(plan.plan_node_id);
-	WRITE_NODE_FIELD(plan.targetlist);
-	WRITE_NODE_FIELD(plan.qual);
-	WRITE_NODE_FIELD(plan.lefttree);
-	WRITE_NODE_FIELD(plan.righttree);
-	WRITE_NODE_FIELD(plan.initPlan);
-	WRITE_BITMAPSET_FIELD(plan.extParam);
-	WRITE_BITMAPSET_FIELD(plan.allParam);
-	WRITE_NODE_FIELD(hashkeys);
-	WRITE_OID_FIELD(skewTable);
-	WRITE_INT_FIELD(skewColumn);
-	WRITE_BOOL_FIELD(skewInherit);
-	WRITE_FLOAT_FIELD(rows_total);
-}
-
-static void
-_outSetOp(StringInfo str, const SetOp *node)
-{
-	WRITE_NODE_TYPE("SETOP");
-
-	WRITE_FLOAT_FIELD(plan.startup_cost);
-	WRITE_FLOAT_FIELD(plan.total_cost);
-	WRITE_FLOAT_FIELD(plan.plan_rows);
-	WRITE_INT_FIELD(plan.plan_width);
-	WRITE_BOOL_FIELD(plan.parallel_aware);
-	WRITE_BOOL_FIELD(plan.parallel_safe);
-	WRITE_BOOL_FIELD(plan.async_capable);
-	WRITE_INT_FIELD(plan.plan_node_id);
-	WRITE_NODE_FIELD(plan.targetlist);
-	WRITE_NODE_FIELD(plan.qual);
-	WRITE_NODE_FIELD(plan.lefttree);
-	WRITE_NODE_FIELD(plan.righttree);
-	WRITE_NODE_FIELD(plan.initPlan);
-	WRITE_BITMAPSET_FIELD(plan.extParam);
-	WRITE_BITMAPSET_FIELD(plan.allParam);
-	WRITE_ENUM_FIELD(cmd, SetOpCmd);
-	WRITE_ENUM_FIELD(strategy, SetOpStrategy);
-	WRITE_INT_FIELD(numCols);
-	WRITE_ATTRNUMBER_ARRAY(dupColIdx, node->numCols);
-	WRITE_OID_ARRAY(dupOperators, node->numCols);
-	WRITE_OID_ARRAY(dupCollations, node->numCols);
-	WRITE_INT_FIELD(flagColIdx);
-	WRITE_INT_FIELD(firstFlag);
-	WRITE_LONG_FIELD(numGroups);
-}
-
-static void
-_outLockRows(StringInfo str, const LockRows *node)
-{
-	WRITE_NODE_TYPE("LOCKROWS");
-
-	WRITE_FLOAT_FIELD(plan.startup_cost);
-	WRITE_FLOAT_FIELD(plan.total_cost);
-	WRITE_FLOAT_FIELD(plan.plan_rows);
-	WRITE_INT_FIELD(plan.plan_width);
-	WRITE_BOOL_FIELD(plan.parallel_aware);
-	WRITE_BOOL_FIELD(plan.parallel_safe);
-	WRITE_BOOL_FIELD(plan.async_capable);
-	WRITE_INT_FIELD(plan.plan_node_id);
-	WRITE_NODE_FIELD(plan.targetlist);
-	WRITE_NODE_FIELD(plan.qual);
-	WRITE_NODE_FIELD(plan.lefttree);
-	WRITE_NODE_FIELD(plan.righttree);
-	WRITE_NODE_FIELD(plan.initPlan);
-	WRITE_BITMAPSET_FIELD(plan.extParam);
-	WRITE_BITMAPSET_FIELD(plan.allParam);
-	WRITE_NODE_FIELD(rowMarks);
-	WRITE_INT_FIELD(epqParam);
-}
-
-static void
-_outLimit(StringInfo str, const Limit *node)
-{
-	WRITE_NODE_TYPE("LIMIT");
-
-	WRITE_FLOAT_FIELD(plan.startup_cost);
-	WRITE_FLOAT_FIELD(plan.total_cost);
-	WRITE_FLOAT_FIELD(plan.plan_rows);
-	WRITE_INT_FIELD(plan.plan_width);
-	WRITE_BOOL_FIELD(plan.parallel_aware);
-	WRITE_BOOL_FIELD(plan.parallel_safe);
-	WRITE_BOOL_FIELD(plan.async_capable);
-	WRITE_INT_FIELD(plan.plan_node_id);
-	WRITE_NODE_FIELD(plan.targetlist);
-	WRITE_NODE_FIELD(plan.qual);
-	WRITE_NODE_FIELD(plan.lefttree);
-	WRITE_NODE_FIELD(plan.righttree);
-	WRITE_NODE_FIELD(plan.initPlan);
-	WRITE_BITMAPSET_FIELD(plan.extParam);
-	WRITE_BITMAPSET_FIELD(plan.allParam);
-	WRITE_NODE_FIELD(limitOffset);
-	WRITE_NODE_FIELD(limitCount);
-	WRITE_ENUM_FIELD(limitOption, LimitOption);
-	WRITE_INT_FIELD(uniqNumCols);
-	WRITE_ATTRNUMBER_ARRAY(uniqColIdx, node->uniqNumCols);
-	WRITE_OID_ARRAY(uniqOperators, node->uniqNumCols);
-	WRITE_OID_ARRAY(uniqCollations, node->uniqNumCols);
-}
-
-static void
-_outPlanRowMark(StringInfo str, const PlanRowMark *node)
-{
-	WRITE_NODE_TYPE("PLANROWMARK");
-
-	WRITE_UINT_FIELD(rti);
-	WRITE_UINT_FIELD(prti);
-	WRITE_UINT_FIELD(rowmarkId);
-	WRITE_ENUM_FIELD(markType, RowMarkType);
-	WRITE_INT_FIELD(allMarkTypes);
-	WRITE_ENUM_FIELD(strength, LockClauseStrength);
-	WRITE_ENUM_FIELD(waitPolicy, LockWaitPolicy);
-	WRITE_BOOL_FIELD(isParent);
-}
-
-static void
-_outPartitionPruneInfo(StringInfo str, const PartitionPruneInfo *node)
-{
-	WRITE_NODE_TYPE("PARTITIONPRUNEINFO");
-
-	WRITE_NODE_FIELD(prune_infos);
-	WRITE_BITMAPSET_FIELD(other_subplans);
-}
-
-static void
-_outPartitionedRelPruneInfo(StringInfo str, const PartitionedRelPruneInfo *node)
-{
-	WRITE_NODE_TYPE("PARTITIONEDRELPRUNEINFO");
-
-	WRITE_UINT_FIELD(rtindex);
-	WRITE_BITMAPSET_FIELD(present_parts);
-	WRITE_INT_FIELD(nparts);
-	WRITE_INT_ARRAY(subplan_map, node->nparts);
-	WRITE_INT_ARRAY(subpart_map, node->nparts);
-	WRITE_OID_ARRAY(relid_map, node->nparts);
-	WRITE_NODE_FIELD(initial_pruning_steps);
-	WRITE_NODE_FIELD(exec_pruning_steps);
-	WRITE_BITMAPSET_FIELD(execparamids);
-}
-
-static void
-_outPartitionPruneStepOp(StringInfo str, const PartitionPruneStepOp *node)
-{
-	WRITE_NODE_TYPE("PARTITIONPRUNESTEPOP");
-
-	WRITE_INT_FIELD(step.step_id);
-	WRITE_INT_FIELD(opstrategy);
-	WRITE_NODE_FIELD(exprs);
-	WRITE_NODE_FIELD(cmpfns);
-	WRITE_BITMAPSET_FIELD(nullkeys);
-}
-
-static void
-_outPartitionPruneStepCombine(StringInfo str, const PartitionPruneStepCombine *node)
-{
-	WRITE_NODE_TYPE("PARTITIONPRUNESTEPCOMBINE");
-
-	WRITE_INT_FIELD(step.step_id);
-	WRITE_ENUM_FIELD(combineOp, PartitionPruneCombineOp);
-	WRITE_NODE_FIELD(source_stepids);
-}
-
-static void
-_outPlanInvalItem(StringInfo str, const PlanInvalItem *node)
-{
-	WRITE_NODE_TYPE("PLANINVALITEM");
-
-	WRITE_INT_FIELD(cacheId);
-	WRITE_UINT_FIELD(hashValue);
-}
-
-static void
-_outForeignKeyCacheInfo(StringInfo str, const ForeignKeyCacheInfo *node)
-{
-	WRITE_NODE_TYPE("FOREIGNKEYCACHEINFO");
-
-	WRITE_OID_FIELD(conoid);
-	WRITE_OID_FIELD(conrelid);
-	WRITE_OID_FIELD(confrelid);
-	WRITE_INT_FIELD(nkeys);
-	WRITE_ATTRNUMBER_ARRAY(conkey, node->nkeys);
-	WRITE_ATTRNUMBER_ARRAY(confkey, node->nkeys);
-	WRITE_OID_ARRAY(conpfeqop, node->nkeys);
-}
diff --git a/src/backend/nodes/readfuncs.funcs.c b/src/backend/nodes/readfuncs.funcs.c
deleted file mode 100644
index 3c2d53530ef..00000000000
--- a/src/backend/nodes/readfuncs.funcs.c
+++ /dev/null
@@ -1,4896 +0,0 @@
-/*-------------------------------------------------------------------------
- *
- * readfuncs.funcs.c
- *    Generated node infrastructure code
- *
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
- * Portions Copyright (c) 1994, Regents of the University of California
- *
- * NOTES
- *  ******************************
- *  *** DO NOT EDIT THIS FILE! ***
- *  ******************************
- *
- *  It has been GENERATED by src/backend/nodes/gen_node_support.pl
- *
- *-------------------------------------------------------------------------
- */
-#include "access/amapi.h"
-#include "access/sdir.h"
-#include "access/tableam.h"
-#include "access/tsmapi.h"
-#include "commands/event_trigger.h"
-#include "commands/trigger.h"
-#include "executor/tuptable.h"
-#include "foreign/fdwapi.h"
-#include "nodes/bitmapset.h"
-#include "nodes/execnodes.h"
-#include "nodes/extensible.h"
-#include "nodes/lockoptions.h"
-#include "nodes/miscnodes.h"
-#include "nodes/nodes.h"
-#include "nodes/parsenodes.h"
-#include "nodes/pathnodes.h"
-#include "nodes/plannodes.h"
-#include "nodes/primnodes.h"
-#include "nodes/replnodes.h"
-#include "nodes/supportnodes.h"
-#include "nodes/value.h"
-#include "utils/rel.h"
-
-static Alias *
-_readAlias(void)
-{
-	READ_LOCALS(Alias);
-
-	READ_STRING_FIELD(aliasname);
-	READ_NODE_FIELD(colnames);
-
-	READ_DONE();
-}
-
-static RangeVar *
-_readRangeVar(void)
-{
-	READ_LOCALS(RangeVar);
-
-	READ_STRING_FIELD(catalogname);
-	READ_STRING_FIELD(schemaname);
-	READ_STRING_FIELD(relname);
-	READ_BOOL_FIELD(inh);
-	READ_CHAR_FIELD(relpersistence);
-	READ_NODE_FIELD(alias);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static TableFunc *
-_readTableFunc(void)
-{
-	READ_LOCALS(TableFunc);
-
-	READ_NODE_FIELD(ns_uris);
-	READ_NODE_FIELD(ns_names);
-	READ_NODE_FIELD(docexpr);
-	READ_NODE_FIELD(rowexpr);
-	READ_NODE_FIELD(colnames);
-	READ_NODE_FIELD(coltypes);
-	READ_NODE_FIELD(coltypmods);
-	READ_NODE_FIELD(colcollations);
-	READ_NODE_FIELD(colexprs);
-	READ_NODE_FIELD(coldefexprs);
-	READ_BITMAPSET_FIELD(notnulls);
-	READ_INT_FIELD(ordinalitycol);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static IntoClause *
-_readIntoClause(void)
-{
-	READ_LOCALS(IntoClause);
-
-	READ_NODE_FIELD(rel);
-	READ_NODE_FIELD(colNames);
-	READ_STRING_FIELD(accessMethod);
-	READ_NODE_FIELD(options);
-	READ_ENUM_FIELD(onCommit, OnCommitAction);
-	READ_STRING_FIELD(tableSpaceName);
-	READ_NODE_FIELD(viewQuery);
-	READ_BOOL_FIELD(skipData);
-	READ_NODE_FIELD(distributedBy);
-	READ_BOOL_FIELD(ivm);
-	READ_OID_FIELD(matviewOid);
-	READ_STRING_FIELD(enrname);
-	READ_BOOL_FIELD(dynamicTbl);
-	READ_STRING_FIELD(schedule);
-
-	READ_DONE();
-}
-
-static Var *
-_readVar(void)
-{
-	READ_LOCALS(Var);
-
-	READ_INT_FIELD(varno);
-	READ_INT_FIELD(varattno);
-	READ_OID_FIELD(vartype);
-	READ_INT_FIELD(vartypmod);
-	READ_OID_FIELD(varcollid);
-	READ_BITMAPSET_FIELD(varnullingrels);
-	READ_UINT_FIELD(varlevelsup);
-	READ_UINT_FIELD(varnosyn);
-	READ_INT_FIELD(varattnosyn);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static Param *
-_readParam(void)
-{
-	READ_LOCALS(Param);
-
-	READ_ENUM_FIELD(paramkind, ParamKind);
-	READ_INT_FIELD(paramid);
-	READ_OID_FIELD(paramtype);
-	READ_INT_FIELD(paramtypmod);
-	READ_OID_FIELD(paramcollid);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static Aggref *
-_readAggref(void)
-{
-	READ_LOCALS(Aggref);
-
-	READ_OID_FIELD(aggfnoid);
-	READ_OID_FIELD(aggtype);
-	READ_OID_FIELD(aggcollid);
-	READ_OID_FIELD(inputcollid);
-	READ_OID_FIELD(aggtranstype);
-	READ_NODE_FIELD(aggargtypes);
-	READ_NODE_FIELD(aggdirectargs);
-	READ_NODE_FIELD(args);
-	READ_NODE_FIELD(aggorder);
-	READ_NODE_FIELD(aggdistinct);
-	READ_NODE_FIELD(aggfilter);
-	READ_BOOL_FIELD(aggstar);
-	READ_BOOL_FIELD(aggvariadic);
-	READ_CHAR_FIELD(aggkind);
-	READ_BOOL_FIELD(aggpresorted);
-	READ_UINT_FIELD(agglevelsup);
-	READ_ENUM_FIELD(aggsplit, AggSplit);
-	READ_INT_FIELD(aggno);
-	READ_INT_FIELD(aggtransno);
-	READ_LOCATION_FIELD(location);
-	READ_INT_FIELD(agg_expr_id);
-
-	READ_DONE();
-}
-
-static GroupingFunc *
-_readGroupingFunc(void)
-{
-	READ_LOCALS(GroupingFunc);
-
-	READ_NODE_FIELD(args);
-	READ_NODE_FIELD(refs);
-	READ_NODE_FIELD(cols);
-	READ_UINT_FIELD(agglevelsup);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static WindowFunc *
-_readWindowFunc(void)
-{
-	READ_LOCALS(WindowFunc);
-
-	READ_OID_FIELD(winfnoid);
-	READ_OID_FIELD(wintype);
-	READ_OID_FIELD(wincollid);
-	READ_OID_FIELD(inputcollid);
-	READ_NODE_FIELD(args);
-	READ_NODE_FIELD(aggfilter);
-	READ_UINT_FIELD(winref);
-	READ_BOOL_FIELD(winstar);
-	READ_BOOL_FIELD(winagg);
-	READ_BOOL_FIELD(windistinct);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static SubscriptingRef *
-_readSubscriptingRef(void)
-{
-	READ_LOCALS(SubscriptingRef);
-
-	READ_OID_FIELD(refcontainertype);
-	READ_OID_FIELD(refelemtype);
-	READ_OID_FIELD(refrestype);
-	READ_INT_FIELD(reftypmod);
-	READ_OID_FIELD(refcollid);
-	READ_NODE_FIELD(refupperindexpr);
-	READ_NODE_FIELD(reflowerindexpr);
-	READ_NODE_FIELD(refexpr);
-	READ_NODE_FIELD(refassgnexpr);
-
-	READ_DONE();
-}
-
-static FuncExpr *
-_readFuncExpr(void)
-{
-	READ_LOCALS(FuncExpr);
-
-	READ_OID_FIELD(funcid);
-	READ_OID_FIELD(funcresulttype);
-	READ_BOOL_FIELD(funcretset);
-	READ_BOOL_FIELD(funcvariadic);
-	READ_ENUM_FIELD(funcformat, CoercionForm);
-	READ_OID_FIELD(funccollid);
-	READ_OID_FIELD(inputcollid);
-	READ_NODE_FIELD(args);
-	READ_BOOL_FIELD(is_tablefunc);  /* GPDB */
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static NamedArgExpr *
-_readNamedArgExpr(void)
-{
-	READ_LOCALS(NamedArgExpr);
-
-	READ_NODE_FIELD(arg);
-	READ_STRING_FIELD(name);
-	READ_INT_FIELD(argnumber);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static OpExpr *
-_readOpExpr(void)
-{
-	READ_LOCALS(OpExpr);
-
-	READ_OID_FIELD(opno);
-	READ_OID_FIELD(opfuncid);
-	READ_OID_FIELD(opresulttype);
-	READ_BOOL_FIELD(opretset);
-	READ_OID_FIELD(opcollid);
-	READ_OID_FIELD(inputcollid);
-	READ_NODE_FIELD(args);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static DistinctExpr *
-_readDistinctExpr(void)
-{
-	READ_LOCALS(DistinctExpr);
-
-	READ_OID_FIELD(opno);
-	READ_OID_FIELD(opfuncid);
-	READ_OID_FIELD(opresulttype);
-	READ_BOOL_FIELD(opretset);
-	READ_OID_FIELD(opcollid);
-	READ_OID_FIELD(inputcollid);
-	READ_NODE_FIELD(args);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static NullIfExpr *
-_readNullIfExpr(void)
-{
-	READ_LOCALS(NullIfExpr);
-
-	READ_OID_FIELD(opno);
-	READ_OID_FIELD(opfuncid);
-	READ_OID_FIELD(opresulttype);
-	READ_BOOL_FIELD(opretset);
-	READ_OID_FIELD(opcollid);
-	READ_OID_FIELD(inputcollid);
-	READ_NODE_FIELD(args);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static ScalarArrayOpExpr *
-_readScalarArrayOpExpr(void)
-{
-	READ_LOCALS(ScalarArrayOpExpr);
-
-	READ_OID_FIELD(opno);
-	READ_OID_FIELD(opfuncid);
-	READ_OID_FIELD(hashfuncid);
-	READ_OID_FIELD(negfuncid);
-	READ_BOOL_FIELD(useOr);
-	READ_OID_FIELD(inputcollid);
-	READ_NODE_FIELD(args);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static SubLink *
-_readSubLink(void)
-{
-	READ_LOCALS(SubLink);
-
-	READ_ENUM_FIELD(subLinkType, SubLinkType);
-	READ_INT_FIELD(subLinkId);
-	READ_NODE_FIELD(testexpr);
-	READ_NODE_FIELD(operName);
-	READ_NODE_FIELD(subselect);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static SubPlan *
-_readSubPlan(void)
-{
-	READ_LOCALS(SubPlan);
-
-	READ_ENUM_FIELD(subLinkType, SubLinkType);
-	READ_NODE_FIELD(testexpr);
-	READ_NODE_FIELD(paramIds);
-	READ_INT_FIELD(plan_id);
-	READ_STRING_FIELD(plan_name);
-	READ_OID_FIELD(firstColType);
-	READ_INT_FIELD(firstColTypmod);
-	READ_OID_FIELD(firstColCollation);
-	READ_BOOL_FIELD(useHashTable);
-	READ_BOOL_FIELD(unknownEqFalse);
-	READ_BOOL_FIELD(parallel_safe);
-	READ_NODE_FIELD(setParam);
-	READ_NODE_FIELD(parParam);
-	READ_NODE_FIELD(args);
-	READ_FLOAT_FIELD(startup_cost);
-	READ_FLOAT_FIELD(per_call_cost);
-
-	READ_DONE();
-}
-
-static AlternativeSubPlan *
-_readAlternativeSubPlan(void)
-{
-	READ_LOCALS(AlternativeSubPlan);
-
-	READ_NODE_FIELD(subplans);
-
-	READ_DONE();
-}
-
-static FieldSelect *
-_readFieldSelect(void)
-{
-	READ_LOCALS(FieldSelect);
-
-	READ_NODE_FIELD(arg);
-	READ_INT_FIELD(fieldnum);
-	READ_OID_FIELD(resulttype);
-	READ_INT_FIELD(resulttypmod);
-	READ_OID_FIELD(resultcollid);
-
-	READ_DONE();
-}
-
-static FieldStore *
-_readFieldStore(void)
-{
-	READ_LOCALS(FieldStore);
-
-	READ_NODE_FIELD(arg);
-	READ_NODE_FIELD(newvals);
-	READ_NODE_FIELD(fieldnums);
-	READ_OID_FIELD(resulttype);
-
-	READ_DONE();
-}
-
-static RelabelType *
-_readRelabelType(void)
-{
-	READ_LOCALS(RelabelType);
-
-	READ_NODE_FIELD(arg);
-	READ_OID_FIELD(resulttype);
-	READ_INT_FIELD(resulttypmod);
-	READ_OID_FIELD(resultcollid);
-	READ_ENUM_FIELD(relabelformat, CoercionForm);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static CoerceViaIO *
-_readCoerceViaIO(void)
-{
-	READ_LOCALS(CoerceViaIO);
-
-	READ_NODE_FIELD(arg);
-	READ_OID_FIELD(resulttype);
-	READ_OID_FIELD(resultcollid);
-	READ_ENUM_FIELD(coerceformat, CoercionForm);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static ArrayCoerceExpr *
-_readArrayCoerceExpr(void)
-{
-	READ_LOCALS(ArrayCoerceExpr);
-
-	READ_NODE_FIELD(arg);
-	READ_NODE_FIELD(elemexpr);
-	READ_OID_FIELD(resulttype);
-	READ_INT_FIELD(resulttypmod);
-	READ_OID_FIELD(resultcollid);
-	READ_ENUM_FIELD(coerceformat, CoercionForm);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static ConvertRowtypeExpr *
-_readConvertRowtypeExpr(void)
-{
-	READ_LOCALS(ConvertRowtypeExpr);
-
-	READ_NODE_FIELD(arg);
-	READ_OID_FIELD(resulttype);
-	READ_ENUM_FIELD(convertformat, CoercionForm);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static CollateExpr *
-_readCollateExpr(void)
-{
-	READ_LOCALS(CollateExpr);
-
-	READ_NODE_FIELD(arg);
-	READ_OID_FIELD(collOid);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static CaseExpr *
-_readCaseExpr(void)
-{
-	READ_LOCALS(CaseExpr);
-
-	READ_OID_FIELD(casetype);
-	READ_OID_FIELD(casecollid);
-	READ_NODE_FIELD(arg);
-	READ_NODE_FIELD(args);
-	READ_NODE_FIELD(defresult);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static CaseWhen *
-_readCaseWhen(void)
-{
-	READ_LOCALS(CaseWhen);
-
-	READ_NODE_FIELD(expr);
-	READ_NODE_FIELD(result);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static CaseTestExpr *
-_readCaseTestExpr(void)
-{
-	READ_LOCALS(CaseTestExpr);
-
-	READ_OID_FIELD(typeId);
-	READ_INT_FIELD(typeMod);
-	READ_OID_FIELD(collation);
-
-	READ_DONE();
-}
-
-static ArrayExpr *
-_readArrayExpr(void)
-{
-	READ_LOCALS(ArrayExpr);
-
-	READ_OID_FIELD(array_typeid);
-	READ_OID_FIELD(array_collid);
-	READ_OID_FIELD(element_typeid);
-	READ_NODE_FIELD(elements);
-	READ_BOOL_FIELD(multidims);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static RowExpr *
-_readRowExpr(void)
-{
-	READ_LOCALS(RowExpr);
-
-	READ_NODE_FIELD(args);
-	READ_OID_FIELD(row_typeid);
-	READ_ENUM_FIELD(row_format, CoercionForm);
-	READ_NODE_FIELD(colnames);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static RowCompareExpr *
-_readRowCompareExpr(void)
-{
-	READ_LOCALS(RowCompareExpr);
-
-	READ_ENUM_FIELD(rctype, RowCompareType);
-	READ_NODE_FIELD(opnos);
-	READ_NODE_FIELD(opfamilies);
-	READ_NODE_FIELD(inputcollids);
-	READ_NODE_FIELD(largs);
-	READ_NODE_FIELD(rargs);
-
-	READ_DONE();
-}
-
-static CoalesceExpr *
-_readCoalesceExpr(void)
-{
-	READ_LOCALS(CoalesceExpr);
-
-	READ_OID_FIELD(coalescetype);
-	READ_OID_FIELD(coalescecollid);
-	READ_NODE_FIELD(args);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static MinMaxExpr *
-_readMinMaxExpr(void)
-{
-	READ_LOCALS(MinMaxExpr);
-
-	READ_OID_FIELD(minmaxtype);
-	READ_OID_FIELD(minmaxcollid);
-	READ_OID_FIELD(inputcollid);
-	READ_ENUM_FIELD(op, MinMaxOp);
-	READ_NODE_FIELD(args);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static SQLValueFunction *
-_readSQLValueFunction(void)
-{
-	READ_LOCALS(SQLValueFunction);
-
-	READ_ENUM_FIELD(op, SQLValueFunctionOp);
-	READ_OID_FIELD(type);
-	READ_INT_FIELD(typmod);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static XmlExpr *
-_readXmlExpr(void)
-{
-	READ_LOCALS(XmlExpr);
-
-	READ_ENUM_FIELD(op, XmlExprOp);
-	READ_STRING_FIELD(name);
-	READ_NODE_FIELD(named_args);
-	READ_NODE_FIELD(arg_names);
-	READ_NODE_FIELD(args);
-	READ_ENUM_FIELD(xmloption, XmlOptionType);
-	READ_BOOL_FIELD(indent);
-	READ_OID_FIELD(type);
-	READ_INT_FIELD(typmod);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static JsonFormat *
-_readJsonFormat(void)
-{
-	READ_LOCALS(JsonFormat);
-
-	READ_ENUM_FIELD(format_type, JsonFormatType);
-	READ_ENUM_FIELD(encoding, JsonEncoding);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static JsonReturning *
-_readJsonReturning(void)
-{
-	READ_LOCALS(JsonReturning);
-
-	READ_NODE_FIELD(format);
-	READ_OID_FIELD(typid);
-	READ_INT_FIELD(typmod);
-
-	READ_DONE();
-}
-
-static JsonValueExpr *
-_readJsonValueExpr(void)
-{
-	READ_LOCALS(JsonValueExpr);
-
-	READ_NODE_FIELD(raw_expr);
-	READ_NODE_FIELD(formatted_expr);
-	READ_NODE_FIELD(format);
-
-	READ_DONE();
-}
-
-static JsonConstructorExpr *
-_readJsonConstructorExpr(void)
-{
-	READ_LOCALS(JsonConstructorExpr);
-
-	READ_ENUM_FIELD(type, JsonConstructorType);
-	READ_NODE_FIELD(args);
-	READ_NODE_FIELD(func);
-	READ_NODE_FIELD(coercion);
-	READ_NODE_FIELD(returning);
-	READ_BOOL_FIELD(absent_on_null);
-	READ_BOOL_FIELD(unique);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static JsonIsPredicate *
-_readJsonIsPredicate(void)
-{
-	READ_LOCALS(JsonIsPredicate);
-
-	READ_NODE_FIELD(expr);
-	READ_NODE_FIELD(format);
-	READ_ENUM_FIELD(item_type, JsonValueType);
-	READ_BOOL_FIELD(unique_keys);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static NullTest *
-_readNullTest(void)
-{
-	READ_LOCALS(NullTest);
-
-	READ_NODE_FIELD(arg);
-	READ_ENUM_FIELD(nulltesttype, NullTestType);
-	READ_BOOL_FIELD(argisrow);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static BooleanTest *
-_readBooleanTest(void)
-{
-	READ_LOCALS(BooleanTest);
-
-	READ_NODE_FIELD(arg);
-	READ_ENUM_FIELD(booltesttype, BoolTestType);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static CoerceToDomain *
-_readCoerceToDomain(void)
-{
-	READ_LOCALS(CoerceToDomain);
-
-	READ_NODE_FIELD(arg);
-	READ_OID_FIELD(resulttype);
-	READ_INT_FIELD(resulttypmod);
-	READ_OID_FIELD(resultcollid);
-	READ_ENUM_FIELD(coercionformat, CoercionForm);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static CoerceToDomainValue *
-_readCoerceToDomainValue(void)
-{
-	READ_LOCALS(CoerceToDomainValue);
-
-	READ_OID_FIELD(typeId);
-	READ_INT_FIELD(typeMod);
-	READ_OID_FIELD(collation);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static SetToDefault *
-_readSetToDefault(void)
-{
-	READ_LOCALS(SetToDefault);
-
-	READ_OID_FIELD(typeId);
-	READ_INT_FIELD(typeMod);
-	READ_OID_FIELD(collation);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static CurrentOfExpr *
-_readCurrentOfExpr(void)
-{
-	READ_LOCALS(CurrentOfExpr);
-
-	READ_UINT_FIELD(cvarno);
-	READ_STRING_FIELD(cursor_name);
-	READ_INT_FIELD(cursor_param);
-	READ_OID_FIELD(target_relid);
-
-	READ_DONE();
-}
-
-static NextValueExpr *
-_readNextValueExpr(void)
-{
-	READ_LOCALS(NextValueExpr);
-
-	READ_OID_FIELD(seqid);
-	READ_OID_FIELD(typeId);
-
-	READ_DONE();
-}
-
-static InferenceElem *
-_readInferenceElem(void)
-{
-	READ_LOCALS(InferenceElem);
-
-	READ_NODE_FIELD(expr);
-	READ_OID_FIELD(infercollid);
-	READ_OID_FIELD(inferopclass);
-
-	READ_DONE();
-}
-
-static TargetEntry *
-_readTargetEntry(void)
-{
-	READ_LOCALS(TargetEntry);
-
-	READ_NODE_FIELD(expr);
-	READ_INT_FIELD(resno);
-	READ_STRING_FIELD(resname);
-	READ_UINT_FIELD(ressortgroupref);
-	READ_OID_FIELD(resorigtbl);
-	READ_INT_FIELD(resorigcol);
-	READ_BOOL_FIELD(resjunk);
-
-	READ_DONE();
-}
-
-static RangeTblRef *
-_readRangeTblRef(void)
-{
-	READ_LOCALS(RangeTblRef);
-
-	READ_INT_FIELD(rtindex);
-
-	READ_DONE();
-}
-
-static JoinExpr *
-_readJoinExpr(void)
-{
-	READ_LOCALS(JoinExpr);
-
-	READ_ENUM_FIELD(jointype, JoinType);
-	READ_BOOL_FIELD(isNatural);
-	READ_NODE_FIELD(larg);
-	READ_NODE_FIELD(rarg);
-	READ_NODE_FIELD(usingClause);
-	READ_NODE_FIELD(join_using_alias);
-	READ_NODE_FIELD(quals);
-	READ_NODE_FIELD(alias);
-	READ_INT_FIELD(rtindex);
-
-	READ_DONE();
-}
-
-static FromExpr *
-_readFromExpr(void)
-{
-	READ_LOCALS(FromExpr);
-
-	READ_NODE_FIELD(fromlist);
-	READ_NODE_FIELD(quals);
-
-	READ_DONE();
-}
-
-static OnConflictExpr *
-_readOnConflictExpr(void)
-{
-	READ_LOCALS(OnConflictExpr);
-
-	READ_ENUM_FIELD(action, OnConflictAction);
-	READ_NODE_FIELD(arbiterElems);
-	READ_NODE_FIELD(arbiterWhere);
-	READ_OID_FIELD(constraint);
-	READ_NODE_FIELD(onConflictSet);
-	READ_NODE_FIELD(onConflictWhere);
-	READ_INT_FIELD(exclRelIndex);
-	READ_NODE_FIELD(exclRelTlist);
-
-	READ_DONE();
-}
-
-static Query *
-_readQuery(void)
-{
-	READ_LOCALS(Query);
-
-	READ_ENUM_FIELD(commandType, CmdType);
-	READ_ENUM_FIELD(querySource, QuerySource);
-	local_node->queryId = 0;
-	READ_BOOL_FIELD(canSetTag);
-	READ_NODE_FIELD(utilityStmt);
-	READ_INT_FIELD(resultRelation);
-	READ_BOOL_FIELD(hasAggs);
-	READ_BOOL_FIELD(hasWindowFuncs);
-	READ_BOOL_FIELD(hasTargetSRFs);
-	READ_BOOL_FIELD(hasSubLinks);
-	READ_BOOL_FIELD(hasDistinctOn);
-	READ_BOOL_FIELD(hasRecursive);
-	READ_BOOL_FIELD(hasModifyingCTE);
-	READ_BOOL_FIELD(hasForUpdate);
-	READ_BOOL_FIELD(hasRowSecurity);
-	READ_BOOL_FIELD(isReturn);
-	READ_NODE_FIELD(cteList);
-	READ_NODE_FIELD(rtable);
-	READ_NODE_FIELD(rteperminfos);
-	READ_NODE_FIELD(jointree);
-	READ_NODE_FIELD(mergeActionList);
-	READ_BOOL_FIELD(mergeUseOuterJoin);
-	READ_NODE_FIELD(targetList);
-	READ_ENUM_FIELD(override, OverridingKind);
-	READ_NODE_FIELD(onConflict);
-	READ_NODE_FIELD(returningList);
-	READ_NODE_FIELD(groupClause);
-	READ_BOOL_FIELD(groupDistinct);
-	READ_NODE_FIELD(groupingSets);
-	READ_NODE_FIELD(havingQual);
-	READ_NODE_FIELD(windowClause);
-	READ_NODE_FIELD(distinctClause);
-	READ_NODE_FIELD(sortClause);
-	READ_NODE_FIELD(limitOffset);
-	READ_NODE_FIELD(limitCount);
-	READ_ENUM_FIELD(limitOption, LimitOption);
-	READ_NODE_FIELD(rowMarks);
-	READ_NODE_FIELD(setOperations);
-	READ_NODE_FIELD(constraintDeps);
-	READ_NODE_FIELD(withCheckOptions);
-	READ_LOCATION_FIELD(stmt_location);
-	READ_INT_FIELD(stmt_len);
-
-	READ_DONE();
-}
-
-static TypeName *
-_readTypeName(void)
-{
-	READ_LOCALS(TypeName);
-
-	READ_NODE_FIELD(names);
-	READ_OID_FIELD(typeOid);
-	READ_BOOL_FIELD(setof);
-	READ_BOOL_FIELD(pct_type);
-	READ_NODE_FIELD(typmods);
-	READ_INT_FIELD(typemod);
-	READ_NODE_FIELD(arrayBounds);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static ColumnRef *
-_readColumnRef(void)
-{
-	READ_LOCALS(ColumnRef);
-
-	READ_NODE_FIELD(fields);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static ParamRef *
-_readParamRef(void)
-{
-	READ_LOCALS(ParamRef);
-
-	READ_INT_FIELD(number);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static TypeCast *
-_readTypeCast(void)
-{
-	READ_LOCALS(TypeCast);
-
-	READ_NODE_FIELD(arg);
-	READ_NODE_FIELD(typeName);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static CollateClause *
-_readCollateClause(void)
-{
-	READ_LOCALS(CollateClause);
-
-	READ_NODE_FIELD(arg);
-	READ_NODE_FIELD(collname);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static RoleSpec *
-_readRoleSpec(void)
-{
-	READ_LOCALS(RoleSpec);
-
-	READ_ENUM_FIELD(roletype, RoleSpecType);
-	READ_STRING_FIELD(rolename);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static FuncCall *
-_readFuncCall(void)
-{
-	READ_LOCALS(FuncCall);
-
-	READ_NODE_FIELD(funcname);
-	READ_NODE_FIELD(args);
-	READ_NODE_FIELD(agg_order);
-	READ_NODE_FIELD(agg_filter);
-	READ_NODE_FIELD(over);
-	READ_BOOL_FIELD(agg_within_group);
-	READ_BOOL_FIELD(agg_star);
-	READ_BOOL_FIELD(agg_distinct);
-	READ_BOOL_FIELD(func_variadic);
-	READ_ENUM_FIELD(funcformat, CoercionForm);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static A_Star *
-_readA_Star(void)
-{
-	READ_LOCALS_NO_FIELDS(A_Star);
-
-
-	READ_DONE();
-}
-
-static A_Indices *
-_readA_Indices(void)
-{
-	READ_LOCALS(A_Indices);
-
-	READ_BOOL_FIELD(is_slice);
-	READ_NODE_FIELD(lidx);
-	READ_NODE_FIELD(uidx);
-
-	READ_DONE();
-}
-
-static A_Indirection *
-_readA_Indirection(void)
-{
-	READ_LOCALS(A_Indirection);
-
-	READ_NODE_FIELD(arg);
-	READ_NODE_FIELD(indirection);
-
-	READ_DONE();
-}
-
-static A_ArrayExpr *
-_readA_ArrayExpr(void)
-{
-	READ_LOCALS(A_ArrayExpr);
-
-	READ_NODE_FIELD(elements);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static ResTarget *
-_readResTarget(void)
-{
-	READ_LOCALS(ResTarget);
-
-	READ_STRING_FIELD(name);
-	READ_NODE_FIELD(indirection);
-	READ_NODE_FIELD(val);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static MultiAssignRef *
-_readMultiAssignRef(void)
-{
-	READ_LOCALS(MultiAssignRef);
-
-	READ_NODE_FIELD(source);
-	READ_INT_FIELD(colno);
-	READ_INT_FIELD(ncolumns);
-
-	READ_DONE();
-}
-
-static SortBy *
-_readSortBy(void)
-{
-	READ_LOCALS(SortBy);
-
-	READ_NODE_FIELD(node);
-	READ_ENUM_FIELD(sortby_dir, SortByDir);
-	READ_ENUM_FIELD(sortby_nulls, SortByNulls);
-	READ_NODE_FIELD(useOp);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static WindowDef *
-_readWindowDef(void)
-{
-	READ_LOCALS(WindowDef);
-
-	READ_STRING_FIELD(name);
-	READ_STRING_FIELD(refname);
-	READ_NODE_FIELD(partitionClause);
-	READ_NODE_FIELD(orderClause);
-	READ_INT_FIELD(frameOptions);
-	READ_NODE_FIELD(startOffset);
-	READ_NODE_FIELD(endOffset);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static RangeSubselect *
-_readRangeSubselect(void)
-{
-	READ_LOCALS(RangeSubselect);
-
-	READ_BOOL_FIELD(lateral);
-	READ_NODE_FIELD(subquery);
-	READ_NODE_FIELD(alias);
-
-	READ_DONE();
-}
-
-static RangeFunction *
-_readRangeFunction(void)
-{
-	READ_LOCALS(RangeFunction);
-
-	READ_BOOL_FIELD(lateral);
-	READ_BOOL_FIELD(ordinality);
-	READ_BOOL_FIELD(is_rowsfrom);
-	READ_NODE_FIELD(functions);
-	READ_NODE_FIELD(alias);
-	READ_NODE_FIELD(coldeflist);
-
-	READ_DONE();
-}
-
-static RangeTableFunc *
-_readRangeTableFunc(void)
-{
-	READ_LOCALS(RangeTableFunc);
-
-	READ_BOOL_FIELD(lateral);
-	READ_NODE_FIELD(docexpr);
-	READ_NODE_FIELD(rowexpr);
-	READ_NODE_FIELD(namespaces);
-	READ_NODE_FIELD(columns);
-	READ_NODE_FIELD(alias);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static RangeTableFuncCol *
-_readRangeTableFuncCol(void)
-{
-	READ_LOCALS(RangeTableFuncCol);
-
-	READ_STRING_FIELD(colname);
-	READ_NODE_FIELD(typeName);
-	READ_BOOL_FIELD(for_ordinality);
-	READ_BOOL_FIELD(is_not_null);
-	READ_NODE_FIELD(colexpr);
-	READ_NODE_FIELD(coldefexpr);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static RangeTableSample *
-_readRangeTableSample(void)
-{
-	READ_LOCALS(RangeTableSample);
-
-	READ_NODE_FIELD(relation);
-	READ_NODE_FIELD(method);
-	READ_NODE_FIELD(args);
-	READ_NODE_FIELD(repeatable);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static ColumnDef *
-_readColumnDef(void)
-{
-	READ_LOCALS(ColumnDef);
-
-	READ_STRING_FIELD(colname);
-	READ_NODE_FIELD(typeName);
-	READ_STRING_FIELD(compression);
-	READ_INT_FIELD(inhcount);
-	READ_BOOL_FIELD(is_local);
-	READ_BOOL_FIELD(is_not_null);
-	READ_BOOL_FIELD(is_from_type);
-	READ_CHAR_FIELD(storage);
-	READ_STRING_FIELD(storage_name);
-	READ_NODE_FIELD(raw_default);
-	READ_NODE_FIELD(cooked_default);
-	READ_CHAR_FIELD(identity);
-	READ_NODE_FIELD(identitySequence);
-	READ_CHAR_FIELD(generated);
-	READ_NODE_FIELD(collClause);
-	READ_OID_FIELD(collOid);
-	READ_NODE_FIELD(constraints);
-	READ_NODE_FIELD(fdwoptions);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static TableLikeClause *
-_readTableLikeClause(void)
-{
-	READ_LOCALS(TableLikeClause);
-
-	READ_NODE_FIELD(relation);
-	READ_UINT_FIELD(options);
-	READ_OID_FIELD(relationOid);
-
-	READ_DONE();
-}
-
-static IndexElem *
-_readIndexElem(void)
-{
-	READ_LOCALS(IndexElem);
-
-	READ_STRING_FIELD(name);
-	READ_NODE_FIELD(expr);
-	READ_STRING_FIELD(indexcolname);
-	READ_NODE_FIELD(collation);
-	READ_NODE_FIELD(opclass);
-	READ_NODE_FIELD(opclassopts);
-	READ_ENUM_FIELD(ordering, SortByDir);
-	READ_ENUM_FIELD(nulls_ordering, SortByNulls);
-
-	READ_DONE();
-}
-
-static DefElem *
-_readDefElem(void)
-{
-	READ_LOCALS(DefElem);
-
-	READ_STRING_FIELD(defnamespace);
-	READ_STRING_FIELD(defname);
-	READ_NODE_FIELD(arg);
-	READ_ENUM_FIELD(defaction, DefElemAction);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static LockingClause *
-_readLockingClause(void)
-{
-	READ_LOCALS(LockingClause);
-
-	READ_NODE_FIELD(lockedRels);
-	READ_ENUM_FIELD(strength, LockClauseStrength);
-	READ_ENUM_FIELD(waitPolicy, LockWaitPolicy);
-
-	READ_DONE();
-}
-
-static XmlSerialize *
-_readXmlSerialize(void)
-{
-	READ_LOCALS(XmlSerialize);
-
-	READ_ENUM_FIELD(xmloption, XmlOptionType);
-	READ_NODE_FIELD(expr);
-	READ_NODE_FIELD(typeName);
-	READ_BOOL_FIELD(indent);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static PartitionElem *
-_readPartitionElem(void)
-{
-	READ_LOCALS(PartitionElem);
-
-	READ_STRING_FIELD(name);
-	READ_NODE_FIELD(expr);
-	READ_NODE_FIELD(collation);
-	READ_NODE_FIELD(opclass);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static PartitionSpec *
-_readPartitionSpec(void)
-{
-	READ_LOCALS(PartitionSpec);
-
-	READ_ENUM_FIELD(strategy, PartitionStrategy);
-	READ_NODE_FIELD(partParams);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static PartitionBoundSpec *
-_readPartitionBoundSpec(void)
-{
-	READ_LOCALS(PartitionBoundSpec);
-
-	READ_CHAR_FIELD(strategy);
-	READ_BOOL_FIELD(is_default);
-	READ_INT_FIELD(modulus);
-	READ_INT_FIELD(remainder);
-	READ_NODE_FIELD(listdatums);
-	READ_NODE_FIELD(lowerdatums);
-	READ_NODE_FIELD(upperdatums);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static PartitionRangeDatum *
-_readPartitionRangeDatum(void)
-{
-	READ_LOCALS(PartitionRangeDatum);
-
-	READ_ENUM_FIELD(kind, PartitionRangeDatumKind);
-	READ_NODE_FIELD(value);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static PartitionCmd *
-_readPartitionCmd(void)
-{
-	READ_LOCALS(PartitionCmd);
-
-	READ_NODE_FIELD(name);
-	READ_NODE_FIELD(bound);
-	READ_BOOL_FIELD(concurrent);
-
-	READ_DONE();
-}
-
-static RTEPermissionInfo *
-_readRTEPermissionInfo(void)
-{
-	READ_LOCALS(RTEPermissionInfo);
-
-	READ_OID_FIELD(relid);
-	READ_BOOL_FIELD(inh);
-	READ_UINT64_FIELD(requiredPerms);
-	READ_OID_FIELD(checkAsUser);
-	READ_BITMAPSET_FIELD(selectedCols);
-	READ_BITMAPSET_FIELD(insertedCols);
-	READ_BITMAPSET_FIELD(updatedCols);
-
-	READ_DONE();
-}
-
-static RangeTblFunction *
-_readRangeTblFunction(void)
-{
-	READ_LOCALS(RangeTblFunction);
-
-	READ_NODE_FIELD(funcexpr);
-	READ_INT_FIELD(funccolcount);
-	READ_NODE_FIELD(funccolnames);
-	READ_NODE_FIELD(funccoltypes);
-	READ_NODE_FIELD(funccoltypmods);
-	READ_NODE_FIELD(funccolcollations);
-	/* funcuserdata is only serialized in binary out/read functions */
-#ifdef COMPILING_BINARY_FUNCS
-	READ_BYTEA_FIELD(funcuserdata);
-#endif
-	READ_BITMAPSET_FIELD(funcparams);
-
-	READ_DONE();
-}
-
-static TableSampleClause *
-_readTableSampleClause(void)
-{
-	READ_LOCALS(TableSampleClause);
-
-	READ_OID_FIELD(tsmhandler);
-	READ_NODE_FIELD(args);
-	READ_NODE_FIELD(repeatable);
-
-	READ_DONE();
-}
-
-static WithCheckOption *
-_readWithCheckOption(void)
-{
-	READ_LOCALS(WithCheckOption);
-
-	READ_ENUM_FIELD(kind, WCOKind);
-	READ_STRING_FIELD(relname);
-	READ_STRING_FIELD(polname);
-	READ_NODE_FIELD(qual);
-	READ_BOOL_FIELD(cascaded);
-
-	READ_DONE();
-}
-
-static SortGroupClause *
-_readSortGroupClause(void)
-{
-	READ_LOCALS(SortGroupClause);
-
-	READ_UINT_FIELD(tleSortGroupRef);
-	READ_OID_FIELD(eqop);
-	READ_OID_FIELD(sortop);
-	READ_BOOL_FIELD(nulls_first);
-	READ_BOOL_FIELD(hashable);
-
-	READ_DONE();
-}
-
-static GroupingSet *
-_readGroupingSet(void)
-{
-	READ_LOCALS(GroupingSet);
-
-	READ_ENUM_FIELD(kind, GroupingSetKind);
-	READ_NODE_FIELD(content);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static WindowClause *
-_readWindowClause(void)
-{
-	READ_LOCALS(WindowClause);
-
-	READ_STRING_FIELD(name);
-	READ_STRING_FIELD(refname);
-	READ_NODE_FIELD(partitionClause);
-	READ_NODE_FIELD(orderClause);
-	READ_INT_FIELD(frameOptions);
-	READ_NODE_FIELD(startOffset);
-	READ_NODE_FIELD(endOffset);
-	READ_NODE_FIELD(runCondition);
-	READ_OID_FIELD(startInRangeFunc);
-	READ_OID_FIELD(endInRangeFunc);
-	READ_OID_FIELD(inRangeColl);
-	READ_BOOL_FIELD(inRangeAsc);
-	READ_BOOL_FIELD(inRangeNullsFirst);
-	READ_UINT_FIELD(winref);
-	READ_BOOL_FIELD(copiedOrder);
-
-	READ_DONE();
-}
-
-static RowMarkClause *
-_readRowMarkClause(void)
-{
-	READ_LOCALS(RowMarkClause);
-
-	READ_UINT_FIELD(rti);
-	READ_ENUM_FIELD(strength, LockClauseStrength);
-	READ_ENUM_FIELD(waitPolicy, LockWaitPolicy);
-	READ_BOOL_FIELD(pushedDown);
-
-	READ_DONE();
-}
-
-static WithClause *
-_readWithClause(void)
-{
-	READ_LOCALS(WithClause);
-
-	READ_NODE_FIELD(ctes);
-	READ_BOOL_FIELD(recursive);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static InferClause *
-_readInferClause(void)
-{
-	READ_LOCALS(InferClause);
-
-	READ_NODE_FIELD(indexElems);
-	READ_NODE_FIELD(whereClause);
-	READ_STRING_FIELD(conname);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static OnConflictClause *
-_readOnConflictClause(void)
-{
-	READ_LOCALS(OnConflictClause);
-
-	READ_ENUM_FIELD(action, OnConflictAction);
-	READ_NODE_FIELD(infer);
-	READ_NODE_FIELD(targetList);
-	READ_NODE_FIELD(whereClause);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static CTESearchClause *
-_readCTESearchClause(void)
-{
-	READ_LOCALS(CTESearchClause);
-
-	READ_NODE_FIELD(search_col_list);
-	READ_BOOL_FIELD(search_breadth_first);
-	READ_STRING_FIELD(search_seq_column);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static CTECycleClause *
-_readCTECycleClause(void)
-{
-	READ_LOCALS(CTECycleClause);
-
-	READ_NODE_FIELD(cycle_col_list);
-	READ_STRING_FIELD(cycle_mark_column);
-	READ_NODE_FIELD(cycle_mark_value);
-	READ_NODE_FIELD(cycle_mark_default);
-	READ_STRING_FIELD(cycle_path_column);
-	READ_LOCATION_FIELD(location);
-	READ_OID_FIELD(cycle_mark_type);
-	READ_INT_FIELD(cycle_mark_typmod);
-	READ_OID_FIELD(cycle_mark_collation);
-	READ_OID_FIELD(cycle_mark_neop);
-
-	READ_DONE();
-}
-
-static CommonTableExpr *
-_readCommonTableExpr(void)
-{
-	READ_LOCALS(CommonTableExpr);
-
-	READ_STRING_FIELD(ctename);
-	READ_NODE_FIELD(aliascolnames);
-	READ_ENUM_FIELD(ctematerialized, CTEMaterialize);
-	READ_NODE_FIELD(ctequery);
-	READ_NODE_FIELD(search_clause);
-	READ_NODE_FIELD(cycle_clause);
-	READ_LOCATION_FIELD(location);
-	READ_BOOL_FIELD(cterecursive);
-	READ_INT_FIELD(cterefcount);
-	READ_NODE_FIELD(ctecolnames);
-	READ_NODE_FIELD(ctecoltypes);
-	READ_NODE_FIELD(ctecoltypmods);
-	READ_NODE_FIELD(ctecolcollations);
-
-	READ_DONE();
-}
-
-static MergeWhenClause *
-_readMergeWhenClause(void)
-{
-	READ_LOCALS(MergeWhenClause);
-
-	READ_BOOL_FIELD(matched);
-	READ_ENUM_FIELD(commandType, CmdType);
-	READ_ENUM_FIELD(override, OverridingKind);
-	READ_NODE_FIELD(condition);
-	READ_NODE_FIELD(targetList);
-	READ_NODE_FIELD(values);
-
-	READ_DONE();
-}
-
-static MergeAction *
-_readMergeAction(void)
-{
-	READ_LOCALS(MergeAction);
-
-	READ_BOOL_FIELD(matched);
-	READ_ENUM_FIELD(commandType, CmdType);
-	READ_ENUM_FIELD(override, OverridingKind);
-	READ_NODE_FIELD(qual);
-	READ_NODE_FIELD(targetList);
-	READ_NODE_FIELD(updateColnos);
-
-	READ_DONE();
-}
-
-static TriggerTransition *
-_readTriggerTransition(void)
-{
-	READ_LOCALS(TriggerTransition);
-
-	READ_STRING_FIELD(name);
-	READ_BOOL_FIELD(isNew);
-	READ_BOOL_FIELD(isTable);
-
-	READ_DONE();
-}
-
-static JsonOutput *
-_readJsonOutput(void)
-{
-	READ_LOCALS(JsonOutput);
-
-	READ_NODE_FIELD(typeName);
-	READ_NODE_FIELD(returning);
-
-	READ_DONE();
-}
-
-static JsonKeyValue *
-_readJsonKeyValue(void)
-{
-	READ_LOCALS(JsonKeyValue);
-
-	READ_NODE_FIELD(key);
-	READ_NODE_FIELD(value);
-
-	READ_DONE();
-}
-
-static JsonObjectConstructor *
-_readJsonObjectConstructor(void)
-{
-	READ_LOCALS(JsonObjectConstructor);
-
-	READ_NODE_FIELD(exprs);
-	READ_NODE_FIELD(output);
-	READ_BOOL_FIELD(absent_on_null);
-	READ_BOOL_FIELD(unique);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static JsonArrayConstructor *
-_readJsonArrayConstructor(void)
-{
-	READ_LOCALS(JsonArrayConstructor);
-
-	READ_NODE_FIELD(exprs);
-	READ_NODE_FIELD(output);
-	READ_BOOL_FIELD(absent_on_null);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static JsonArrayQueryConstructor *
-_readJsonArrayQueryConstructor(void)
-{
-	READ_LOCALS(JsonArrayQueryConstructor);
-
-	READ_NODE_FIELD(query);
-	READ_NODE_FIELD(output);
-	READ_NODE_FIELD(format);
-	READ_BOOL_FIELD(absent_on_null);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static JsonAggConstructor *
-_readJsonAggConstructor(void)
-{
-	READ_LOCALS(JsonAggConstructor);
-
-	READ_NODE_FIELD(output);
-	READ_NODE_FIELD(agg_filter);
-	READ_NODE_FIELD(agg_order);
-	READ_NODE_FIELD(over);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static JsonObjectAgg *
-_readJsonObjectAgg(void)
-{
-	READ_LOCALS(JsonObjectAgg);
-
-	READ_NODE_FIELD(constructor);
-	READ_NODE_FIELD(arg);
-	READ_BOOL_FIELD(absent_on_null);
-	READ_BOOL_FIELD(unique);
-
-	READ_DONE();
-}
-
-static JsonArrayAgg *
-_readJsonArrayAgg(void)
-{
-	READ_LOCALS(JsonArrayAgg);
-
-	READ_NODE_FIELD(constructor);
-	READ_NODE_FIELD(arg);
-	READ_BOOL_FIELD(absent_on_null);
-
-	READ_DONE();
-}
-
-static RawStmt *
-_readRawStmt(void)
-{
-	READ_LOCALS(RawStmt);
-
-	READ_NODE_FIELD(stmt);
-	READ_LOCATION_FIELD(stmt_location);
-	READ_INT_FIELD(stmt_len);
-
-	READ_DONE();
-}
-
-static InsertStmt *
-_readInsertStmt(void)
-{
-	READ_LOCALS(InsertStmt);
-
-	READ_NODE_FIELD(relation);
-	READ_NODE_FIELD(cols);
-	READ_NODE_FIELD(selectStmt);
-	READ_NODE_FIELD(onConflictClause);
-	READ_NODE_FIELD(returningList);
-	READ_NODE_FIELD(withClause);
-	READ_ENUM_FIELD(override, OverridingKind);
-
-	READ_DONE();
-}
-
-static DeleteStmt *
-_readDeleteStmt(void)
-{
-	READ_LOCALS(DeleteStmt);
-
-	READ_NODE_FIELD(relation);
-	READ_NODE_FIELD(usingClause);
-	READ_NODE_FIELD(whereClause);
-	READ_NODE_FIELD(returningList);
-	READ_NODE_FIELD(withClause);
-
-	READ_DONE();
-}
-
-static UpdateStmt *
-_readUpdateStmt(void)
-{
-	READ_LOCALS(UpdateStmt);
-
-	READ_NODE_FIELD(relation);
-	READ_NODE_FIELD(targetList);
-	READ_NODE_FIELD(whereClause);
-	READ_NODE_FIELD(fromClause);
-	READ_NODE_FIELD(returningList);
-	READ_NODE_FIELD(withClause);
-
-	READ_DONE();
-}
-
-static MergeStmt *
-_readMergeStmt(void)
-{
-	READ_LOCALS(MergeStmt);
-
-	READ_NODE_FIELD(relation);
-	READ_NODE_FIELD(sourceRelation);
-	READ_NODE_FIELD(joinCondition);
-	READ_NODE_FIELD(mergeWhenClauses);
-	READ_NODE_FIELD(withClause);
-
-	READ_DONE();
-}
-
-static SelectStmt *
-_readSelectStmt(void)
-{
-	READ_LOCALS(SelectStmt);
-
-	READ_NODE_FIELD(distinctClause);
-	READ_NODE_FIELD(intoClause);
-	READ_NODE_FIELD(targetList);
-	READ_NODE_FIELD(fromClause);
-	READ_NODE_FIELD(whereClause);
-	READ_NODE_FIELD(groupClause);
-	READ_BOOL_FIELD(groupDistinct);
-	READ_NODE_FIELD(havingClause);
-	READ_NODE_FIELD(windowClause);
-	READ_NODE_FIELD(valuesLists);
-	READ_NODE_FIELD(sortClause);
-	READ_NODE_FIELD(limitOffset);
-	READ_NODE_FIELD(limitCount);
-	READ_ENUM_FIELD(limitOption, LimitOption);
-	READ_NODE_FIELD(lockingClause);
-	READ_NODE_FIELD(withClause);
-	READ_ENUM_FIELD(op, SetOperation);
-	READ_BOOL_FIELD(all);
-	READ_NODE_FIELD(larg);
-	READ_NODE_FIELD(rarg);
-
-	READ_DONE();
-}
-
-static SetOperationStmt *
-_readSetOperationStmt(void)
-{
-	READ_LOCALS(SetOperationStmt);
-
-	READ_ENUM_FIELD(op, SetOperation);
-	READ_BOOL_FIELD(all);
-	READ_NODE_FIELD(larg);
-	READ_NODE_FIELD(rarg);
-	READ_NODE_FIELD(colTypes);
-	READ_NODE_FIELD(colTypmods);
-	READ_NODE_FIELD(colCollations);
-	READ_NODE_FIELD(groupClauses);
-
-	READ_DONE();
-}
-
-static ReturnStmt *
-_readReturnStmt(void)
-{
-	READ_LOCALS(ReturnStmt);
-
-	READ_NODE_FIELD(returnval);
-
-	READ_DONE();
-}
-
-static PLAssignStmt *
-_readPLAssignStmt(void)
-{
-	READ_LOCALS(PLAssignStmt);
-
-	READ_STRING_FIELD(name);
-	READ_NODE_FIELD(indirection);
-	READ_INT_FIELD(nnames);
-	READ_NODE_FIELD(val);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static CreateSchemaStmt *
-_readCreateSchemaStmt(void)
-{
-	READ_LOCALS(CreateSchemaStmt);
-
-	READ_STRING_FIELD(schemaname);
-	READ_NODE_FIELD(authrole);
-	READ_NODE_FIELD(schemaElts);
-	READ_BOOL_FIELD(if_not_exists);
-
-	READ_DONE();
-}
-
-static AlterTableStmt *
-_readAlterTableStmt(void)
-{
-	READ_LOCALS(AlterTableStmt);
-
-	READ_NODE_FIELD(relation);
-	READ_NODE_FIELD(cmds);
-	READ_ENUM_FIELD(objtype, ObjectType);
-	READ_BOOL_FIELD(missing_ok);
-
-	READ_DONE();
-}
-
-static ReplicaIdentityStmt *
-_readReplicaIdentityStmt(void)
-{
-	READ_LOCALS(ReplicaIdentityStmt);
-
-	READ_CHAR_FIELD(identity_type);
-	READ_STRING_FIELD(name);
-
-	READ_DONE();
-}
-
-static AlterTableCmd *
-_readAlterTableCmd(void)
-{
-	READ_LOCALS(AlterTableCmd);
-
-	READ_ENUM_FIELD(subtype, AlterTableType);
-	READ_STRING_FIELD(name);
-	READ_INT_FIELD(num);
-	READ_NODE_FIELD(newowner);
-	READ_NODE_FIELD(def);
-	READ_ENUM_FIELD(behavior, DropBehavior);
-	READ_BOOL_FIELD(missing_ok);
-	READ_BOOL_FIELD(recurse);
-
-	READ_DONE();
-}
-
-static AlterCollationStmt *
-_readAlterCollationStmt(void)
-{
-	READ_LOCALS(AlterCollationStmt);
-
-	READ_NODE_FIELD(collname);
-
-	READ_DONE();
-}
-
-static AlterDomainStmt *
-_readAlterDomainStmt(void)
-{
-	READ_LOCALS(AlterDomainStmt);
-
-	READ_CHAR_FIELD(subtype);
-	READ_NODE_FIELD(typeName);
-	READ_STRING_FIELD(name);
-	READ_NODE_FIELD(def);
-	READ_ENUM_FIELD(behavior, DropBehavior);
-	READ_BOOL_FIELD(missing_ok);
-
-	READ_DONE();
-}
-
-static GrantStmt *
-_readGrantStmt(void)
-{
-	READ_LOCALS(GrantStmt);
-
-	READ_BOOL_FIELD(is_grant);
-	READ_ENUM_FIELD(targtype, GrantTargetType);
-	READ_ENUM_FIELD(objtype, ObjectType);
-	READ_NODE_FIELD(objects);
-	READ_NODE_FIELD(privileges);
-	READ_NODE_FIELD(grantees);
-	READ_BOOL_FIELD(grant_option);
-	READ_NODE_FIELD(grantor);
-	READ_ENUM_FIELD(behavior, DropBehavior);
-
-	READ_DONE();
-}
-
-static ObjectWithArgs *
-_readObjectWithArgs(void)
-{
-	READ_LOCALS(ObjectWithArgs);
-
-	READ_NODE_FIELD(objname);
-	READ_NODE_FIELD(objargs);
-	READ_NODE_FIELD(objfuncargs);
-	READ_BOOL_FIELD(args_unspecified);
-
-	READ_DONE();
-}
-
-static AccessPriv *
-_readAccessPriv(void)
-{
-	READ_LOCALS(AccessPriv);
-
-	READ_STRING_FIELD(priv_name);
-	READ_NODE_FIELD(cols);
-
-	READ_DONE();
-}
-
-static GrantRoleStmt *
-_readGrantRoleStmt(void)
-{
-	READ_LOCALS(GrantRoleStmt);
-
-	READ_NODE_FIELD(granted_roles);
-	READ_NODE_FIELD(grantee_roles);
-	READ_BOOL_FIELD(is_grant);
-	READ_NODE_FIELD(opt);
-	READ_NODE_FIELD(grantor);
-	READ_ENUM_FIELD(behavior, DropBehavior);
-
-	READ_DONE();
-}
-
-static AlterDefaultPrivilegesStmt *
-_readAlterDefaultPrivilegesStmt(void)
-{
-	READ_LOCALS(AlterDefaultPrivilegesStmt);
-
-	READ_NODE_FIELD(options);
-	READ_NODE_FIELD(action);
-
-	READ_DONE();
-}
-
-static CopyStmt *
-_readCopyStmt(void)
-{
-	READ_LOCALS(CopyStmt);
-
-	READ_NODE_FIELD(relation);
-	READ_NODE_FIELD(query);
-	READ_NODE_FIELD(attlist);
-	READ_BOOL_FIELD(is_from);
-	READ_BOOL_FIELD(is_program);
-	READ_STRING_FIELD(filename);
-	READ_NODE_FIELD(options);
-	READ_NODE_FIELD(whereClause);
-
-	READ_DONE();
-}
-
-static VariableSetStmt *
-_readVariableSetStmt(void)
-{
-	READ_LOCALS(VariableSetStmt);
-
-	READ_ENUM_FIELD(kind, VariableSetKind);
-	READ_STRING_FIELD(name);
-	READ_NODE_FIELD(args);
-	READ_BOOL_FIELD(is_local);
-
-	READ_DONE();
-}
-
-static VariableShowStmt *
-_readVariableShowStmt(void)
-{
-	READ_LOCALS(VariableShowStmt);
-
-	READ_STRING_FIELD(name);
-
-	READ_DONE();
-}
-
-static CreateStmt *
-_readCreateStmt(void)
-{
-	READ_LOCALS(CreateStmt);
-
-	READ_NODE_FIELD(relation);
-	READ_NODE_FIELD(tableElts);
-	READ_NODE_FIELD(inhRelations);
-	READ_NODE_FIELD(partbound);
-	READ_NODE_FIELD(partspec);
-	READ_NODE_FIELD(ofTypename);
-	READ_NODE_FIELD(constraints);
-	READ_NODE_FIELD(options);
-	READ_ENUM_FIELD(oncommit, OnCommitAction);
-	READ_STRING_FIELD(tablespacename);
-	READ_STRING_FIELD(accessMethod);
-	READ_BOOL_FIELD(if_not_exists);
-
-	READ_DONE();
-}
-
-static CreateTableSpaceStmt *
-_readCreateTableSpaceStmt(void)
-{
-	READ_LOCALS(CreateTableSpaceStmt);
-
-	READ_STRING_FIELD(tablespacename);
-	READ_NODE_FIELD(owner);
-	READ_STRING_FIELD(location);
-	READ_NODE_FIELD(options);
-
-	READ_DONE();
-}
-
-static DropTableSpaceStmt *
-_readDropTableSpaceStmt(void)
-{
-	READ_LOCALS(DropTableSpaceStmt);
-
-	READ_STRING_FIELD(tablespacename);
-	READ_BOOL_FIELD(missing_ok);
-
-	READ_DONE();
-}
-
-static AlterTableSpaceOptionsStmt *
-_readAlterTableSpaceOptionsStmt(void)
-{
-	READ_LOCALS(AlterTableSpaceOptionsStmt);
-
-	READ_STRING_FIELD(tablespacename);
-	READ_NODE_FIELD(options);
-	READ_BOOL_FIELD(isReset);
-
-	READ_DONE();
-}
-
-static AlterTableMoveAllStmt *
-_readAlterTableMoveAllStmt(void)
-{
-	READ_LOCALS(AlterTableMoveAllStmt);
-
-	READ_STRING_FIELD(orig_tablespacename);
-	READ_ENUM_FIELD(objtype, ObjectType);
-	READ_NODE_FIELD(roles);
-	READ_STRING_FIELD(new_tablespacename);
-	READ_BOOL_FIELD(nowait);
-
-	READ_DONE();
-}
-
-static CreateExtensionStmt *
-_readCreateExtensionStmt(void)
-{
-	READ_LOCALS(CreateExtensionStmt);
-
-	READ_STRING_FIELD(extname);
-	READ_BOOL_FIELD(if_not_exists);
-	READ_NODE_FIELD(options);
-
-	READ_DONE();
-}
-
-static AlterExtensionStmt *
-_readAlterExtensionStmt(void)
-{
-	READ_LOCALS(AlterExtensionStmt);
-
-	READ_STRING_FIELD(extname);
-	READ_NODE_FIELD(options);
-
-	READ_DONE();
-}
-
-static AlterExtensionContentsStmt *
-_readAlterExtensionContentsStmt(void)
-{
-	READ_LOCALS(AlterExtensionContentsStmt);
-
-	READ_STRING_FIELD(extname);
-	READ_INT_FIELD(action);
-	READ_ENUM_FIELD(objtype, ObjectType);
-	READ_NODE_FIELD(object);
-
-	READ_DONE();
-}
-
-static CreateFdwStmt *
-_readCreateFdwStmt(void)
-{
-	READ_LOCALS(CreateFdwStmt);
-
-	READ_STRING_FIELD(fdwname);
-	READ_NODE_FIELD(func_options);
-	READ_NODE_FIELD(options);
-
-	READ_DONE();
-}
-
-static AlterFdwStmt *
-_readAlterFdwStmt(void)
-{
-	READ_LOCALS(AlterFdwStmt);
-
-	READ_STRING_FIELD(fdwname);
-	READ_NODE_FIELD(func_options);
-	READ_NODE_FIELD(options);
-
-	READ_DONE();
-}
-
-static CreateForeignServerStmt *
-_readCreateForeignServerStmt(void)
-{
-	READ_LOCALS(CreateForeignServerStmt);
-
-	READ_STRING_FIELD(servername);
-	READ_STRING_FIELD(servertype);
-	READ_STRING_FIELD(version);
-	READ_STRING_FIELD(fdwname);
-	READ_BOOL_FIELD(if_not_exists);
-	READ_NODE_FIELD(options);
-
-	READ_DONE();
-}
-
-static AlterForeignServerStmt *
-_readAlterForeignServerStmt(void)
-{
-	READ_LOCALS(AlterForeignServerStmt);
-
-	READ_STRING_FIELD(servername);
-	READ_STRING_FIELD(version);
-	READ_NODE_FIELD(options);
-	READ_BOOL_FIELD(has_version);
-
-	READ_DONE();
-}
-
-static CreateForeignTableStmt *
-_readCreateForeignTableStmt(void)
-{
-	READ_LOCALS(CreateForeignTableStmt);
-
-	READ_NODE_FIELD(base.relation);
-	READ_NODE_FIELD(base.tableElts);
-	READ_NODE_FIELD(base.inhRelations);
-	READ_NODE_FIELD(base.partbound);
-	READ_NODE_FIELD(base.partspec);
-	READ_NODE_FIELD(base.ofTypename);
-	READ_NODE_FIELD(base.constraints);
-	READ_NODE_FIELD(base.options);
-	READ_ENUM_FIELD(base.oncommit, OnCommitAction);
-	READ_STRING_FIELD(base.tablespacename);
-	READ_STRING_FIELD(base.accessMethod);
-	READ_BOOL_FIELD(base.if_not_exists);
-	READ_STRING_FIELD(servername);
-	READ_NODE_FIELD(options);
-
-	READ_DONE();
-}
-
-static CreateUserMappingStmt *
-_readCreateUserMappingStmt(void)
-{
-	READ_LOCALS(CreateUserMappingStmt);
-
-	READ_NODE_FIELD(user);
-	READ_STRING_FIELD(servername);
-	READ_BOOL_FIELD(if_not_exists);
-	READ_NODE_FIELD(options);
-
-	READ_DONE();
-}
-
-static AlterUserMappingStmt *
-_readAlterUserMappingStmt(void)
-{
-	READ_LOCALS(AlterUserMappingStmt);
-
-	READ_NODE_FIELD(user);
-	READ_STRING_FIELD(servername);
-	READ_NODE_FIELD(options);
-
-	READ_DONE();
-}
-
-static DropUserMappingStmt *
-_readDropUserMappingStmt(void)
-{
-	READ_LOCALS(DropUserMappingStmt);
-
-	READ_NODE_FIELD(user);
-	READ_STRING_FIELD(servername);
-	READ_BOOL_FIELD(missing_ok);
-
-	READ_DONE();
-}
-
-static ImportForeignSchemaStmt *
-_readImportForeignSchemaStmt(void)
-{
-	READ_LOCALS(ImportForeignSchemaStmt);
-
-	READ_STRING_FIELD(server_name);
-	READ_STRING_FIELD(remote_schema);
-	READ_STRING_FIELD(local_schema);
-	READ_ENUM_FIELD(list_type, ImportForeignSchemaType);
-	READ_NODE_FIELD(table_list);
-	READ_NODE_FIELD(options);
-
-	READ_DONE();
-}
-
-static CreatePolicyStmt *
-_readCreatePolicyStmt(void)
-{
-	READ_LOCALS(CreatePolicyStmt);
-
-	READ_STRING_FIELD(policy_name);
-	READ_NODE_FIELD(table);
-	READ_STRING_FIELD(cmd_name);
-	READ_BOOL_FIELD(permissive);
-	READ_NODE_FIELD(roles);
-	READ_NODE_FIELD(qual);
-	READ_NODE_FIELD(with_check);
-
-	READ_DONE();
-}
-
-static AlterPolicyStmt *
-_readAlterPolicyStmt(void)
-{
-	READ_LOCALS(AlterPolicyStmt);
-
-	READ_STRING_FIELD(policy_name);
-	READ_NODE_FIELD(table);
-	READ_NODE_FIELD(roles);
-	READ_NODE_FIELD(qual);
-	READ_NODE_FIELD(with_check);
-
-	READ_DONE();
-}
-
-static CreateAmStmt *
-_readCreateAmStmt(void)
-{
-	READ_LOCALS(CreateAmStmt);
-
-	READ_STRING_FIELD(amname);
-	READ_NODE_FIELD(handler_name);
-	READ_CHAR_FIELD(amtype);
-
-	READ_DONE();
-}
-
-static CreateTrigStmt *
-_readCreateTrigStmt(void)
-{
-	READ_LOCALS(CreateTrigStmt);
-
-	READ_BOOL_FIELD(replace);
-	READ_BOOL_FIELD(isconstraint);
-	READ_STRING_FIELD(trigname);
-	READ_NODE_FIELD(relation);
-	READ_NODE_FIELD(funcname);
-	READ_NODE_FIELD(args);
-	READ_BOOL_FIELD(row);
-	READ_INT_FIELD(timing);
-	READ_INT_FIELD(events);
-	READ_NODE_FIELD(columns);
-	READ_NODE_FIELD(whenClause);
-	READ_NODE_FIELD(transitionRels);
-	READ_BOOL_FIELD(deferrable);
-	READ_BOOL_FIELD(initdeferred);
-	READ_NODE_FIELD(constrrel);
-
-	READ_DONE();
-}
-
-static CreateEventTrigStmt *
-_readCreateEventTrigStmt(void)
-{
-	READ_LOCALS(CreateEventTrigStmt);
-
-	READ_STRING_FIELD(trigname);
-	READ_STRING_FIELD(eventname);
-	READ_NODE_FIELD(whenclause);
-	READ_NODE_FIELD(funcname);
-
-	READ_DONE();
-}
-
-static AlterEventTrigStmt *
-_readAlterEventTrigStmt(void)
-{
-	READ_LOCALS(AlterEventTrigStmt);
-
-	READ_STRING_FIELD(trigname);
-	READ_CHAR_FIELD(tgenabled);
-
-	READ_DONE();
-}
-
-static CreatePLangStmt *
-_readCreatePLangStmt(void)
-{
-	READ_LOCALS(CreatePLangStmt);
-
-	READ_BOOL_FIELD(replace);
-	READ_STRING_FIELD(plname);
-	READ_NODE_FIELD(plhandler);
-	READ_NODE_FIELD(plinline);
-	READ_NODE_FIELD(plvalidator);
-	READ_BOOL_FIELD(pltrusted);
-
-	READ_DONE();
-}
-
-static CreateRoleStmt *
-_readCreateRoleStmt(void)
-{
-	READ_LOCALS(CreateRoleStmt);
-
-	READ_ENUM_FIELD(stmt_type, RoleStmtType);
-	READ_STRING_FIELD(role);
-	READ_NODE_FIELD(options);
-
-	READ_DONE();
-}
-
-static AlterRoleStmt *
-_readAlterRoleStmt(void)
-{
-	READ_LOCALS(AlterRoleStmt);
-
-	READ_NODE_FIELD(role);
-	READ_NODE_FIELD(options);
-	READ_INT_FIELD(action);
-
-	READ_DONE();
-}
-
-static AlterRoleSetStmt *
-_readAlterRoleSetStmt(void)
-{
-	READ_LOCALS(AlterRoleSetStmt);
-
-	READ_NODE_FIELD(role);
-	READ_STRING_FIELD(database);
-	READ_NODE_FIELD(setstmt);
-
-	READ_DONE();
-}
-
-static DropRoleStmt *
-_readDropRoleStmt(void)
-{
-	READ_LOCALS(DropRoleStmt);
-
-	READ_NODE_FIELD(roles);
-	READ_BOOL_FIELD(missing_ok);
-
-	READ_DONE();
-}
-
-static CreateSeqStmt *
-_readCreateSeqStmt(void)
-{
-	READ_LOCALS(CreateSeqStmt);
-
-	READ_NODE_FIELD(sequence);
-	READ_NODE_FIELD(options);
-	READ_OID_FIELD(ownerId);
-	READ_BOOL_FIELD(for_identity);
-	READ_BOOL_FIELD(if_not_exists);
-
-	READ_DONE();
-}
-
-static AlterSeqStmt *
-_readAlterSeqStmt(void)
-{
-	READ_LOCALS(AlterSeqStmt);
-
-	READ_NODE_FIELD(sequence);
-	READ_NODE_FIELD(options);
-	READ_BOOL_FIELD(for_identity);
-	READ_BOOL_FIELD(missing_ok);
-
-	READ_DONE();
-}
-
-static DefineStmt *
-_readDefineStmt(void)
-{
-	READ_LOCALS(DefineStmt);
-
-	READ_ENUM_FIELD(kind, ObjectType);
-	READ_BOOL_FIELD(oldstyle);
-	READ_NODE_FIELD(defnames);
-	READ_NODE_FIELD(args);
-	READ_NODE_FIELD(definition);
-	READ_BOOL_FIELD(if_not_exists);
-	READ_BOOL_FIELD(replace);
-
-	READ_DONE();
-}
-
-static CreateDomainStmt *
-_readCreateDomainStmt(void)
-{
-	READ_LOCALS(CreateDomainStmt);
-
-	READ_NODE_FIELD(domainname);
-	READ_NODE_FIELD(typeName);
-	READ_NODE_FIELD(collClause);
-	READ_NODE_FIELD(constraints);
-
-	READ_DONE();
-}
-
-static CreateOpClassStmt *
-_readCreateOpClassStmt(void)
-{
-	READ_LOCALS(CreateOpClassStmt);
-
-	READ_NODE_FIELD(opclassname);
-	READ_NODE_FIELD(opfamilyname);
-	READ_STRING_FIELD(amname);
-	READ_NODE_FIELD(datatype);
-	READ_NODE_FIELD(items);
-	READ_BOOL_FIELD(isDefault);
-
-	READ_DONE();
-}
-
-static CreateOpClassItem *
-_readCreateOpClassItem(void)
-{
-	READ_LOCALS(CreateOpClassItem);
-
-	READ_INT_FIELD(itemtype);
-	READ_NODE_FIELD(name);
-	READ_INT_FIELD(number);
-	READ_NODE_FIELD(order_family);
-	READ_NODE_FIELD(class_args);
-	READ_NODE_FIELD(storedtype);
-
-	READ_DONE();
-}
-
-static CreateOpFamilyStmt *
-_readCreateOpFamilyStmt(void)
-{
-	READ_LOCALS(CreateOpFamilyStmt);
-
-	READ_NODE_FIELD(opfamilyname);
-	READ_STRING_FIELD(amname);
-
-	READ_DONE();
-}
-
-static AlterOpFamilyStmt *
-_readAlterOpFamilyStmt(void)
-{
-	READ_LOCALS(AlterOpFamilyStmt);
-
-	READ_NODE_FIELD(opfamilyname);
-	READ_STRING_FIELD(amname);
-	READ_BOOL_FIELD(isDrop);
-	READ_NODE_FIELD(items);
-
-	READ_DONE();
-}
-
-static DropStmt *
-_readDropStmt(void)
-{
-	READ_LOCALS(DropStmt);
-
-	READ_NODE_FIELD(objects);
-	READ_ENUM_FIELD(removeType, ObjectType);
-	READ_ENUM_FIELD(behavior, DropBehavior);
-	READ_BOOL_FIELD(missing_ok);
-	READ_BOOL_FIELD(concurrent);
-
-	READ_DONE();
-}
-
-static TruncateStmt *
-_readTruncateStmt(void)
-{
-	READ_LOCALS(TruncateStmt);
-
-	READ_NODE_FIELD(relations);
-	READ_BOOL_FIELD(restart_seqs);
-	READ_ENUM_FIELD(behavior, DropBehavior);
-
-	READ_DONE();
-}
-
-static CommentStmt *
-_readCommentStmt(void)
-{
-	READ_LOCALS(CommentStmt);
-
-	READ_ENUM_FIELD(objtype, ObjectType);
-	READ_NODE_FIELD(object);
-	READ_STRING_FIELD(comment);
-
-	READ_DONE();
-}
-
-static SecLabelStmt *
-_readSecLabelStmt(void)
-{
-	READ_LOCALS(SecLabelStmt);
-
-	READ_ENUM_FIELD(objtype, ObjectType);
-	READ_NODE_FIELD(object);
-	READ_STRING_FIELD(provider);
-	READ_STRING_FIELD(label);
-
-	READ_DONE();
-}
-
-static DeclareCursorStmt *
-_readDeclareCursorStmt(void)
-{
-	READ_LOCALS(DeclareCursorStmt);
-
-	READ_STRING_FIELD(portalname);
-	READ_INT_FIELD(options);
-	READ_NODE_FIELD(query);
-
-	READ_DONE();
-}
-
-static ClosePortalStmt *
-_readClosePortalStmt(void)
-{
-	READ_LOCALS(ClosePortalStmt);
-
-	READ_STRING_FIELD(portalname);
-
-	READ_DONE();
-}
-
-static FetchStmt *
-_readFetchStmt(void)
-{
-	READ_LOCALS(FetchStmt);
-
-	READ_ENUM_FIELD(direction, FetchDirection);
-	READ_LONG_FIELD(howMany);
-	READ_STRING_FIELD(portalname);
-	READ_BOOL_FIELD(ismove);
-
-	READ_DONE();
-}
-
-static IndexStmt *
-_readIndexStmt(void)
-{
-	READ_LOCALS(IndexStmt);
-
-	READ_STRING_FIELD(idxname);
-	READ_NODE_FIELD(relation);
-	READ_STRING_FIELD(accessMethod);
-	READ_STRING_FIELD(tableSpace);
-	READ_NODE_FIELD(indexParams);
-	READ_NODE_FIELD(indexIncludingParams);
-	READ_NODE_FIELD(options);
-	READ_NODE_FIELD(whereClause);
-	READ_NODE_FIELD(excludeOpNames);
-	READ_STRING_FIELD(idxcomment);
-	READ_OID_FIELD(indexOid);
-	READ_OID_FIELD(oldNumber);
-	READ_UINT_FIELD(oldCreateSubid);
-	READ_UINT_FIELD(oldFirstRelfilelocatorSubid);
-	READ_BOOL_FIELD(unique);
-	READ_BOOL_FIELD(nulls_not_distinct);
-	READ_BOOL_FIELD(primary);
-	READ_BOOL_FIELD(isconstraint);
-	READ_BOOL_FIELD(deferrable);
-	READ_BOOL_FIELD(initdeferred);
-	READ_BOOL_FIELD(transformed);
-	READ_BOOL_FIELD(concurrent);
-	READ_BOOL_FIELD(if_not_exists);
-	READ_BOOL_FIELD(reset_default_tblspc);
-
-	READ_DONE();
-}
-
-static CreateStatsStmt *
-_readCreateStatsStmt(void)
-{
-	READ_LOCALS(CreateStatsStmt);
-
-	READ_NODE_FIELD(defnames);
-	READ_NODE_FIELD(stat_types);
-	READ_NODE_FIELD(exprs);
-	READ_NODE_FIELD(relations);
-	READ_STRING_FIELD(stxcomment);
-	READ_BOOL_FIELD(transformed);
-	READ_BOOL_FIELD(if_not_exists);
-
-	READ_DONE();
-}
-
-static StatsElem *
-_readStatsElem(void)
-{
-	READ_LOCALS(StatsElem);
-
-	READ_STRING_FIELD(name);
-	READ_NODE_FIELD(expr);
-
-	READ_DONE();
-}
-
-static AlterStatsStmt *
-_readAlterStatsStmt(void)
-{
-	READ_LOCALS(AlterStatsStmt);
-
-	READ_NODE_FIELD(defnames);
-	READ_INT_FIELD(stxstattarget);
-	READ_BOOL_FIELD(missing_ok);
-
-	READ_DONE();
-}
-
-static CreateFunctionStmt *
-_readCreateFunctionStmt(void)
-{
-	READ_LOCALS(CreateFunctionStmt);
-
-	READ_BOOL_FIELD(is_procedure);
-	READ_BOOL_FIELD(replace);
-	READ_NODE_FIELD(funcname);
-	READ_NODE_FIELD(parameters);
-	READ_NODE_FIELD(returnType);
-	READ_NODE_FIELD(options);
-	READ_NODE_FIELD(sql_body);
-
-	READ_DONE();
-}
-
-static FunctionParameter *
-_readFunctionParameter(void)
-{
-	READ_LOCALS(FunctionParameter);
-
-	READ_STRING_FIELD(name);
-	READ_NODE_FIELD(argType);
-	READ_ENUM_FIELD(mode, FunctionParameterMode);
-	READ_NODE_FIELD(defexpr);
-
-	READ_DONE();
-}
-
-static AlterFunctionStmt *
-_readAlterFunctionStmt(void)
-{
-	READ_LOCALS(AlterFunctionStmt);
-
-	READ_ENUM_FIELD(objtype, ObjectType);
-	READ_NODE_FIELD(func);
-	READ_NODE_FIELD(actions);
-
-	READ_DONE();
-}
-
-static DoStmt *
-_readDoStmt(void)
-{
-	READ_LOCALS(DoStmt);
-
-	READ_NODE_FIELD(args);
-
-	READ_DONE();
-}
-
-static CallStmt *
-_readCallStmt(void)
-{
-	READ_LOCALS(CallStmt);
-
-	READ_NODE_FIELD(funccall);
-	READ_NODE_FIELD(funcexpr);
-	READ_NODE_FIELD(outargs);
-
-	READ_DONE();
-}
-
-static RenameStmt *
-_readRenameStmt(void)
-{
-	READ_LOCALS(RenameStmt);
-
-	READ_ENUM_FIELD(renameType, ObjectType);
-	READ_ENUM_FIELD(relationType, ObjectType);
-	READ_NODE_FIELD(relation);
-	READ_NODE_FIELD(object);
-	READ_STRING_FIELD(subname);
-	READ_STRING_FIELD(newname);
-	READ_ENUM_FIELD(behavior, DropBehavior);
-	READ_BOOL_FIELD(missing_ok);
-
-	READ_DONE();
-}
-
-static AlterObjectDependsStmt *
-_readAlterObjectDependsStmt(void)
-{
-	READ_LOCALS(AlterObjectDependsStmt);
-
-	READ_ENUM_FIELD(objectType, ObjectType);
-	READ_NODE_FIELD(relation);
-	READ_NODE_FIELD(object);
-	READ_NODE_FIELD(extname);
-	READ_BOOL_FIELD(remove);
-
-	READ_DONE();
-}
-
-static AlterObjectSchemaStmt *
-_readAlterObjectSchemaStmt(void)
-{
-	READ_LOCALS(AlterObjectSchemaStmt);
-
-	READ_ENUM_FIELD(objectType, ObjectType);
-	READ_NODE_FIELD(relation);
-	READ_NODE_FIELD(object);
-	READ_STRING_FIELD(newschema);
-	READ_BOOL_FIELD(missing_ok);
-
-	READ_DONE();
-}
-
-static AlterOwnerStmt *
-_readAlterOwnerStmt(void)
-{
-	READ_LOCALS(AlterOwnerStmt);
-
-	READ_ENUM_FIELD(objectType, ObjectType);
-	READ_NODE_FIELD(relation);
-	READ_NODE_FIELD(object);
-	READ_NODE_FIELD(newowner);
-
-	READ_DONE();
-}
-
-static AlterOperatorStmt *
-_readAlterOperatorStmt(void)
-{
-	READ_LOCALS(AlterOperatorStmt);
-
-	READ_NODE_FIELD(opername);
-	READ_NODE_FIELD(options);
-
-	READ_DONE();
-}
-
-static AlterTypeStmt *
-_readAlterTypeStmt(void)
-{
-	READ_LOCALS(AlterTypeStmt);
-
-	READ_NODE_FIELD(typeName);
-	READ_NODE_FIELD(options);
-
-	READ_DONE();
-}
-
-static RuleStmt *
-_readRuleStmt(void)
-{
-	READ_LOCALS(RuleStmt);
-
-	READ_NODE_FIELD(relation);
-	READ_STRING_FIELD(rulename);
-	READ_NODE_FIELD(whereClause);
-	READ_ENUM_FIELD(event, CmdType);
-	READ_BOOL_FIELD(instead);
-	READ_NODE_FIELD(actions);
-	READ_BOOL_FIELD(replace);
-
-	READ_DONE();
-}
-
-static NotifyStmt *
-_readNotifyStmt(void)
-{
-	READ_LOCALS(NotifyStmt);
-
-	READ_STRING_FIELD(conditionname);
-	READ_STRING_FIELD(payload);
-
-	READ_DONE();
-}
-
-static ListenStmt *
-_readListenStmt(void)
-{
-	READ_LOCALS(ListenStmt);
-
-	READ_STRING_FIELD(conditionname);
-
-	READ_DONE();
-}
-
-static UnlistenStmt *
-_readUnlistenStmt(void)
-{
-	READ_LOCALS(UnlistenStmt);
-
-	READ_STRING_FIELD(conditionname);
-
-	READ_DONE();
-}
-
-static TransactionStmt *
-_readTransactionStmt(void)
-{
-	READ_LOCALS(TransactionStmt);
-
-	READ_ENUM_FIELD(kind, TransactionStmtKind);
-	READ_NODE_FIELD(options);
-	READ_STRING_FIELD(savepoint_name);
-	READ_STRING_FIELD(gid);
-	READ_BOOL_FIELD(chain);
-
-	READ_DONE();
-}
-
-static CompositeTypeStmt *
-_readCompositeTypeStmt(void)
-{
-	READ_LOCALS(CompositeTypeStmt);
-
-	READ_NODE_FIELD(typevar);
-	READ_NODE_FIELD(coldeflist);
-
-	READ_DONE();
-}
-
-static CreateEnumStmt *
-_readCreateEnumStmt(void)
-{
-	READ_LOCALS(CreateEnumStmt);
-
-	READ_NODE_FIELD(typeName);
-	READ_NODE_FIELD(vals);
-
-	READ_DONE();
-}
-
-static CreateRangeStmt *
-_readCreateRangeStmt(void)
-{
-	READ_LOCALS(CreateRangeStmt);
-
-	READ_NODE_FIELD(typeName);
-	READ_NODE_FIELD(params);
-
-	READ_DONE();
-}
-
-static AlterEnumStmt *
-_readAlterEnumStmt(void)
-{
-	READ_LOCALS(AlterEnumStmt);
-
-	READ_NODE_FIELD(typeName);
-	READ_STRING_FIELD(oldVal);
-	READ_STRING_FIELD(newVal);
-	READ_STRING_FIELD(newValNeighbor);
-	READ_BOOL_FIELD(newValIsAfter);
-	READ_BOOL_FIELD(skipIfNewValExists);
-
-	READ_DONE();
-}
-
-static ViewStmt *
-_readViewStmt(void)
-{
-	READ_LOCALS(ViewStmt);
-
-	READ_NODE_FIELD(view);
-	READ_NODE_FIELD(aliases);
-	READ_NODE_FIELD(query);
-	READ_BOOL_FIELD(replace);
-	READ_NODE_FIELD(options);
-	READ_ENUM_FIELD(withCheckOption, ViewCheckOption);
-
-	READ_DONE();
-}
-
-static LoadStmt *
-_readLoadStmt(void)
-{
-	READ_LOCALS(LoadStmt);
-
-	READ_STRING_FIELD(filename);
-
-	READ_DONE();
-}
-
-static CreatedbStmt *
-_readCreatedbStmt(void)
-{
-	READ_LOCALS(CreatedbStmt);
-
-	READ_STRING_FIELD(dbname);
-	READ_NODE_FIELD(options);
-
-	READ_DONE();
-}
-
-static AlterDatabaseStmt *
-_readAlterDatabaseStmt(void)
-{
-	READ_LOCALS(AlterDatabaseStmt);
-
-	READ_STRING_FIELD(dbname);
-	READ_NODE_FIELD(options);
-
-	READ_DONE();
-}
-
-static AlterDatabaseRefreshCollStmt *
-_readAlterDatabaseRefreshCollStmt(void)
-{
-	READ_LOCALS(AlterDatabaseRefreshCollStmt);
-
-	READ_STRING_FIELD(dbname);
-
-	READ_DONE();
-}
-
-static AlterDatabaseSetStmt *
-_readAlterDatabaseSetStmt(void)
-{
-	READ_LOCALS(AlterDatabaseSetStmt);
-
-	READ_STRING_FIELD(dbname);
-	READ_NODE_FIELD(setstmt);
-
-	READ_DONE();
-}
-
-static DropdbStmt *
-_readDropdbStmt(void)
-{
-	READ_LOCALS(DropdbStmt);
-
-	READ_STRING_FIELD(dbname);
-	READ_BOOL_FIELD(missing_ok);
-	READ_NODE_FIELD(options);
-
-	READ_DONE();
-}
-
-static AlterSystemStmt *
-_readAlterSystemStmt(void)
-{
-	READ_LOCALS(AlterSystemStmt);
-
-	READ_NODE_FIELD(setstmt);
-
-	READ_DONE();
-}
-
-static ClusterStmt *
-_readClusterStmt(void)
-{
-	READ_LOCALS(ClusterStmt);
-
-	READ_NODE_FIELD(relation);
-	READ_STRING_FIELD(indexname);
-	READ_NODE_FIELD(params);
-
-	READ_DONE();
-}
-
-static VacuumStmt *
-_readVacuumStmt(void)
-{
-	READ_LOCALS(VacuumStmt);
-
-	READ_NODE_FIELD(options);
-	READ_NODE_FIELD(rels);
-	READ_BOOL_FIELD(is_vacuumcmd);
-
-	READ_DONE();
-}
-
-static VacuumRelation *
-_readVacuumRelation(void)
-{
-	READ_LOCALS(VacuumRelation);
-
-	READ_NODE_FIELD(relation);
-	READ_OID_FIELD(oid);
-	READ_NODE_FIELD(va_cols);
-
-	READ_DONE();
-}
-
-static ExplainStmt *
-_readExplainStmt(void)
-{
-	READ_LOCALS(ExplainStmt);
-
-	READ_NODE_FIELD(query);
-	READ_NODE_FIELD(options);
-
-	READ_DONE();
-}
-
-static CreateTableAsStmt *
-_readCreateTableAsStmt(void)
-{
-	READ_LOCALS(CreateTableAsStmt);
-
-	READ_NODE_FIELD(query);
-	READ_NODE_FIELD(into);
-	READ_ENUM_FIELD(objtype, ObjectType);
-	READ_BOOL_FIELD(is_select_into);
-	READ_BOOL_FIELD(if_not_exists);
-
-	READ_DONE();
-}
-
-static RefreshMatViewStmt *
-_readRefreshMatViewStmt(void)
-{
-	READ_LOCALS(RefreshMatViewStmt);
-
-	READ_BOOL_FIELD(concurrent);
-	READ_BOOL_FIELD(skipData);
-	READ_NODE_FIELD(relation);
-
-	READ_DONE();
-}
-
-static CheckPointStmt *
-_readCheckPointStmt(void)
-{
-	READ_LOCALS_NO_FIELDS(CheckPointStmt);
-
-
-	READ_DONE();
-}
-
-static DiscardStmt *
-_readDiscardStmt(void)
-{
-	READ_LOCALS(DiscardStmt);
-
-	READ_ENUM_FIELD(target, DiscardMode);
-
-	READ_DONE();
-}
-
-static LockStmt *
-_readLockStmt(void)
-{
-	READ_LOCALS(LockStmt);
-
-	READ_NODE_FIELD(relations);
-	READ_INT_FIELD(mode);
-	READ_BOOL_FIELD(nowait);
-
-	READ_DONE();
-}
-
-static ConstraintsSetStmt *
-_readConstraintsSetStmt(void)
-{
-	READ_LOCALS(ConstraintsSetStmt);
-
-	READ_NODE_FIELD(constraints);
-	READ_BOOL_FIELD(deferred);
-
-	READ_DONE();
-}
-
-static ReindexStmt *
-_readReindexStmt(void)
-{
-	READ_LOCALS(ReindexStmt);
-
-	READ_ENUM_FIELD(kind, ReindexObjectType);
-	READ_NODE_FIELD(relation);
-	READ_STRING_FIELD(name);
-	READ_NODE_FIELD(params);
-
-	READ_DONE();
-}
-
-static CreateConversionStmt *
-_readCreateConversionStmt(void)
-{
-	READ_LOCALS(CreateConversionStmt);
-
-	READ_NODE_FIELD(conversion_name);
-	READ_STRING_FIELD(for_encoding_name);
-	READ_STRING_FIELD(to_encoding_name);
-	READ_NODE_FIELD(func_name);
-	READ_BOOL_FIELD(def);
-
-	READ_DONE();
-}
-
-static CreateCastStmt *
-_readCreateCastStmt(void)
-{
-	READ_LOCALS(CreateCastStmt);
-
-	READ_NODE_FIELD(sourcetype);
-	READ_NODE_FIELD(targettype);
-	READ_NODE_FIELD(func);
-	READ_ENUM_FIELD(context, CoercionContext);
-	READ_BOOL_FIELD(inout);
-
-	READ_DONE();
-}
-
-static CreateTransformStmt *
-_readCreateTransformStmt(void)
-{
-	READ_LOCALS(CreateTransformStmt);
-
-	READ_BOOL_FIELD(replace);
-	READ_NODE_FIELD(type_name);
-	READ_STRING_FIELD(lang);
-	READ_NODE_FIELD(fromsql);
-	READ_NODE_FIELD(tosql);
-
-	READ_DONE();
-}
-
-static PrepareStmt *
-_readPrepareStmt(void)
-{
-	READ_LOCALS(PrepareStmt);
-
-	READ_STRING_FIELD(name);
-	READ_NODE_FIELD(argtypes);
-	READ_NODE_FIELD(query);
-
-	READ_DONE();
-}
-
-static ExecuteStmt *
-_readExecuteStmt(void)
-{
-	READ_LOCALS(ExecuteStmt);
-
-	READ_STRING_FIELD(name);
-	READ_NODE_FIELD(params);
-
-	READ_DONE();
-}
-
-static DeallocateStmt *
-_readDeallocateStmt(void)
-{
-	READ_LOCALS(DeallocateStmt);
-
-	READ_STRING_FIELD(name);
-
-	READ_DONE();
-}
-
-static DropOwnedStmt *
-_readDropOwnedStmt(void)
-{
-	READ_LOCALS(DropOwnedStmt);
-
-	READ_NODE_FIELD(roles);
-	READ_ENUM_FIELD(behavior, DropBehavior);
-
-	READ_DONE();
-}
-
-static ReassignOwnedStmt *
-_readReassignOwnedStmt(void)
-{
-	READ_LOCALS(ReassignOwnedStmt);
-
-	READ_NODE_FIELD(roles);
-	READ_NODE_FIELD(newrole);
-
-	READ_DONE();
-}
-
-static AlterTSDictionaryStmt *
-_readAlterTSDictionaryStmt(void)
-{
-	READ_LOCALS(AlterTSDictionaryStmt);
-
-	READ_NODE_FIELD(dictname);
-	READ_NODE_FIELD(options);
-
-	READ_DONE();
-}
-
-static AlterTSConfigurationStmt *
-_readAlterTSConfigurationStmt(void)
-{
-	READ_LOCALS(AlterTSConfigurationStmt);
-
-	READ_ENUM_FIELD(kind, AlterTSConfigType);
-	READ_NODE_FIELD(cfgname);
-	READ_NODE_FIELD(tokentype);
-	READ_NODE_FIELD(dicts);
-	READ_BOOL_FIELD(override);
-	READ_BOOL_FIELD(replace);
-	READ_BOOL_FIELD(missing_ok);
-
-	READ_DONE();
-}
-
-static PublicationTable *
-_readPublicationTable(void)
-{
-	READ_LOCALS(PublicationTable);
-
-	READ_NODE_FIELD(relation);
-	READ_NODE_FIELD(whereClause);
-	READ_NODE_FIELD(columns);
-
-	READ_DONE();
-}
-
-static PublicationObjSpec *
-_readPublicationObjSpec(void)
-{
-	READ_LOCALS(PublicationObjSpec);
-
-	READ_ENUM_FIELD(pubobjtype, PublicationObjSpecType);
-	READ_STRING_FIELD(name);
-	READ_NODE_FIELD(pubtable);
-	READ_LOCATION_FIELD(location);
-
-	READ_DONE();
-}
-
-static CreatePublicationStmt *
-_readCreatePublicationStmt(void)
-{
-	READ_LOCALS(CreatePublicationStmt);
-
-	READ_STRING_FIELD(pubname);
-	READ_NODE_FIELD(options);
-	READ_NODE_FIELD(pubobjects);
-	READ_BOOL_FIELD(for_all_tables);
-
-	READ_DONE();
-}
-
-static AlterPublicationStmt *
-_readAlterPublicationStmt(void)
-{
-	READ_LOCALS(AlterPublicationStmt);
-
-	READ_STRING_FIELD(pubname);
-	READ_NODE_FIELD(options);
-	READ_NODE_FIELD(pubobjects);
-	READ_BOOL_FIELD(for_all_tables);
-	READ_ENUM_FIELD(action, AlterPublicationAction);
-
-	READ_DONE();
-}
-
-static CreateSubscriptionStmt *
-_readCreateSubscriptionStmt(void)
-{
-	READ_LOCALS(CreateSubscriptionStmt);
-
-	READ_STRING_FIELD(subname);
-	READ_STRING_FIELD(conninfo);
-	READ_NODE_FIELD(publication);
-	READ_NODE_FIELD(options);
-
-	READ_DONE();
-}
-
-static AlterSubscriptionStmt *
-_readAlterSubscriptionStmt(void)
-{
-	READ_LOCALS(AlterSubscriptionStmt);
-
-	READ_ENUM_FIELD(kind, AlterSubscriptionType);
-	READ_STRING_FIELD(subname);
-	READ_STRING_FIELD(conninfo);
-	READ_NODE_FIELD(publication);
-	READ_NODE_FIELD(options);
-
-	READ_DONE();
-}
-
-static DropSubscriptionStmt *
-_readDropSubscriptionStmt(void)
-{
-	READ_LOCALS(DropSubscriptionStmt);
-
-	READ_STRING_FIELD(subname);
-	READ_BOOL_FIELD(missing_ok);
-	READ_ENUM_FIELD(behavior, DropBehavior);
-
-	READ_DONE();
-}
-
-static PlaceHolderVar *
-_readPlaceHolderVar(void)
-{
-	READ_LOCALS(PlaceHolderVar);
-
-	READ_NODE_FIELD(phexpr);
-	READ_BITMAPSET_FIELD(phrels);
-	READ_BITMAPSET_FIELD(phnullingrels);
-	READ_UINT_FIELD(phid);
-	READ_UINT_FIELD(phlevelsup);
-
-	READ_DONE();
-}
-
-static AppendRelInfo *
-_readAppendRelInfo(void)
-{
-	READ_LOCALS(AppendRelInfo);
-
-	READ_UINT_FIELD(parent_relid);
-	READ_UINT_FIELD(child_relid);
-	READ_OID_FIELD(parent_reltype);
-	READ_OID_FIELD(child_reltype);
-	READ_NODE_FIELD(translated_vars);
-	READ_INT_FIELD(num_child_cols);
-	READ_ATTRNUMBER_ARRAY(parent_colnos, local_node->num_child_cols);
-	READ_OID_FIELD(parent_reloid);
-
-	READ_DONE();
-}
-
-static PlannedStmt *
-_readPlannedStmt(void)
-{
-	READ_LOCALS(PlannedStmt);
-
-	READ_ENUM_FIELD(commandType, CmdType);
-	READ_ENUM_FIELD(planGen, PlanGenerator);
-	READ_UINT64_FIELD(queryId);
-	READ_BOOL_FIELD(hasReturning);
-	READ_BOOL_FIELD(hasModifyingCTE);
-	READ_BOOL_FIELD(canSetTag);
-	READ_BOOL_FIELD(transientPlan);
-	READ_BOOL_FIELD(oneoffPlan);
-	READ_OID_FIELD(simplyUpdatableRel);
-	READ_BOOL_FIELD(dependsOnRole);
-	READ_BOOL_FIELD(parallelModeNeeded);
-	READ_INT_FIELD(jitFlags);
-	READ_NODE_FIELD(planTree);
-	READ_NODE_FIELD(rtable);
-	READ_NODE_FIELD(permInfos);
-	READ_NODE_FIELD(resultRelations);
-	READ_NODE_FIELD(appendRelations);
-	READ_NODE_FIELD(subplans);
-	READ_BITMAPSET_FIELD(rewindPlanIDs);
-	READ_NODE_FIELD(rowMarks);
-	READ_NODE_FIELD(relationOids);
-	READ_NODE_FIELD(invalItems);
-	READ_NODE_FIELD(paramExecTypes);
-	READ_NODE_FIELD(utilityStmt);
-	READ_LOCATION_FIELD(stmt_location);
-	READ_INT_FIELD(stmt_len);
-
-	READ_INT_ARRAY(subplan_sliceIds, list_length(local_node->subplans));
-
-	READ_INT_FIELD(numSlices);
-	local_node->slices = palloc(local_node->numSlices * sizeof(PlanSlice));
-	for (int i = 0; i < local_node->numSlices; i++)
-	{
-		READ_INT_FIELD(slices[i].sliceIndex);
-		READ_INT_FIELD(slices[i].parentIndex);
-		READ_INT_FIELD(slices[i].gangType);
-		READ_INT_FIELD(slices[i].numsegments);
-		READ_INT_FIELD(slices[i].parallel_workers);
-		READ_INT_FIELD(slices[i].segindex);
-		READ_BOOL_FIELD(slices[i].directDispatch.isDirectDispatch);
-		READ_NODE_FIELD(slices[i].directDispatch.contentIds);
-	}
-
-	READ_BITMAPSET_FIELD(rewindPlanIDs);
-
-	READ_NODE_FIELD(intoPolicy);
-
-	READ_UINT64_FIELD(query_mem);
-
-	READ_NODE_FIELD(intoClause);
-	READ_NODE_FIELD(copyIntoClause);
-	READ_NODE_FIELD(refreshClause);
-	READ_INT_FIELD(metricsQueryType);
-	READ_NODE_FIELD(extensionContext);
-
-	READ_DONE();
-}
-
-static Result *
-_readResult(void)
-{
-	READ_LOCALS(Result);
-
-	READ_FLOAT_FIELD(plan.startup_cost);
-	READ_FLOAT_FIELD(plan.total_cost);
-	READ_FLOAT_FIELD(plan.plan_rows);
-	READ_INT_FIELD(plan.plan_width);
-	READ_BOOL_FIELD(plan.parallel_aware);
-	READ_BOOL_FIELD(plan.parallel_safe);
-	READ_BOOL_FIELD(plan.async_capable);
-	READ_INT_FIELD(plan.plan_node_id);
-	READ_NODE_FIELD(plan.targetlist);
-	READ_NODE_FIELD(plan.qual);
-	READ_NODE_FIELD(plan.lefttree);
-	READ_NODE_FIELD(plan.righttree);
-	READ_NODE_FIELD(plan.initPlan);
-	READ_BITMAPSET_FIELD(plan.extParam);
-	READ_BITMAPSET_FIELD(plan.allParam);
-	READ_NODE_FIELD(resconstantqual);
-
-	READ_INT_FIELD(numHashFilterCols);
-	READ_ATTRNUMBER_ARRAY(hashFilterColIdx, local_node->numHashFilterCols);
-	READ_OID_ARRAY(hashFilterFuncs, local_node->numHashFilterCols);
-
-	READ_DONE();
-}
-
-static ProjectSet *
-_readProjectSet(void)
-{
-	READ_LOCALS(ProjectSet);
-
-	READ_FLOAT_FIELD(plan.startup_cost);
-	READ_FLOAT_FIELD(plan.total_cost);
-	READ_FLOAT_FIELD(plan.plan_rows);
-	READ_INT_FIELD(plan.plan_width);
-	READ_BOOL_FIELD(plan.parallel_aware);
-	READ_BOOL_FIELD(plan.parallel_safe);
-	READ_BOOL_FIELD(plan.async_capable);
-	READ_INT_FIELD(plan.plan_node_id);
-	READ_NODE_FIELD(plan.targetlist);
-	READ_NODE_FIELD(plan.qual);
-	READ_NODE_FIELD(plan.lefttree);
-	READ_NODE_FIELD(plan.righttree);
-	READ_NODE_FIELD(plan.initPlan);
-	READ_BITMAPSET_FIELD(plan.extParam);
-	READ_BITMAPSET_FIELD(plan.allParam);
-
-	READ_DONE();
-}
-
-static ModifyTable *
-_readModifyTable(void)
-{
-	READ_LOCALS(ModifyTable);
-
-	READ_FLOAT_FIELD(plan.startup_cost);
-	READ_FLOAT_FIELD(plan.total_cost);
-	READ_FLOAT_FIELD(plan.plan_rows);
-	READ_INT_FIELD(plan.plan_width);
-	READ_BOOL_FIELD(plan.parallel_aware);
-	READ_BOOL_FIELD(plan.parallel_safe);
-	READ_BOOL_FIELD(plan.async_capable);
-	READ_INT_FIELD(plan.plan_node_id);
-	READ_NODE_FIELD(plan.targetlist);
-	READ_NODE_FIELD(plan.qual);
-	READ_NODE_FIELD(plan.lefttree);
-	READ_NODE_FIELD(plan.righttree);
-	READ_NODE_FIELD(plan.initPlan);
-	READ_BITMAPSET_FIELD(plan.extParam);
-	READ_BITMAPSET_FIELD(plan.allParam);
-	READ_ENUM_FIELD(operation, CmdType);
-	READ_BOOL_FIELD(canSetTag);
-	READ_UINT_FIELD(nominalRelation);
-	READ_UINT_FIELD(rootRelation);
-	READ_BOOL_FIELD(partColsUpdated);
-	READ_BOOL_FIELD(splitUpdate);
-	READ_NODE_FIELD(resultRelations);
-	READ_NODE_FIELD(updateColnosLists);
-	READ_NODE_FIELD(withCheckOptionLists);
-	READ_NODE_FIELD(returningLists);
-	READ_NODE_FIELD(fdwPrivLists);
-	READ_BITMAPSET_FIELD(fdwDirectModifyPlans);
-	READ_NODE_FIELD(rowMarks);
-	READ_INT_FIELD(epqParam);
-	READ_ENUM_FIELD(onConflictAction, OnConflictAction);
-	READ_NODE_FIELD(arbiterIndexes);
-	READ_NODE_FIELD(onConflictSet);
-	READ_NODE_FIELD(onConflictCols);
-	READ_NODE_FIELD(onConflictWhere);
-	READ_UINT_FIELD(exclRelRTI);
-	READ_NODE_FIELD(exclRelTlist);
-	READ_NODE_FIELD(mergeActionLists);
-	READ_BOOL_FIELD(forceTupleRouting);
-
-	READ_DONE();
-}
-
-static Append *
-_readAppend(void)
-{
-	READ_LOCALS(Append);
-
-	READ_FLOAT_FIELD(plan.startup_cost);
-	READ_FLOAT_FIELD(plan.total_cost);
-	READ_FLOAT_FIELD(plan.plan_rows);
-	READ_INT_FIELD(plan.plan_width);
-	READ_BOOL_FIELD(plan.parallel_aware);
-	READ_BOOL_FIELD(plan.parallel_safe);
-	READ_BOOL_FIELD(plan.async_capable);
-	READ_INT_FIELD(plan.plan_node_id);
-	READ_NODE_FIELD(plan.targetlist);
-	READ_NODE_FIELD(plan.qual);
-	READ_NODE_FIELD(plan.lefttree);
-	READ_NODE_FIELD(plan.righttree);
-	READ_NODE_FIELD(plan.initPlan);
-	READ_BITMAPSET_FIELD(plan.extParam);
-	READ_BITMAPSET_FIELD(plan.allParam);
-	READ_BITMAPSET_FIELD(apprelids);
-	READ_NODE_FIELD(appendplans);
-	READ_INT_FIELD(nasyncplans);
-	READ_INT_FIELD(first_partial_plan);
-	READ_NODE_FIELD(part_prune_info);
-	READ_NODE_FIELD(join_prune_paramids);
-
-	READ_DONE();
-}
-
-static MergeAppend *
-_readMergeAppend(void)
-{
-	READ_LOCALS(MergeAppend);
-
-	READ_FLOAT_FIELD(plan.startup_cost);
-	READ_FLOAT_FIELD(plan.total_cost);
-	READ_FLOAT_FIELD(plan.plan_rows);
-	READ_INT_FIELD(plan.plan_width);
-	READ_BOOL_FIELD(plan.parallel_aware);
-	READ_BOOL_FIELD(plan.parallel_safe);
-	READ_BOOL_FIELD(plan.async_capable);
-	READ_INT_FIELD(plan.plan_node_id);
-	READ_NODE_FIELD(plan.targetlist);
-	READ_NODE_FIELD(plan.qual);
-	READ_NODE_FIELD(plan.lefttree);
-	READ_NODE_FIELD(plan.righttree);
-	READ_NODE_FIELD(plan.initPlan);
-	READ_BITMAPSET_FIELD(plan.extParam);
-	READ_BITMAPSET_FIELD(plan.allParam);
-	READ_BITMAPSET_FIELD(apprelids);
-	READ_NODE_FIELD(mergeplans);
-	READ_INT_FIELD(numCols);
-	READ_ATTRNUMBER_ARRAY(sortColIdx, local_node->numCols);
-	READ_OID_ARRAY(sortOperators, local_node->numCols);
-	READ_OID_ARRAY(collations, local_node->numCols);
-	READ_BOOL_ARRAY(nullsFirst, local_node->numCols);
-	READ_NODE_FIELD(part_prune_info);
-	READ_NODE_FIELD(join_prune_paramids);
-
-	READ_DONE();
-}
-
-static RecursiveUnion *
-_readRecursiveUnion(void)
-{
-	READ_LOCALS(RecursiveUnion);
-
-	READ_FLOAT_FIELD(plan.startup_cost);
-	READ_FLOAT_FIELD(plan.total_cost);
-	READ_FLOAT_FIELD(plan.plan_rows);
-	READ_INT_FIELD(plan.plan_width);
-	READ_BOOL_FIELD(plan.parallel_aware);
-	READ_BOOL_FIELD(plan.parallel_safe);
-	READ_BOOL_FIELD(plan.async_capable);
-	READ_INT_FIELD(plan.plan_node_id);
-	READ_NODE_FIELD(plan.targetlist);
-	READ_NODE_FIELD(plan.qual);
-	READ_NODE_FIELD(plan.lefttree);
-	READ_NODE_FIELD(plan.righttree);
-	READ_NODE_FIELD(plan.initPlan);
-	READ_BITMAPSET_FIELD(plan.extParam);
-	READ_BITMAPSET_FIELD(plan.allParam);
-	READ_INT_FIELD(wtParam);
-	READ_INT_FIELD(numCols);
-	READ_ATTRNUMBER_ARRAY(dupColIdx, local_node->numCols);
-	READ_OID_ARRAY(dupOperators, local_node->numCols);
-	READ_OID_ARRAY(dupCollations, local_node->numCols);
-	READ_LONG_FIELD(numGroups);
-
-	READ_DONE();
-}
-
-static BitmapAnd *
-_readBitmapAnd(void)
-{
-	READ_LOCALS(BitmapAnd);
-
-	READ_FLOAT_FIELD(plan.startup_cost);
-	READ_FLOAT_FIELD(plan.total_cost);
-	READ_FLOAT_FIELD(plan.plan_rows);
-	READ_INT_FIELD(plan.plan_width);
-	READ_BOOL_FIELD(plan.parallel_aware);
-	READ_BOOL_FIELD(plan.parallel_safe);
-	READ_BOOL_FIELD(plan.async_capable);
-	READ_INT_FIELD(plan.plan_node_id);
-	READ_NODE_FIELD(plan.targetlist);
-	READ_NODE_FIELD(plan.qual);
-	READ_NODE_FIELD(plan.lefttree);
-	READ_NODE_FIELD(plan.righttree);
-	READ_NODE_FIELD(plan.initPlan);
-	READ_BITMAPSET_FIELD(plan.extParam);
-	READ_BITMAPSET_FIELD(plan.allParam);
-	READ_NODE_FIELD(bitmapplans);
-
-	READ_DONE();
-}
-
-static BitmapOr *
-_readBitmapOr(void)
-{
-	READ_LOCALS(BitmapOr);
-
-	READ_FLOAT_FIELD(plan.startup_cost);
-	READ_FLOAT_FIELD(plan.total_cost);
-	READ_FLOAT_FIELD(plan.plan_rows);
-	READ_INT_FIELD(plan.plan_width);
-	READ_BOOL_FIELD(plan.parallel_aware);
-	READ_BOOL_FIELD(plan.parallel_safe);
-	READ_BOOL_FIELD(plan.async_capable);
-	READ_INT_FIELD(plan.plan_node_id);
-	READ_NODE_FIELD(plan.targetlist);
-	READ_NODE_FIELD(plan.qual);
-	READ_NODE_FIELD(plan.lefttree);
-	READ_NODE_FIELD(plan.righttree);
-	READ_NODE_FIELD(plan.initPlan);
-	READ_BITMAPSET_FIELD(plan.extParam);
-	READ_BITMAPSET_FIELD(plan.allParam);
-	READ_BOOL_FIELD(isshared);
-	READ_NODE_FIELD(bitmapplans);
-
-	READ_DONE();
-}
-
-static SeqScan *
-_readSeqScan(void)
-{
-	READ_LOCALS(SeqScan);
-
-	READ_FLOAT_FIELD(scan.plan.startup_cost);
-	READ_FLOAT_FIELD(scan.plan.total_cost);
-	READ_FLOAT_FIELD(scan.plan.plan_rows);
-	READ_INT_FIELD(scan.plan.plan_width);
-	READ_BOOL_FIELD(scan.plan.parallel_aware);
-	READ_BOOL_FIELD(scan.plan.parallel_safe);
-	READ_BOOL_FIELD(scan.plan.async_capable);
-	READ_INT_FIELD(scan.plan.plan_node_id);
-	READ_NODE_FIELD(scan.plan.targetlist);
-	READ_NODE_FIELD(scan.plan.qual);
-	READ_NODE_FIELD(scan.plan.lefttree);
-	READ_NODE_FIELD(scan.plan.righttree);
-	READ_NODE_FIELD(scan.plan.initPlan);
-	READ_BITMAPSET_FIELD(scan.plan.extParam);
-	READ_BITMAPSET_FIELD(scan.plan.allParam);
-	READ_UINT_FIELD(scan.scanrelid);
-
-	READ_DONE();
-}
-
-static SampleScan *
-_readSampleScan(void)
-{
-	READ_LOCALS(SampleScan);
-
-	READ_FLOAT_FIELD(scan.plan.startup_cost);
-	READ_FLOAT_FIELD(scan.plan.total_cost);
-	READ_FLOAT_FIELD(scan.plan.plan_rows);
-	READ_INT_FIELD(scan.plan.plan_width);
-	READ_BOOL_FIELD(scan.plan.parallel_aware);
-	READ_BOOL_FIELD(scan.plan.parallel_safe);
-	READ_BOOL_FIELD(scan.plan.async_capable);
-	READ_INT_FIELD(scan.plan.plan_node_id);
-	READ_NODE_FIELD(scan.plan.targetlist);
-	READ_NODE_FIELD(scan.plan.qual);
-	READ_NODE_FIELD(scan.plan.lefttree);
-	READ_NODE_FIELD(scan.plan.righttree);
-	READ_NODE_FIELD(scan.plan.initPlan);
-	READ_BITMAPSET_FIELD(scan.plan.extParam);
-	READ_BITMAPSET_FIELD(scan.plan.allParam);
-	READ_UINT_FIELD(scan.scanrelid);
-	READ_NODE_FIELD(tablesample);
-
-	READ_DONE();
-}
-
-static void readIndexScanFields(IndexScan *local_node);
-
-static IndexScan *
-_readIndexScan(void)
-{
-	READ_LOCALS_NO_FIELDS(IndexScan);
-
-	readIndexScanFields(local_node);
-
-	READ_DONE();
-}
-
-static DynamicIndexScan *
-_readDynamicIndexScan(void)
-{
-	READ_LOCALS(DynamicIndexScan);
-	/* DynamicIndexScan has some content from IndexScan. */
-	readIndexScanFields(&local_node->indexscan);
-	READ_NODE_FIELD(partOids);
-	READ_NODE_FIELD(part_prune_info);
-	READ_NODE_FIELD(join_prune_paramids);
-	READ_DONE();
-}
-
-static void
-readIndexScanFields(IndexScan *local_node)
-{
-	READ_TEMP_LOCALS();
-
-	READ_FLOAT_FIELD(scan.plan.startup_cost);
-	READ_FLOAT_FIELD(scan.plan.total_cost);
-	READ_FLOAT_FIELD(scan.plan.plan_rows);
-	READ_INT_FIELD(scan.plan.plan_width);
-	READ_BOOL_FIELD(scan.plan.parallel_aware);
-	READ_BOOL_FIELD(scan.plan.parallel_safe);
-	READ_BOOL_FIELD(scan.plan.async_capable);
-	READ_INT_FIELD(scan.plan.plan_node_id);
-	READ_NODE_FIELD(scan.plan.targetlist);
-	READ_NODE_FIELD(scan.plan.qual);
-	READ_NODE_FIELD(scan.plan.lefttree);
-	READ_NODE_FIELD(scan.plan.righttree);
-	READ_NODE_FIELD(scan.plan.initPlan);
-	READ_BITMAPSET_FIELD(scan.plan.extParam);
-	READ_BITMAPSET_FIELD(scan.plan.allParam);
-	READ_UINT_FIELD(scan.scanrelid);
-	READ_OID_FIELD(indexid);
-	READ_NODE_FIELD(indexqual);
-	READ_NODE_FIELD(indexqualorig);
-	READ_NODE_FIELD(indexorderby);
-	READ_NODE_FIELD(indexorderbyorig);
-	READ_NODE_FIELD(indexorderbyops);
-	READ_ENUM_FIELD(indexorderdir, ScanDirection);
-}
-
-static void readIndexOnlyScanFields(IndexOnlyScan *local_node);
-
-static IndexOnlyScan *
-_readIndexOnlyScan(void)
-{
-	READ_LOCALS_NO_FIELDS(IndexOnlyScan);
-
-	readIndexOnlyScanFields(local_node);
-
-	READ_DONE();
-}
-
-static void
-readIndexOnlyScanFields(IndexOnlyScan *local_node)
-{
-	READ_TEMP_LOCALS(IndexOnlyScan);
-
-	READ_FLOAT_FIELD(scan.plan.startup_cost);
-	READ_FLOAT_FIELD(scan.plan.total_cost);
-	READ_FLOAT_FIELD(scan.plan.plan_rows);
-	READ_INT_FIELD(scan.plan.plan_width);
-	READ_BOOL_FIELD(scan.plan.parallel_aware);
-	READ_BOOL_FIELD(scan.plan.parallel_safe);
-	READ_BOOL_FIELD(scan.plan.async_capable);
-	READ_INT_FIELD(scan.plan.plan_node_id);
-	READ_NODE_FIELD(scan.plan.targetlist);
-	READ_NODE_FIELD(scan.plan.qual);
-	READ_NODE_FIELD(scan.plan.lefttree);
-	READ_NODE_FIELD(scan.plan.righttree);
-	READ_NODE_FIELD(scan.plan.initPlan);
-	READ_BITMAPSET_FIELD(scan.plan.extParam);
-	READ_BITMAPSET_FIELD(scan.plan.allParam);
-	READ_UINT_FIELD(scan.scanrelid);
-	READ_OID_FIELD(indexid);
-	READ_NODE_FIELD(indexqual);
-	READ_NODE_FIELD(recheckqual);
-	READ_NODE_FIELD(indexorderby);
-	READ_NODE_FIELD(indextlist);
-	READ_ENUM_FIELD(indexorderdir, ScanDirection);
-}
-
-static DynamicIndexOnlyScan *
-_readDynamicIndexOnlyScan(void)
-{
-	READ_LOCALS(DynamicIndexOnlyScan);
-
-	/* DynamicIndexScan has some content from IndexScan. */
-	readIndexOnlyScanFields(&local_node->indexscan);
-	READ_NODE_FIELD(partOids);
-	READ_NODE_FIELD(part_prune_info);
-	READ_NODE_FIELD(join_prune_paramids);
-	READ_DONE();
-}
-
-static void
-readBitmapIndexScanFields(BitmapIndexScan *local_node)
-{
-	READ_TEMP_LOCALS(BitmapIndexScan);
-
-	READ_FLOAT_FIELD(scan.plan.startup_cost);
-	READ_FLOAT_FIELD(scan.plan.total_cost);
-	READ_FLOAT_FIELD(scan.plan.plan_rows);
-	READ_INT_FIELD(scan.plan.plan_width);
-	READ_BOOL_FIELD(scan.plan.parallel_aware);
-	READ_BOOL_FIELD(scan.plan.parallel_safe);
-	READ_BOOL_FIELD(scan.plan.async_capable);
-	READ_INT_FIELD(scan.plan.plan_node_id);
-	READ_NODE_FIELD(scan.plan.targetlist);
-	READ_NODE_FIELD(scan.plan.qual);
-	READ_NODE_FIELD(scan.plan.lefttree);
-	READ_NODE_FIELD(scan.plan.righttree);
-	READ_NODE_FIELD(scan.plan.initPlan);
-	READ_BITMAPSET_FIELD(scan.plan.extParam);
-	READ_BITMAPSET_FIELD(scan.plan.allParam);
-	READ_UINT_FIELD(scan.scanrelid);
-	READ_OID_FIELD(indexid);
-	READ_BOOL_FIELD(isshared);
-	READ_NODE_FIELD(indexqual);
-	READ_NODE_FIELD(indexqualorig);
-}
-
-static BitmapIndexScan *
-_readBitmapIndexScan(void)
-{
-	READ_LOCALS_NO_FIELDS(BitmapIndexScan);
-
-	readBitmapIndexScanFields(local_node);
-
-	READ_DONE();
-}
-
-static DynamicBitmapIndexScan *
-_readDynamicBitmapIndexScan(void)
-{
-	READ_LOCALS_NO_FIELDS(DynamicBitmapIndexScan);
-
-	/* DynamicBitmapIndexScan has some content from BitmapIndexScan. */
-	readBitmapIndexScanFields(&local_node->biscan);
-
-	READ_DONE();
-}
-
-
-static void
-readBitmapHeapScanFields(BitmapHeapScan *local_node)
-{
-	READ_TEMP_LOCALS();
-
-	READ_FLOAT_FIELD(scan.plan.startup_cost);
-	READ_FLOAT_FIELD(scan.plan.total_cost);
-	READ_FLOAT_FIELD(scan.plan.plan_rows);
-	READ_INT_FIELD(scan.plan.plan_width);
-	READ_BOOL_FIELD(scan.plan.parallel_aware);
-	READ_BOOL_FIELD(scan.plan.parallel_safe);
-	READ_BOOL_FIELD(scan.plan.async_capable);
-	READ_INT_FIELD(scan.plan.plan_node_id);
-	READ_NODE_FIELD(scan.plan.targetlist);
-	READ_NODE_FIELD(scan.plan.qual);
-	READ_NODE_FIELD(scan.plan.lefttree);
-	READ_NODE_FIELD(scan.plan.righttree);
-	READ_NODE_FIELD(scan.plan.initPlan);
-	READ_BITMAPSET_FIELD(scan.plan.extParam);
-	READ_BITMAPSET_FIELD(scan.plan.allParam);
-	READ_UINT_FIELD(scan.scanrelid);
-	READ_NODE_FIELD(bitmapqualorig);
-}
-
-static BitmapHeapScan *
-_readBitmapHeapScan(void)
-{
-	READ_LOCALS_NO_FIELDS(BitmapHeapScan);
-
-	readBitmapHeapScanFields(local_node);
-
-	READ_DONE();
-}
-
-
-static DynamicBitmapHeapScan *
-_readDynamicBitmapHeapScan(void)
-{
-	READ_LOCALS(DynamicBitmapHeapScan);
-
-	/* DynamicBitmapHeapScan has some content from BitmapHeapScan. */
-	readBitmapHeapScanFields(&local_node->bitmapheapscan);
-
-	READ_NODE_FIELD(partOids);
-	READ_NODE_FIELD(part_prune_info);
-	READ_NODE_FIELD(join_prune_paramids);
-
-	READ_DONE();
-}
-
-static TidScan *
-_readTidScan(void)
-{
-	READ_LOCALS(TidScan);
-
-	READ_FLOAT_FIELD(scan.plan.startup_cost);
-	READ_FLOAT_FIELD(scan.plan.total_cost);
-	READ_FLOAT_FIELD(scan.plan.plan_rows);
-	READ_INT_FIELD(scan.plan.plan_width);
-	READ_BOOL_FIELD(scan.plan.parallel_aware);
-	READ_BOOL_FIELD(scan.plan.parallel_safe);
-	READ_BOOL_FIELD(scan.plan.async_capable);
-	READ_INT_FIELD(scan.plan.plan_node_id);
-	READ_NODE_FIELD(scan.plan.targetlist);
-	READ_NODE_FIELD(scan.plan.qual);
-	READ_NODE_FIELD(scan.plan.lefttree);
-	READ_NODE_FIELD(scan.plan.righttree);
-	READ_NODE_FIELD(scan.plan.initPlan);
-	READ_BITMAPSET_FIELD(scan.plan.extParam);
-	READ_BITMAPSET_FIELD(scan.plan.allParam);
-	READ_UINT_FIELD(scan.scanrelid);
-	READ_NODE_FIELD(tidquals);
-
-	READ_DONE();
-}
-
-static TidRangeScan *
-_readTidRangeScan(void)
-{
-	READ_LOCALS(TidRangeScan);
-
-	READ_FLOAT_FIELD(scan.plan.startup_cost);
-	READ_FLOAT_FIELD(scan.plan.total_cost);
-	READ_FLOAT_FIELD(scan.plan.plan_rows);
-	READ_INT_FIELD(scan.plan.plan_width);
-	READ_BOOL_FIELD(scan.plan.parallel_aware);
-	READ_BOOL_FIELD(scan.plan.parallel_safe);
-	READ_BOOL_FIELD(scan.plan.async_capable);
-	READ_INT_FIELD(scan.plan.plan_node_id);
-	READ_NODE_FIELD(scan.plan.targetlist);
-	READ_NODE_FIELD(scan.plan.qual);
-	READ_NODE_FIELD(scan.plan.lefttree);
-	READ_NODE_FIELD(scan.plan.righttree);
-	READ_NODE_FIELD(scan.plan.initPlan);
-	READ_BITMAPSET_FIELD(scan.plan.extParam);
-	READ_BITMAPSET_FIELD(scan.plan.allParam);
-	READ_UINT_FIELD(scan.scanrelid);
-	READ_NODE_FIELD(tidrangequals);
-
-	READ_DONE();
-}
-
-static SubqueryScan *
-_readSubqueryScan(void)
-{
-	READ_LOCALS(SubqueryScan);
-
-	READ_FLOAT_FIELD(scan.plan.startup_cost);
-	READ_FLOAT_FIELD(scan.plan.total_cost);
-	READ_FLOAT_FIELD(scan.plan.plan_rows);
-	READ_INT_FIELD(scan.plan.plan_width);
-	READ_BOOL_FIELD(scan.plan.parallel_aware);
-	READ_BOOL_FIELD(scan.plan.parallel_safe);
-	READ_BOOL_FIELD(scan.plan.async_capable);
-	READ_INT_FIELD(scan.plan.plan_node_id);
-	READ_NODE_FIELD(scan.plan.targetlist);
-	READ_NODE_FIELD(scan.plan.qual);
-	READ_NODE_FIELD(scan.plan.lefttree);
-	READ_NODE_FIELD(scan.plan.righttree);
-	READ_NODE_FIELD(scan.plan.initPlan);
-	READ_BITMAPSET_FIELD(scan.plan.extParam);
-	READ_BITMAPSET_FIELD(scan.plan.allParam);
-	READ_UINT_FIELD(scan.scanrelid);
-	READ_NODE_FIELD(subplan);
-	READ_ENUM_FIELD(scanstatus, SubqueryScanStatus);
-
-	READ_DONE();
-}
-
-static FunctionScan *
-_readFunctionScan(void)
-{
-	READ_LOCALS(FunctionScan);
-
-	READ_FLOAT_FIELD(scan.plan.startup_cost);
-	READ_FLOAT_FIELD(scan.plan.total_cost);
-	READ_FLOAT_FIELD(scan.plan.plan_rows);
-	READ_INT_FIELD(scan.plan.plan_width);
-	READ_BOOL_FIELD(scan.plan.parallel_aware);
-	READ_BOOL_FIELD(scan.plan.parallel_safe);
-	READ_BOOL_FIELD(scan.plan.async_capable);
-	READ_INT_FIELD(scan.plan.plan_node_id);
-	READ_NODE_FIELD(scan.plan.targetlist);
-	READ_NODE_FIELD(scan.plan.qual);
-	READ_NODE_FIELD(scan.plan.lefttree);
-	READ_NODE_FIELD(scan.plan.righttree);
-	READ_NODE_FIELD(scan.plan.initPlan);
-	READ_BITMAPSET_FIELD(scan.plan.extParam);
-	READ_BITMAPSET_FIELD(scan.plan.allParam);
-	READ_UINT_FIELD(scan.scanrelid);
-	READ_NODE_FIELD(functions);
-	READ_BOOL_FIELD(funcordinality);
-
-	READ_DONE();
-}
-
-static ValuesScan *
-_readValuesScan(void)
-{
-	READ_LOCALS(ValuesScan);
-
-	READ_FLOAT_FIELD(scan.plan.startup_cost);
-	READ_FLOAT_FIELD(scan.plan.total_cost);
-	READ_FLOAT_FIELD(scan.plan.plan_rows);
-	READ_INT_FIELD(scan.plan.plan_width);
-	READ_BOOL_FIELD(scan.plan.parallel_aware);
-	READ_BOOL_FIELD(scan.plan.parallel_safe);
-	READ_BOOL_FIELD(scan.plan.async_capable);
-	READ_INT_FIELD(scan.plan.plan_node_id);
-	READ_NODE_FIELD(scan.plan.targetlist);
-	READ_NODE_FIELD(scan.plan.qual);
-	READ_NODE_FIELD(scan.plan.lefttree);
-	READ_NODE_FIELD(scan.plan.righttree);
-	READ_NODE_FIELD(scan.plan.initPlan);
-	READ_BITMAPSET_FIELD(scan.plan.extParam);
-	READ_BITMAPSET_FIELD(scan.plan.allParam);
-	READ_UINT_FIELD(scan.scanrelid);
-	READ_NODE_FIELD(values_lists);
-
-	READ_DONE();
-}
-
-static TableFuncScan *
-_readTableFuncScan(void)
-{
-	READ_LOCALS(TableFuncScan);
-
-	READ_FLOAT_FIELD(scan.plan.startup_cost);
-	READ_FLOAT_FIELD(scan.plan.total_cost);
-	READ_FLOAT_FIELD(scan.plan.plan_rows);
-	READ_INT_FIELD(scan.plan.plan_width);
-	READ_BOOL_FIELD(scan.plan.parallel_aware);
-	READ_BOOL_FIELD(scan.plan.parallel_safe);
-	READ_BOOL_FIELD(scan.plan.async_capable);
-	READ_INT_FIELD(scan.plan.plan_node_id);
-	READ_NODE_FIELD(scan.plan.targetlist);
-	READ_NODE_FIELD(scan.plan.qual);
-	READ_NODE_FIELD(scan.plan.lefttree);
-	READ_NODE_FIELD(scan.plan.righttree);
-	READ_NODE_FIELD(scan.plan.initPlan);
-	READ_BITMAPSET_FIELD(scan.plan.extParam);
-	READ_BITMAPSET_FIELD(scan.plan.allParam);
-	READ_UINT_FIELD(scan.scanrelid);
-	READ_NODE_FIELD(tablefunc);
-
-	READ_DONE();
-}
-
-static CteScan *
-_readCteScan(void)
-{
-	READ_LOCALS(CteScan);
-
-	READ_FLOAT_FIELD(scan.plan.startup_cost);
-	READ_FLOAT_FIELD(scan.plan.total_cost);
-	READ_FLOAT_FIELD(scan.plan.plan_rows);
-	READ_INT_FIELD(scan.plan.plan_width);
-	READ_BOOL_FIELD(scan.plan.parallel_aware);
-	READ_BOOL_FIELD(scan.plan.parallel_safe);
-	READ_BOOL_FIELD(scan.plan.async_capable);
-	READ_INT_FIELD(scan.plan.plan_node_id);
-	READ_NODE_FIELD(scan.plan.targetlist);
-	READ_NODE_FIELD(scan.plan.qual);
-	READ_NODE_FIELD(scan.plan.lefttree);
-	READ_NODE_FIELD(scan.plan.righttree);
-	READ_NODE_FIELD(scan.plan.initPlan);
-	READ_BITMAPSET_FIELD(scan.plan.extParam);
-	READ_BITMAPSET_FIELD(scan.plan.allParam);
-	READ_UINT_FIELD(scan.scanrelid);
-	READ_INT_FIELD(ctePlanId);
-	READ_INT_FIELD(cteParam);
-
-	READ_DONE();
-}
-
-static NamedTuplestoreScan *
-_readNamedTuplestoreScan(void)
-{
-	READ_LOCALS(NamedTuplestoreScan);
-
-	READ_FLOAT_FIELD(scan.plan.startup_cost);
-	READ_FLOAT_FIELD(scan.plan.total_cost);
-	READ_FLOAT_FIELD(scan.plan.plan_rows);
-	READ_INT_FIELD(scan.plan.plan_width);
-	READ_BOOL_FIELD(scan.plan.parallel_aware);
-	READ_BOOL_FIELD(scan.plan.parallel_safe);
-	READ_BOOL_FIELD(scan.plan.async_capable);
-	READ_INT_FIELD(scan.plan.plan_node_id);
-	READ_NODE_FIELD(scan.plan.targetlist);
-	READ_NODE_FIELD(scan.plan.qual);
-	READ_NODE_FIELD(scan.plan.lefttree);
-	READ_NODE_FIELD(scan.plan.righttree);
-	READ_NODE_FIELD(scan.plan.initPlan);
-	READ_BITMAPSET_FIELD(scan.plan.extParam);
-	READ_BITMAPSET_FIELD(scan.plan.allParam);
-	READ_UINT_FIELD(scan.scanrelid);
-	READ_STRING_FIELD(enrname);
-
-	READ_DONE();
-}
-
-static WorkTableScan *
-_readWorkTableScan(void)
-{
-	READ_LOCALS(WorkTableScan);
-
-	READ_FLOAT_FIELD(scan.plan.startup_cost);
-	READ_FLOAT_FIELD(scan.plan.total_cost);
-	READ_FLOAT_FIELD(scan.plan.plan_rows);
-	READ_INT_FIELD(scan.plan.plan_width);
-	READ_BOOL_FIELD(scan.plan.parallel_aware);
-	READ_BOOL_FIELD(scan.plan.parallel_safe);
-	READ_BOOL_FIELD(scan.plan.async_capable);
-	READ_INT_FIELD(scan.plan.plan_node_id);
-	READ_NODE_FIELD(scan.plan.targetlist);
-	READ_NODE_FIELD(scan.plan.qual);
-	READ_NODE_FIELD(scan.plan.lefttree);
-	READ_NODE_FIELD(scan.plan.righttree);
-	READ_NODE_FIELD(scan.plan.initPlan);
-	READ_BITMAPSET_FIELD(scan.plan.extParam);
-	READ_BITMAPSET_FIELD(scan.plan.allParam);
-	READ_UINT_FIELD(scan.scanrelid);
-	READ_INT_FIELD(wtParam);
-
-	READ_DONE();
-}
-
-static ForeignScan *
-_readForeignScan(void)
-{
-	READ_LOCALS(ForeignScan);
-
-	READ_FLOAT_FIELD(scan.plan.startup_cost);
-	READ_FLOAT_FIELD(scan.plan.total_cost);
-	READ_FLOAT_FIELD(scan.plan.plan_rows);
-	READ_INT_FIELD(scan.plan.plan_width);
-	READ_BOOL_FIELD(scan.plan.parallel_aware);
-	READ_BOOL_FIELD(scan.plan.parallel_safe);
-	READ_BOOL_FIELD(scan.plan.async_capable);
-	READ_INT_FIELD(scan.plan.plan_node_id);
-	READ_NODE_FIELD(scan.plan.targetlist);
-	READ_NODE_FIELD(scan.plan.qual);
-	READ_NODE_FIELD(scan.plan.lefttree);
-	READ_NODE_FIELD(scan.plan.righttree);
-	READ_NODE_FIELD(scan.plan.initPlan);
-	READ_BITMAPSET_FIELD(scan.plan.extParam);
-	READ_BITMAPSET_FIELD(scan.plan.allParam);
-	READ_UINT_FIELD(scan.scanrelid);
-	READ_ENUM_FIELD(operation, CmdType);
-	READ_UINT_FIELD(resultRelation);
-	READ_OID_FIELD(checkAsUser);
-	READ_OID_FIELD(fs_server);
-	READ_NODE_FIELD(fdw_exprs);
-	READ_NODE_FIELD(fdw_private);
-	READ_NODE_FIELD(fdw_scan_tlist);
-	READ_NODE_FIELD(fdw_recheck_quals);
-	READ_BITMAPSET_FIELD(fs_relids);
-	READ_BITMAPSET_FIELD(fs_base_relids);
-	READ_BOOL_FIELD(fsSystemCol);
-
-	READ_DONE();
-}
-
-static CustomScan *
-_readCustomScan(void)
-{
-	READ_LOCALS(CustomScan);
-
-	READ_FLOAT_FIELD(scan.plan.startup_cost);
-	READ_FLOAT_FIELD(scan.plan.total_cost);
-	READ_FLOAT_FIELD(scan.plan.plan_rows);
-	READ_INT_FIELD(scan.plan.plan_width);
-	READ_BOOL_FIELD(scan.plan.parallel_aware);
-	READ_BOOL_FIELD(scan.plan.parallel_safe);
-	READ_BOOL_FIELD(scan.plan.async_capable);
-	READ_INT_FIELD(scan.plan.plan_node_id);
-	READ_NODE_FIELD(scan.plan.targetlist);
-	READ_NODE_FIELD(scan.plan.qual);
-	READ_NODE_FIELD(scan.plan.lefttree);
-	READ_NODE_FIELD(scan.plan.righttree);
-	READ_NODE_FIELD(scan.plan.initPlan);
-	READ_BITMAPSET_FIELD(scan.plan.extParam);
-	READ_BITMAPSET_FIELD(scan.plan.allParam);
-	READ_UINT_FIELD(scan.scanrelid);
-	READ_UINT_FIELD(flags);
-	READ_NODE_FIELD(custom_plans);
-	READ_NODE_FIELD(custom_exprs);
-	READ_NODE_FIELD(custom_private);
-	READ_NODE_FIELD(custom_scan_tlist);
-	READ_BITMAPSET_FIELD(custom_relids);
-
-	{
-		/* Lookup CustomScanMethods by CustomName */
-		char	   *custom_name;
-		const CustomScanMethods *methods;
-		token = pg_strtok(&length); /* skip methods: */
-		token = pg_strtok(&length); /* CustomName */
-		custom_name = nullable_string(token, length);
-		methods = GetCustomScanMethods(custom_name, false);
-		local_node->methods = methods;
-	}
-
-	READ_DONE();
-}
-
-static NestLoop *
-_readNestLoop(void)
-{
-	READ_LOCALS(NestLoop);
-
-	READ_FLOAT_FIELD(join.plan.startup_cost);
-	READ_FLOAT_FIELD(join.plan.total_cost);
-	READ_FLOAT_FIELD(join.plan.plan_rows);
-	READ_INT_FIELD(join.plan.plan_width);
-	READ_BOOL_FIELD(join.plan.parallel_aware);
-	READ_BOOL_FIELD(join.plan.parallel_safe);
-	READ_BOOL_FIELD(join.plan.async_capable);
-	READ_INT_FIELD(join.plan.plan_node_id);
-	READ_NODE_FIELD(join.plan.targetlist);
-	READ_NODE_FIELD(join.plan.qual);
-	READ_NODE_FIELD(join.plan.lefttree);
-	READ_NODE_FIELD(join.plan.righttree);
-	READ_NODE_FIELD(join.plan.initPlan);
-	READ_BITMAPSET_FIELD(join.plan.extParam);
-	READ_BITMAPSET_FIELD(join.plan.allParam);
-	READ_ENUM_FIELD(join.jointype, JoinType);
-	READ_BOOL_FIELD(join.inner_unique);
-	READ_NODE_FIELD(join.joinqual);
-	READ_NODE_FIELD(nestParams);
-
-	READ_DONE();
-}
-
-static NestLoopParam *
-_readNestLoopParam(void)
-{
-	READ_LOCALS(NestLoopParam);
-
-	READ_INT_FIELD(paramno);
-	READ_NODE_FIELD(paramval);
-
-	READ_DONE();
-}
-
-static MergeJoin *
-_readMergeJoin(void)
-{
-	READ_LOCALS(MergeJoin);
-
-	READ_FLOAT_FIELD(join.plan.startup_cost);
-	READ_FLOAT_FIELD(join.plan.total_cost);
-	READ_FLOAT_FIELD(join.plan.plan_rows);
-	READ_INT_FIELD(join.plan.plan_width);
-	READ_BOOL_FIELD(join.plan.parallel_aware);
-	READ_BOOL_FIELD(join.plan.parallel_safe);
-	READ_BOOL_FIELD(join.plan.async_capable);
-	READ_INT_FIELD(join.plan.plan_node_id);
-	READ_NODE_FIELD(join.plan.targetlist);
-	READ_NODE_FIELD(join.plan.qual);
-	READ_NODE_FIELD(join.plan.lefttree);
-	READ_NODE_FIELD(join.plan.righttree);
-	READ_NODE_FIELD(join.plan.initPlan);
-	READ_BITMAPSET_FIELD(join.plan.extParam);
-	READ_BITMAPSET_FIELD(join.plan.allParam);
-	READ_ENUM_FIELD(join.jointype, JoinType);
-	READ_BOOL_FIELD(join.inner_unique);
-	READ_NODE_FIELD(join.joinqual);
... 553 lines suppressed ...


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org