LCOV - code coverage report
Current view: top level - src/backend/nodes - outfuncs.funcs.c (source / functions) Hit Total Coverage
Test: PostgreSQL 17devel Lines: 3101 4342 71.4 %
Date: 2024-04-25 19:11:21 Functions: 301 366 82.2 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*-------------------------------------------------------------------------
       2             :  *
       3             :  * outfuncs.funcs.c
       4             :  *    Generated node infrastructure code
       5             :  *
       6             :  * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
       7             :  * Portions Copyright (c) 1994, Regents of the University of California
       8             :  *
       9             :  * NOTES
      10             :  *  ******************************
      11             :  *  *** DO NOT EDIT THIS FILE! ***
      12             :  *  ******************************
      13             :  *
      14             :  *  It has been GENERATED by src/backend/nodes/gen_node_support.pl
      15             :  *
      16             :  *-------------------------------------------------------------------------
      17             :  */
      18             : #include "access/amapi.h"
      19             : #include "access/sdir.h"
      20             : #include "access/tableam.h"
      21             : #include "access/tsmapi.h"
      22             : #include "commands/event_trigger.h"
      23             : #include "commands/trigger.h"
      24             : #include "executor/tuptable.h"
      25             : #include "foreign/fdwapi.h"
      26             : #include "nodes/bitmapset.h"
      27             : #include "nodes/execnodes.h"
      28             : #include "nodes/extensible.h"
      29             : #include "nodes/lockoptions.h"
      30             : #include "nodes/miscnodes.h"
      31             : #include "nodes/nodes.h"
      32             : #include "nodes/parsenodes.h"
      33             : #include "nodes/pathnodes.h"
      34             : #include "nodes/plannodes.h"
      35             : #include "nodes/primnodes.h"
      36             : #include "nodes/replnodes.h"
      37             : #include "nodes/supportnodes.h"
      38             : #include "nodes/value.h"
      39             : #include "utils/rel.h"
      40             : 
      41             : static void
      42     2391030 : _outAlias(StringInfo str, const Alias *node)
      43             : {
      44     2391030 :     WRITE_NODE_TYPE("ALIAS");
      45             : 
      46     2391030 :     WRITE_STRING_FIELD(aliasname);
      47     2391030 :     WRITE_NODE_FIELD(colnames);
      48     2391030 : }
      49             : 
      50             : static void
      51      755304 : _outRangeVar(StringInfo str, const RangeVar *node)
      52             : {
      53      755304 :     WRITE_NODE_TYPE("RANGEVAR");
      54             : 
      55      755304 :     WRITE_STRING_FIELD(catalogname);
      56      755304 :     WRITE_STRING_FIELD(schemaname);
      57      755304 :     WRITE_STRING_FIELD(relname);
      58      755304 :     WRITE_BOOL_FIELD(inh);
      59      755304 :     WRITE_CHAR_FIELD(relpersistence);
      60      755304 :     WRITE_NODE_FIELD(alias);
      61      755304 :     WRITE_LOCATION_FIELD(location);
      62      755304 : }
      63             : 
      64             : static void
      65        1112 : _outTableFunc(StringInfo str, const TableFunc *node)
      66             : {
      67        1112 :     WRITE_NODE_TYPE("TABLEFUNC");
      68             : 
      69        1112 :     WRITE_ENUM_FIELD(functype, TableFuncType);
      70        1112 :     WRITE_NODE_FIELD(ns_uris);
      71        1112 :     WRITE_NODE_FIELD(ns_names);
      72        1112 :     WRITE_NODE_FIELD(docexpr);
      73        1112 :     WRITE_NODE_FIELD(rowexpr);
      74        1112 :     WRITE_NODE_FIELD(colnames);
      75        1112 :     WRITE_NODE_FIELD(coltypes);
      76        1112 :     WRITE_NODE_FIELD(coltypmods);
      77        1112 :     WRITE_NODE_FIELD(colcollations);
      78        1112 :     WRITE_NODE_FIELD(colexprs);
      79        1112 :     WRITE_NODE_FIELD(coldefexprs);
      80        1112 :     WRITE_NODE_FIELD(colvalexprs);
      81        1112 :     WRITE_NODE_FIELD(passingvalexprs);
      82        1112 :     WRITE_BITMAPSET_FIELD(notnulls);
      83        1112 :     WRITE_NODE_FIELD(plan);
      84        1112 :     WRITE_INT_FIELD(ordinalitycol);
      85        1112 :     WRITE_LOCATION_FIELD(location);
      86        1112 : }
      87             : 
      88             : static void
      89        3732 : _outIntoClause(StringInfo str, const IntoClause *node)
      90             : {
      91        3732 :     WRITE_NODE_TYPE("INTOCLAUSE");
      92             : 
      93        3732 :     WRITE_NODE_FIELD(rel);
      94        3732 :     WRITE_NODE_FIELD(colNames);
      95        3732 :     WRITE_STRING_FIELD(accessMethod);
      96        3732 :     WRITE_NODE_FIELD(options);
      97        3732 :     WRITE_ENUM_FIELD(onCommit, OnCommitAction);
      98        3732 :     WRITE_STRING_FIELD(tableSpaceName);
      99        3732 :     WRITE_NODE_FIELD(viewQuery);
     100        3732 :     WRITE_BOOL_FIELD(skipData);
     101        3732 : }
     102             : 
     103             : static void
     104    10665098 : _outVar(StringInfo str, const Var *node)
     105             : {
     106    10665098 :     WRITE_NODE_TYPE("VAR");
     107             : 
     108    10665098 :     WRITE_INT_FIELD(varno);
     109    10665098 :     WRITE_INT_FIELD(varattno);
     110    10665098 :     WRITE_OID_FIELD(vartype);
     111    10665098 :     WRITE_INT_FIELD(vartypmod);
     112    10665098 :     WRITE_OID_FIELD(varcollid);
     113    10665098 :     WRITE_BITMAPSET_FIELD(varnullingrels);
     114    10665098 :     WRITE_UINT_FIELD(varlevelsup);
     115    10665098 :     WRITE_UINT_FIELD(varnosyn);
     116    10665098 :     WRITE_INT_FIELD(varattnosyn);
     117    10665098 :     WRITE_LOCATION_FIELD(location);
     118    10665098 : }
     119             : 
     120             : static void
     121      446332 : _outParam(StringInfo str, const Param *node)
     122             : {
     123      446332 :     WRITE_NODE_TYPE("PARAM");
     124             : 
     125      446332 :     WRITE_ENUM_FIELD(paramkind, ParamKind);
     126      446332 :     WRITE_INT_FIELD(paramid);
     127      446332 :     WRITE_OID_FIELD(paramtype);
     128      446332 :     WRITE_INT_FIELD(paramtypmod);
     129      446332 :     WRITE_OID_FIELD(paramcollid);
     130      446332 :     WRITE_LOCATION_FIELD(location);
     131      446332 : }
     132             : 
     133             : static void
     134       82686 : _outAggref(StringInfo str, const Aggref *node)
     135             : {
     136       82686 :     WRITE_NODE_TYPE("AGGREF");
     137             : 
     138       82686 :     WRITE_OID_FIELD(aggfnoid);
     139       82686 :     WRITE_OID_FIELD(aggtype);
     140       82686 :     WRITE_OID_FIELD(aggcollid);
     141       82686 :     WRITE_OID_FIELD(inputcollid);
     142       82686 :     WRITE_OID_FIELD(aggtranstype);
     143       82686 :     WRITE_NODE_FIELD(aggargtypes);
     144       82686 :     WRITE_NODE_FIELD(aggdirectargs);
     145       82686 :     WRITE_NODE_FIELD(args);
     146       82686 :     WRITE_NODE_FIELD(aggorder);
     147       82686 :     WRITE_NODE_FIELD(aggdistinct);
     148       82686 :     WRITE_NODE_FIELD(aggfilter);
     149       82686 :     WRITE_BOOL_FIELD(aggstar);
     150       82686 :     WRITE_BOOL_FIELD(aggvariadic);
     151       82686 :     WRITE_CHAR_FIELD(aggkind);
     152       82686 :     WRITE_BOOL_FIELD(aggpresorted);
     153       82686 :     WRITE_UINT_FIELD(agglevelsup);
     154       82686 :     WRITE_ENUM_FIELD(aggsplit, AggSplit);
     155       82686 :     WRITE_INT_FIELD(aggno);
     156       82686 :     WRITE_INT_FIELD(aggtransno);
     157       82686 :     WRITE_LOCATION_FIELD(location);
     158       82686 : }
     159             : 
     160             : static void
     161         930 : _outGroupingFunc(StringInfo str, const GroupingFunc *node)
     162             : {
     163         930 :     WRITE_NODE_TYPE("GROUPINGFUNC");
     164             : 
     165         930 :     WRITE_NODE_FIELD(args);
     166         930 :     WRITE_NODE_FIELD(refs);
     167         930 :     WRITE_NODE_FIELD(cols);
     168         930 :     WRITE_UINT_FIELD(agglevelsup);
     169         930 :     WRITE_LOCATION_FIELD(location);
     170         930 : }
     171             : 
     172             : static void
     173        6578 : _outWindowFunc(StringInfo str, const WindowFunc *node)
     174             : {
     175        6578 :     WRITE_NODE_TYPE("WINDOWFUNC");
     176             : 
     177        6578 :     WRITE_OID_FIELD(winfnoid);
     178        6578 :     WRITE_OID_FIELD(wintype);
     179        6578 :     WRITE_OID_FIELD(wincollid);
     180        6578 :     WRITE_OID_FIELD(inputcollid);
     181        6578 :     WRITE_NODE_FIELD(args);
     182        6578 :     WRITE_NODE_FIELD(aggfilter);
     183        6578 :     WRITE_UINT_FIELD(winref);
     184        6578 :     WRITE_BOOL_FIELD(winstar);
     185        6578 :     WRITE_BOOL_FIELD(winagg);
     186        6578 :     WRITE_LOCATION_FIELD(location);
     187        6578 : }
     188             : 
     189             : static void
     190         624 : _outMergeSupportFunc(StringInfo str, const MergeSupportFunc *node)
     191             : {
     192         624 :     WRITE_NODE_TYPE("MERGESUPPORTFUNC");
     193             : 
     194         624 :     WRITE_OID_FIELD(msftype);
     195         624 :     WRITE_OID_FIELD(msfcollid);
     196         624 :     WRITE_LOCATION_FIELD(location);
     197         624 : }
     198             : 
     199             : static void
     200       25042 : _outSubscriptingRef(StringInfo str, const SubscriptingRef *node)
     201             : {
     202       25042 :     WRITE_NODE_TYPE("SUBSCRIPTINGREF");
     203             : 
     204       25042 :     WRITE_OID_FIELD(refcontainertype);
     205       25042 :     WRITE_OID_FIELD(refelemtype);
     206       25042 :     WRITE_OID_FIELD(refrestype);
     207       25042 :     WRITE_INT_FIELD(reftypmod);
     208       25042 :     WRITE_OID_FIELD(refcollid);
     209       25042 :     WRITE_NODE_FIELD(refupperindexpr);
     210       25042 :     WRITE_NODE_FIELD(reflowerindexpr);
     211       25042 :     WRITE_NODE_FIELD(refexpr);
     212       25042 :     WRITE_NODE_FIELD(refassgnexpr);
     213       25042 : }
     214             : 
     215             : static void
     216      660358 : _outFuncExpr(StringInfo str, const FuncExpr *node)
     217             : {
     218      660358 :     WRITE_NODE_TYPE("FUNCEXPR");
     219             : 
     220      660358 :     WRITE_OID_FIELD(funcid);
     221      660358 :     WRITE_OID_FIELD(funcresulttype);
     222      660358 :     WRITE_BOOL_FIELD(funcretset);
     223      660358 :     WRITE_BOOL_FIELD(funcvariadic);
     224      660358 :     WRITE_ENUM_FIELD(funcformat, CoercionForm);
     225      660358 :     WRITE_OID_FIELD(funccollid);
     226      660358 :     WRITE_OID_FIELD(inputcollid);
     227      660358 :     WRITE_NODE_FIELD(args);
     228      660358 :     WRITE_LOCATION_FIELD(location);
     229      660358 : }
     230             : 
     231             : static void
     232       93374 : _outNamedArgExpr(StringInfo str, const NamedArgExpr *node)
     233             : {
     234       93374 :     WRITE_NODE_TYPE("NAMEDARGEXPR");
     235             : 
     236       93374 :     WRITE_NODE_FIELD(arg);
     237       93374 :     WRITE_STRING_FIELD(name);
     238       93374 :     WRITE_INT_FIELD(argnumber);
     239       93374 :     WRITE_LOCATION_FIELD(location);
     240       93374 : }
     241             : 
     242             : static void
     243     1313534 : _outOpExpr(StringInfo str, const OpExpr *node)
     244             : {
     245     1313534 :     WRITE_NODE_TYPE("OPEXPR");
     246             : 
     247     1313534 :     WRITE_OID_FIELD(opno);
     248     1313534 :     WRITE_OID_FIELD(opfuncid);
     249     1313534 :     WRITE_OID_FIELD(opresulttype);
     250     1313534 :     WRITE_BOOL_FIELD(opretset);
     251     1313534 :     WRITE_OID_FIELD(opcollid);
     252     1313534 :     WRITE_OID_FIELD(inputcollid);
     253     1313534 :     WRITE_NODE_FIELD(args);
     254     1313534 :     WRITE_LOCATION_FIELD(location);
     255     1313534 : }
     256             : 
     257             : static void
     258        1708 : _outDistinctExpr(StringInfo str, const DistinctExpr *node)
     259             : {
     260        1708 :     WRITE_NODE_TYPE("DISTINCTEXPR");
     261             : 
     262        1708 :     WRITE_OID_FIELD(opno);
     263        1708 :     WRITE_OID_FIELD(opfuncid);
     264        1708 :     WRITE_OID_FIELD(opresulttype);
     265        1708 :     WRITE_BOOL_FIELD(opretset);
     266        1708 :     WRITE_OID_FIELD(opcollid);
     267        1708 :     WRITE_OID_FIELD(inputcollid);
     268        1708 :     WRITE_NODE_FIELD(args);
     269        1708 :     WRITE_LOCATION_FIELD(location);
     270        1708 : }
     271             : 
     272             : static void
     273         348 : _outNullIfExpr(StringInfo str, const NullIfExpr *node)
     274             : {
     275         348 :     WRITE_NODE_TYPE("NULLIFEXPR");
     276             : 
     277         348 :     WRITE_OID_FIELD(opno);
     278         348 :     WRITE_OID_FIELD(opfuncid);
     279         348 :     WRITE_OID_FIELD(opresulttype);
     280         348 :     WRITE_BOOL_FIELD(opretset);
     281         348 :     WRITE_OID_FIELD(opcollid);
     282         348 :     WRITE_OID_FIELD(inputcollid);
     283         348 :     WRITE_NODE_FIELD(args);
     284         348 :     WRITE_LOCATION_FIELD(location);
     285         348 : }
     286             : 
     287             : static void
     288       61664 : _outScalarArrayOpExpr(StringInfo str, const ScalarArrayOpExpr *node)
     289             : {
     290       61664 :     WRITE_NODE_TYPE("SCALARARRAYOPEXPR");
     291             : 
     292       61664 :     WRITE_OID_FIELD(opno);
     293       61664 :     WRITE_OID_FIELD(opfuncid);
     294       61664 :     WRITE_OID_FIELD(hashfuncid);
     295       61664 :     WRITE_OID_FIELD(negfuncid);
     296       61664 :     WRITE_BOOL_FIELD(useOr);
     297       61664 :     WRITE_OID_FIELD(inputcollid);
     298       61664 :     WRITE_NODE_FIELD(args);
     299       61664 :     WRITE_LOCATION_FIELD(location);
     300       61664 : }
     301             : 
     302             : static void
     303       78828 : _outSubLink(StringInfo str, const SubLink *node)
     304             : {
     305       78828 :     WRITE_NODE_TYPE("SUBLINK");
     306             : 
     307       78828 :     WRITE_ENUM_FIELD(subLinkType, SubLinkType);
     308       78828 :     WRITE_INT_FIELD(subLinkId);
     309       78828 :     WRITE_NODE_FIELD(testexpr);
     310       78828 :     WRITE_NODE_FIELD(operName);
     311       78828 :     WRITE_NODE_FIELD(subselect);
     312       78828 :     WRITE_LOCATION_FIELD(location);
     313       78828 : }
     314             : 
     315             : static void
     316       35108 : _outSubPlan(StringInfo str, const SubPlan *node)
     317             : {
     318       35108 :     WRITE_NODE_TYPE("SUBPLAN");
     319             : 
     320       35108 :     WRITE_ENUM_FIELD(subLinkType, SubLinkType);
     321       35108 :     WRITE_NODE_FIELD(testexpr);
     322       35108 :     WRITE_NODE_FIELD(paramIds);
     323       35108 :     WRITE_INT_FIELD(plan_id);
     324       35108 :     WRITE_STRING_FIELD(plan_name);
     325       35108 :     WRITE_OID_FIELD(firstColType);
     326       35108 :     WRITE_INT_FIELD(firstColTypmod);
     327       35108 :     WRITE_OID_FIELD(firstColCollation);
     328       35108 :     WRITE_BOOL_FIELD(useHashTable);
     329       35108 :     WRITE_BOOL_FIELD(unknownEqFalse);
     330       35108 :     WRITE_BOOL_FIELD(parallel_safe);
     331       35108 :     WRITE_NODE_FIELD(setParam);
     332       35108 :     WRITE_NODE_FIELD(parParam);
     333       35108 :     WRITE_NODE_FIELD(args);
     334       35108 :     WRITE_FLOAT_FIELD(startup_cost);
     335       35108 :     WRITE_FLOAT_FIELD(per_call_cost);
     336       35108 : }
     337             : 
     338             : static void
     339           0 : _outAlternativeSubPlan(StringInfo str, const AlternativeSubPlan *node)
     340             : {
     341           0 :     WRITE_NODE_TYPE("ALTERNATIVESUBPLAN");
     342             : 
     343           0 :     WRITE_NODE_FIELD(subplans);
     344           0 : }
     345             : 
     346             : static void
     347       18584 : _outFieldSelect(StringInfo str, const FieldSelect *node)
     348             : {
     349       18584 :     WRITE_NODE_TYPE("FIELDSELECT");
     350             : 
     351       18584 :     WRITE_NODE_FIELD(arg);
     352       18584 :     WRITE_INT_FIELD(fieldnum);
     353       18584 :     WRITE_OID_FIELD(resulttype);
     354       18584 :     WRITE_INT_FIELD(resulttypmod);
     355       18584 :     WRITE_OID_FIELD(resultcollid);
     356       18584 : }
     357             : 
     358             : static void
     359         866 : _outFieldStore(StringInfo str, const FieldStore *node)
     360             : {
     361         866 :     WRITE_NODE_TYPE("FIELDSTORE");
     362             : 
     363         866 :     WRITE_NODE_FIELD(arg);
     364         866 :     WRITE_NODE_FIELD(newvals);
     365         866 :     WRITE_NODE_FIELD(fieldnums);
     366         866 :     WRITE_OID_FIELD(resulttype);
     367         866 : }
     368             : 
     369             : static void
     370      200058 : _outRelabelType(StringInfo str, const RelabelType *node)
     371             : {
     372      200058 :     WRITE_NODE_TYPE("RELABELTYPE");
     373             : 
     374      200058 :     WRITE_NODE_FIELD(arg);
     375      200058 :     WRITE_OID_FIELD(resulttype);
     376      200058 :     WRITE_INT_FIELD(resulttypmod);
     377      200058 :     WRITE_OID_FIELD(resultcollid);
     378      200058 :     WRITE_ENUM_FIELD(relabelformat, CoercionForm);
     379      200058 :     WRITE_LOCATION_FIELD(location);
     380      200058 : }
     381             : 
     382             : static void
     383       42922 : _outCoerceViaIO(StringInfo str, const CoerceViaIO *node)
     384             : {
     385       42922 :     WRITE_NODE_TYPE("COERCEVIAIO");
     386             : 
     387       42922 :     WRITE_NODE_FIELD(arg);
     388       42922 :     WRITE_OID_FIELD(resulttype);
     389       42922 :     WRITE_OID_FIELD(resultcollid);
     390       42922 :     WRITE_ENUM_FIELD(coerceformat, CoercionForm);
     391       42922 :     WRITE_LOCATION_FIELD(location);
     392       42922 : }
     393             : 
     394             : static void
     395        9126 : _outArrayCoerceExpr(StringInfo str, const ArrayCoerceExpr *node)
     396             : {
     397        9126 :     WRITE_NODE_TYPE("ARRAYCOERCEEXPR");
     398             : 
     399        9126 :     WRITE_NODE_FIELD(arg);
     400        9126 :     WRITE_NODE_FIELD(elemexpr);
     401        9126 :     WRITE_OID_FIELD(resulttype);
     402        9126 :     WRITE_INT_FIELD(resulttypmod);
     403        9126 :     WRITE_OID_FIELD(resultcollid);
     404        9126 :     WRITE_ENUM_FIELD(coerceformat, CoercionForm);
     405        9126 :     WRITE_LOCATION_FIELD(location);
     406        9126 : }
     407             : 
     408             : static void
     409         650 : _outConvertRowtypeExpr(StringInfo str, const ConvertRowtypeExpr *node)
     410             : {
     411         650 :     WRITE_NODE_TYPE("CONVERTROWTYPEEXPR");
     412             : 
     413         650 :     WRITE_NODE_FIELD(arg);
     414         650 :     WRITE_OID_FIELD(resulttype);
     415         650 :     WRITE_ENUM_FIELD(convertformat, CoercionForm);
     416         650 :     WRITE_LOCATION_FIELD(location);
     417         650 : }
     418             : 
     419             : static void
     420        7608 : _outCollateExpr(StringInfo str, const CollateExpr *node)
     421             : {
     422        7608 :     WRITE_NODE_TYPE("COLLATEEXPR");
     423             : 
     424        7608 :     WRITE_NODE_FIELD(arg);
     425        7608 :     WRITE_OID_FIELD(collOid);
     426        7608 :     WRITE_LOCATION_FIELD(location);
     427        7608 : }
     428             : 
     429             : static void
     430      161182 : _outCaseExpr(StringInfo str, const CaseExpr *node)
     431             : {
     432      161182 :     WRITE_NODE_TYPE("CASEEXPR");
     433             : 
     434      161182 :     WRITE_OID_FIELD(casetype);
     435      161182 :     WRITE_OID_FIELD(casecollid);
     436      161182 :     WRITE_NODE_FIELD(arg);
     437      161182 :     WRITE_NODE_FIELD(args);
     438      161182 :     WRITE_NODE_FIELD(defresult);
     439      161182 :     WRITE_LOCATION_FIELD(location);
     440      161182 : }
     441             : 
     442             : static void
     443      284278 : _outCaseWhen(StringInfo str, const CaseWhen *node)
     444             : {
     445      284278 :     WRITE_NODE_TYPE("CASEWHEN");
     446             : 
     447      284278 :     WRITE_NODE_FIELD(expr);
     448      284278 :     WRITE_NODE_FIELD(result);
     449      284278 :     WRITE_LOCATION_FIELD(location);
     450      284278 : }
     451             : 
     452             : static void
     453       49952 : _outCaseTestExpr(StringInfo str, const CaseTestExpr *node)
     454             : {
     455       49952 :     WRITE_NODE_TYPE("CASETESTEXPR");
     456             : 
     457       49952 :     WRITE_OID_FIELD(typeId);
     458       49952 :     WRITE_INT_FIELD(typeMod);
     459       49952 :     WRITE_OID_FIELD(collation);
     460       49952 : }
     461             : 
     462             : static void
     463       30058 : _outArrayExpr(StringInfo str, const ArrayExpr *node)
     464             : {
     465       30058 :     WRITE_NODE_TYPE("ARRAYEXPR");
     466             : 
     467       30058 :     WRITE_OID_FIELD(array_typeid);
     468       30058 :     WRITE_OID_FIELD(array_collid);
     469       30058 :     WRITE_OID_FIELD(element_typeid);
     470       30058 :     WRITE_NODE_FIELD(elements);
     471       30058 :     WRITE_BOOL_FIELD(multidims);
     472       30058 :     WRITE_LOCATION_FIELD(location);
     473       30058 : }
     474             : 
     475             : static void
     476       12134 : _outRowExpr(StringInfo str, const RowExpr *node)
     477             : {
     478       12134 :     WRITE_NODE_TYPE("ROWEXPR");
     479             : 
     480       12134 :     WRITE_NODE_FIELD(args);
     481       12134 :     WRITE_OID_FIELD(row_typeid);
     482       12134 :     WRITE_ENUM_FIELD(row_format, CoercionForm);
     483       12134 :     WRITE_NODE_FIELD(colnames);
     484       12134 :     WRITE_LOCATION_FIELD(location);
     485       12134 : }
     486             : 
     487             : static void
     488         438 : _outRowCompareExpr(StringInfo str, const RowCompareExpr *node)
     489             : {
     490         438 :     WRITE_NODE_TYPE("ROWCOMPAREEXPR");
     491             : 
     492         438 :     WRITE_ENUM_FIELD(rctype, RowCompareType);
     493         438 :     WRITE_NODE_FIELD(opnos);
     494         438 :     WRITE_NODE_FIELD(opfamilies);
     495         438 :     WRITE_NODE_FIELD(inputcollids);
     496         438 :     WRITE_NODE_FIELD(largs);
     497         438 :     WRITE_NODE_FIELD(rargs);
     498         438 : }
     499             : 
     500             : static void
     501       13628 : _outCoalesceExpr(StringInfo str, const CoalesceExpr *node)
     502             : {
     503       13628 :     WRITE_NODE_TYPE("COALESCEEXPR");
     504             : 
     505       13628 :     WRITE_OID_FIELD(coalescetype);
     506       13628 :     WRITE_OID_FIELD(coalescecollid);
     507       13628 :     WRITE_NODE_FIELD(args);
     508       13628 :     WRITE_LOCATION_FIELD(location);
     509       13628 : }
     510             : 
     511             : static void
     512         830 : _outMinMaxExpr(StringInfo str, const MinMaxExpr *node)
     513             : {
     514         830 :     WRITE_NODE_TYPE("MINMAXEXPR");
     515             : 
     516         830 :     WRITE_OID_FIELD(minmaxtype);
     517         830 :     WRITE_OID_FIELD(minmaxcollid);
     518         830 :     WRITE_OID_FIELD(inputcollid);
     519         830 :     WRITE_ENUM_FIELD(op, MinMaxOp);
     520         830 :     WRITE_NODE_FIELD(args);
     521         830 :     WRITE_LOCATION_FIELD(location);
     522         830 : }
     523             : 
     524             : static void
     525       11490 : _outSQLValueFunction(StringInfo str, const SQLValueFunction *node)
     526             : {
     527       11490 :     WRITE_NODE_TYPE("SQLVALUEFUNCTION");
     528             : 
     529       11490 :     WRITE_ENUM_FIELD(op, SQLValueFunctionOp);
     530       11490 :     WRITE_OID_FIELD(type);
     531       11490 :     WRITE_INT_FIELD(typmod);
     532       11490 :     WRITE_LOCATION_FIELD(location);
     533       11490 : }
     534             : 
     535             : static void
     536        2110 : _outXmlExpr(StringInfo str, const XmlExpr *node)
     537             : {
     538        2110 :     WRITE_NODE_TYPE("XMLEXPR");
     539             : 
     540        2110 :     WRITE_ENUM_FIELD(op, XmlExprOp);
     541        2110 :     WRITE_STRING_FIELD(name);
     542        2110 :     WRITE_NODE_FIELD(named_args);
     543        2110 :     WRITE_NODE_FIELD(arg_names);
     544        2110 :     WRITE_NODE_FIELD(args);
     545        2110 :     WRITE_ENUM_FIELD(xmloption, XmlOptionType);
     546        2110 :     WRITE_BOOL_FIELD(indent);
     547        2110 :     WRITE_OID_FIELD(type);
     548        2110 :     WRITE_INT_FIELD(typmod);
     549        2110 :     WRITE_LOCATION_FIELD(location);
     550        2110 : }
     551             : 
     552             : static void
     553       19570 : _outJsonFormat(StringInfo str, const JsonFormat *node)
     554             : {
     555       19570 :     WRITE_NODE_TYPE("JSONFORMAT");
     556             : 
     557       19570 :     WRITE_ENUM_FIELD(format_type, JsonFormatType);
     558       19570 :     WRITE_ENUM_FIELD(encoding, JsonEncoding);
     559       19570 :     WRITE_LOCATION_FIELD(location);
     560       19570 : }
     561             : 
     562             : static void
     563        8318 : _outJsonReturning(StringInfo str, const JsonReturning *node)
     564             : {
     565        8318 :     WRITE_NODE_TYPE("JSONRETURNING");
     566             : 
     567        8318 :     WRITE_NODE_FIELD(format);
     568        8318 :     WRITE_OID_FIELD(typid);
     569        8318 :     WRITE_INT_FIELD(typmod);
     570        8318 : }
     571             : 
     572             : static void
     573        5078 : _outJsonValueExpr(StringInfo str, const JsonValueExpr *node)
     574             : {
     575        5078 :     WRITE_NODE_TYPE("JSONVALUEEXPR");
     576             : 
     577        5078 :     WRITE_NODE_FIELD(raw_expr);
     578        5078 :     WRITE_NODE_FIELD(formatted_expr);
     579        5078 :     WRITE_NODE_FIELD(format);
     580        5078 : }
     581             : 
     582             : static void
     583        2366 : _outJsonConstructorExpr(StringInfo str, const JsonConstructorExpr *node)
     584             : {
     585        2366 :     WRITE_NODE_TYPE("JSONCONSTRUCTOREXPR");
     586             : 
     587        2366 :     WRITE_ENUM_FIELD(type, JsonConstructorType);
     588        2366 :     WRITE_NODE_FIELD(args);
     589        2366 :     WRITE_NODE_FIELD(func);
     590        2366 :     WRITE_NODE_FIELD(coercion);
     591        2366 :     WRITE_NODE_FIELD(returning);
     592        2366 :     WRITE_BOOL_FIELD(absent_on_null);
     593        2366 :     WRITE_BOOL_FIELD(unique);
     594        2366 :     WRITE_LOCATION_FIELD(location);
     595        2366 : }
     596             : 
     597             : static void
     598        1038 : _outJsonIsPredicate(StringInfo str, const JsonIsPredicate *node)
     599             : {
     600        1038 :     WRITE_NODE_TYPE("JSONISPREDICATE");
     601             : 
     602        1038 :     WRITE_NODE_FIELD(expr);
     603        1038 :     WRITE_NODE_FIELD(format);
     604        1038 :     WRITE_ENUM_FIELD(item_type, JsonValueType);
     605        1038 :     WRITE_BOOL_FIELD(unique_keys);
     606        1038 :     WRITE_LOCATION_FIELD(location);
     607        1038 : }
     608             : 
     609             : static void
     610        5930 : _outJsonBehavior(StringInfo str, const JsonBehavior *node)
     611             : {
     612        5930 :     WRITE_NODE_TYPE("JSONBEHAVIOR");
     613             : 
     614        5930 :     WRITE_ENUM_FIELD(btype, JsonBehaviorType);
     615        5930 :     WRITE_NODE_FIELD(expr);
     616        5930 :     WRITE_BOOL_FIELD(coerce);
     617        5930 :     WRITE_LOCATION_FIELD(location);
     618        5930 : }
     619             : 
     620             : static void
     621        4658 : _outJsonExpr(StringInfo str, const JsonExpr *node)
     622             : {
     623        4658 :     WRITE_NODE_TYPE("JSONEXPR");
     624             : 
     625        4658 :     WRITE_ENUM_FIELD(op, JsonExprOp);
     626        4658 :     WRITE_STRING_FIELD(column_name);
     627        4658 :     WRITE_NODE_FIELD(formatted_expr);
     628        4658 :     WRITE_NODE_FIELD(format);
     629        4658 :     WRITE_NODE_FIELD(path_spec);
     630        4658 :     WRITE_NODE_FIELD(returning);
     631        4658 :     WRITE_NODE_FIELD(passing_names);
     632        4658 :     WRITE_NODE_FIELD(passing_values);
     633        4658 :     WRITE_NODE_FIELD(on_empty);
     634        4658 :     WRITE_NODE_FIELD(on_error);
     635        4658 :     WRITE_NODE_FIELD(coercion_expr);
     636        4658 :     WRITE_BOOL_FIELD(use_io_coercion);
     637        4658 :     WRITE_BOOL_FIELD(use_json_coercion);
     638        4658 :     WRITE_ENUM_FIELD(wrapper, JsonWrapper);
     639        4658 :     WRITE_BOOL_FIELD(omit_quotes);
     640        4658 :     WRITE_OID_FIELD(collation);
     641        4658 :     WRITE_LOCATION_FIELD(location);
     642        4658 : }
     643             : 
     644             : static void
     645        1112 : _outJsonTablePath(StringInfo str, const JsonTablePath *node)
     646             : {
     647        1112 :     WRITE_NODE_TYPE("JSONTABLEPATH");
     648             : 
     649        1112 :     WRITE_NODE_FIELD(value);
     650        1112 :     WRITE_STRING_FIELD(name);
     651        1112 : }
     652             : 
     653             : static void
     654        1112 : _outJsonTablePathScan(StringInfo str, const JsonTablePathScan *node)
     655             : {
     656        1112 :     WRITE_NODE_TYPE("JSONTABLEPATHSCAN");
     657             : 
     658        1112 :     WRITE_NODE_FIELD(path);
     659        1112 :     WRITE_BOOL_FIELD(errorOnError);
     660        1112 :     WRITE_NODE_FIELD(child);
     661        1112 :     WRITE_INT_FIELD(colMin);
     662        1112 :     WRITE_INT_FIELD(colMax);
     663        1112 : }
     664             : 
     665             : static void
     666         150 : _outJsonTableSiblingJoin(StringInfo str, const JsonTableSiblingJoin *node)
     667             : {
     668         150 :     WRITE_NODE_TYPE("JSONTABLESIBLINGJOIN");
     669             : 
     670         150 :     WRITE_NODE_FIELD(lplan);
     671         150 :     WRITE_NODE_FIELD(rplan);
     672         150 : }
     673             : 
     674             : static void
     675       50110 : _outNullTest(StringInfo str, const NullTest *node)
     676             : {
     677       50110 :     WRITE_NODE_TYPE("NULLTEST");
     678             : 
     679       50110 :     WRITE_NODE_FIELD(arg);
     680       50110 :     WRITE_ENUM_FIELD(nulltesttype, NullTestType);
     681       50110 :     WRITE_BOOL_FIELD(argisrow);
     682       50110 :     WRITE_LOCATION_FIELD(location);
     683       50110 : }
     684             : 
     685             : static void
     686        3216 : _outBooleanTest(StringInfo str, const BooleanTest *node)
     687             : {
     688        3216 :     WRITE_NODE_TYPE("BOOLEANTEST");
     689             : 
     690        3216 :     WRITE_NODE_FIELD(arg);
     691        3216 :     WRITE_ENUM_FIELD(booltesttype, BoolTestType);
     692        3216 :     WRITE_LOCATION_FIELD(location);
     693        3216 : }
     694             : 
     695             : static void
     696        5992 : _outMergeAction(StringInfo str, const MergeAction *node)
     697             : {
     698        5992 :     WRITE_NODE_TYPE("MERGEACTION");
     699             : 
     700        5992 :     WRITE_ENUM_FIELD(matchKind, MergeMatchKind);
     701        5992 :     WRITE_ENUM_FIELD(commandType, CmdType);
     702        5992 :     WRITE_ENUM_FIELD(override, OverridingKind);
     703        5992 :     WRITE_NODE_FIELD(qual);
     704        5992 :     WRITE_NODE_FIELD(targetList);
     705        5992 :     WRITE_NODE_FIELD(updateColnos);
     706        5992 : }
     707             : 
     708             : static void
     709       87620 : _outCoerceToDomain(StringInfo str, const CoerceToDomain *node)
     710             : {
     711       87620 :     WRITE_NODE_TYPE("COERCETODOMAIN");
     712             : 
     713       87620 :     WRITE_NODE_FIELD(arg);
     714       87620 :     WRITE_OID_FIELD(resulttype);
     715       87620 :     WRITE_INT_FIELD(resulttypmod);
     716       87620 :     WRITE_OID_FIELD(resultcollid);
     717       87620 :     WRITE_ENUM_FIELD(coercionformat, CoercionForm);
     718       87620 :     WRITE_LOCATION_FIELD(location);
     719       87620 : }
     720             : 
     721             : static void
     722         702 : _outCoerceToDomainValue(StringInfo str, const CoerceToDomainValue *node)
     723             : {
     724         702 :     WRITE_NODE_TYPE("COERCETODOMAINVALUE");
     725             : 
     726         702 :     WRITE_OID_FIELD(typeId);
     727         702 :     WRITE_INT_FIELD(typeMod);
     728         702 :     WRITE_OID_FIELD(collation);
     729         702 :     WRITE_LOCATION_FIELD(location);
     730         702 : }
     731             : 
     732             : static void
     733        1376 : _outSetToDefault(StringInfo str, const SetToDefault *node)
     734             : {
     735        1376 :     WRITE_NODE_TYPE("SETTODEFAULT");
     736             : 
     737        1376 :     WRITE_OID_FIELD(typeId);
     738        1376 :     WRITE_INT_FIELD(typeMod);
     739        1376 :     WRITE_OID_FIELD(collation);
     740        1376 :     WRITE_LOCATION_FIELD(location);
     741        1376 : }
     742             : 
     743             : static void
     744         866 : _outCurrentOfExpr(StringInfo str, const CurrentOfExpr *node)
     745             : {
     746         866 :     WRITE_NODE_TYPE("CURRENTOFEXPR");
     747             : 
     748         866 :     WRITE_UINT_FIELD(cvarno);
     749         866 :     WRITE_STRING_FIELD(cursor_name);
     750         866 :     WRITE_INT_FIELD(cursor_param);
     751         866 : }
     752             : 
     753             : static void
     754        1012 : _outNextValueExpr(StringInfo str, const NextValueExpr *node)
     755             : {
     756        1012 :     WRITE_NODE_TYPE("NEXTVALUEEXPR");
     757             : 
     758        1012 :     WRITE_OID_FIELD(seqid);
     759        1012 :     WRITE_OID_FIELD(typeId);
     760        1012 : }
     761             : 
     762             : static void
     763        1530 : _outInferenceElem(StringInfo str, const InferenceElem *node)
     764             : {
     765        1530 :     WRITE_NODE_TYPE("INFERENCEELEM");
     766             : 
     767        1530 :     WRITE_NODE_FIELD(expr);
     768        1530 :     WRITE_OID_FIELD(infercollid);
     769        1530 :     WRITE_OID_FIELD(inferopclass);
     770        1530 : }
     771             : 
     772             : static void
     773     6155926 : _outTargetEntry(StringInfo str, const TargetEntry *node)
     774             : {
     775     6155926 :     WRITE_NODE_TYPE("TARGETENTRY");
     776             : 
     777     6155926 :     WRITE_NODE_FIELD(expr);
     778     6155926 :     WRITE_INT_FIELD(resno);
     779     6155926 :     WRITE_STRING_FIELD(resname);
     780     6155926 :     WRITE_UINT_FIELD(ressortgroupref);
     781     6155926 :     WRITE_OID_FIELD(resorigtbl);
     782     6155926 :     WRITE_INT_FIELD(resorigcol);
     783     6155926 :     WRITE_BOOL_FIELD(resjunk);
     784     6155926 : }
     785             : 
     786             : static void
     787      483534 : _outRangeTblRef(StringInfo str, const RangeTblRef *node)
     788             : {
     789      483534 :     WRITE_NODE_TYPE("RANGETBLREF");
     790             : 
     791      483534 :     WRITE_INT_FIELD(rtindex);
     792      483534 : }
     793             : 
     794             : static void
     795      170272 : _outJoinExpr(StringInfo str, const JoinExpr *node)
     796             : {
     797      170272 :     WRITE_NODE_TYPE("JOINEXPR");
     798             : 
     799      170272 :     WRITE_ENUM_FIELD(jointype, JoinType);
     800      170272 :     WRITE_BOOL_FIELD(isNatural);
     801      170272 :     WRITE_NODE_FIELD(larg);
     802      170272 :     WRITE_NODE_FIELD(rarg);
     803      170272 :     WRITE_NODE_FIELD(usingClause);
     804      170272 :     WRITE_NODE_FIELD(join_using_alias);
     805      170272 :     WRITE_NODE_FIELD(quals);
     806      170272 :     WRITE_NODE_FIELD(alias);
     807      170272 :     WRITE_INT_FIELD(rtindex);
     808      170272 : }
     809             : 
     810             : static void
     811      548626 : _outFromExpr(StringInfo str, const FromExpr *node)
     812             : {
     813      548626 :     WRITE_NODE_TYPE("FROMEXPR");
     814             : 
     815      548626 :     WRITE_NODE_FIELD(fromlist);
     816      548626 :     WRITE_NODE_FIELD(quals);
     817      548626 : }
     818             : 
     819             : static void
     820        1436 : _outOnConflictExpr(StringInfo str, const OnConflictExpr *node)
     821             : {
     822        1436 :     WRITE_NODE_TYPE("ONCONFLICTEXPR");
     823             : 
     824        1436 :     WRITE_ENUM_FIELD(action, OnConflictAction);
     825        1436 :     WRITE_NODE_FIELD(arbiterElems);
     826        1436 :     WRITE_NODE_FIELD(arbiterWhere);
     827        1436 :     WRITE_OID_FIELD(constraint);
     828        1436 :     WRITE_NODE_FIELD(onConflictSet);
     829        1436 :     WRITE_NODE_FIELD(onConflictWhere);
     830        1436 :     WRITE_INT_FIELD(exclRelIndex);
     831        1436 :     WRITE_NODE_FIELD(exclRelTlist);
     832        1436 : }
     833             : 
     834             : static void
     835      875604 : _outQuery(StringInfo str, const Query *node)
     836             : {
     837      875604 :     WRITE_NODE_TYPE("QUERY");
     838             : 
     839      875604 :     WRITE_ENUM_FIELD(commandType, CmdType);
     840      875604 :     WRITE_ENUM_FIELD(querySource, QuerySource);
     841      875604 :     WRITE_BOOL_FIELD(canSetTag);
     842      875604 :     WRITE_NODE_FIELD(utilityStmt);
     843      875604 :     WRITE_INT_FIELD(resultRelation);
     844      875604 :     WRITE_BOOL_FIELD(hasAggs);
     845      875604 :     WRITE_BOOL_FIELD(hasWindowFuncs);
     846      875604 :     WRITE_BOOL_FIELD(hasTargetSRFs);
     847      875604 :     WRITE_BOOL_FIELD(hasSubLinks);
     848      875604 :     WRITE_BOOL_FIELD(hasDistinctOn);
     849      875604 :     WRITE_BOOL_FIELD(hasRecursive);
     850      875604 :     WRITE_BOOL_FIELD(hasModifyingCTE);
     851      875604 :     WRITE_BOOL_FIELD(hasForUpdate);
     852      875604 :     WRITE_BOOL_FIELD(hasRowSecurity);
     853      875604 :     WRITE_BOOL_FIELD(isReturn);
     854      875604 :     WRITE_NODE_FIELD(cteList);
     855      875604 :     WRITE_NODE_FIELD(rtable);
     856      875604 :     WRITE_NODE_FIELD(rteperminfos);
     857      875604 :     WRITE_NODE_FIELD(jointree);
     858      875604 :     WRITE_NODE_FIELD(mergeActionList);
     859      875604 :     WRITE_INT_FIELD(mergeTargetRelation);
     860      875604 :     WRITE_NODE_FIELD(mergeJoinCondition);
     861      875604 :     WRITE_NODE_FIELD(targetList);
     862      875604 :     WRITE_ENUM_FIELD(override, OverridingKind);
     863      875604 :     WRITE_NODE_FIELD(onConflict);
     864      875604 :     WRITE_NODE_FIELD(returningList);
     865      875604 :     WRITE_NODE_FIELD(groupClause);
     866      875604 :     WRITE_BOOL_FIELD(groupDistinct);
     867      875604 :     WRITE_NODE_FIELD(groupingSets);
     868      875604 :     WRITE_NODE_FIELD(havingQual);
     869      875604 :     WRITE_NODE_FIELD(windowClause);
     870      875604 :     WRITE_NODE_FIELD(distinctClause);
     871      875604 :     WRITE_NODE_FIELD(sortClause);
     872      875604 :     WRITE_NODE_FIELD(limitOffset);
     873      875604 :     WRITE_NODE_FIELD(limitCount);
     874      875604 :     WRITE_ENUM_FIELD(limitOption, LimitOption);
     875      875604 :     WRITE_NODE_FIELD(rowMarks);
     876      875604 :     WRITE_NODE_FIELD(setOperations);
     877      875604 :     WRITE_NODE_FIELD(constraintDeps);
     878      875604 :     WRITE_NODE_FIELD(withCheckOptions);
     879      875604 :     WRITE_LOCATION_FIELD(stmt_location);
     880      875604 :     WRITE_LOCATION_FIELD(stmt_len);
     881      875604 : }
     882             : 
     883             : static void
     884      671236 : _outTypeName(StringInfo str, const TypeName *node)
     885             : {
     886      671236 :     WRITE_NODE_TYPE("TYPENAME");
     887             : 
     888      671236 :     WRITE_NODE_FIELD(names);
     889      671236 :     WRITE_OID_FIELD(typeOid);
     890      671236 :     WRITE_BOOL_FIELD(setof);
     891      671236 :     WRITE_BOOL_FIELD(pct_type);
     892      671236 :     WRITE_NODE_FIELD(typmods);
     893      671236 :     WRITE_INT_FIELD(typemod);
     894      671236 :     WRITE_NODE_FIELD(arrayBounds);
     895      671236 :     WRITE_LOCATION_FIELD(location);
     896      671236 : }
     897             : 
     898             : static void
     899     1707486 : _outColumnRef(StringInfo str, const ColumnRef *node)
     900             : {
     901     1707486 :     WRITE_NODE_TYPE("COLUMNREF");
     902             : 
     903     1707486 :     WRITE_NODE_FIELD(fields);
     904     1707486 :     WRITE_LOCATION_FIELD(location);
     905     1707486 : }
     906             : 
     907             : static void
     908      147112 : _outParamRef(StringInfo str, const ParamRef *node)
     909             : {
     910      147112 :     WRITE_NODE_TYPE("PARAMREF");
     911             : 
     912      147112 :     WRITE_INT_FIELD(number);
     913      147112 :     WRITE_LOCATION_FIELD(location);
     914      147112 : }
     915             : 
     916             : static void
     917      284146 : _outTypeCast(StringInfo str, const TypeCast *node)
     918             : {
     919      284146 :     WRITE_NODE_TYPE("TYPECAST");
     920             : 
     921      284146 :     WRITE_NODE_FIELD(arg);
     922      284146 :     WRITE_NODE_FIELD(typeName);
     923      284146 :     WRITE_LOCATION_FIELD(location);
     924      284146 : }
     925             : 
     926             : static void
     927        9082 : _outCollateClause(StringInfo str, const CollateClause *node)
     928             : {
     929        9082 :     WRITE_NODE_TYPE("COLLATECLAUSE");
     930             : 
     931        9082 :     WRITE_NODE_FIELD(arg);
     932        9082 :     WRITE_NODE_FIELD(collname);
     933        9082 :     WRITE_LOCATION_FIELD(location);
     934        9082 : }
     935             : 
     936             : static void
     937       48370 : _outRoleSpec(StringInfo str, const RoleSpec *node)
     938             : {
     939       48370 :     WRITE_NODE_TYPE("ROLESPEC");
     940             : 
     941       48370 :     WRITE_ENUM_FIELD(roletype, RoleSpecType);
     942       48370 :     WRITE_STRING_FIELD(rolename);
     943       48370 :     WRITE_LOCATION_FIELD(location);
     944       48370 : }
     945             : 
     946             : static void
     947      372856 : _outFuncCall(StringInfo str, const FuncCall *node)
     948             : {
     949      372856 :     WRITE_NODE_TYPE("FUNCCALL");
     950             : 
     951      372856 :     WRITE_NODE_FIELD(funcname);
     952      372856 :     WRITE_NODE_FIELD(args);
     953      372856 :     WRITE_NODE_FIELD(agg_order);
     954      372856 :     WRITE_NODE_FIELD(agg_filter);
     955      372856 :     WRITE_NODE_FIELD(over);
     956      372856 :     WRITE_BOOL_FIELD(agg_within_group);
     957      372856 :     WRITE_BOOL_FIELD(agg_star);
     958      372856 :     WRITE_BOOL_FIELD(agg_distinct);
     959      372856 :     WRITE_BOOL_FIELD(func_variadic);
     960      372856 :     WRITE_ENUM_FIELD(funcformat, CoercionForm);
     961      372856 :     WRITE_LOCATION_FIELD(location);
     962      372856 : }
     963             : 
     964             : static void
     965       56284 : _outA_Star(StringInfo str, const A_Star *node)
     966             : {
     967       56284 :     WRITE_NODE_TYPE("A_STAR");
     968             : 
     969       56284 : }
     970             : 
     971             : static void
     972       13338 : _outA_Indices(StringInfo str, const A_Indices *node)
     973             : {
     974       13338 :     WRITE_NODE_TYPE("A_INDICES");
     975             : 
     976       13338 :     WRITE_BOOL_FIELD(is_slice);
     977       13338 :     WRITE_NODE_FIELD(lidx);
     978       13338 :     WRITE_NODE_FIELD(uidx);
     979       13338 : }
     980             : 
     981             : static void
     982       29460 : _outA_Indirection(StringInfo str, const A_Indirection *node)
     983             : {
     984       29460 :     WRITE_NODE_TYPE("A_INDIRECTION");
     985             : 
     986       29460 :     WRITE_NODE_FIELD(arg);
     987       29460 :     WRITE_NODE_FIELD(indirection);
     988       29460 : }
     989             : 
     990             : static void
     991        6990 : _outA_ArrayExpr(StringInfo str, const A_ArrayExpr *node)
     992             : {
     993        6990 :     WRITE_NODE_TYPE("A_ARRAYEXPR");
     994             : 
     995        6990 :     WRITE_NODE_FIELD(elements);
     996        6990 :     WRITE_LOCATION_FIELD(location);
     997        6990 : }
     998             : 
     999             : static void
    1000     1119692 : _outResTarget(StringInfo str, const ResTarget *node)
    1001             : {
    1002     1119692 :     WRITE_NODE_TYPE("RESTARGET");
    1003             : 
    1004     1119692 :     WRITE_STRING_FIELD(name);
    1005     1119692 :     WRITE_NODE_FIELD(indirection);
    1006     1119692 :     WRITE_NODE_FIELD(val);
    1007     1119692 :     WRITE_LOCATION_FIELD(location);
    1008     1119692 : }
    1009             : 
    1010             : static void
    1011         402 : _outMultiAssignRef(StringInfo str, const MultiAssignRef *node)
    1012             : {
    1013         402 :     WRITE_NODE_TYPE("MULTIASSIGNREF");
    1014             : 
    1015         402 :     WRITE_NODE_FIELD(source);
    1016         402 :     WRITE_INT_FIELD(colno);
    1017         402 :     WRITE_INT_FIELD(ncolumns);
    1018         402 : }
    1019             : 
    1020             : static void
    1021       87874 : _outSortBy(StringInfo str, const SortBy *node)
    1022             : {
    1023       87874 :     WRITE_NODE_TYPE("SORTBY");
    1024             : 
    1025       87874 :     WRITE_NODE_FIELD(node);
    1026       87874 :     WRITE_ENUM_FIELD(sortby_dir, SortByDir);
    1027       87874 :     WRITE_ENUM_FIELD(sortby_nulls, SortByNulls);
    1028       87874 :     WRITE_NODE_FIELD(useOp);
    1029       87874 :     WRITE_LOCATION_FIELD(location);
    1030       87874 : }
    1031             : 
    1032             : static void
    1033        4036 : _outWindowDef(StringInfo str, const WindowDef *node)
    1034             : {
    1035        4036 :     WRITE_NODE_TYPE("WINDOWDEF");
    1036             : 
    1037        4036 :     WRITE_STRING_FIELD(name);
    1038        4036 :     WRITE_STRING_FIELD(refname);
    1039        4036 :     WRITE_NODE_FIELD(partitionClause);
    1040        4036 :     WRITE_NODE_FIELD(orderClause);
    1041        4036 :     WRITE_INT_FIELD(frameOptions);
    1042        4036 :     WRITE_NODE_FIELD(startOffset);
    1043        4036 :     WRITE_NODE_FIELD(endOffset);
    1044        4036 :     WRITE_LOCATION_FIELD(location);
    1045        4036 : }
    1046             : 
    1047             : static void
    1048       16260 : _outRangeSubselect(StringInfo str, const RangeSubselect *node)
    1049             : {
    1050       16260 :     WRITE_NODE_TYPE("RANGESUBSELECT");
    1051             : 
    1052       16260 :     WRITE_BOOL_FIELD(lateral);
    1053       16260 :     WRITE_NODE_FIELD(subquery);
    1054       16260 :     WRITE_NODE_FIELD(alias);
    1055       16260 : }
    1056             : 
    1057             : static void
    1058       42862 : _outRangeFunction(StringInfo str, const RangeFunction *node)
    1059             : {
    1060       42862 :     WRITE_NODE_TYPE("RANGEFUNCTION");
    1061             : 
    1062       42862 :     WRITE_BOOL_FIELD(lateral);
    1063       42862 :     WRITE_BOOL_FIELD(ordinality);
    1064       42862 :     WRITE_BOOL_FIELD(is_rowsfrom);
    1065       42862 :     WRITE_NODE_FIELD(functions);
    1066       42862 :     WRITE_NODE_FIELD(alias);
    1067       42862 :     WRITE_NODE_FIELD(coldeflist);
    1068       42862 : }
    1069             : 
    1070             : static void
    1071         242 : _outRangeTableFunc(StringInfo str, const RangeTableFunc *node)
    1072             : {
    1073         242 :     WRITE_NODE_TYPE("RANGETABLEFUNC");
    1074             : 
    1075         242 :     WRITE_BOOL_FIELD(lateral);
    1076         242 :     WRITE_NODE_FIELD(docexpr);
    1077         242 :     WRITE_NODE_FIELD(rowexpr);
    1078         242 :     WRITE_NODE_FIELD(namespaces);
    1079         242 :     WRITE_NODE_FIELD(columns);
    1080         242 :     WRITE_NODE_FIELD(alias);
    1081         242 :     WRITE_LOCATION_FIELD(location);
    1082         242 : }
    1083             : 
    1084             : static void
    1085         870 : _outRangeTableFuncCol(StringInfo str, const RangeTableFuncCol *node)
    1086             : {
    1087         870 :     WRITE_NODE_TYPE("RANGETABLEFUNCCOL");
    1088             : 
    1089         870 :     WRITE_STRING_FIELD(colname);
    1090         870 :     WRITE_NODE_FIELD(typeName);
    1091         870 :     WRITE_BOOL_FIELD(for_ordinality);
    1092         870 :     WRITE_BOOL_FIELD(is_not_null);
    1093         870 :     WRITE_NODE_FIELD(colexpr);
    1094         870 :     WRITE_NODE_FIELD(coldefexpr);
    1095         870 :     WRITE_LOCATION_FIELD(location);
    1096         870 : }
    1097             : 
    1098             : static void
    1099         274 : _outRangeTableSample(StringInfo str, const RangeTableSample *node)
    1100             : {
    1101         274 :     WRITE_NODE_TYPE("RANGETABLESAMPLE");
    1102             : 
    1103         274 :     WRITE_NODE_FIELD(relation);
    1104         274 :     WRITE_NODE_FIELD(method);
    1105         274 :     WRITE_NODE_FIELD(args);
    1106         274 :     WRITE_NODE_FIELD(repeatable);
    1107         274 :     WRITE_LOCATION_FIELD(location);
    1108         274 : }
    1109             : 
    1110             : static void
    1111      132712 : _outColumnDef(StringInfo str, const ColumnDef *node)
    1112             : {
    1113      132712 :     WRITE_NODE_TYPE("COLUMNDEF");
    1114             : 
    1115      132712 :     WRITE_STRING_FIELD(colname);
    1116      132712 :     WRITE_NODE_FIELD(typeName);
    1117      132712 :     WRITE_STRING_FIELD(compression);
    1118      132712 :     WRITE_INT_FIELD(inhcount);
    1119      132712 :     WRITE_BOOL_FIELD(is_local);
    1120      132712 :     WRITE_BOOL_FIELD(is_not_null);
    1121      132712 :     WRITE_BOOL_FIELD(is_from_type);
    1122      132712 :     WRITE_CHAR_FIELD(storage);
    1123      132712 :     WRITE_STRING_FIELD(storage_name);
    1124      132712 :     WRITE_NODE_FIELD(raw_default);
    1125      132712 :     WRITE_NODE_FIELD(cooked_default);
    1126      132712 :     WRITE_CHAR_FIELD(identity);
    1127      132712 :     WRITE_NODE_FIELD(identitySequence);
    1128      132712 :     WRITE_CHAR_FIELD(generated);
    1129      132712 :     WRITE_NODE_FIELD(collClause);
    1130      132712 :     WRITE_OID_FIELD(collOid);
    1131      132712 :     WRITE_NODE_FIELD(constraints);
    1132      132712 :     WRITE_NODE_FIELD(fdwoptions);
    1133      132712 :     WRITE_LOCATION_FIELD(location);
    1134      132712 : }
    1135             : 
    1136             : static void
    1137        1452 : _outTableLikeClause(StringInfo str, const TableLikeClause *node)
    1138             : {
    1139        1452 :     WRITE_NODE_TYPE("TABLELIKECLAUSE");
    1140             : 
    1141        1452 :     WRITE_NODE_FIELD(relation);
    1142        1452 :     WRITE_UINT_FIELD(options);
    1143        1452 :     WRITE_OID_FIELD(relationOid);
    1144        1452 : }
    1145             : 
    1146             : static void
    1147       18400 : _outIndexElem(StringInfo str, const IndexElem *node)
    1148             : {
    1149       18400 :     WRITE_NODE_TYPE("INDEXELEM");
    1150             : 
    1151       18400 :     WRITE_STRING_FIELD(name);
    1152       18400 :     WRITE_NODE_FIELD(expr);
    1153       18400 :     WRITE_STRING_FIELD(indexcolname);
    1154       18400 :     WRITE_NODE_FIELD(collation);
    1155       18400 :     WRITE_NODE_FIELD(opclass);
    1156       18400 :     WRITE_NODE_FIELD(opclassopts);
    1157       18400 :     WRITE_ENUM_FIELD(ordering, SortByDir);
    1158       18400 :     WRITE_ENUM_FIELD(nulls_ordering, SortByNulls);
    1159       18400 : }
    1160             : 
    1161             : static void
    1162      290476 : _outDefElem(StringInfo str, const DefElem *node)
    1163             : {
    1164      290476 :     WRITE_NODE_TYPE("DEFELEM");
    1165             : 
    1166      290476 :     WRITE_STRING_FIELD(defnamespace);
    1167      290476 :     WRITE_STRING_FIELD(defname);
    1168      290476 :     WRITE_NODE_FIELD(arg);
    1169      290476 :     WRITE_ENUM_FIELD(defaction, DefElemAction);
    1170      290476 :     WRITE_LOCATION_FIELD(location);
    1171      290476 : }
    1172             : 
    1173             : static void
    1174        2090 : _outLockingClause(StringInfo str, const LockingClause *node)
    1175             : {
    1176        2090 :     WRITE_NODE_TYPE("LOCKINGCLAUSE");
    1177             : 
    1178        2090 :     WRITE_NODE_FIELD(lockedRels);
    1179        2090 :     WRITE_ENUM_FIELD(strength, LockClauseStrength);
    1180        2090 :     WRITE_ENUM_FIELD(waitPolicy, LockWaitPolicy);
    1181        2090 : }
    1182             : 
    1183             : static void
    1184         206 : _outXmlSerialize(StringInfo str, const XmlSerialize *node)
    1185             : {
    1186         206 :     WRITE_NODE_TYPE("XMLSERIALIZE");
    1187             : 
    1188         206 :     WRITE_ENUM_FIELD(xmloption, XmlOptionType);
    1189         206 :     WRITE_NODE_FIELD(expr);
    1190         206 :     WRITE_NODE_FIELD(typeName);
    1191         206 :     WRITE_BOOL_FIELD(indent);
    1192         206 :     WRITE_LOCATION_FIELD(location);
    1193         206 : }
    1194             : 
    1195             : static void
    1196       10700 : _outPartitionElem(StringInfo str, const PartitionElem *node)
    1197             : {
    1198       10700 :     WRITE_NODE_TYPE("PARTITIONELEM");
    1199             : 
    1200       10700 :     WRITE_STRING_FIELD(name);
    1201       10700 :     WRITE_NODE_FIELD(expr);
    1202       10700 :     WRITE_NODE_FIELD(collation);
    1203       10700 :     WRITE_NODE_FIELD(opclass);
    1204       10700 :     WRITE_LOCATION_FIELD(location);
    1205       10700 : }
    1206             : 
    1207             : static void
    1208        9776 : _outPartitionSpec(StringInfo str, const PartitionSpec *node)
    1209             : {
    1210        9776 :     WRITE_NODE_TYPE("PARTITIONSPEC");
    1211             : 
    1212        9776 :     WRITE_ENUM_FIELD(strategy, PartitionStrategy);
    1213        9776 :     WRITE_NODE_FIELD(partParams);
    1214        9776 :     WRITE_LOCATION_FIELD(location);
    1215        9776 : }
    1216             : 
    1217             : static void
    1218       32808 : _outPartitionBoundSpec(StringInfo str, const PartitionBoundSpec *node)
    1219             : {
    1220       32808 :     WRITE_NODE_TYPE("PARTITIONBOUNDSPEC");
    1221             : 
    1222       32808 :     WRITE_CHAR_FIELD(strategy);
    1223       32808 :     WRITE_BOOL_FIELD(is_default);
    1224       32808 :     WRITE_INT_FIELD(modulus);
    1225       32808 :     WRITE_INT_FIELD(remainder);
    1226       32808 :     WRITE_NODE_FIELD(listdatums);
    1227       32808 :     WRITE_NODE_FIELD(lowerdatums);
    1228       32808 :     WRITE_NODE_FIELD(upperdatums);
    1229       32808 :     WRITE_LOCATION_FIELD(location);
    1230       32808 : }
    1231             : 
    1232             : static void
    1233       11152 : _outPartitionRangeDatum(StringInfo str, const PartitionRangeDatum *node)
    1234             : {
    1235       11152 :     WRITE_NODE_TYPE("PARTITIONRANGEDATUM");
    1236             : 
    1237       11152 :     WRITE_ENUM_FIELD(kind, PartitionRangeDatumKind);
    1238       11152 :     WRITE_NODE_FIELD(value);
    1239       11152 :     WRITE_LOCATION_FIELD(location);
    1240       11152 : }
    1241             : 
    1242             : static void
    1243        1548 : _outSinglePartitionSpec(StringInfo str, const SinglePartitionSpec *node)
    1244             : {
    1245        1548 :     WRITE_NODE_TYPE("SINGLEPARTITIONSPEC");
    1246             : 
    1247        1548 :     WRITE_NODE_FIELD(name);
    1248        1548 :     WRITE_NODE_FIELD(bound);
    1249        1548 : }
    1250             : 
    1251             : static void
    1252        7050 : _outPartitionCmd(StringInfo str, const PartitionCmd *node)
    1253             : {
    1254        7050 :     WRITE_NODE_TYPE("PARTITIONCMD");
    1255             : 
    1256        7050 :     WRITE_NODE_FIELD(name);
    1257        7050 :     WRITE_NODE_FIELD(bound);
    1258        7050 :     WRITE_NODE_FIELD(partlist);
    1259        7050 :     WRITE_BOOL_FIELD(concurrent);
    1260        7050 : }
    1261             : 
    1262             : static void
    1263      893046 : _outRTEPermissionInfo(StringInfo str, const RTEPermissionInfo *node)
    1264             : {
    1265      893046 :     WRITE_NODE_TYPE("RTEPERMISSIONINFO");
    1266             : 
    1267      893046 :     WRITE_OID_FIELD(relid);
    1268      893046 :     WRITE_BOOL_FIELD(inh);
    1269      893046 :     WRITE_UINT64_FIELD(requiredPerms);
    1270      893046 :     WRITE_OID_FIELD(checkAsUser);
    1271      893046 :     WRITE_BITMAPSET_FIELD(selectedCols);
    1272      893046 :     WRITE_BITMAPSET_FIELD(insertedCols);
    1273      893046 :     WRITE_BITMAPSET_FIELD(updatedCols);
    1274      893046 : }
    1275             : 
    1276             : static void
    1277       84568 : _outRangeTblFunction(StringInfo str, const RangeTblFunction *node)
    1278             : {
    1279       84568 :     WRITE_NODE_TYPE("RANGETBLFUNCTION");
    1280             : 
    1281       84568 :     WRITE_NODE_FIELD(funcexpr);
    1282       84568 :     WRITE_INT_FIELD(funccolcount);
    1283       84568 :     WRITE_NODE_FIELD(funccolnames);
    1284       84568 :     WRITE_NODE_FIELD(funccoltypes);
    1285       84568 :     WRITE_NODE_FIELD(funccoltypmods);
    1286       84568 :     WRITE_NODE_FIELD(funccolcollations);
    1287       84568 :     WRITE_BITMAPSET_FIELD(funcparams);
    1288       84568 : }
    1289             : 
    1290             : static void
    1291         534 : _outTableSampleClause(StringInfo str, const TableSampleClause *node)
    1292             : {
    1293         534 :     WRITE_NODE_TYPE("TABLESAMPLECLAUSE");
    1294             : 
    1295         534 :     WRITE_OID_FIELD(tsmhandler);
    1296         534 :     WRITE_NODE_FIELD(args);
    1297         534 :     WRITE_NODE_FIELD(repeatable);
    1298         534 : }
    1299             : 
    1300             : static void
    1301        4494 : _outWithCheckOption(StringInfo str, const WithCheckOption *node)
    1302             : {
    1303        4494 :     WRITE_NODE_TYPE("WITHCHECKOPTION");
    1304             : 
    1305        4494 :     WRITE_ENUM_FIELD(kind, WCOKind);
    1306        4494 :     WRITE_STRING_FIELD(relname);
    1307        4494 :     WRITE_STRING_FIELD(polname);
    1308        4494 :     WRITE_NODE_FIELD(qual);
    1309        4494 :     WRITE_BOOL_FIELD(cascaded);
    1310        4494 : }
    1311             : 
    1312             : static void
    1313      131576 : _outSortGroupClause(StringInfo str, const SortGroupClause *node)
    1314             : {
    1315      131576 :     WRITE_NODE_TYPE("SORTGROUPCLAUSE");
    1316             : 
    1317      131576 :     WRITE_UINT_FIELD(tleSortGroupRef);
    1318      131576 :     WRITE_OID_FIELD(eqop);
    1319      131576 :     WRITE_OID_FIELD(sortop);
    1320      131576 :     WRITE_BOOL_FIELD(nulls_first);
    1321      131576 :     WRITE_BOOL_FIELD(hashable);
    1322      131576 : }
    1323             : 
    1324             : static void
    1325        3682 : _outGroupingSet(StringInfo str, const GroupingSet *node)
    1326             : {
    1327        3682 :     WRITE_NODE_TYPE("GROUPINGSET");
    1328             : 
    1329        3682 :     WRITE_ENUM_FIELD(kind, GroupingSetKind);
    1330        3682 :     WRITE_NODE_FIELD(content);
    1331        3682 :     WRITE_LOCATION_FIELD(location);
    1332        3682 : }
    1333             : 
    1334             : static void
    1335        2682 : _outWindowClause(StringInfo str, const WindowClause *node)
    1336             : {
    1337        2682 :     WRITE_NODE_TYPE("WINDOWCLAUSE");
    1338             : 
    1339        2682 :     WRITE_STRING_FIELD(name);
    1340        2682 :     WRITE_STRING_FIELD(refname);
    1341        2682 :     WRITE_NODE_FIELD(partitionClause);
    1342        2682 :     WRITE_NODE_FIELD(orderClause);
    1343        2682 :     WRITE_INT_FIELD(frameOptions);
    1344        2682 :     WRITE_NODE_FIELD(startOffset);
    1345        2682 :     WRITE_NODE_FIELD(endOffset);
    1346        2682 :     WRITE_NODE_FIELD(runCondition);
    1347        2682 :     WRITE_OID_FIELD(startInRangeFunc);
    1348        2682 :     WRITE_OID_FIELD(endInRangeFunc);
    1349        2682 :     WRITE_OID_FIELD(inRangeColl);
    1350        2682 :     WRITE_BOOL_FIELD(inRangeAsc);
    1351        2682 :     WRITE_BOOL_FIELD(inRangeNullsFirst);
    1352        2682 :     WRITE_UINT_FIELD(winref);
    1353        2682 :     WRITE_BOOL_FIELD(copiedOrder);
    1354        2682 : }
    1355             : 
    1356             : static void
    1357        5200 : _outRowMarkClause(StringInfo str, const RowMarkClause *node)
    1358             : {
    1359        5200 :     WRITE_NODE_TYPE("ROWMARKCLAUSE");
    1360             : 
    1361        5200 :     WRITE_UINT_FIELD(rti);
    1362        5200 :     WRITE_ENUM_FIELD(strength, LockClauseStrength);
    1363        5200 :     WRITE_ENUM_FIELD(waitPolicy, LockWaitPolicy);
    1364        5200 :     WRITE_BOOL_FIELD(pushedDown);
    1365        5200 : }
    1366             : 
    1367             : static void
    1368        2828 : _outWithClause(StringInfo str, const WithClause *node)
    1369             : {
    1370        2828 :     WRITE_NODE_TYPE("WITHCLAUSE");
    1371             : 
    1372        2828 :     WRITE_NODE_FIELD(ctes);
    1373        2828 :     WRITE_BOOL_FIELD(recursive);
    1374        2828 :     WRITE_LOCATION_FIELD(location);
    1375        2828 : }
    1376             : 
    1377             : static void
    1378        1322 : _outInferClause(StringInfo str, const InferClause *node)
    1379             : {
    1380        1322 :     WRITE_NODE_TYPE("INFERCLAUSE");
    1381             : 
    1382        1322 :     WRITE_NODE_FIELD(indexElems);
    1383        1322 :     WRITE_NODE_FIELD(whereClause);
    1384        1322 :     WRITE_STRING_FIELD(conname);
    1385        1322 :     WRITE_LOCATION_FIELD(location);
    1386        1322 : }
    1387             : 
    1388             : static void
    1389        1490 : _outOnConflictClause(StringInfo str, const OnConflictClause *node)
    1390             : {
    1391        1490 :     WRITE_NODE_TYPE("ONCONFLICTCLAUSE");
    1392             : 
    1393        1490 :     WRITE_ENUM_FIELD(action, OnConflictAction);
    1394        1490 :     WRITE_NODE_FIELD(infer);
    1395        1490 :     WRITE_NODE_FIELD(targetList);
    1396        1490 :     WRITE_NODE_FIELD(whereClause);
    1397        1490 :     WRITE_LOCATION_FIELD(location);
    1398        1490 : }
    1399             : 
    1400             : static void
    1401         216 : _outCTESearchClause(StringInfo str, const CTESearchClause *node)
    1402             : {
    1403         216 :     WRITE_NODE_TYPE("CTESEARCHCLAUSE");
    1404             : 
    1405         216 :     WRITE_NODE_FIELD(search_col_list);
    1406         216 :     WRITE_BOOL_FIELD(search_breadth_first);
    1407         216 :     WRITE_STRING_FIELD(search_seq_column);
    1408         216 :     WRITE_LOCATION_FIELD(location);
    1409         216 : }
    1410             : 
    1411             : static void
    1412         222 : _outCTECycleClause(StringInfo str, const CTECycleClause *node)
    1413             : {
    1414         222 :     WRITE_NODE_TYPE("CTECYCLECLAUSE");
    1415             : 
    1416         222 :     WRITE_NODE_FIELD(cycle_col_list);
    1417         222 :     WRITE_STRING_FIELD(cycle_mark_column);
    1418         222 :     WRITE_NODE_FIELD(cycle_mark_value);
    1419         222 :     WRITE_NODE_FIELD(cycle_mark_default);
    1420         222 :     WRITE_STRING_FIELD(cycle_path_column);
    1421         222 :     WRITE_LOCATION_FIELD(location);
    1422         222 :     WRITE_OID_FIELD(cycle_mark_type);
    1423         222 :     WRITE_INT_FIELD(cycle_mark_typmod);
    1424         222 :     WRITE_OID_FIELD(cycle_mark_collation);
    1425         222 :     WRITE_OID_FIELD(cycle_mark_neop);
    1426         222 : }
    1427             : 
    1428             : static void
    1429        7372 : _outCommonTableExpr(StringInfo str, const CommonTableExpr *node)
    1430             : {
    1431        7372 :     WRITE_NODE_TYPE("COMMONTABLEEXPR");
    1432             : 
    1433        7372 :     WRITE_STRING_FIELD(ctename);
    1434        7372 :     WRITE_NODE_FIELD(aliascolnames);
    1435        7372 :     WRITE_ENUM_FIELD(ctematerialized, CTEMaterialize);
    1436        7372 :     WRITE_NODE_FIELD(ctequery);
    1437        7372 :     WRITE_NODE_FIELD(search_clause);
    1438        7372 :     WRITE_NODE_FIELD(cycle_clause);
    1439        7372 :     WRITE_LOCATION_FIELD(location);
    1440        7372 :     WRITE_BOOL_FIELD(cterecursive);
    1441        7372 :     WRITE_INT_FIELD(cterefcount);
    1442        7372 :     WRITE_NODE_FIELD(ctecolnames);
    1443        7372 :     WRITE_NODE_FIELD(ctecoltypes);
    1444        7372 :     WRITE_NODE_FIELD(ctecoltypmods);
    1445        7372 :     WRITE_NODE_FIELD(ctecolcollations);
    1446        7372 : }
    1447             : 
    1448             : static void
    1449        2804 : _outMergeWhenClause(StringInfo str, const MergeWhenClause *node)
    1450             : {
    1451        2804 :     WRITE_NODE_TYPE("MERGEWHENCLAUSE");
    1452             : 
    1453        2804 :     WRITE_ENUM_FIELD(matchKind, MergeMatchKind);
    1454        2804 :     WRITE_ENUM_FIELD(commandType, CmdType);
    1455        2804 :     WRITE_ENUM_FIELD(override, OverridingKind);
    1456        2804 :     WRITE_NODE_FIELD(condition);
    1457        2804 :     WRITE_NODE_FIELD(targetList);
    1458        2804 :     WRITE_NODE_FIELD(values);
    1459        2804 : }
    1460             : 
    1461             : static void
    1462        1124 : _outTriggerTransition(StringInfo str, const TriggerTransition *node)
    1463             : {
    1464        1124 :     WRITE_NODE_TYPE("TRIGGERTRANSITION");
    1465             : 
    1466        1124 :     WRITE_STRING_FIELD(name);
    1467        1124 :     WRITE_BOOL_FIELD(isNew);
    1468        1124 :     WRITE_BOOL_FIELD(isTable);
    1469        1124 : }
    1470             : 
    1471             : static void
    1472        1294 : _outJsonOutput(StringInfo str, const JsonOutput *node)
    1473             : {
    1474        1294 :     WRITE_NODE_TYPE("JSONOUTPUT");
    1475             : 
    1476        1294 :     WRITE_NODE_FIELD(typeName);
    1477        1294 :     WRITE_NODE_FIELD(returning);
    1478        1294 : }
    1479             : 
    1480             : static void
    1481         594 : _outJsonArgument(StringInfo str, const JsonArgument *node)
    1482             : {
    1483         594 :     WRITE_NODE_TYPE("JSONARGUMENT");
    1484             : 
    1485         594 :     WRITE_NODE_FIELD(val);
    1486         594 :     WRITE_STRING_FIELD(name);
    1487         594 : }
    1488             : 
    1489             : static void
    1490        1824 : _outJsonFuncExpr(StringInfo str, const JsonFuncExpr *node)
    1491             : {
    1492        1824 :     WRITE_NODE_TYPE("JSONFUNCEXPR");
    1493             : 
    1494        1824 :     WRITE_ENUM_FIELD(op, JsonExprOp);
    1495        1824 :     WRITE_STRING_FIELD(column_name);
    1496        1824 :     WRITE_NODE_FIELD(context_item);
    1497        1824 :     WRITE_NODE_FIELD(pathspec);
    1498        1824 :     WRITE_NODE_FIELD(passing);
    1499        1824 :     WRITE_NODE_FIELD(output);
    1500        1824 :     WRITE_NODE_FIELD(on_empty);
    1501        1824 :     WRITE_NODE_FIELD(on_error);
    1502        1824 :     WRITE_ENUM_FIELD(wrapper, JsonWrapper);
    1503        1824 :     WRITE_ENUM_FIELD(quotes, JsonQuotes);
    1504        1824 :     WRITE_LOCATION_FIELD(location);
    1505        1824 : }
    1506             : 
    1507             : static void
    1508        1756 : _outJsonTablePathSpec(StringInfo str, const JsonTablePathSpec *node)
    1509             : {
    1510        1756 :     WRITE_NODE_TYPE("JSONTABLEPATHSPEC");
    1511             : 
    1512        1756 :     WRITE_NODE_FIELD(string);
    1513        1756 :     WRITE_STRING_FIELD(name);
    1514        1756 :     WRITE_LOCATION_FIELD(name_location);
    1515        1756 :     WRITE_LOCATION_FIELD(location);
    1516        1756 : }
    1517             : 
    1518             : static void
    1519         470 : _outJsonTable(StringInfo str, const JsonTable *node)
    1520             : {
    1521         470 :     WRITE_NODE_TYPE("JSONTABLE");
    1522             : 
    1523         470 :     WRITE_NODE_FIELD(context_item);
    1524         470 :     WRITE_NODE_FIELD(pathspec);
    1525         470 :     WRITE_NODE_FIELD(passing);
    1526         470 :     WRITE_NODE_FIELD(columns);
    1527         470 :     WRITE_NODE_FIELD(on_error);
    1528         470 :     WRITE_NODE_FIELD(alias);
    1529         470 :     WRITE_BOOL_FIELD(lateral);
    1530         470 :     WRITE_LOCATION_FIELD(location);
    1531         470 : }
    1532             : 
    1533             : static void
    1534        1528 : _outJsonTableColumn(StringInfo str, const JsonTableColumn *node)
    1535             : {
    1536        1528 :     WRITE_NODE_TYPE("JSONTABLECOLUMN");
    1537             : 
    1538        1528 :     WRITE_ENUM_FIELD(coltype, JsonTableColumnType);
    1539        1528 :     WRITE_STRING_FIELD(name);
    1540        1528 :     WRITE_NODE_FIELD(typeName);
    1541        1528 :     WRITE_NODE_FIELD(pathspec);
    1542        1528 :     WRITE_NODE_FIELD(format);
    1543        1528 :     WRITE_ENUM_FIELD(wrapper, JsonWrapper);
    1544        1528 :     WRITE_ENUM_FIELD(quotes, JsonQuotes);
    1545        1528 :     WRITE_NODE_FIELD(columns);
    1546        1528 :     WRITE_NODE_FIELD(on_empty);
    1547        1528 :     WRITE_NODE_FIELD(on_error);
    1548        1528 :     WRITE_LOCATION_FIELD(location);
    1549        1528 : }
    1550             : 
    1551             : static void
    1552         694 : _outJsonKeyValue(StringInfo str, const JsonKeyValue *node)
    1553             : {
    1554         694 :     WRITE_NODE_TYPE("JSONKEYVALUE");
    1555             : 
    1556         694 :     WRITE_NODE_FIELD(key);
    1557         694 :     WRITE_NODE_FIELD(value);
    1558         694 : }
    1559             : 
    1560             : static void
    1561         164 : _outJsonParseExpr(StringInfo str, const JsonParseExpr *node)
    1562             : {
    1563         164 :     WRITE_NODE_TYPE("JSONPARSEEXPR");
    1564             : 
    1565         164 :     WRITE_NODE_FIELD(expr);
    1566         164 :     WRITE_NODE_FIELD(output);
    1567         164 :     WRITE_BOOL_FIELD(unique_keys);
    1568         164 :     WRITE_LOCATION_FIELD(location);
    1569         164 : }
    1570             : 
    1571             : static void
    1572         112 : _outJsonScalarExpr(StringInfo str, const JsonScalarExpr *node)
    1573             : {
    1574         112 :     WRITE_NODE_TYPE("JSONSCALAREXPR");
    1575             : 
    1576         112 :     WRITE_NODE_FIELD(expr);
    1577         112 :     WRITE_NODE_FIELD(output);
    1578         112 :     WRITE_LOCATION_FIELD(location);
    1579         112 : }
    1580             : 
    1581             : static void
    1582          90 : _outJsonSerializeExpr(StringInfo str, const JsonSerializeExpr *node)
    1583             : {
    1584          90 :     WRITE_NODE_TYPE("JSONSERIALIZEEXPR");
    1585             : 
    1586          90 :     WRITE_NODE_FIELD(expr);
    1587          90 :     WRITE_NODE_FIELD(output);
    1588          90 :     WRITE_LOCATION_FIELD(location);
    1589          90 : }
    1590             : 
    1591             : static void
    1592         386 : _outJsonObjectConstructor(StringInfo str, const JsonObjectConstructor *node)
    1593             : {
    1594         386 :     WRITE_NODE_TYPE("JSONOBJECTCONSTRUCTOR");
    1595             : 
    1596         386 :     WRITE_NODE_FIELD(exprs);
    1597         386 :     WRITE_NODE_FIELD(output);
    1598         386 :     WRITE_BOOL_FIELD(absent_on_null);
    1599         386 :     WRITE_BOOL_FIELD(unique);
    1600         386 :     WRITE_LOCATION_FIELD(location);
    1601         386 : }
    1602             : 
    1603             : static void
    1604         188 : _outJsonArrayConstructor(StringInfo str, const JsonArrayConstructor *node)
    1605             : {
    1606         188 :     WRITE_NODE_TYPE("JSONARRAYCONSTRUCTOR");
    1607             : 
    1608         188 :     WRITE_NODE_FIELD(exprs);
    1609         188 :     WRITE_NODE_FIELD(output);
    1610         188 :     WRITE_BOOL_FIELD(absent_on_null);
    1611         188 :     WRITE_LOCATION_FIELD(location);
    1612         188 : }
    1613             : 
    1614             : static void
    1615          60 : _outJsonArrayQueryConstructor(StringInfo str, const JsonArrayQueryConstructor *node)
    1616             : {
    1617          60 :     WRITE_NODE_TYPE("JSONARRAYQUERYCONSTRUCTOR");
    1618             : 
    1619          60 :     WRITE_NODE_FIELD(query);
    1620          60 :     WRITE_NODE_FIELD(output);
    1621          60 :     WRITE_NODE_FIELD(format);
    1622          60 :     WRITE_BOOL_FIELD(absent_on_null);
    1623          60 :     WRITE_LOCATION_FIELD(location);
    1624          60 : }
    1625             : 
    1626             : static void
    1627         318 : _outJsonAggConstructor(StringInfo str, const JsonAggConstructor *node)
    1628             : {
    1629         318 :     WRITE_NODE_TYPE("JSONAGGCONSTRUCTOR");
    1630             : 
    1631         318 :     WRITE_NODE_FIELD(output);
    1632         318 :     WRITE_NODE_FIELD(agg_filter);
    1633         318 :     WRITE_NODE_FIELD(agg_order);
    1634         318 :     WRITE_NODE_FIELD(over);
    1635         318 :     WRITE_LOCATION_FIELD(location);
    1636         318 : }
    1637             : 
    1638             : static void
    1639         162 : _outJsonObjectAgg(StringInfo str, const JsonObjectAgg *node)
    1640             : {
    1641         162 :     WRITE_NODE_TYPE("JSONOBJECTAGG");
    1642             : 
    1643         162 :     WRITE_NODE_FIELD(constructor);
    1644         162 :     WRITE_NODE_FIELD(arg);
    1645         162 :     WRITE_BOOL_FIELD(absent_on_null);
    1646         162 :     WRITE_BOOL_FIELD(unique);
    1647         162 : }
    1648             : 
    1649             : static void
    1650         156 : _outJsonArrayAgg(StringInfo str, const JsonArrayAgg *node)
    1651             : {
    1652         156 :     WRITE_NODE_TYPE("JSONARRAYAGG");
    1653             : 
    1654         156 :     WRITE_NODE_FIELD(constructor);
    1655         156 :     WRITE_NODE_FIELD(arg);
    1656         156 :     WRITE_BOOL_FIELD(absent_on_null);
    1657         156 : }
    1658             : 
    1659             : static void
    1660      691014 : _outRawStmt(StringInfo str, const RawStmt *node)
    1661             : {
    1662      691014 :     WRITE_NODE_TYPE("RAWSTMT");
    1663             : 
    1664      691014 :     WRITE_NODE_FIELD(stmt);
    1665      691014 :     WRITE_LOCATION_FIELD(stmt_location);
    1666      691014 :     WRITE_LOCATION_FIELD(stmt_len);
    1667      691014 : }
    1668             : 
    1669             : static void
    1670       71664 : _outInsertStmt(StringInfo str, const InsertStmt *node)
    1671             : {
    1672       71664 :     WRITE_NODE_TYPE("INSERTSTMT");
    1673             : 
    1674       71664 :     WRITE_NODE_FIELD(relation);
    1675       71664 :     WRITE_NODE_FIELD(cols);
    1676       71664 :     WRITE_NODE_FIELD(selectStmt);
    1677       71664 :     WRITE_NODE_FIELD(onConflictClause);
    1678       71664 :     WRITE_NODE_FIELD(returningList);
    1679       71664 :     WRITE_NODE_FIELD(withClause);
    1680       71664 :     WRITE_ENUM_FIELD(override, OverridingKind);
    1681       71664 : }
    1682             : 
    1683             : static void
    1684        4298 : _outDeleteStmt(StringInfo str, const DeleteStmt *node)
    1685             : {
    1686        4298 :     WRITE_NODE_TYPE("DELETESTMT");
    1687             : 
    1688        4298 :     WRITE_NODE_FIELD(relation);
    1689        4298 :     WRITE_NODE_FIELD(usingClause);
    1690        4298 :     WRITE_NODE_FIELD(whereClause);
    1691        4298 :     WRITE_NODE_FIELD(returningList);
    1692        4298 :     WRITE_NODE_FIELD(withClause);
    1693        4298 : }
    1694             : 
    1695             : static void
    1696       12998 : _outUpdateStmt(StringInfo str, const UpdateStmt *node)
    1697             : {
    1698       12998 :     WRITE_NODE_TYPE("UPDATESTMT");
    1699             : 
    1700       12998 :     WRITE_NODE_FIELD(relation);
    1701       12998 :     WRITE_NODE_FIELD(targetList);
    1702       12998 :     WRITE_NODE_FIELD(whereClause);
    1703       12998 :     WRITE_NODE_FIELD(fromClause);
    1704       12998 :     WRITE_NODE_FIELD(returningList);
    1705       12998 :     WRITE_NODE_FIELD(withClause);
    1706       12998 : }
    1707             : 
    1708             : static void
    1709        1800 : _outMergeStmt(StringInfo str, const MergeStmt *node)
    1710             : {
    1711        1800 :     WRITE_NODE_TYPE("MERGESTMT");
    1712             : 
    1713        1800 :     WRITE_NODE_FIELD(relation);
    1714        1800 :     WRITE_NODE_FIELD(sourceRelation);
    1715        1800 :     WRITE_NODE_FIELD(joinCondition);
    1716        1800 :     WRITE_NODE_FIELD(mergeWhenClauses);
    1717        1800 :     WRITE_NODE_FIELD(returningList);
    1718        1800 :     WRITE_NODE_FIELD(withClause);
    1719        1800 : }
    1720             : 
    1721             : static void
    1722      489180 : _outSelectStmt(StringInfo str, const SelectStmt *node)
    1723             : {
    1724      489180 :     WRITE_NODE_TYPE("SELECTSTMT");
    1725             : 
    1726      489180 :     WRITE_NODE_FIELD(distinctClause);
    1727      489180 :     WRITE_NODE_FIELD(intoClause);
    1728      489180 :     WRITE_NODE_FIELD(targetList);
    1729      489180 :     WRITE_NODE_FIELD(fromClause);
    1730      489180 :     WRITE_NODE_FIELD(whereClause);
    1731      489180 :     WRITE_NODE_FIELD(groupClause);
    1732      489180 :     WRITE_BOOL_FIELD(groupDistinct);
    1733      489180 :     WRITE_NODE_FIELD(havingClause);
    1734      489180 :     WRITE_NODE_FIELD(windowClause);
    1735      489180 :     WRITE_NODE_FIELD(valuesLists);
    1736      489180 :     WRITE_NODE_FIELD(sortClause);
    1737      489180 :     WRITE_NODE_FIELD(limitOffset);
    1738      489180 :     WRITE_NODE_FIELD(limitCount);
    1739      489180 :     WRITE_ENUM_FIELD(limitOption, LimitOption);
    1740      489180 :     WRITE_NODE_FIELD(lockingClause);
    1741      489180 :     WRITE_NODE_FIELD(withClause);
    1742      489180 :     WRITE_ENUM_FIELD(op, SetOperation);
    1743      489180 :     WRITE_BOOL_FIELD(all);
    1744      489180 :     WRITE_NODE_FIELD(larg);
    1745      489180 :     WRITE_NODE_FIELD(rarg);
    1746      489180 : }
    1747             : 
    1748             : static void
    1749       14050 : _outSetOperationStmt(StringInfo str, const SetOperationStmt *node)
    1750             : {
    1751       14050 :     WRITE_NODE_TYPE("SETOPERATIONSTMT");
    1752             : 
    1753       14050 :     WRITE_ENUM_FIELD(op, SetOperation);
    1754       14050 :     WRITE_BOOL_FIELD(all);
    1755       14050 :     WRITE_NODE_FIELD(larg);
    1756       14050 :     WRITE_NODE_FIELD(rarg);
    1757       14050 :     WRITE_NODE_FIELD(colTypes);
    1758       14050 :     WRITE_NODE_FIELD(colTypmods);
    1759       14050 :     WRITE_NODE_FIELD(colCollations);
    1760       14050 :     WRITE_NODE_FIELD(groupClauses);
    1761       14050 : }
    1762             : 
    1763             : static void
    1764        7612 : _outReturnStmt(StringInfo str, const ReturnStmt *node)
    1765             : {
    1766        7612 :     WRITE_NODE_TYPE("RETURNSTMT");
    1767             : 
    1768        7612 :     WRITE_NODE_FIELD(returnval);
    1769        7612 : }
    1770             : 
    1771             : static void
    1772           0 : _outPLAssignStmt(StringInfo str, const PLAssignStmt *node)
    1773             : {
    1774           0 :     WRITE_NODE_TYPE("PLASSIGNSTMT");
    1775             : 
    1776           0 :     WRITE_STRING_FIELD(name);
    1777           0 :     WRITE_NODE_FIELD(indirection);
    1778           0 :     WRITE_INT_FIELD(nnames);
    1779           0 :     WRITE_NODE_FIELD(val);
    1780           0 :     WRITE_LOCATION_FIELD(location);
    1781           0 : }
    1782             : 
    1783             : static void
    1784        1940 : _outCreateSchemaStmt(StringInfo str, const CreateSchemaStmt *node)
    1785             : {
    1786        1940 :     WRITE_NODE_TYPE("CREATESCHEMASTMT");
    1787             : 
    1788        1940 :     WRITE_STRING_FIELD(schemaname);
    1789        1940 :     WRITE_NODE_FIELD(authrole);
    1790        1940 :     WRITE_NODE_FIELD(schemaElts);
    1791        1940 :     WRITE_BOOL_FIELD(if_not_exists);
    1792        1940 : }
    1793             : 
    1794             : static void
    1795       53134 : _outAlterTableStmt(StringInfo str, const AlterTableStmt *node)
    1796             : {
    1797       53134 :     WRITE_NODE_TYPE("ALTERTABLESTMT");
    1798             : 
    1799       53134 :     WRITE_NODE_FIELD(relation);
    1800       53134 :     WRITE_NODE_FIELD(cmds);
    1801       53134 :     WRITE_ENUM_FIELD(objtype, ObjectType);
    1802       53134 :     WRITE_BOOL_FIELD(missing_ok);
    1803       53134 : }
    1804             : 
    1805             : static void
    1806         900 : _outReplicaIdentityStmt(StringInfo str, const ReplicaIdentityStmt *node)
    1807             : {
    1808         900 :     WRITE_NODE_TYPE("REPLICAIDENTITYSTMT");
    1809             : 
    1810         900 :     WRITE_CHAR_FIELD(identity_type);
    1811         900 :     WRITE_STRING_FIELD(name);
    1812         900 : }
    1813             : 
    1814             : static void
    1815       54970 : _outAlterTableCmd(StringInfo str, const AlterTableCmd *node)
    1816             : {
    1817       54970 :     WRITE_NODE_TYPE("ALTERTABLECMD");
    1818             : 
    1819       54970 :     WRITE_ENUM_FIELD(subtype, AlterTableType);
    1820       54970 :     WRITE_STRING_FIELD(name);
    1821       54970 :     WRITE_INT_FIELD(num);
    1822       54970 :     WRITE_NODE_FIELD(newowner);
    1823       54970 :     WRITE_NODE_FIELD(def);
    1824       54970 :     WRITE_ENUM_FIELD(behavior, DropBehavior);
    1825       54970 :     WRITE_BOOL_FIELD(missing_ok);
    1826       54970 :     WRITE_BOOL_FIELD(recurse);
    1827       54970 : }
    1828             : 
    1829             : static void
    1830          12 : _outAlterCollationStmt(StringInfo str, const AlterCollationStmt *node)
    1831             : {
    1832          12 :     WRITE_NODE_TYPE("ALTERCOLLATIONSTMT");
    1833             : 
    1834          12 :     WRITE_NODE_FIELD(collname);
    1835          12 : }
    1836             : 
    1837             : static void
    1838         540 : _outAlterDomainStmt(StringInfo str, const AlterDomainStmt *node)
    1839             : {
    1840         540 :     WRITE_NODE_TYPE("ALTERDOMAINSTMT");
    1841             : 
    1842         540 :     WRITE_CHAR_FIELD(subtype);
    1843         540 :     WRITE_NODE_FIELD(typeName);
    1844         540 :     WRITE_STRING_FIELD(name);
    1845         540 :     WRITE_NODE_FIELD(def);
    1846         540 :     WRITE_ENUM_FIELD(behavior, DropBehavior);
    1847         540 :     WRITE_BOOL_FIELD(missing_ok);
    1848         540 : }
    1849             : 
    1850             : static void
    1851       31078 : _outGrantStmt(StringInfo str, const GrantStmt *node)
    1852             : {
    1853       31078 :     WRITE_NODE_TYPE("GRANTSTMT");
    1854             : 
    1855       31078 :     WRITE_BOOL_FIELD(is_grant);
    1856       31078 :     WRITE_ENUM_FIELD(targtype, GrantTargetType);
    1857       31078 :     WRITE_ENUM_FIELD(objtype, ObjectType);
    1858       31078 :     WRITE_NODE_FIELD(objects);
    1859       31078 :     WRITE_NODE_FIELD(privileges);
    1860       31078 :     WRITE_NODE_FIELD(grantees);
    1861       31078 :     WRITE_BOOL_FIELD(grant_option);
    1862       31078 :     WRITE_NODE_FIELD(grantor);
    1863       31078 :     WRITE_ENUM_FIELD(behavior, DropBehavior);
    1864       31078 : }
    1865             : 
    1866             : static void
    1867       33646 : _outObjectWithArgs(StringInfo str, const ObjectWithArgs *node)
    1868             : {
    1869       33646 :     WRITE_NODE_TYPE("OBJECTWITHARGS");
    1870             : 
    1871       33646 :     WRITE_NODE_FIELD(objname);
    1872       33646 :     WRITE_NODE_FIELD(objargs);
    1873       33646 :     WRITE_NODE_FIELD(objfuncargs);
    1874       33646 :     WRITE_BOOL_FIELD(args_unspecified);
    1875       33646 : }
    1876             : 
    1877             : static void
    1878       29508 : _outAccessPriv(StringInfo str, const AccessPriv *node)
    1879             : {
    1880       29508 :     WRITE_NODE_TYPE("ACCESSPRIV");
    1881             : 
    1882       29508 :     WRITE_STRING_FIELD(priv_name);
    1883       29508 :     WRITE_NODE_FIELD(cols);
    1884       29508 : }
    1885             : 
    1886             : static void
    1887        1742 : _outGrantRoleStmt(StringInfo str, const GrantRoleStmt *node)
    1888             : {
    1889        1742 :     WRITE_NODE_TYPE("GRANTROLESTMT");
    1890             : 
    1891        1742 :     WRITE_NODE_FIELD(granted_roles);
    1892        1742 :     WRITE_NODE_FIELD(grantee_roles);
    1893        1742 :     WRITE_BOOL_FIELD(is_grant);
    1894        1742 :     WRITE_NODE_FIELD(opt);
    1895        1742 :     WRITE_NODE_FIELD(grantor);
    1896        1742 :     WRITE_ENUM_FIELD(behavior, DropBehavior);
    1897        1742 : }
    1898             : 
    1899             : static void
    1900         320 : _outAlterDefaultPrivilegesStmt(StringInfo str, const AlterDefaultPrivilegesStmt *node)
    1901             : {
    1902         320 :     WRITE_NODE_TYPE("ALTERDEFAULTPRIVILEGESSTMT");
    1903             : 
    1904         320 :     WRITE_NODE_FIELD(options);
    1905         320 :     WRITE_NODE_FIELD(action);
    1906         320 : }
    1907             : 
    1908             : static void
    1909       18940 : _outCopyStmt(StringInfo str, const CopyStmt *node)
    1910             : {
    1911       18940 :     WRITE_NODE_TYPE("COPYSTMT");
    1912             : 
    1913       18940 :     WRITE_NODE_FIELD(relation);
    1914       18940 :     WRITE_NODE_FIELD(query);
    1915       18940 :     WRITE_NODE_FIELD(attlist);
    1916       18940 :     WRITE_BOOL_FIELD(is_from);
    1917       18940 :     WRITE_BOOL_FIELD(is_program);
    1918       18940 :     WRITE_STRING_FIELD(filename);
    1919       18940 :     WRITE_NODE_FIELD(options);
    1920       18940 :     WRITE_NODE_FIELD(whereClause);
    1921       18940 : }
    1922             : 
    1923             : static void
    1924       49412 : _outVariableSetStmt(StringInfo str, const VariableSetStmt *node)
    1925             : {
    1926       49412 :     WRITE_NODE_TYPE("VARIABLESETSTMT");
    1927             : 
    1928       49412 :     WRITE_ENUM_FIELD(kind, VariableSetKind);
    1929       49412 :     WRITE_STRING_FIELD(name);
    1930       49412 :     WRITE_NODE_FIELD(args);
    1931       49412 :     WRITE_BOOL_FIELD(is_local);
    1932       49412 : }
    1933             : 
    1934             : static void
    1935        1632 : _outVariableShowStmt(StringInfo str, const VariableShowStmt *node)
    1936             : {
    1937        1632 :     WRITE_NODE_TYPE("VARIABLESHOWSTMT");
    1938             : 
    1939        1632 :     WRITE_STRING_FIELD(name);
    1940        1632 : }
    1941             : 
    1942             : static void
    1943       70366 : _outCreateStmt(StringInfo str, const CreateStmt *node)
    1944             : {
    1945       70366 :     WRITE_NODE_TYPE("CREATESTMT");
    1946             : 
    1947       70366 :     WRITE_NODE_FIELD(relation);
    1948       70366 :     WRITE_NODE_FIELD(tableElts);
    1949       70366 :     WRITE_NODE_FIELD(inhRelations);
    1950       70366 :     WRITE_NODE_FIELD(partbound);
    1951       70366 :     WRITE_NODE_FIELD(partspec);
    1952       70366 :     WRITE_NODE_FIELD(ofTypename);
    1953       70366 :     WRITE_NODE_FIELD(constraints);
    1954       70366 :     WRITE_NODE_FIELD(nnconstraints);
    1955       70366 :     WRITE_NODE_FIELD(options);
    1956       70366 :     WRITE_ENUM_FIELD(oncommit, OnCommitAction);
    1957       70366 :     WRITE_STRING_FIELD(tablespacename);
    1958       70366 :     WRITE_STRING_FIELD(accessMethod);
    1959       70366 :     WRITE_BOOL_FIELD(if_not_exists);
    1960       70366 : }
    1961             : 
    1962             : static void
    1963       60466 : _outConstraint(StringInfo str, const Constraint *node)
    1964             : {
    1965       60466 :     WRITE_NODE_TYPE("CONSTRAINT");
    1966             : 
    1967       60466 :     WRITE_ENUM_FIELD(contype, ConstrType);
    1968       60466 :     WRITE_STRING_FIELD(conname);
    1969       60466 :     WRITE_BOOL_FIELD(deferrable);
    1970       60466 :     WRITE_BOOL_FIELD(initdeferred);
    1971       60466 :     WRITE_BOOL_FIELD(skip_validation);
    1972       60466 :     WRITE_BOOL_FIELD(initially_valid);
    1973       60466 :     WRITE_BOOL_FIELD(is_no_inherit);
    1974       60466 :     WRITE_NODE_FIELD(raw_expr);
    1975       60466 :     WRITE_STRING_FIELD(cooked_expr);
    1976       60466 :     WRITE_CHAR_FIELD(generated_when);
    1977       60466 :     WRITE_INT_FIELD(inhcount);
    1978       60466 :     WRITE_BOOL_FIELD(nulls_not_distinct);
    1979       60466 :     WRITE_NODE_FIELD(keys);
    1980       60466 :     WRITE_BOOL_FIELD(without_overlaps);
    1981       60466 :     WRITE_NODE_FIELD(including);
    1982       60466 :     WRITE_NODE_FIELD(exclusions);
    1983       60466 :     WRITE_NODE_FIELD(options);
    1984       60466 :     WRITE_STRING_FIELD(indexname);
    1985       60466 :     WRITE_STRING_FIELD(indexspace);
    1986       60466 :     WRITE_BOOL_FIELD(reset_default_tblspc);
    1987       60466 :     WRITE_STRING_FIELD(access_method);
    1988       60466 :     WRITE_NODE_FIELD(where_clause);
    1989       60466 :     WRITE_NODE_FIELD(pktable);
    1990       60466 :     WRITE_NODE_FIELD(fk_attrs);
    1991       60466 :     WRITE_NODE_FIELD(pk_attrs);
    1992       60466 :     WRITE_BOOL_FIELD(fk_with_period);
    1993       60466 :     WRITE_BOOL_FIELD(pk_with_period);
    1994       60466 :     WRITE_CHAR_FIELD(fk_matchtype);
    1995       60466 :     WRITE_CHAR_FIELD(fk_upd_action);
    1996       60466 :     WRITE_CHAR_FIELD(fk_del_action);
    1997       60466 :     WRITE_NODE_FIELD(fk_del_set_cols);
    1998       60466 :     WRITE_NODE_FIELD(old_conpfeqop);
    1999       60466 :     WRITE_OID_FIELD(old_pktable_oid);
    2000       60466 :     WRITE_LOCATION_FIELD(location);
    2001       60466 : }
    2002             : 
    2003             : static void
    2004         220 : _outCreateTableSpaceStmt(StringInfo str, const CreateTableSpaceStmt *node)
    2005             : {
    2006         220 :     WRITE_NODE_TYPE("CREATETABLESPACESTMT");
    2007             : 
    2008         220 :     WRITE_STRING_FIELD(tablespacename);
    2009         220 :     WRITE_NODE_FIELD(owner);
    2010         220 :     WRITE_STRING_FIELD(location);
    2011         220 :     WRITE_NODE_FIELD(options);
    2012         220 : }
    2013             : 
    2014             : static void
    2015         128 : _outDropTableSpaceStmt(StringInfo str, const DropTableSpaceStmt *node)
    2016             : {
    2017         128 :     WRITE_NODE_TYPE("DROPTABLESPACESTMT");
    2018             : 
    2019         128 :     WRITE_STRING_FIELD(tablespacename);
    2020         128 :     WRITE_BOOL_FIELD(missing_ok);
    2021         128 : }
    2022             : 
    2023             : static void
    2024          48 : _outAlterTableSpaceOptionsStmt(StringInfo str, const AlterTableSpaceOptionsStmt *node)
    2025             : {
    2026          48 :     WRITE_NODE_TYPE("ALTERTABLESPACEOPTIONSSTMT");
    2027             : 
    2028          48 :     WRITE_STRING_FIELD(tablespacename);
    2029          48 :     WRITE_NODE_FIELD(options);
    2030          48 :     WRITE_BOOL_FIELD(isReset);
    2031          48 : }
    2032             : 
    2033             : static void
    2034          60 : _outAlterTableMoveAllStmt(StringInfo str, const AlterTableMoveAllStmt *node)
    2035             : {
    2036          60 :     WRITE_NODE_TYPE("ALTERTABLEMOVEALLSTMT");
    2037             : 
    2038          60 :     WRITE_STRING_FIELD(orig_tablespacename);
    2039          60 :     WRITE_ENUM_FIELD(objtype, ObjectType);
    2040          60 :     WRITE_NODE_FIELD(roles);
    2041          60 :     WRITE_STRING_FIELD(new_tablespacename);
    2042          60 :     WRITE_BOOL_FIELD(nowait);
    2043          60 : }
    2044             : 
    2045             : static void
    2046         808 : _outCreateExtensionStmt(StringInfo str, const CreateExtensionStmt *node)
    2047             : {
    2048         808 :     WRITE_NODE_TYPE("CREATEEXTENSIONSTMT");
    2049             : 
    2050         808 :     WRITE_STRING_FIELD(extname);
    2051         808 :     WRITE_BOOL_FIELD(if_not_exists);
    2052         808 :     WRITE_NODE_FIELD(options);
    2053         808 : }
    2054             : 
    2055             : static void
    2056          50 : _outAlterExtensionStmt(StringInfo str, const AlterExtensionStmt *node)
    2057             : {
    2058          50 :     WRITE_NODE_TYPE("ALTEREXTENSIONSTMT");
    2059             : 
    2060          50 :     WRITE_STRING_FIELD(extname);
    2061          50 :     WRITE_NODE_FIELD(options);
    2062          50 : }
    2063             : 
    2064             : static void
    2065         400 : _outAlterExtensionContentsStmt(StringInfo str, const AlterExtensionContentsStmt *node)
    2066             : {
    2067         400 :     WRITE_NODE_TYPE("ALTEREXTENSIONCONTENTSSTMT");
    2068             : 
    2069         400 :     WRITE_STRING_FIELD(extname);
    2070         400 :     WRITE_INT_FIELD(action);
    2071         400 :     WRITE_ENUM_FIELD(objtype, ObjectType);
    2072         400 :     WRITE_NODE_FIELD(object);
    2073         400 : }
    2074             : 
    2075             : static void
    2076         376 : _outCreateFdwStmt(StringInfo str, const CreateFdwStmt *node)
    2077             : {
    2078         376 :     WRITE_NODE_TYPE("CREATEFDWSTMT");
    2079             : 
    2080         376 :     WRITE_STRING_FIELD(fdwname);
    2081         376 :     WRITE_NODE_FIELD(func_options);
    2082         376 :     WRITE_NODE_FIELD(options);
    2083         376 : }
    2084             : 
    2085             : static void
    2086         244 : _outAlterFdwStmt(StringInfo str, const AlterFdwStmt *node)
    2087             : {
    2088         244 :     WRITE_NODE_TYPE("ALTERFDWSTMT");
    2089             : 
    2090         244 :     WRITE_STRING_FIELD(fdwname);
    2091         244 :     WRITE_NODE_FIELD(func_options);
    2092         244 :     WRITE_NODE_FIELD(options);
    2093         244 : }
    2094             : 
    2095             : static void
    2096         530 : _outCreateForeignServerStmt(StringInfo str, const CreateForeignServerStmt *node)
    2097             : {
    2098         530 :     WRITE_NODE_TYPE("CREATEFOREIGNSERVERSTMT");
    2099             : 
    2100         530 :     WRITE_STRING_FIELD(servername);
    2101         530 :     WRITE_STRING_FIELD(servertype);
    2102         530 :     WRITE_STRING_FIELD(version);
    2103         530 :     WRITE_STRING_FIELD(fdwname);
    2104         530 :     WRITE_BOOL_FIELD(if_not_exists);
    2105         530 :     WRITE_NODE_FIELD(options);
    2106         530 : }
    2107             : 
    2108             : static void
    2109         434 : _outAlterForeignServerStmt(StringInfo str, const AlterForeignServerStmt *node)
    2110             : {
    2111         434 :     WRITE_NODE_TYPE("ALTERFOREIGNSERVERSTMT");
    2112             : 
    2113         434 :     WRITE_STRING_FIELD(servername);
    2114         434 :     WRITE_STRING_FIELD(version);
    2115         434 :     WRITE_NODE_FIELD(options);
    2116         434 :     WRITE_BOOL_FIELD(has_version);
    2117         434 : }
    2118             : 
    2119             : static void
    2120         832 : _outCreateForeignTableStmt(StringInfo str, const CreateForeignTableStmt *node)
    2121             : {
    2122         832 :     WRITE_NODE_TYPE("CREATEFOREIGNTABLESTMT");
    2123             : 
    2124         832 :     WRITE_NODE_FIELD(base.relation);
    2125         832 :     WRITE_NODE_FIELD(base.tableElts);
    2126         832 :     WRITE_NODE_FIELD(base.inhRelations);
    2127         832 :     WRITE_NODE_FIELD(base.partbound);
    2128         832 :     WRITE_NODE_FIELD(base.partspec);
    2129         832 :     WRITE_NODE_FIELD(base.ofTypename);
    2130         832 :     WRITE_NODE_FIELD(base.constraints);
    2131         832 :     WRITE_NODE_FIELD(base.nnconstraints);
    2132         832 :     WRITE_NODE_FIELD(base.options);
    2133         832 :     WRITE_ENUM_FIELD(base.oncommit, OnCommitAction);
    2134         832 :     WRITE_STRING_FIELD(base.tablespacename);
    2135         832 :     WRITE_STRING_FIELD(base.accessMethod);
    2136         832 :     WRITE_BOOL_FIELD(base.if_not_exists);
    2137         832 :     WRITE_STRING_FIELD(servername);
    2138         832 :     WRITE_NODE_FIELD(options);
    2139         832 : }
    2140             : 
    2141             : static void
    2142         476 : _outCreateUserMappingStmt(StringInfo str, const CreateUserMappingStmt *node)
    2143             : {
    2144         476 :     WRITE_NODE_TYPE("CREATEUSERMAPPINGSTMT");
    2145             : 
    2146         476 :     WRITE_NODE_FIELD(user);
    2147         476 :     WRITE_STRING_FIELD(servername);
    2148         476 :     WRITE_BOOL_FIELD(if_not_exists);
    2149         476 :     WRITE_NODE_FIELD(options);
    2150         476 : }
    2151             : 
    2152             : static void
    2153         220 : _outAlterUserMappingStmt(StringInfo str, const AlterUserMappingStmt *node)
    2154             : {
    2155         220 :     WRITE_NODE_TYPE("ALTERUSERMAPPINGSTMT");
    2156             : 
    2157         220 :     WRITE_NODE_FIELD(user);
    2158         220 :     WRITE_STRING_FIELD(servername);
    2159         220 :     WRITE_NODE_FIELD(options);
    2160         220 : }
    2161             : 
    2162             : static void
    2163         252 : _outDropUserMappingStmt(StringInfo str, const DropUserMappingStmt *node)
    2164             : {
    2165         252 :     WRITE_NODE_TYPE("DROPUSERMAPPINGSTMT");
    2166             : 
    2167         252 :     WRITE_NODE_FIELD(user);
    2168         252 :     WRITE_STRING_FIELD(servername);
    2169         252 :     WRITE_BOOL_FIELD(missing_ok);
    2170         252 : }
    2171             : 
    2172             : static void
    2173          88 : _outImportForeignSchemaStmt(StringInfo str, const ImportForeignSchemaStmt *node)
    2174             : {
    2175          88 :     WRITE_NODE_TYPE("IMPORTFOREIGNSCHEMASTMT");
    2176             : 
    2177          88 :     WRITE_STRING_FIELD(server_name);
    2178          88 :     WRITE_STRING_FIELD(remote_schema);
    2179          88 :     WRITE_STRING_FIELD(local_schema);
    2180          88 :     WRITE_ENUM_FIELD(list_type, ImportForeignSchemaType);
    2181          88 :     WRITE_NODE_FIELD(table_list);
    2182          88 :     WRITE_NODE_FIELD(options);
    2183          88 : }
    2184             : 
    2185             : static void
    2186        1304 : _outCreatePolicyStmt(StringInfo str, const CreatePolicyStmt *node)
    2187             : {
    2188        1304 :     WRITE_NODE_TYPE("CREATEPOLICYSTMT");
    2189             : 
    2190        1304 :     WRITE_STRING_FIELD(policy_name);
    2191        1304 :     WRITE_NODE_FIELD(table);
    2192        1304 :     WRITE_STRING_FIELD(cmd_name);
    2193        1304 :     WRITE_BOOL_FIELD(permissive);
    2194        1304 :     WRITE_NODE_FIELD(roles);
    2195        1304 :     WRITE_NODE_FIELD(qual);
    2196        1304 :     WRITE_NODE_FIELD(with_check);
    2197        1304 : }
    2198             : 
    2199             : static void
    2200         168 : _outAlterPolicyStmt(StringInfo str, const AlterPolicyStmt *node)
    2201             : {
    2202         168 :     WRITE_NODE_TYPE("ALTERPOLICYSTMT");
    2203             : 
    2204         168 :     WRITE_STRING_FIELD(policy_name);
    2205         168 :     WRITE_NODE_FIELD(table);
    2206         168 :     WRITE_NODE_FIELD(roles);
    2207         168 :     WRITE_NODE_FIELD(qual);
    2208         168 :     WRITE_NODE_FIELD(with_check);
    2209         168 : }
    2210             : 
    2211             : static void
    2212         120 : _outCreateAmStmt(StringInfo str, const CreateAmStmt *node)
    2213             : {
    2214         120 :     WRITE_NODE_TYPE("CREATEAMSTMT");
    2215             : 
    2216         120 :     WRITE_STRING_FIELD(amname);
    2217         120 :     WRITE_NODE_FIELD(handler_name);
    2218         120 :     WRITE_CHAR_FIELD(amtype);
    2219         120 : }
    2220             : 
    2221             : static void
    2222        6256 : _outCreateTrigStmt(StringInfo str, const CreateTrigStmt *node)
    2223             : {
    2224        6256 :     WRITE_NODE_TYPE("CREATETRIGSTMT");
    2225             : 
    2226        6256 :     WRITE_BOOL_FIELD(replace);
    2227        6256 :     WRITE_BOOL_FIELD(isconstraint);
    2228        6256 :     WRITE_STRING_FIELD(trigname);
    2229        6256 :     WRITE_NODE_FIELD(relation);
    2230        6256 :     WRITE_NODE_FIELD(funcname);
    2231        6256 :     WRITE_NODE_FIELD(args);
    2232        6256 :     WRITE_BOOL_FIELD(row);
    2233        6256 :     WRITE_INT_FIELD(timing);
    2234        6256 :     WRITE_INT_FIELD(events);
    2235        6256 :     WRITE_NODE_FIELD(columns);
    2236        6256 :     WRITE_NODE_FIELD(whenClause);
    2237        6256 :     WRITE_NODE_FIELD(transitionRels);
    2238        6256 :     WRITE_BOOL_FIELD(deferrable);
    2239        6256 :     WRITE_BOOL_FIELD(initdeferred);
    2240        6256 :     WRITE_NODE_FIELD(constrrel);
    2241        6256 : }
    2242             : 
    2243             : static void
    2244         392 : _outCreateEventTrigStmt(StringInfo str, const CreateEventTrigStmt *node)
    2245             : {
    2246         392 :     WRITE_NODE_TYPE("CREATEEVENTTRIGSTMT");
    2247             : 
    2248         392 :     WRITE_STRING_FIELD(trigname);
    2249         392 :     WRITE_STRING_FIELD(eventname);
    2250         392 :     WRITE_NODE_FIELD(whenclause);
    2251         392 :     WRITE_NODE_FIELD(funcname);
    2252         392 : }
    2253             : 
    2254             : static void
    2255          96 : _outAlterEventTrigStmt(StringInfo str, const AlterEventTrigStmt *node)
    2256             : {
    2257          96 :     WRITE_NODE_TYPE("ALTEREVENTTRIGSTMT");
    2258             : 
    2259          96 :     WRITE_STRING_FIELD(trigname);
    2260          96 :     WRITE_CHAR_FIELD(tgenabled);
    2261          96 : }
    2262             : 
    2263             : static void
    2264         244 : _outCreatePLangStmt(StringInfo str, const CreatePLangStmt *node)
    2265             : {
    2266         244 :     WRITE_NODE_TYPE("CREATEPLANGSTMT");
    2267             : 
    2268         244 :     WRITE_BOOL_FIELD(replace);
    2269         244 :     WRITE_STRING_FIELD(plname);
    2270         244 :     WRITE_NODE_FIELD(plhandler);
    2271         244 :     WRITE_NODE_FIELD(plinline);
    2272         244 :     WRITE_NODE_FIELD(plvalidator);
    2273         244 :     WRITE_BOOL_FIELD(pltrusted);
    2274         244 : }
    2275             : 
    2276             : static void
    2277        3368 : _outCreateRoleStmt(StringInfo str, const CreateRoleStmt *node)
    2278             : {
    2279        3368 :     WRITE_NODE_TYPE("CREATEROLESTMT");
    2280             : 
    2281        3368 :     WRITE_ENUM_FIELD(stmt_type, RoleStmtType);
    2282        3368 :     WRITE_STRING_FIELD(role);
    2283        3368 :     WRITE_NODE_FIELD(options);
    2284        3368 : }
    2285             : 
    2286             : static void
    2287         844 : _outAlterRoleStmt(StringInfo str, const AlterRoleStmt *node)
    2288             : {
    2289         844 :     WRITE_NODE_TYPE("ALTERROLESTMT");
    2290             : 
    2291         844 :     WRITE_NODE_FIELD(role);
    2292         844 :     WRITE_NODE_FIELD(options);
    2293         844 :     WRITE_INT_FIELD(action);
    2294         844 : }
    2295             : 
    2296             : static void
    2297         156 : _outAlterRoleSetStmt(StringInfo str, const AlterRoleSetStmt *node)
    2298             : {
    2299         156 :     WRITE_NODE_TYPE("ALTERROLESETSTMT");
    2300             : 
    2301         156 :     WRITE_NODE_FIELD(role);
    2302         156 :     WRITE_STRING_FIELD(database);
    2303         156 :     WRITE_NODE_FIELD(setstmt);
    2304         156 : }
    2305             : 
    2306             : static void
    2307        3296 : _outDropRoleStmt(StringInfo str, const DropRoleStmt *node)
    2308             : {
    2309        3296 :     WRITE_NODE_TYPE("DROPROLESTMT");
    2310             : 
    2311        3296 :     WRITE_NODE_FIELD(roles);
    2312        3296 :     WRITE_BOOL_FIELD(missing_ok);
    2313        3296 : }
    2314             : 
    2315             : static void
    2316        1272 : _outCreateSeqStmt(StringInfo str, const CreateSeqStmt *node)
    2317             : {
    2318        1272 :     WRITE_NODE_TYPE("CREATESEQSTMT");
    2319             : 
    2320        1272 :     WRITE_NODE_FIELD(sequence);
    2321        1272 :     WRITE_NODE_FIELD(options);
    2322        1272 :     WRITE_OID_FIELD(ownerId);
    2323        1272 :     WRITE_BOOL_FIELD(for_identity);
    2324        1272 :     WRITE_BOOL_FIELD(if_not_exists);
    2325        1272 : }
    2326             : 
    2327             : static void
    2328         392 : _outAlterSeqStmt(StringInfo str, const AlterSeqStmt *node)
    2329             : {
    2330         392 :     WRITE_NODE_TYPE("ALTERSEQSTMT");
    2331             : 
    2332         392 :     WRITE_NODE_FIELD(sequence);
    2333         392 :     WRITE_NODE_FIELD(options);
    2334         392 :     WRITE_BOOL_FIELD(for_identity);
    2335         392 :     WRITE_BOOL_FIELD(missing_ok);
    2336         392 : }
    2337             : 
    2338             : static void
    2339       15664 : _outDefineStmt(StringInfo str, const DefineStmt *node)
    2340             : {
    2341       15664 :     WRITE_NODE_TYPE("DEFINESTMT");
    2342             : 
    2343       15664 :     WRITE_ENUM_FIELD(kind, ObjectType);
    2344       15664 :     WRITE_BOOL_FIELD(oldstyle);
    2345       15664 :     WRITE_NODE_FIELD(defnames);
    2346       15664 :     WRITE_NODE_FIELD(args);
    2347       15664 :     WRITE_NODE_FIELD(definition);
    2348       15664 :     WRITE_BOOL_FIELD(if_not_exists);
    2349       15664 :     WRITE_BOOL_FIELD(replace);
    2350       15664 : }
    2351             : 
    2352             : static void
    2353        2324 : _outCreateDomainStmt(StringInfo str, const CreateDomainStmt *node)
    2354             : {
    2355        2324 :     WRITE_NODE_TYPE("CREATEDOMAINSTMT");
    2356             : 
    2357        2324 :     WRITE_NODE_FIELD(domainname);
    2358        2324 :     WRITE_NODE_FIELD(typeName);
    2359        2324 :     WRITE_NODE_FIELD(collClause);
    2360        2324 :     WRITE_NODE_FIELD(constraints);
    2361        2324 : }
    2362             : 
    2363             : static void
    2364         764 : _outCreateOpClassStmt(StringInfo str, const CreateOpClassStmt *node)
    2365             : {
    2366         764 :     WRITE_NODE_TYPE("CREATEOPCLASSSTMT");
    2367             : 
    2368         764 :     WRITE_NODE_FIELD(opclassname);
    2369         764 :     WRITE_NODE_FIELD(opfamilyname);
    2370         764 :     WRITE_STRING_FIELD(amname);
    2371         764 :     WRITE_NODE_FIELD(datatype);
    2372         764 :     WRITE_NODE_FIELD(items);
    2373         764 :     WRITE_BOOL_FIELD(isDefault);
    2374         764 : }
    2375             : 
    2376             : static void
    2377        7944 : _outCreateOpClassItem(StringInfo str, const CreateOpClassItem *node)
    2378             : {
    2379        7944 :     WRITE_NODE_TYPE("CREATEOPCLASSITEM");
    2380             : 
    2381        7944 :     WRITE_INT_FIELD(itemtype);
    2382        7944 :     WRITE_NODE_FIELD(name);
    2383        7944 :     WRITE_INT_FIELD(number);
    2384        7944 :     WRITE_NODE_FIELD(order_family);
    2385        7944 :     WRITE_NODE_FIELD(class_args);
    2386        7944 :     WRITE_NODE_FIELD(storedtype);
    2387        7944 : }
    2388             : 
    2389             : static void
    2390         296 : _outCreateOpFamilyStmt(StringInfo str, const CreateOpFamilyStmt *node)
    2391             : {
    2392         296 :     WRITE_NODE_TYPE("CREATEOPFAMILYSTMT");
    2393             : 
    2394         296 :     WRITE_NODE_FIELD(opfamilyname);
    2395         296 :     WRITE_STRING_FIELD(amname);
    2396         296 : }
    2397             : 
    2398             : static void
    2399        1004 : _outAlterOpFamilyStmt(StringInfo str, const AlterOpFamilyStmt *node)
    2400             : {
    2401        1004 :     WRITE_NODE_TYPE("ALTEROPFAMILYSTMT");
    2402             : 
    2403        1004 :     WRITE_NODE_FIELD(opfamilyname);
    2404        1004 :     WRITE_STRING_FIELD(amname);
    2405        1004 :     WRITE_BOOL_FIELD(isDrop);
    2406        1004 :     WRITE_NODE_FIELD(items);
    2407        1004 : }
    2408             : 
    2409             : static void
    2410       48074 : _outDropStmt(StringInfo str, const DropStmt *node)
    2411             : {
    2412       48074 :     WRITE_NODE_TYPE("DROPSTMT");
    2413             : 
    2414       48074 :     WRITE_NODE_FIELD(objects);
    2415       48074 :     WRITE_ENUM_FIELD(removeType, ObjectType);
    2416       48074 :     WRITE_ENUM_FIELD(behavior, DropBehavior);
    2417       48074 :     WRITE_BOOL_FIELD(missing_ok);
    2418       48074 :     WRITE_BOOL_FIELD(concurrent);
    2419       48074 : }
    2420             : 
    2421             : static void
    2422        2882 : _outTruncateStmt(StringInfo str, const TruncateStmt *node)
    2423             : {
    2424        2882 :     WRITE_NODE_TYPE("TRUNCATESTMT");
    2425             : 
    2426        2882 :     WRITE_NODE_FIELD(relations);
    2427        2882 :     WRITE_BOOL_FIELD(restart_seqs);
    2428        2882 :     WRITE_ENUM_FIELD(behavior, DropBehavior);
    2429        2882 : }
    2430             : 
    2431             : static void
    2432       11072 : _outCommentStmt(StringInfo str, const CommentStmt *node)
    2433             : {
    2434       11072 :     WRITE_NODE_TYPE("COMMENTSTMT");
    2435             : 
    2436       11072 :     WRITE_ENUM_FIELD(objtype, ObjectType);
    2437       11072 :     WRITE_NODE_FIELD(object);
    2438       11072 :     WRITE_STRING_FIELD(comment);
    2439       11072 : }
    2440             : 
    2441             : static void
    2442         200 : _outSecLabelStmt(StringInfo str, const SecLabelStmt *node)
    2443             : {
    2444         200 :     WRITE_NODE_TYPE("SECLABELSTMT");
    2445             : 
    2446         200 :     WRITE_ENUM_FIELD(objtype, ObjectType);
    2447         200 :     WRITE_NODE_FIELD(object);
    2448         200 :     WRITE_STRING_FIELD(provider);
    2449         200 :     WRITE_STRING_FIELD(label);
    2450         200 : }
    2451             : 
    2452             : static void
    2453        5416 : _outDeclareCursorStmt(StringInfo str, const DeclareCursorStmt *node)
    2454             : {
    2455        5416 :     WRITE_NODE_TYPE("DECLARECURSORSTMT");
    2456             : 
    2457        5416 :     WRITE_STRING_FIELD(portalname);
    2458        5416 :     WRITE_INT_FIELD(options);
    2459        5416 :     WRITE_NODE_FIELD(query);
    2460        5416 : }
    2461             : 
    2462             : static void
    2463        4260 : _outClosePortalStmt(StringInfo str, const ClosePortalStmt *node)
    2464             : {
    2465        4260 :     WRITE_NODE_TYPE("CLOSEPORTALSTMT");
    2466             : 
    2467        4260 :     WRITE_STRING_FIELD(portalname);
    2468        4260 : }
    2469             : 
    2470             : static void
    2471       11340 : _outFetchStmt(StringInfo str, const FetchStmt *node)
    2472             : {
    2473       11340 :     WRITE_NODE_TYPE("FETCHSTMT");
    2474             : 
    2475       11340 :     WRITE_ENUM_FIELD(direction, FetchDirection);
    2476       11340 :     WRITE_LONG_FIELD(howMany);
    2477       11340 :     WRITE_STRING_FIELD(portalname);
    2478       11340 :     WRITE_BOOL_FIELD(ismove);
    2479       11340 : }
    2480             : 
    2481             : static void
    2482       12256 : _outIndexStmt(StringInfo str, const IndexStmt *node)
    2483             : {
    2484       12256 :     WRITE_NODE_TYPE("INDEXSTMT");
    2485             : 
    2486       12256 :     WRITE_STRING_FIELD(idxname);
    2487       12256 :     WRITE_NODE_FIELD(relation);
    2488       12256 :     WRITE_STRING_FIELD(accessMethod);
    2489       12256 :     WRITE_STRING_FIELD(tableSpace);
    2490       12256 :     WRITE_NODE_FIELD(indexParams);
    2491       12256 :     WRITE_NODE_FIELD(indexIncludingParams);
    2492       12256 :     WRITE_NODE_FIELD(options);
    2493       12256 :     WRITE_NODE_FIELD(whereClause);
    2494       12256 :     WRITE_NODE_FIELD(excludeOpNames);
    2495       12256 :     WRITE_STRING_FIELD(idxcomment);
    2496       12256 :     WRITE_OID_FIELD(indexOid);
    2497       12256 :     WRITE_OID_FIELD(oldNumber);
    2498       12256 :     WRITE_UINT_FIELD(oldCreateSubid);
    2499       12256 :     WRITE_UINT_FIELD(oldFirstRelfilelocatorSubid);
    2500       12256 :     WRITE_BOOL_FIELD(unique);
    2501       12256 :     WRITE_BOOL_FIELD(nulls_not_distinct);
    2502       12256 :     WRITE_BOOL_FIELD(primary);
    2503       12256 :     WRITE_BOOL_FIELD(isconstraint);
    2504       12256 :     WRITE_BOOL_FIELD(iswithoutoverlaps);
    2505       12256 :     WRITE_BOOL_FIELD(deferrable);
    2506       12256 :     WRITE_BOOL_FIELD(initdeferred);
    2507       12256 :     WRITE_BOOL_FIELD(transformed);
    2508       12256 :     WRITE_BOOL_FIELD(concurrent);
    2509       12256 :     WRITE_BOOL_FIELD(if_not_exists);
    2510       12256 :     WRITE_BOOL_FIELD(reset_default_tblspc);
    2511       12256 : }
    2512             : 
    2513             : static void
    2514        1086 : _outCreateStatsStmt(StringInfo str, const CreateStatsStmt *node)
    2515             : {
    2516        1086 :     WRITE_NODE_TYPE("CREATESTATSSTMT");
    2517             : 
    2518        1086 :     WRITE_NODE_FIELD(defnames);
    2519        1086 :     WRITE_NODE_FIELD(stat_types);
    2520        1086 :     WRITE_NODE_FIELD(exprs);
    2521        1086 :     WRITE_NODE_FIELD(relations);
    2522        1086 :     WRITE_STRING_FIELD(stxcomment);
    2523        1086 :     WRITE_BOOL_FIELD(transformed);
    2524        1086 :     WRITE_BOOL_FIELD(if_not_exists);
    2525        1086 : }
    2526             : 
    2527             : static void
    2528        2848 : _outStatsElem(StringInfo str, const StatsElem *node)
    2529             : {
    2530        2848 :     WRITE_NODE_TYPE("STATSELEM");
    2531             : 
    2532        2848 :     WRITE_STRING_FIELD(name);
    2533        2848 :     WRITE_NODE_FIELD(expr);
    2534        2848 : }
    2535             : 
    2536             : static void
    2537          52 : _outAlterStatsStmt(StringInfo str, const AlterStatsStmt *node)
    2538             : {
    2539          52 :     WRITE_NODE_TYPE("ALTERSTATSSTMT");
    2540             : 
    2541          52 :     WRITE_NODE_FIELD(defnames);
    2542          52 :     WRITE_NODE_FIELD(stxstattarget);
    2543          52 :     WRITE_BOOL_FIELD(missing_ok);
    2544          52 : }
    2545             : 
    2546             : static void
    2547       40940 : _outCreateFunctionStmt(StringInfo str, const CreateFunctionStmt *node)
    2548             : {
    2549       40940 :     WRITE_NODE_TYPE("CREATEFUNCTIONSTMT");
    2550             : 
    2551       40940 :     WRITE_BOOL_FIELD(is_procedure);
    2552       40940 :     WRITE_BOOL_FIELD(replace);
    2553       40940 :     WRITE_NODE_FIELD(funcname);
    2554       40940 :     WRITE_NODE_FIELD(parameters);
    2555       40940 :     WRITE_NODE_FIELD(returnType);
    2556       40940 :     WRITE_NODE_FIELD(options);
    2557       40940 :     WRITE_NODE_FIELD(sql_body);
    2558       40940 : }
    2559             : 
    2560             : static void
    2561      121934 : _outFunctionParameter(StringInfo str, const FunctionParameter *node)
    2562             : {
    2563      121934 :     WRITE_NODE_TYPE("FUNCTIONPARAMETER");
    2564             : 
    2565      121934 :     WRITE_STRING_FIELD(name);
    2566      121934 :     WRITE_NODE_FIELD(argType);
    2567      121934 :     WRITE_ENUM_FIELD(mode, FunctionParameterMode);
    2568      121934 :     WRITE_NODE_FIELD(defexpr);
    2569      121934 : }
    2570             : 
    2571             : static void
    2572        1264 : _outAlterFunctionStmt(StringInfo str, const AlterFunctionStmt *node)
    2573             : {
    2574        1264 :     WRITE_NODE_TYPE("ALTERFUNCTIONSTMT");
    2575             : 
    2576        1264 :     WRITE_ENUM_FIELD(objtype, ObjectType);
    2577        1264 :     WRITE_NODE_FIELD(func);
    2578        1264 :     WRITE_NODE_FIELD(actions);
    2579        1264 : }
    2580             : 
    2581             : static void
    2582        2096 : _outDoStmt(StringInfo str, const DoStmt *node)
    2583             : {
    2584        2096 :     WRITE_NODE_TYPE("DOSTMT");
    2585             : 
    2586        2096 :     WRITE_NODE_FIELD(args);
    2587        2096 : }
    2588             : 
    2589             : static void
    2590         764 : _outCallStmt(StringInfo str, const CallStmt *node)
    2591             : {
    2592         764 :     WRITE_NODE_TYPE("CALLSTMT");
    2593             : 
    2594         764 :     WRITE_NODE_FIELD(funccall);
    2595         764 :     WRITE_NODE_FIELD(funcexpr);
    2596         764 :     WRITE_NODE_FIELD(outargs);
    2597         764 : }
    2598             : 
    2599             : static void
    2600        2736 : _outRenameStmt(StringInfo str, const RenameStmt *node)
    2601             : {
    2602        2736 :     WRITE_NODE_TYPE("RENAMESTMT");
    2603             : 
    2604        2736 :     WRITE_ENUM_FIELD(renameType, ObjectType);
    2605        2736 :     WRITE_ENUM_FIELD(relationType, ObjectType);
    2606        2736 :     WRITE_NODE_FIELD(relation);
    2607        2736 :     WRITE_NODE_FIELD(object);
    2608        2736 :     WRITE_STRING_FIELD(subname);
    2609        2736 :     WRITE_STRING_FIELD(newname);
    2610        2736 :     WRITE_ENUM_FIELD(behavior, DropBehavior);
    2611        2736 :     WRITE_BOOL_FIELD(missing_ok);
    2612        2736 : }
    2613             : 
    2614             : static void
    2615          92 : _outAlterObjectDependsStmt(StringInfo str, const AlterObjectDependsStmt *node)
    2616             : {
    2617          92 :     WRITE_NODE_TYPE("ALTEROBJECTDEPENDSSTMT");
    2618             : 
    2619          92 :     WRITE_ENUM_FIELD(objectType, ObjectType);
    2620          92 :     WRITE_NODE_FIELD(relation);
    2621          92 :     WRITE_NODE_FIELD(object);
    2622          92 :     WRITE_NODE_FIELD(extname);
    2623          92 :     WRITE_BOOL_FIELD(remove);
    2624          92 : }
    2625             : 
    2626             : static void
    2627         792 : _outAlterObjectSchemaStmt(StringInfo str, const AlterObjectSchemaStmt *node)
    2628             : {
    2629         792 :     WRITE_NODE_TYPE("ALTEROBJECTSCHEMASTMT");
    2630             : 
    2631         792 :     WRITE_ENUM_FIELD(objectType, ObjectType);
    2632         792 :     WRITE_NODE_FIELD(relation);
    2633         792 :     WRITE_NODE_FIELD(object);
    2634         792 :     WRITE_STRING_FIELD(newschema);
    2635         792 :     WRITE_BOOL_FIELD(missing_ok);
    2636         792 : }
    2637             : 
    2638             : static void
    2639        3078 : _outAlterOwnerStmt(StringInfo str, const AlterOwnerStmt *node)
    2640             : {
    2641        3078 :     WRITE_NODE_TYPE("ALTEROWNERSTMT");
    2642             : 
    2643        3078 :     WRITE_ENUM_FIELD(objectType, ObjectType);
    2644        3078 :     WRITE_NODE_FIELD(relation);
    2645        3078 :     WRITE_NODE_FIELD(object);
    2646        3078 :     WRITE_NODE_FIELD(newowner);
    2647        3078 : }
    2648             : 
    2649             : static void
    2650        1204 : _outAlterOperatorStmt(StringInfo str, const AlterOperatorStmt *node)
    2651             : {
    2652        1204 :     WRITE_NODE_TYPE("ALTEROPERATORSTMT");
    2653             : 
    2654        1204 :     WRITE_NODE_FIELD(opername);
    2655        1204 :     WRITE_NODE_FIELD(options);
    2656        1204 : }
    2657             : 
    2658             : static void
    2659         120 : _outAlterTypeStmt(StringInfo str, const AlterTypeStmt *node)
    2660             : {
    2661         120 :     WRITE_NODE_TYPE("ALTERTYPESTMT");
    2662             : 
    2663         120 :     WRITE_NODE_FIELD(typeName);
    2664         120 :     WRITE_NODE_FIELD(options);
    2665         120 : }
    2666             : 
    2667             : static void
    2668        2068 : _outRuleStmt(StringInfo str, const RuleStmt *node)
    2669             : {
    2670        2068 :     WRITE_NODE_TYPE("RULESTMT");
    2671             : 
    2672        2068 :     WRITE_NODE_FIELD(relation);
    2673        2068 :     WRITE_STRING_FIELD(rulename);
    2674        2068 :     WRITE_NODE_FIELD(whereClause);
    2675        2068 :     WRITE_ENUM_FIELD(event, CmdType);
    2676        2068 :     WRITE_BOOL_FIELD(instead);
    2677        2068 :     WRITE_NODE_FIELD(actions);
    2678        2068 :     WRITE_BOOL_FIELD(replace);
    2679        2068 : }
    2680             : 
    2681             : static void
    2682         278 : _outNotifyStmt(StringInfo str, const NotifyStmt *node)
    2683             : {
    2684         278 :     WRITE_NODE_TYPE("NOTIFYSTMT");
    2685             : 
    2686         278 :     WRITE_STRING_FIELD(conditionname);
    2687         278 :     WRITE_STRING_FIELD(payload);
    2688         278 : }
    2689             : 
    2690             : static void
    2691         148 : _outListenStmt(StringInfo str, const ListenStmt *node)
    2692             : {
    2693         148 :     WRITE_NODE_TYPE("LISTENSTMT");
    2694             : 
    2695         148 :     WRITE_STRING_FIELD(conditionname);
    2696         148 : }
    2697             : 
    2698             : static void
    2699          76 : _outUnlistenStmt(StringInfo str, const UnlistenStmt *node)
    2700             : {
    2701          76 :     WRITE_NODE_TYPE("UNLISTENSTMT");
    2702             : 
    2703          76 :     WRITE_STRING_FIELD(conditionname);
    2704          76 : }
    2705             : 
    2706             : static void
    2707       68778 : _outTransactionStmt(StringInfo str, const TransactionStmt *node)
    2708             : {
    2709       68778 :     WRITE_NODE_TYPE("TRANSACTIONSTMT");
    2710             : 
    2711       68778 :     WRITE_ENUM_FIELD(kind, TransactionStmtKind);
    2712       68778 :     WRITE_NODE_FIELD(options);
    2713       68778 :     WRITE_STRING_FIELD(savepoint_name);
    2714       68778 :     WRITE_STRING_FIELD(gid);
    2715       68778 :     WRITE_BOOL_FIELD(chain);
    2716       68778 :     WRITE_LOCATION_FIELD(location);
    2717       68778 : }
    2718             : 
    2719             : static void
    2720        1380 : _outCompositeTypeStmt(StringInfo str, const CompositeTypeStmt *node)
    2721             : {
    2722        1380 :     WRITE_NODE_TYPE("COMPOSITETYPESTMT");
    2723             : 
    2724        1380 :     WRITE_NODE_FIELD(typevar);
    2725        1380 :     WRITE_NODE_FIELD(coldeflist);
    2726        1380 : }
    2727             : 
    2728             : static void
    2729         372 : _outCreateEnumStmt(StringInfo str, const CreateEnumStmt *node)
    2730             : {
    2731         372 :     WRITE_NODE_TYPE("CREATEENUMSTMT");
    2732             : 
    2733         372 :     WRITE_NODE_FIELD(typeName);
    2734         372 :     WRITE_NODE_FIELD(vals);
    2735         372 : }
    2736             : 
    2737             : static void
    2738         332 : _outCreateRangeStmt(StringInfo str, const CreateRangeStmt *node)
    2739             : {
    2740         332 :     WRITE_NODE_TYPE("CREATERANGESTMT");
    2741             : 
    2742         332 :     WRITE_NODE_FIELD(typeName);
    2743         332 :     WRITE_NODE_FIELD(params);
    2744         332 : }
    2745             : 
    2746             : static void
    2747         788 : _outAlterEnumStmt(StringInfo str, const AlterEnumStmt *node)
    2748             : {
    2749         788 :     WRITE_NODE_TYPE("ALTERENUMSTMT");
    2750             : 
    2751         788 :     WRITE_NODE_FIELD(typeName);
    2752         788 :     WRITE_STRING_FIELD(oldVal);
    2753         788 :     WRITE_STRING_FIELD(newVal);
    2754         788 :     WRITE_STRING_FIELD(newValNeighbor);
    2755         788 :     WRITE_BOOL_FIELD(newValIsAfter);
    2756         788 :     WRITE_BOOL_FIELD(skipIfNewValExists);
    2757         788 : }
    2758             : 
    2759             : static void
    2760       27280 : _outViewStmt(StringInfo str, const ViewStmt *node)
    2761             : {
    2762       27280 :     WRITE_NODE_TYPE("VIEWSTMT");
    2763             : 
    2764       27280 :     WRITE_NODE_FIELD(view);
    2765       27280 :     WRITE_NODE_FIELD(aliases);
    2766       27280 :     WRITE_NODE_FIELD(query);
    2767       27280 :     WRITE_BOOL_FIELD(replace);
    2768       27280 :     WRITE_NODE_FIELD(options);
    2769       27280 :     WRITE_ENUM_FIELD(withCheckOption, ViewCheckOption);
    2770       27280 : }
    2771             : 
    2772             : static void
    2773         116 : _outLoadStmt(StringInfo str, const LoadStmt *node)
    2774             : {
    2775         116 :     WRITE_NODE_TYPE("LOADSTMT");
    2776             : 
    2777         116 :     WRITE_STRING_FIELD(filename);
    2778         116 : }
    2779             : 
    2780             : static void
    2781        1284 : _outCreatedbStmt(StringInfo str, const CreatedbStmt *node)
    2782             : {
    2783        1284 :     WRITE_NODE_TYPE("CREATEDBSTMT");
    2784             : 
    2785        1284 :     WRITE_STRING_FIELD(dbname);
    2786        1284 :     WRITE_NODE_FIELD(options);
    2787        1284 : }
    2788             : 
    2789             : static void
    2790          68 : _outAlterDatabaseStmt(StringInfo str, const AlterDatabaseStmt *node)
    2791             : {
    2792          68 :     WRITE_NODE_TYPE("ALTERDATABASESTMT");
    2793             : 
    2794          68 :     WRITE_STRING_FIELD(dbname);
    2795          68 :     WRITE_NODE_FIELD(options);
    2796          68 : }
    2797             : 
    2798             : static void
    2799          12 : _outAlterDatabaseRefreshCollStmt(StringInfo str, const AlterDatabaseRefreshCollStmt *node)
    2800             : {
    2801          12 :     WRITE_NODE_TYPE("ALTERDATABASEREFRESHCOLLSTMT");
    2802             : 
    2803          12 :     WRITE_STRING_FIELD(dbname);
    2804          12 : }
    2805             : 
    2806             : static void
    2807        2116 : _outAlterDatabaseSetStmt(StringInfo str, const AlterDatabaseSetStmt *node)
    2808             : {
    2809        2116 :     WRITE_NODE_TYPE("ALTERDATABASESETSTMT");
    2810             : 
    2811        2116 :     WRITE_STRING_FIELD(dbname);
    2812        2116 :     WRITE_NODE_FIELD(setstmt);
    2813        2116 : }
    2814             : 
    2815             : static void
    2816         188 : _outDropdbStmt(StringInfo str, const DropdbStmt *node)
    2817             : {
    2818         188 :     WRITE_NODE_TYPE("DROPDBSTMT");
    2819             : 
    2820         188 :     WRITE_STRING_FIELD(dbname);
    2821         188 :     WRITE_BOOL_FIELD(missing_ok);
    2822         188 :     WRITE_NODE_FIELD(options);
    2823         188 : }
    2824             : 
    2825             : static void
    2826         308 : _outAlterSystemStmt(StringInfo str, const AlterSystemStmt *node)
    2827             : {
    2828         308 :     WRITE_NODE_TYPE("ALTERSYSTEMSTMT");
    2829             : 
    2830         308 :     WRITE_NODE_FIELD(setstmt);
    2831         308 : }
    2832             : 
    2833             : static void
    2834         476 : _outClusterStmt(StringInfo str, const ClusterStmt *node)
    2835             : {
    2836         476 :     WRITE_NODE_TYPE("CLUSTERSTMT");
    2837             : 
    2838         476 :     WRITE_NODE_FIELD(relation);
    2839         476 :     WRITE_STRING_FIELD(indexname);
    2840         476 :     WRITE_NODE_FIELD(params);
    2841         476 : }
    2842             : 
    2843             : static void
    2844       20732 : _outVacuumStmt(StringInfo str, const VacuumStmt *node)
    2845             : {
    2846       20732 :     WRITE_NODE_TYPE("VACUUMSTMT");
    2847             : 
    2848       20732 :     WRITE_NODE_FIELD(options);
    2849       20732 :     WRITE_NODE_FIELD(rels);
    2850       20732 :     WRITE_BOOL_FIELD(is_vacuumcmd);
    2851       20732 : }
    2852             : 
    2853             : static void
    2854       20444 : _outVacuumRelation(StringInfo str, const VacuumRelation *node)
    2855             : {
    2856       20444 :     WRITE_NODE_TYPE("VACUUMRELATION");
    2857             : 
    2858       20444 :     WRITE_NODE_FIELD(relation);
    2859       20444 :     WRITE_OID_FIELD(oid);
    2860       20444 :     WRITE_NODE_FIELD(va_cols);
    2861       20444 : }
    2862             : 
    2863             : static void
    2864       36270 : _outExplainStmt(StringInfo str, const ExplainStmt *node)
    2865             : {
    2866       36270 :     WRITE_NODE_TYPE("EXPLAINSTMT");
    2867             : 
    2868       36270 :     WRITE_NODE_FIELD(query);
    2869       36270 :     WRITE_NODE_FIELD(options);
    2870       36270 : }
    2871             : 
    2872             : static void
    2873        3612 : _outCreateTableAsStmt(StringInfo str, const CreateTableAsStmt *node)
    2874             : {
    2875        3612 :     WRITE_NODE_TYPE("CREATETABLEASSTMT");
    2876             : 
    2877        3612 :     WRITE_NODE_FIELD(query);
    2878        3612 :     WRITE_NODE_FIELD(into);
    2879        3612 :     WRITE_ENUM_FIELD(objtype, ObjectType);
    2880        3612 :     WRITE_BOOL_FIELD(is_select_into);
    2881        3612 :     WRITE_BOOL_FIELD(if_not_exists);
    2882        3612 : }
    2883             : 
    2884             : static void
    2885         516 : _outRefreshMatViewStmt(StringInfo str, const RefreshMatViewStmt *node)
    2886             : {
    2887         516 :     WRITE_NODE_TYPE("REFRESHMATVIEWSTMT");
    2888             : 
    2889         516 :     WRITE_BOOL_FIELD(concurrent);
    2890         516 :     WRITE_BOOL_FIELD(skipData);
    2891         516 :     WRITE_NODE_FIELD(relation);
    2892         516 : }
    2893             : 
    2894             : static void
    2895         368 : _outCheckPointStmt(StringInfo str, const CheckPointStmt *node)
    2896             : {
    2897         368 :     WRITE_NODE_TYPE("CHECKPOINTSTMT");
    2898             : 
    2899         368 : }
    2900             : 
    2901             : static void
    2902          60 : _outDiscardStmt(StringInfo str, const DiscardStmt *node)
    2903             : {
    2904          60 :     WRITE_NODE_TYPE("DISCARDSTMT");
    2905             : 
    2906          60 :     WRITE_ENUM_FIELD(target, DiscardMode);
    2907          60 : }
    2908             : 
    2909             : static void
    2910        2160 : _outLockStmt(StringInfo str, const LockStmt *node)
    2911             : {
    2912        2160 :     WRITE_NODE_TYPE("LOCKSTMT");
    2913             : 
    2914        2160 :     WRITE_NODE_FIELD(relations);
    2915        2160 :     WRITE_INT_FIELD(mode);
    2916        2160 :     WRITE_BOOL_FIELD(nowait);
    2917        2160 : }
    2918             : 
    2919             : static void
    2920         202 : _outConstraintsSetStmt(StringInfo str, const ConstraintsSetStmt *node)
    2921             : {
    2922         202 :     WRITE_NODE_TYPE("CONSTRAINTSSETSTMT");
    2923             : 
    2924         202 :     WRITE_NODE_FIELD(constraints);
    2925         202 :     WRITE_BOOL_FIELD(deferred);
    2926         202 : }
    2927             : 
    2928             : static void
    2929        2116 : _outReindexStmt(StringInfo str, const ReindexStmt *node)
    2930             : {
    2931        2116 :     WRITE_NODE_TYPE("REINDEXSTMT");
    2932             : 
    2933        2116 :     WRITE_ENUM_FIELD(kind, ReindexObjectType);
    2934        2116 :     WRITE_NODE_FIELD(relation);
    2935        2116 :     WRITE_STRING_FIELD(name);
    2936        2116 :     WRITE_NODE_FIELD(params);
    2937        2116 : }
    2938             : 
    2939             : static void
    2940         128 : _outCreateConversionStmt(StringInfo str, const CreateConversionStmt *node)
    2941             : {
    2942         128 :     WRITE_NODE_TYPE("CREATECONVERSIONSTMT");
    2943             : 
    2944         128 :     WRITE_NODE_FIELD(conversion_name);
    2945         128 :     WRITE_STRING_FIELD(for_encoding_name);
    2946         128 :     WRITE_STRING_FIELD(to_encoding_name);
    2947         128 :     WRITE_NODE_FIELD(func_name);
    2948         128 :     WRITE_BOOL_FIELD(def);
    2949         128 : }
    2950             : 
    2951             : static void
    2952         540 : _outCreateCastStmt(StringInfo str, const CreateCastStmt *node)
    2953             : {
    2954         540 :     WRITE_NODE_TYPE("CREATECASTSTMT");
    2955             : 
    2956         540 :     WRITE_NODE_FIELD(sourcetype);
    2957         540 :     WRITE_NODE_FIELD(targettype);
    2958         540 :     WRITE_NODE_FIELD(func);
    2959         540 :     WRITE_ENUM_FIELD(context, CoercionContext);
    2960         540 :     WRITE_BOOL_FIELD(inout);
    2961         540 : }
    2962             : 
    2963             : static void
    2964         100 : _outCreateTransformStmt(StringInfo str, const CreateTransformStmt *node)
    2965             : {
    2966         100 :     WRITE_NODE_TYPE("CREATETRANSFORMSTMT");
    2967             : 
    2968         100 :     WRITE_BOOL_FIELD(replace);
    2969         100 :     WRITE_NODE_FIELD(type_name);
    2970         100 :     WRITE_STRING_FIELD(lang);
    2971         100 :     WRITE_NODE_FIELD(fromsql);
    2972         100 :     WRITE_NODE_FIELD(tosql);
    2973         100 : }
    2974             : 
    2975             : static void
    2976        3336 : _outPrepareStmt(StringInfo str, const PrepareStmt *node)
    2977             : {
    2978        3336 :     WRITE_NODE_TYPE("PREPARESTMT");
    2979             : 
    2980        3336 :     WRITE_STRING_FIELD(name);
    2981        3336 :     WRITE_NODE_FIELD(argtypes);
    2982        3336 :     WRITE_NODE_FIELD(query);
    2983        3336 : }
    2984             : 
    2985             : static void
    2986       23514 : _outExecuteStmt(StringInfo str, const ExecuteStmt *node)
    2987             : {
    2988       23514 :     WRITE_NODE_TYPE("EXECUTESTMT");
    2989             : 
    2990       23514 :     WRITE_STRING_FIELD(name);
    2991       23514 :     WRITE_NODE_FIELD(params);
    2992       23514 : }
    2993             : 
    2994             : static void
    2995        8068 : _outDeallocateStmt(StringInfo str, const DeallocateStmt *node)
    2996             : {
    2997        8068 :     WRITE_NODE_TYPE("DEALLOCATESTMT");
    2998             : 
    2999        8068 :     WRITE_STRING_FIELD(name);
    3000        8068 :     WRITE_BOOL_FIELD(isall);
    3001        8068 :     WRITE_LOCATION_FIELD(location);
    3002        8068 : }
    3003             : 
    3004             : static void
    3005         292 : _outDropOwnedStmt(StringInfo str, const DropOwnedStmt *node)
    3006             : {
    3007         292 :     WRITE_NODE_TYPE("DROPOWNEDSTMT");
    3008             : 
    3009         292 :     WRITE_NODE_FIELD(roles);
    3010         292 :     WRITE_ENUM_FIELD(behavior, DropBehavior);
    3011         292 : }
    3012             : 
    3013             : static void
    3014          76 : _outReassignOwnedStmt(StringInfo str, const ReassignOwnedStmt *node)
    3015             : {
    3016          76 :     WRITE_NODE_TYPE("REASSIGNOWNEDSTMT");
    3017             : 
    3018          76 :     WRITE_NODE_FIELD(roles);
    3019          76 :     WRITE_NODE_FIELD(newrole);
    3020          76 : }
    3021             : 
    3022             : static void
    3023          80 : _outAlterTSDictionaryStmt(StringInfo str, const AlterTSDictionaryStmt *node)
    3024             : {
    3025          80 :     WRITE_NODE_TYPE("ALTERTSDICTIONARYSTMT");
    3026             : 
    3027          80 :     WRITE_NODE_FIELD(dictname);
    3028          80 :     WRITE_NODE_FIELD(options);
    3029          80 : }
    3030             : 
    3031             : static void
    3032       13248 : _outAlterTSConfigurationStmt(StringInfo str, const AlterTSConfigurationStmt *node)
    3033             : {
    3034       13248 :     WRITE_NODE_TYPE("ALTERTSCONFIGURATIONSTMT");
    3035             : 
    3036       13248 :     WRITE_ENUM_FIELD(kind, AlterTSConfigType);
    3037       13248 :     WRITE_NODE_FIELD(cfgname);
    3038       13248 :     WRITE_NODE_FIELD(tokentype);
    3039       13248 :     WRITE_NODE_FIELD(dicts);
    3040       13248 :     WRITE_BOOL_FIELD(override);
    3041       13248 :     WRITE_BOOL_FIELD(replace);
    3042       13248 :     WRITE_BOOL_FIELD(missing_ok);
    3043       13248 : }
    3044             : 
    3045             : static void
    3046        2532 : _outPublicationTable(StringInfo str, const PublicationTable *node)
    3047             : {
    3048        2532 :     WRITE_NODE_TYPE("PUBLICATIONTABLE");
    3049             : 
    3050        2532 :     WRITE_NODE_FIELD(relation);
    3051        2532 :     WRITE_NODE_FIELD(whereClause);
    3052        2532 :     WRITE_NODE_FIELD(columns);
    3053        2532 : }
    3054             : 
    3055             : static void
    3056        3244 : _outPublicationObjSpec(StringInfo str, const PublicationObjSpec *node)
    3057             : {
    3058        3244 :     WRITE_NODE_TYPE("PUBLICATIONOBJSPEC");
    3059             : 
    3060        3244 :     WRITE_ENUM_FIELD(pubobjtype, PublicationObjSpecType);
    3061        3244 :     WRITE_STRING_FIELD(name);
    3062        3244 :     WRITE_NODE_FIELD(pubtable);
    3063        3244 :     WRITE_LOCATION_FIELD(location);
    3064        3244 : }
    3065             : 
    3066             : static void
    3067        1368 : _outCreatePublicationStmt(StringInfo str, const CreatePublicationStmt *node)
    3068             : {
    3069        1368 :     WRITE_NODE_TYPE("CREATEPUBLICATIONSTMT");
    3070             : 
    3071        1368 :     WRITE_STRING_FIELD(pubname);
    3072        1368 :     WRITE_NODE_FIELD(options);
    3073        1368 :     WRITE_NODE_FIELD(pubobjects);
    3074        1368 :     WRITE_BOOL_FIELD(for_all_tables);
    3075        1368 : }
    3076             : 
    3077             : static void
    3078        2036 : _outAlterPublicationStmt(StringInfo str, const AlterPublicationStmt *node)
    3079             : {
    3080        2036 :     WRITE_NODE_TYPE("ALTERPUBLICATIONSTMT");
    3081             : 
    3082        2036 :     WRITE_STRING_FIELD(pubname);
    3083        2036 :     WRITE_NODE_FIELD(options);
    3084        2036 :     WRITE_NODE_FIELD(pubobjects);
    3085        2036 :     WRITE_BOOL_FIELD(for_all_tables);
    3086        2036 :     WRITE_ENUM_FIELD(action, AlterPublicationAction);
    3087        2036 : }
    3088             : 
    3089             : static void
    3090         832 : _outCreateSubscriptionStmt(StringInfo str, const CreateSubscriptionStmt *node)
    3091             : {
    3092         832 :     WRITE_NODE_TYPE("CREATESUBSCRIPTIONSTMT");
    3093             : 
    3094         832 :     WRITE_STRING_FIELD(subname);
    3095         832 :     WRITE_STRING_FIELD(conninfo);
    3096         832 :     WRITE_NODE_FIELD(publication);
    3097         832 :     WRITE_NODE_FIELD(options);
    3098         832 : }
    3099             : 
    3100             : static void
    3101         898 : _outAlterSubscriptionStmt(StringInfo str, const AlterSubscriptionStmt *node)
    3102             : {
    3103         898 :     WRITE_NODE_TYPE("ALTERSUBSCRIPTIONSTMT");
    3104             : 
    3105         898 :     WRITE_ENUM_FIELD(kind, AlterSubscriptionType);
    3106         898 :     WRITE_STRING_FIELD(subname);
    3107         898 :     WRITE_STRING_FIELD(conninfo);
    3108         898 :     WRITE_NODE_FIELD(publication);
    3109         898 :     WRITE_NODE_FIELD(options);
    3110         898 : }
    3111             : 
    3112             : static void
    3113         384 : _outDropSubscriptionStmt(StringInfo str, const DropSubscriptionStmt *node)
    3114             : {
    3115         384 :     WRITE_NODE_TYPE("DROPSUBSCRIPTIONSTMT");
    3116             : 
    3117         384 :     WRITE_STRING_FIELD(subname);
    3118         384 :     WRITE_BOOL_FIELD(missing_ok);
    3119         384 :     WRITE_ENUM_FIELD(behavior, DropBehavior);
    3120         384 : }
    3121             : 
    3122             : static void
    3123           0 : _outPlannerGlobal(StringInfo str, const PlannerGlobal *node)
    3124             : {
    3125           0 :     WRITE_NODE_TYPE("PLANNERGLOBAL");
    3126             : 
    3127           0 :     WRITE_NODE_FIELD(subplans);
    3128           0 :     WRITE_NODE_FIELD(subpaths);
    3129           0 :     WRITE_BITMAPSET_FIELD(rewindPlanIDs);
    3130           0 :     WRITE_NODE_FIELD(finalrtable);
    3131           0 :     WRITE_NODE_FIELD(finalrteperminfos);
    3132           0 :     WRITE_NODE_FIELD(finalrowmarks);
    3133           0 :     WRITE_NODE_FIELD(resultRelations);
    3134           0 :     WRITE_NODE_FIELD(appendRelations);
    3135           0 :     WRITE_NODE_FIELD(relationOids);
    3136           0 :     WRITE_NODE_FIELD(invalItems);
    3137           0 :     WRITE_NODE_FIELD(paramExecTypes);
    3138           0 :     WRITE_UINT_FIELD(lastPHId);
    3139           0 :     WRITE_UINT_FIELD(lastRowMarkId);
    3140           0 :     WRITE_INT_FIELD(lastPlanNodeId);
    3141           0 :     WRITE_BOOL_FIELD(transientPlan);
    3142           0 :     WRITE_BOOL_FIELD(dependsOnRole);
    3143           0 :     WRITE_BOOL_FIELD(parallelModeOK);
    3144           0 :     WRITE_BOOL_FIELD(parallelModeNeeded);
    3145           0 :     WRITE_CHAR_FIELD(maxParallelHazard);
    3146           0 : }
    3147             : 
    3148             : static void
    3149           0 : _outPlannerInfo(StringInfo str, const PlannerInfo *node)
    3150             : {
    3151           0 :     WRITE_NODE_TYPE("PLANNERINFO");
    3152             : 
    3153           0 :     WRITE_NODE_FIELD(parse);
    3154           0 :     WRITE_NODE_FIELD(glob);
    3155           0 :     WRITE_UINT_FIELD(query_level);
    3156           0 :     WRITE_NODE_FIELD(plan_params);
    3157           0 :     WRITE_BITMAPSET_FIELD(outer_params);
    3158           0 :     WRITE_NODE_ARRAY(simple_rel_array, node->simple_rel_array_size);
    3159           0 :     WRITE_INT_FIELD(simple_rel_array_size);
    3160           0 :     WRITE_BITMAPSET_FIELD(all_baserels);
    3161           0 :     WRITE_BITMAPSET_FIELD(outer_join_rels);
    3162           0 :     WRITE_BITMAPSET_FIELD(all_query_rels);
    3163           0 :     WRITE_NODE_FIELD(join_rel_list);
    3164           0 :     WRITE_INT_FIELD(join_cur_level);
    3165           0 :     WRITE_NODE_FIELD(init_plans);
    3166           0 :     WRITE_NODE_FIELD(cte_plan_ids);
    3167           0 :     WRITE_NODE_FIELD(multiexpr_params);
    3168           0 :     WRITE_NODE_FIELD(join_domains);
    3169           0 :     WRITE_NODE_FIELD(eq_classes);
    3170           0 :     WRITE_BOOL_FIELD(ec_merging_done);
    3171           0 :     WRITE_NODE_FIELD(canon_pathkeys);
    3172           0 :     WRITE_NODE_FIELD(left_join_clauses);
    3173           0 :     WRITE_NODE_FIELD(right_join_clauses);
    3174           0 :     WRITE_NODE_FIELD(full_join_clauses);
    3175           0 :     WRITE_NODE_FIELD(join_info_list);
    3176           0 :     WRITE_INT_FIELD(last_rinfo_serial);
    3177           0 :     WRITE_BITMAPSET_FIELD(all_result_relids);
    3178           0 :     WRITE_BITMAPSET_FIELD(leaf_result_relids);
    3179           0 :     WRITE_NODE_FIELD(append_rel_list);
    3180           0 :     WRITE_NODE_FIELD(row_identity_vars);
    3181           0 :     WRITE_NODE_FIELD(rowMarks);
    3182           0 :     WRITE_NODE_FIELD(placeholder_list);
    3183           0 :     WRITE_NODE_FIELD(fkey_list);
    3184           0 :     WRITE_NODE_FIELD(query_pathkeys);
    3185           0 :     WRITE_NODE_FIELD(group_pathkeys);
    3186           0 :     WRITE_INT_FIELD(num_groupby_pathkeys);
    3187           0 :     WRITE_NODE_FIELD(window_pathkeys);
    3188           0 :     WRITE_NODE_FIELD(distinct_pathkeys);
    3189           0 :     WRITE_NODE_FIELD(sort_pathkeys);
    3190           0 :     WRITE_NODE_FIELD(setop_pathkeys);
    3191           0 :     WRITE_NODE_FIELD(processed_groupClause);
    3192           0 :     WRITE_NODE_FIELD(processed_distinctClause);
    3193           0 :     WRITE_NODE_FIELD(processed_tlist);
    3194           0 :     WRITE_NODE_FIELD(update_colnos);
    3195           0 :     WRITE_NODE_FIELD(minmax_aggs);
    3196           0 :     WRITE_FLOAT_FIELD(total_table_pages);
    3197           0 :     WRITE_FLOAT_FIELD(tuple_fraction);
    3198           0 :     WRITE_FLOAT_FIELD(limit_tuples);
    3199           0 :     WRITE_UINT_FIELD(qual_security_level);
    3200           0 :     WRITE_BOOL_FIELD(hasJoinRTEs);
    3201           0 :     WRITE_BOOL_FIELD(hasLateralRTEs);
    3202           0 :     WRITE_BOOL_FIELD(hasHavingQual);
    3203           0 :     WRITE_BOOL_FIELD(hasPseudoConstantQuals);
    3204           0 :     WRITE_BOOL_FIELD(hasAlternativeSubPlans);
    3205           0 :     WRITE_BOOL_FIELD(placeholdersFrozen);
    3206           0 :     WRITE_BOOL_FIELD(hasRecursion);
    3207           0 :     WRITE_NODE_FIELD(agginfos);
    3208           0 :     WRITE_NODE_FIELD(aggtransinfos);
    3209           0 :     WRITE_INT_FIELD(numOrderedAggs);
    3210           0 :     WRITE_BOOL_FIELD(hasNonPartialAggs);
    3211           0 :     WRITE_BOOL_FIELD(hasNonSerialAggs);
    3212           0 :     WRITE_INT_FIELD(wt_param_id);
    3213           0 :     WRITE_NODE_FIELD(non_recursive_path);
    3214           0 :     WRITE_BITMAPSET_FIELD(curOuterRels);
    3215           0 :     WRITE_NODE_FIELD(curOuterParams);
    3216           0 :     WRITE_BOOL_FIELD(partColsUpdated);
    3217           0 : }
    3218             : 
    3219             : static void
    3220           0 : _outRelOptInfo(StringInfo str, const RelOptInfo *node)
    3221             : {
    3222           0 :     WRITE_NODE_TYPE("RELOPTINFO");
    3223             : 
    3224           0 :     WRITE_ENUM_FIELD(reloptkind, RelOptKind);
    3225           0 :     WRITE_BITMAPSET_FIELD(relids);
    3226           0 :     WRITE_FLOAT_FIELD(rows);
    3227           0 :     WRITE_BOOL_FIELD(consider_startup);
    3228           0 :     WRITE_BOOL_FIELD(consider_param_startup);
    3229           0 :     WRITE_BOOL_FIELD(consider_parallel);
    3230           0 :     WRITE_NODE_FIELD(reltarget);
    3231           0 :     WRITE_NODE_FIELD(pathlist);
    3232           0 :     WRITE_NODE_FIELD(ppilist);
    3233           0 :     WRITE_NODE_FIELD(partial_pathlist);
    3234           0 :     WRITE_NODE_FIELD(cheapest_startup_path);
    3235           0 :     WRITE_NODE_FIELD(cheapest_total_path);
    3236           0 :     WRITE_NODE_FIELD(cheapest_unique_path);
    3237           0 :     WRITE_NODE_FIELD(cheapest_parameterized_paths);
    3238           0 :     WRITE_BITMAPSET_FIELD(direct_lateral_relids);
    3239           0 :     WRITE_BITMAPSET_FIELD(lateral_relids);
    3240           0 :     WRITE_UINT_FIELD(relid);
    3241           0 :     WRITE_OID_FIELD(reltablespace);
    3242           0 :     WRITE_ENUM_FIELD(rtekind, RTEKind);
    3243           0 :     WRITE_INT_FIELD(min_attr);
    3244           0 :     WRITE_INT_FIELD(max_attr);
    3245           0 :     WRITE_BITMAPSET_FIELD(notnullattnums);
    3246           0 :     WRITE_BITMAPSET_FIELD(nulling_relids);
    3247           0 :     WRITE_NODE_FIELD(lateral_vars);
    3248           0 :     WRITE_BITMAPSET_FIELD(lateral_referencers);
    3249           0 :     WRITE_NODE_FIELD(indexlist);
    3250           0 :     WRITE_NODE_FIELD(statlist);
    3251           0 :     WRITE_UINT_FIELD(pages);
    3252           0 :     WRITE_FLOAT_FIELD(tuples);
    3253           0 :     WRITE_FLOAT_FIELD(allvisfrac);
    3254           0 :     WRITE_BITMAPSET_FIELD(eclass_indexes);
    3255           0 :     WRITE_NODE_FIELD(subroot);
    3256           0 :     WRITE_NODE_FIELD(subplan_params);
    3257           0 :     WRITE_INT_FIELD(rel_parallel_workers);
    3258           0 :     WRITE_UINT_FIELD(amflags);
    3259           0 :     WRITE_OID_FIELD(serverid);
    3260           0 :     WRITE_OID_FIELD(userid);
    3261           0 :     WRITE_BOOL_FIELD(useridiscurrent);
    3262           0 :     WRITE_NODE_FIELD(unique_for_rels);
    3263           0 :     WRITE_NODE_FIELD(non_unique_for_rels);
    3264           0 :     WRITE_NODE_FIELD(baserestrictinfo);
    3265           0 :     WRITE_FLOAT_FIELD(baserestrictcost.startup);
    3266           0 :     WRITE_FLOAT_FIELD(baserestrictcost.per_tuple);
    3267           0 :     WRITE_UINT_FIELD(baserestrict_min_security);
    3268           0 :     WRITE_NODE_FIELD(joininfo);
    3269           0 :     WRITE_BOOL_FIELD(has_eclass_joins);
    3270           0 :     WRITE_BOOL_FIELD(consider_partitionwise_join);
    3271           0 :     WRITE_BITMAPSET_FIELD(top_parent_relids);
    3272           0 :     WRITE_INT_FIELD(nparts);
    3273           0 :     WRITE_BOOL_FIELD(partbounds_merged);
    3274           0 :     WRITE_NODE_FIELD(partition_qual);
    3275           0 :     WRITE_BITMAPSET_FIELD(live_parts);
    3276           0 :     WRITE_BITMAPSET_FIELD(all_partrels);
    3277           0 : }
    3278             : 
    3279             : static void
    3280           0 : _outIndexOptInfo(StringInfo str, const IndexOptInfo *node)
    3281             : {
    3282           0 :     WRITE_NODE_TYPE("INDEXOPTINFO");
    3283             : 
    3284           0 :     WRITE_OID_FIELD(indexoid);
    3285           0 :     WRITE_OID_FIELD(reltablespace);
    3286           0 :     WRITE_UINT_FIELD(pages);
    3287           0 :     WRITE_FLOAT_FIELD(tuples);
    3288           0 :     WRITE_INT_FIELD(tree_height);
    3289           0 :     WRITE_INT_FIELD(ncolumns);
    3290           0 :     WRITE_INT_FIELD(nkeycolumns);
    3291           0 :     WRITE_INT_ARRAY(indexkeys, node->ncolumns);
    3292           0 :     WRITE_OID_ARRAY(indexcollations, node->nkeycolumns);
    3293           0 :     WRITE_OID_ARRAY(opfamily, node->nkeycolumns);
    3294           0 :     WRITE_OID_ARRAY(opcintype, node->nkeycolumns);
    3295           0 :     WRITE_OID_ARRAY(sortopfamily, node->nkeycolumns);
    3296           0 :     WRITE_BOOL_ARRAY(reverse_sort, node->nkeycolumns);
    3297           0 :     WRITE_BOOL_ARRAY(nulls_first, node->nkeycolumns);
    3298           0 :     WRITE_BOOL_ARRAY(canreturn, node->ncolumns);
    3299           0 :     WRITE_OID_FIELD(relam);
    3300           0 :     WRITE_NODE_FIELD(indpred);
    3301           0 :     WRITE_NODE_FIELD(indextlist);
    3302           0 :     WRITE_NODE_FIELD(indrestrictinfo);
    3303           0 :     WRITE_BOOL_FIELD(predOK);
    3304           0 :     WRITE_BOOL_FIELD(unique);
    3305           0 :     WRITE_BOOL_FIELD(immediate);
    3306           0 :     WRITE_BOOL_FIELD(hypothetical);
    3307           0 :     WRITE_BOOL_FIELD(amcanorderbyop);
    3308           0 :     WRITE_BOOL_FIELD(amoptionalkey);
    3309           0 :     WRITE_BOOL_FIELD(amsearcharray);
    3310           0 :     WRITE_BOOL_FIELD(amsearchnulls);
    3311           0 :     WRITE_BOOL_FIELD(amhasgettuple);
    3312           0 :     WRITE_BOOL_FIELD(amhasgetbitmap);
    3313           0 :     WRITE_BOOL_FIELD(amcanparallel);
    3314           0 :     WRITE_BOOL_FIELD(amcanmarkpos);
    3315           0 : }
    3316             : 
    3317             : static void
    3318           0 : _outStatisticExtInfo(StringInfo str, const StatisticExtInfo *node)
    3319             : {
    3320           0 :     WRITE_NODE_TYPE("STATISTICEXTINFO");
    3321             : 
    3322           0 :     WRITE_OID_FIELD(statOid);
    3323           0 :     WRITE_BOOL_FIELD(inherit);
    3324           0 :     WRITE_CHAR_FIELD(kind);
    3325           0 :     WRITE_BITMAPSET_FIELD(keys);
    3326           0 :     WRITE_NODE_FIELD(exprs);
    3327           0 : }
    3328             : 
    3329             : static void
    3330           0 : _outJoinDomain(StringInfo str, const JoinDomain *node)
    3331             : {
    3332           0 :     WRITE_NODE_TYPE("JOINDOMAIN");
    3333             : 
    3334           0 :     WRITE_BITMAPSET_FIELD(jd_relids);
    3335           0 : }
    3336             : 
    3337             : static void
    3338           0 : _outEquivalenceMember(StringInfo str, const EquivalenceMember *node)
    3339             : {
    3340           0 :     WRITE_NODE_TYPE("EQUIVALENCEMEMBER");
    3341             : 
    3342           0 :     WRITE_NODE_FIELD(em_expr);
    3343           0 :     WRITE_BITMAPSET_FIELD(em_relids);
    3344           0 :     WRITE_BOOL_FIELD(em_is_const);
    3345           0 :     WRITE_BOOL_FIELD(em_is_child);
    3346           0 :     WRITE_OID_FIELD(em_datatype);
    3347           0 :     WRITE_NODE_FIELD(em_jdomain);
    3348           0 : }
    3349             : 
    3350             : static void
    3351           0 : _outPathKey(StringInfo str, const PathKey *node)
    3352             : {
    3353           0 :     WRITE_NODE_TYPE("PATHKEY");
    3354             : 
    3355           0 :     WRITE_NODE_FIELD(pk_eclass);
    3356           0 :     WRITE_OID_FIELD(pk_opfamily);
    3357           0 :     WRITE_INT_FIELD(pk_strategy);
    3358           0 :     WRITE_BOOL_FIELD(pk_nulls_first);
    3359           0 : }
    3360             : 
    3361             : static void
    3362           0 : _outPathKeyInfo(StringInfo str, const PathKeyInfo *node)
    3363             : {
    3364           0 :     WRITE_NODE_TYPE("PATHKEYINFO");
    3365             : 
    3366           0 :     WRITE_NODE_FIELD(pathkeys);
    3367           0 :     WRITE_NODE_FIELD(clauses);
    3368           0 : }
    3369             : 
    3370             : static void
    3371           0 : _outPathTarget(StringInfo str, const PathTarget *node)
    3372             : {
    3373           0 :     WRITE_NODE_TYPE("PATHTARGET");
    3374             : 
    3375           0 :     WRITE_NODE_FIELD(exprs);
    3376           0 :     WRITE_INDEX_ARRAY(sortgrouprefs, list_length(node->exprs));
    3377           0 :     WRITE_FLOAT_FIELD(cost.startup);
    3378           0 :     WRITE_FLOAT_FIELD(cost.per_tuple);
    3379           0 :     WRITE_INT_FIELD(width);
    3380           0 :     WRITE_ENUM_FIELD(has_volatile_expr, VolatileFunctionStatus);
    3381           0 : }
    3382             : 
    3383             : static void
    3384           0 : _outParamPathInfo(StringInfo str, const ParamPathInfo *node)
    3385             : {
    3386           0 :     WRITE_NODE_TYPE("PARAMPATHINFO");
    3387             : 
    3388           0 :     WRITE_BITMAPSET_FIELD(ppi_req_outer);
    3389           0 :     WRITE_FLOAT_FIELD(ppi_rows);
    3390           0 :     WRITE_NODE_FIELD(ppi_clauses);
    3391           0 :     WRITE_BITMAPSET_FIELD(ppi_serials);
    3392           0 : }
    3393             : 
    3394             : static void
    3395           0 : _outPath(StringInfo str, const Path *node)
    3396             : {
    3397           0 :     WRITE_NODE_TYPE("PATH");
    3398             : 
    3399           0 :     WRITE_ENUM_FIELD(pathtype, NodeTag);
    3400           0 :     appendStringInfoString(str, " :parent_relids ");
    3401           0 :     outBitmapset(str, node->parent->relids);
    3402           0 :     if (node->pathtarget != node->parent->reltarget)
    3403           0 :         WRITE_NODE_FIELD(pathtarget);
    3404           0 :     appendStringInfoString(str, " :required_outer ");
    3405           0 :     if (node->param_info)
    3406           0 :         outBitmapset(str, node->param_info->ppi_req_outer);
    3407             :     else
    3408           0 :         outBitmapset(str, NULL);
    3409           0 :     WRITE_BOOL_FIELD(parallel_aware);
    3410           0 :     WRITE_BOOL_FIELD(parallel_safe);
    3411           0 :     WRITE_INT_FIELD(parallel_workers);
    3412           0 :     WRITE_FLOAT_FIELD(rows);
    3413           0 :     WRITE_FLOAT_FIELD(startup_cost);
    3414           0 :     WRITE_FLOAT_FIELD(total_cost);
    3415           0 :     WRITE_NODE_FIELD(pathkeys);
    3416           0 : }
    3417             : 
    3418             : static void
    3419           0 : _outIndexPath(StringInfo str, const IndexPath *node)
    3420             : {
    3421           0 :     WRITE_NODE_TYPE("INDEXPATH");
    3422             : 
    3423           0 :     WRITE_ENUM_FIELD(path.pathtype, NodeTag);
    3424           0 :     appendStringInfoString(str, " :parent_relids ");
    3425           0 :     outBitmapset(str, node->path.parent->relids);
    3426           0 :     if (node->path.pathtarget != node->path.parent->reltarget)
    3427           0 :         WRITE_NODE_FIELD(path.pathtarget);
    3428           0 :     appendStringInfoString(str, " :required_outer ");
    3429           0 :     if (node->path.param_info)
    3430           0 :         outBitmapset(str, node->path.param_info->ppi_req_outer);
    3431             :     else
    3432           0 :         outBitmapset(str, NULL);
    3433           0 :     WRITE_BOOL_FIELD(path.parallel_aware);
    3434           0 :     WRITE_BOOL_FIELD(path.parallel_safe);
    3435           0 :     WRITE_INT_FIELD(path.parallel_workers);
    3436           0 :     WRITE_FLOAT_FIELD(path.rows);
    3437           0 :     WRITE_FLOAT_FIELD(path.startup_cost);
    3438           0 :     WRITE_FLOAT_FIELD(path.total_cost);
    3439           0 :     WRITE_NODE_FIELD(path.pathkeys);
    3440           0 :     WRITE_NODE_FIELD(indexinfo);
    3441           0 :     WRITE_NODE_FIELD(indexclauses);
    3442           0 :     WRITE_NODE_FIELD(indexorderbys);
    3443           0 :     WRITE_NODE_FIELD(indexorderbycols);
    3444           0 :     WRITE_ENUM_FIELD(indexscandir, ScanDirection);
    3445           0 :     WRITE_FLOAT_FIELD(indextotalcost);
    3446           0 :     WRITE_FLOAT_FIELD(indexselectivity);
    3447           0 : }
    3448             : 
    3449             : static void
    3450           0 : _outIndexClause(StringInfo str, const IndexClause *node)
    3451             : {
    3452           0 :     WRITE_NODE_TYPE("INDEXCLAUSE");
    3453             : 
    3454           0 :     WRITE_NODE_FIELD(rinfo);
    3455           0 :     WRITE_NODE_FIELD(indexquals);
    3456           0 :     WRITE_BOOL_FIELD(lossy);
    3457           0 :     WRITE_INT_FIELD(indexcol);
    3458           0 :     WRITE_NODE_FIELD(indexcols);
    3459           0 : }
    3460             : 
    3461             : static void
    3462           0 : _outBitmapHeapPath(StringInfo str, const BitmapHeapPath *node)
    3463             : {
    3464           0 :     WRITE_NODE_TYPE("BITMAPHEAPPATH");
    3465             : 
    3466           0 :     WRITE_ENUM_FIELD(path.pathtype, NodeTag);
    3467           0 :     appendStringInfoString(str, " :parent_relids ");
    3468           0 :     outBitmapset(str, node->path.parent->relids);
    3469           0 :     if (node->path.pathtarget != node->path.parent->reltarget)
    3470           0 :         WRITE_NODE_FIELD(path.pathtarget);
    3471           0 :     appendStringInfoString(str, " :required_outer ");
    3472           0 :     if (node->path.param_info)
    3473           0 :         outBitmapset(str, node->path.param_info->ppi_req_outer);
    3474             :     else
    3475           0 :         outBitmapset(str, NULL);
    3476           0 :     WRITE_BOOL_FIELD(path.parallel_aware);
    3477           0 :     WRITE_BOOL_FIELD(path.parallel_safe);
    3478           0 :     WRITE_INT_FIELD(path.parallel_workers);
    3479           0 :     WRITE_FLOAT_FIELD(path.rows);
    3480           0 :     WRITE_FLOAT_FIELD(path.startup_cost);
    3481           0 :     WRITE_FLOAT_FIELD(path.total_cost);
    3482           0 :     WRITE_NODE_FIELD(path.pathkeys);
    3483           0 :     WRITE_NODE_FIELD(bitmapqual);
    3484           0 : }
    3485             : 
    3486             : static void
    3487           0 : _outBitmapAndPath(StringInfo str, const BitmapAndPath *node)
    3488             : {
    3489           0 :     WRITE_NODE_TYPE("BITMAPANDPATH");
    3490             : 
    3491           0 :     WRITE_ENUM_FIELD(path.pathtype, NodeTag);
    3492           0 :     appendStringInfoString(str, " :parent_relids ");
    3493           0 :     outBitmapset(str, node->path.parent->relids);
    3494           0 :     if (node->path.pathtarget != node->path.parent->reltarget)
    3495           0 :         WRITE_NODE_FIELD(path.pathtarget);
    3496           0 :     appendStringInfoString(str, " :required_outer ");
    3497           0 :     if (node->path.param_info)
    3498           0 :         outBitmapset(str, node->path.param_info->ppi_req_outer);
    3499             :     else
    3500           0 :         outBitmapset(str, NULL);
    3501           0 :     WRITE_BOOL_FIELD(path.parallel_aware);
    3502           0 :     WRITE_BOOL_FIELD(path.parallel_safe);
    3503           0 :     WRITE_INT_FIELD(path.parallel_workers);
    3504           0 :     WRITE_FLOAT_FIELD(path.rows);
    3505           0 :     WRITE_FLOAT_FIELD(path.startup_cost);
    3506           0 :     WRITE_FLOAT_FIELD(path.total_cost);
    3507           0 :     WRITE_NODE_FIELD(path.pathkeys);
    3508           0 :     WRITE_NODE_FIELD(bitmapquals);
    3509           0 :     WRITE_FLOAT_FIELD(bitmapselectivity);
    3510           0 : }
    3511             : 
    3512             : static void
    3513           0 : _outBitmapOrPath(StringInfo str, const BitmapOrPath *node)
    3514             : {
    3515           0 :     WRITE_NODE_TYPE("BITMAPORPATH");
    3516             : 
    3517           0 :     WRITE_ENUM_FIELD(path.pathtype, NodeTag);
    3518           0 :     appendStringInfoString(str, " :parent_relids ");
    3519           0 :     outBitmapset(str, node->path.parent->relids);
    3520           0 :     if (node->path.pathtarget != node->path.parent->reltarget)
    3521           0 :         WRITE_NODE_FIELD(path.pathtarget);
    3522           0 :     appendStringInfoString(str, " :required_outer ");
    3523           0 :     if (node->path.param_info)
    3524           0 :         outBitmapset(str, node->path.param_info->ppi_req_outer);
    3525             :     else
    3526           0 :         outBitmapset(str, NULL);
    3527           0 :     WRITE_BOOL_FIELD(path.parallel_aware);
    3528           0 :     WRITE_BOOL_FIELD(path.parallel_safe);
    3529           0 :     WRITE_INT_FIELD(path.parallel_workers);
    3530           0 :     WRITE_FLOAT_FIELD(path.rows);
    3531           0 :     WRITE_FLOAT_FIELD(path.startup_cost);
    3532           0 :     WRITE_FLOAT_FIELD(path.total_cost);
    3533           0 :     WRITE_NODE_FIELD(path.pathkeys);
    3534           0 :     WRITE_NODE_FIELD(bitmapquals);
    3535           0 :     WRITE_FLOAT_FIELD(bitmapselectivity);
    3536           0 : }
    3537             : 
    3538             : static void
    3539           0 : _outTidPath(StringInfo str, const TidPath *node)
    3540             : {
    3541           0 :     WRITE_NODE_TYPE("TIDPATH");
    3542             : 
    3543           0 :     WRITE_ENUM_FIELD(path.pathtype, NodeTag);
    3544           0 :     appendStringInfoString(str, " :parent_relids ");
    3545           0 :     outBitmapset(str, node->path.parent->relids);
    3546           0 :     if (node->path.pathtarget != node->path.parent->reltarget)
    3547           0 :         WRITE_NODE_FIELD(path.pathtarget);
    3548           0 :     appendStringInfoString(str, " :required_outer ");
    3549           0 :     if (node->path.param_info)
    3550           0 :         outBitmapset(str, node->path.param_info->ppi_req_outer);
    3551             :     else
    3552           0 :         outBitmapset(str, NULL);
    3553           0 :     WRITE_BOOL_FIELD(path.parallel_aware);
    3554           0 :     WRITE_BOOL_FIELD(path.parallel_safe);
    3555           0 :     WRITE_INT_FIELD(path.parallel_workers);
    3556           0 :     WRITE_FLOAT_FIELD(path.rows);
    3557           0 :     WRITE_FLOAT_FIELD(path.startup_cost);
    3558           0 :     WRITE_FLOAT_FIELD(path.total_cost);
    3559           0 :     WRITE_NODE_FIELD(path.pathkeys);
    3560           0 :     WRITE_NODE_FIELD(tidquals);
    3561           0 : }
    3562             : 
    3563             : static void
    3564           0 : _outTidRangePath(StringInfo str, const TidRangePath *node)
    3565             : {
    3566           0 :     WRITE_NODE_TYPE("TIDRANGEPATH");
    3567             : 
    3568           0 :     WRITE_ENUM_FIELD(path.pathtype, NodeTag);
    3569           0 :     appendStringInfoString(str, " :parent_relids ");
    3570           0 :     outBitmapset(str, node->path.parent->relids);
    3571           0 :     if (node->path.pathtarget != node->path.parent->reltarget)
    3572           0 :         WRITE_NODE_FIELD(path.pathtarget);
    3573           0 :     appendStringInfoString(str, " :required_outer ");
    3574           0 :     if (node->path.param_info)
    3575           0 :         outBitmapset(str, node->path.param_info->ppi_req_outer);
    3576             :     else
    3577           0 :         outBitmapset(str, NULL);
    3578           0 :     WRITE_BOOL_FIELD(path.parallel_aware);
    3579           0 :     WRITE_BOOL_FIELD(path.parallel_safe);
    3580           0 :     WRITE_INT_FIELD(path.parallel_workers);
    3581           0 :     WRITE_FLOAT_FIELD(path.rows);
    3582           0 :     WRITE_FLOAT_FIELD(path.startup_cost);
    3583           0 :     WRITE_FLOAT_FIELD(path.total_cost);
    3584           0 :     WRITE_NODE_FIELD(path.pathkeys);
    3585           0 :     WRITE_NODE_FIELD(tidrangequals);
    3586           0 : }
    3587             : 
    3588             : static void
    3589           0 : _outSubqueryScanPath(StringInfo str, const SubqueryScanPath *node)
    3590             : {
    3591           0 :     WRITE_NODE_TYPE("SUBQUERYSCANPATH");
    3592             : 
    3593           0 :     WRITE_ENUM_FIELD(path.pathtype, NodeTag);
    3594           0 :     appendStringInfoString(str, " :parent_relids ");
    3595           0 :     outBitmapset(str, node->path.parent->relids);
    3596           0 :     if (node->path.pathtarget != node->path.parent->reltarget)
    3597           0 :         WRITE_NODE_FIELD(path.pathtarget);
    3598           0 :     appendStringInfoString(str, " :required_outer ");
    3599           0 :     if (node->path.param_info)
    3600           0 :         outBitmapset(str, node->path.param_info->ppi_req_outer);
    3601             :     else
    3602           0 :         outBitmapset(str, NULL);
    3603           0 :     WRITE_BOOL_FIELD(path.parallel_aware);
    3604           0 :     WRITE_BOOL_FIELD(path.parallel_safe);
    3605           0 :     WRITE_INT_FIELD(path.parallel_workers);
    3606           0 :     WRITE_FLOAT_FIELD(path.rows);
    3607           0 :     WRITE_FLOAT_FIELD(path.startup_cost);
    3608           0 :     WRITE_FLOAT_FIELD(path.total_cost);
    3609           0 :     WRITE_NODE_FIELD(path.pathkeys);
    3610           0 :     WRITE_NODE_FIELD(subpath);
    3611           0 : }
    3612             : 
    3613             : static void
    3614           0 : _outForeignPath(StringInfo str, const ForeignPath *node)
    3615             : {
    3616           0 :     WRITE_NODE_TYPE("FOREIGNPATH");
    3617             : 
    3618           0 :     WRITE_ENUM_FIELD(path.pathtype, NodeTag);
    3619           0 :     appendStringInfoString(str, " :parent_relids ");
    3620           0 :     outBitmapset(str, node->path.parent->relids);
    3621           0 :     if (node->path.pathtarget != node->path.parent->reltarget)
    3622           0 :         WRITE_NODE_FIELD(path.pathtarget);
    3623           0 :     appendStringInfoString(str, " :required_outer ");
    3624           0 :     if (node->path.param_info)
    3625           0 :         outBitmapset(str, node->path.param_info->ppi_req_outer);
    3626             :     else
    3627           0 :         outBitmapset(str, NULL);
    3628           0 :     WRITE_BOOL_FIELD(path.parallel_aware);
    3629           0 :     WRITE_BOOL_FIELD(path.parallel_safe);
    3630           0 :     WRITE_INT_FIELD(path.parallel_workers);
    3631           0 :     WRITE_FLOAT_FIELD(path.rows);
    3632           0 :     WRITE_FLOAT_FIELD(path.startup_cost);
    3633           0 :     WRITE_FLOAT_FIELD(path.total_cost);
    3634           0 :     WRITE_NODE_FIELD(path.pathkeys);
    3635           0 :     WRITE_NODE_FIELD(fdw_outerpath);
    3636           0 :     WRITE_NODE_FIELD(fdw_restrictinfo);
    3637           0 :     WRITE_NODE_FIELD(fdw_private);
    3638           0 : }
    3639             : 
    3640             : static void
    3641           0 : _outCustomPath(StringInfo str, const CustomPath *node)
    3642             : {
    3643           0 :     WRITE_NODE_TYPE("CUSTOMPATH");
    3644             : 
    3645           0 :     WRITE_ENUM_FIELD(path.pathtype, NodeTag);
    3646           0 :     appendStringInfoString(str, " :parent_relids ");
    3647           0 :     outBitmapset(str, node->path.parent->relids);
    3648           0 :     if (node->path.pathtarget != node->path.parent->reltarget)
    3649           0 :         WRITE_NODE_FIELD(path.pathtarget);
    3650           0 :     appendStringInfoString(str, " :required_outer ");
    3651           0 :     if (node->path.param_info)
    3652           0 :         outBitmapset(str, node->path.param_info->ppi_req_outer);
    3653             :     else
    3654           0 :         outBitmapset(str, NULL);
    3655           0 :     WRITE_BOOL_FIELD(path.parallel_aware);
    3656           0 :     WRITE_BOOL_FIELD(path.parallel_safe);
    3657           0 :     WRITE_INT_FIELD(path.parallel_workers);
    3658           0 :     WRITE_FLOAT_FIELD(path.rows);
    3659           0 :     WRITE_FLOAT_FIELD(path.startup_cost);
    3660           0 :     WRITE_FLOAT_FIELD(path.total_cost);
    3661           0 :     WRITE_NODE_FIELD(path.pathkeys);
    3662           0 :     WRITE_UINT_FIELD(flags);
    3663           0 :     WRITE_NODE_FIELD(custom_paths);
    3664           0 :     WRITE_NODE_FIELD(custom_restrictinfo);
    3665           0 :     WRITE_NODE_FIELD(custom_private);
    3666             : 
    3667             :     /* CustomName is a key to lookup CustomScanMethods */
    3668           0 :     appendStringInfoString(str, " :methods ");
    3669           0 :     outToken(str, node->methods->CustomName);
    3670           0 : }
    3671             : 
    3672             : static void
    3673           0 : _outAppendPath(StringInfo str, const AppendPath *node)
    3674             : {
    3675           0 :     WRITE_NODE_TYPE("APPENDPATH");
    3676             : 
    3677           0 :     WRITE_ENUM_FIELD(path.pathtype, NodeTag);
    3678           0 :     appendStringInfoString(str, " :parent_relids ");
    3679           0 :     outBitmapset(str, node->path.parent->relids);
    3680           0 :     if (node->path.pathtarget != node->path.parent->reltarget)
    3681           0 :         WRITE_NODE_FIELD(path.pathtarget);
    3682           0 :     appendStringInfoString(str, " :required_outer ");
    3683           0 :     if (node->path.param_info)
    3684           0 :         outBitmapset(str, node->path.param_info->ppi_req_outer);
    3685             :     else
    3686           0 :         outBitmapset(str, NULL);
    3687           0 :     WRITE_BOOL_FIELD(path.parallel_aware);
    3688           0 :     WRITE_BOOL_FIELD(path.parallel_safe);
    3689           0 :     WRITE_INT_FIELD(path.parallel_workers);
    3690           0 :     WRITE_FLOAT_FIELD(path.rows);
    3691           0 :     WRITE_FLOAT_FIELD(path.startup_cost);
    3692           0 :     WRITE_FLOAT_FIELD(path.total_cost);
    3693           0 :     WRITE_NODE_FIELD(path.pathkeys);
    3694           0 :     WRITE_NODE_FIELD(subpaths);
    3695           0 :     WRITE_INT_FIELD(first_partial_path);
    3696           0 :     WRITE_FLOAT_FIELD(limit_tuples);
    3697           0 : }
    3698             : 
    3699             : static void
    3700           0 : _outMergeAppendPath(StringInfo str, const MergeAppendPath *node)
    3701             : {
    3702           0 :     WRITE_NODE_TYPE("MERGEAPPENDPATH");
    3703             : 
    3704           0 :     WRITE_ENUM_FIELD(path.pathtype, NodeTag);
    3705           0 :     appendStringInfoString(str, " :parent_relids ");
    3706           0 :     outBitmapset(str, node->path.parent->relids);
    3707           0 :     if (node->path.pathtarget != node->path.parent->reltarget)
    3708           0 :         WRITE_NODE_FIELD(path.pathtarget);
    3709           0 :     appendStringInfoString(str, " :required_outer ");
    3710           0 :     if (node->path.param_info)
    3711           0 :         outBitmapset(str, node->path.param_info->ppi_req_outer);
    3712             :     else
    3713           0 :         outBitmapset(str, NULL);
    3714           0 :     WRITE_BOOL_FIELD(path.parallel_aware);
    3715           0 :     WRITE_BOOL_FIELD(path.parallel_safe);
    3716           0 :     WRITE_INT_FIELD(path.parallel_workers);
    3717           0 :     WRITE_FLOAT_FIELD(path.rows);
    3718           0 :     WRITE_FLOAT_FIELD(path.startup_cost);
    3719           0 :     WRITE_FLOAT_FIELD(path.total_cost);
    3720           0 :     WRITE_NODE_FIELD(path.pathkeys);
    3721           0 :     WRITE_NODE_FIELD(subpaths);
    3722           0 :     WRITE_FLOAT_FIELD(limit_tuples);
    3723           0 : }
    3724             : 
    3725             : static void
    3726           0 : _outGroupResultPath(StringInfo str, const GroupResultPath *node)
    3727             : {
    3728           0 :     WRITE_NODE_TYPE("GROUPRESULTPATH");
    3729             : 
    3730           0 :     WRITE_ENUM_FIELD(path.pathtype, NodeTag);
    3731           0 :     appendStringInfoString(str, " :parent_relids ");
    3732           0 :     outBitmapset(str, node->path.parent->relids);
    3733           0 :     if (node->path.pathtarget != node->path.parent->reltarget)
    3734           0 :         WRITE_NODE_FIELD(path.pathtarget);
    3735           0 :     appendStringInfoString(str, " :required_outer ");
    3736           0 :     if (node->path.param_info)
    3737           0 :         outBitmapset(str, node->path.param_info->ppi_req_outer);
    3738             :     else
    3739           0 :         outBitmapset(str, NULL);
    3740           0 :     WRITE_BOOL_FIELD(path.parallel_aware);
    3741           0 :     WRITE_BOOL_FIELD(path.parallel_safe);
    3742           0 :     WRITE_INT_FIELD(path.parallel_workers);
    3743           0 :     WRITE_FLOAT_FIELD(path.rows);
    3744           0 :     WRITE_FLOAT_FIELD(path.startup_cost);
    3745           0 :     WRITE_FLOAT_FIELD(path.total_cost);
    3746           0 :     WRITE_NODE_FIELD(path.pathkeys);
    3747           0 :     WRITE_NODE_FIELD(quals);
    3748           0 : }
    3749             : 
    3750             : static void
    3751           0 : _outMaterialPath(StringInfo str, const MaterialPath *node)
    3752             : {
    3753           0 :     WRITE_NODE_TYPE("MATERIALPATH");
    3754             : 
    3755           0 :     WRITE_ENUM_FIELD(path.pathtype, NodeTag);
    3756           0 :     appendStringInfoString(str, " :parent_relids ");
    3757           0 :     outBitmapset(str, node->path.parent->relids);
    3758           0 :     if (node->path.pathtarget != node->path.parent->reltarget)
    3759           0 :         WRITE_NODE_FIELD(path.pathtarget);
    3760           0 :     appendStringInfoString(str, " :required_outer ");
    3761           0 :     if (node->path.param_info)
    3762           0 :         outBitmapset(str, node->path.param_info->ppi_req_outer);
    3763             :     else
    3764           0 :         outBitmapset(str, NULL);
    3765           0 :     WRITE_BOOL_FIELD(path.parallel_aware);
    3766           0 :     WRITE_BOOL_FIELD(path.parallel_safe);
    3767           0 :     WRITE_INT_FIELD(path.parallel_workers);
    3768           0 :     WRITE_FLOAT_FIELD(path.rows);
    3769           0 :     WRITE_FLOAT_FIELD(path.startup_cost);
    3770           0 :     WRITE_FLOAT_FIELD(path.total_cost);
    3771           0 :     WRITE_NODE_FIELD(path.pathkeys);
    3772           0 :     WRITE_NODE_FIELD(subpath);
    3773           0 : }
    3774             : 
    3775             : static void
    3776           0 : _outMemoizePath(StringInfo str, const MemoizePath *node)
    3777             : {
    3778           0 :     WRITE_NODE_TYPE("MEMOIZEPATH");
    3779             : 
    3780           0 :     WRITE_ENUM_FIELD(path.pathtype, NodeTag);
    3781           0 :     appendStringInfoString(str, " :parent_relids ");
    3782           0 :     outBitmapset(str, node->path.parent->relids);
    3783           0 :     if (node->path.pathtarget != node->path.parent->reltarget)
    3784           0 :         WRITE_NODE_FIELD(path.pathtarget);
    3785           0 :     appendStringInfoString(str, " :required_outer ");
    3786           0 :     if (node->path.param_info)
    3787           0 :         outBitmapset(str, node->path.param_info->ppi_req_outer);
    3788             :     else
    3789           0 :         outBitmapset(str, NULL);
    3790           0 :     WRITE_BOOL_FIELD(path.parallel_aware);
    3791           0 :     WRITE_BOOL_FIELD(path.parallel_safe);
    3792           0 :     WRITE_INT_FIELD(path.parallel_workers);
    3793           0 :     WRITE_FLOAT_FIELD(path.rows);
    3794           0 :     WRITE_FLOAT_FIELD(path.startup_cost);
    3795           0 :     WRITE_FLOAT_FIELD(path.total_cost);
    3796           0 :     WRITE_NODE_FIELD(path.pathkeys);
    3797           0 :     WRITE_NODE_FIELD(subpath);
    3798           0 :     WRITE_NODE_FIELD(hash_operators);
    3799           0 :     WRITE_NODE_FIELD(param_exprs);
    3800           0 :     WRITE_BOOL_FIELD(singlerow);
    3801           0 :     WRITE_BOOL_FIELD(binary_mode);
    3802           0 :     WRITE_FLOAT_FIELD(calls);
    3803           0 :     WRITE_UINT_FIELD(est_entries);
    3804           0 : }
    3805             : 
    3806             : static void
    3807           0 : _outUniquePath(StringInfo str, const UniquePath *node)
    3808             : {
    3809           0 :     WRITE_NODE_TYPE("UNIQUEPATH");
    3810             : 
    3811           0 :     WRITE_ENUM_FIELD(path.pathtype, NodeTag);
    3812           0 :     appendStringInfoString(str, " :parent_relids ");
    3813           0 :     outBitmapset(str, node->path.parent->relids);
    3814           0 :     if (node->path.pathtarget != node->path.parent->reltarget)
    3815           0 :         WRITE_NODE_FIELD(path.pathtarget);
    3816           0 :     appendStringInfoString(str, " :required_outer ");
    3817           0 :     if (node->path.param_info)
    3818           0 :         outBitmapset(str, node->path.param_info->ppi_req_outer);
    3819             :     else
    3820           0 :         outBitmapset(str, NULL);
    3821           0 :     WRITE_BOOL_FIELD(path.parallel_aware);
    3822           0 :     WRITE_BOOL_FIELD(path.parallel_safe);
    3823           0 :     WRITE_INT_FIELD(path.parallel_workers);
    3824           0 :     WRITE_FLOAT_FIELD(path.rows);
    3825           0 :     WRITE_FLOAT_FIELD(path.startup_cost);
    3826           0 :     WRITE_FLOAT_FIELD(path.total_cost);
    3827           0 :     WRITE_NODE_FIELD(path.pathkeys);
    3828           0 :     WRITE_NODE_FIELD(subpath);
    3829           0 :     WRITE_ENUM_FIELD(umethod, UniquePathMethod);
    3830           0 :     WRITE_NODE_FIELD(in_operators);
    3831           0 :     WRITE_NODE_FIELD(uniq_exprs);
    3832           0 : }
    3833             : 
    3834             : static void
    3835           0 : _outGatherPath(StringInfo str, const GatherPath *node)
    3836             : {
    3837           0 :     WRITE_NODE_TYPE("GATHERPATH");
    3838             : 
    3839           0 :     WRITE_ENUM_FIELD(path.pathtype, NodeTag);
    3840           0 :     appendStringInfoString(str, " :parent_relids ");
    3841           0 :     outBitmapset(str, node->path.parent->relids);
    3842           0 :     if (node->path.pathtarget != node->path.parent->reltarget)
    3843           0 :         WRITE_NODE_FIELD(path.pathtarget);
    3844           0 :     appendStringInfoString(str, " :required_outer ");
    3845           0 :     if (node->path.param_info)
    3846           0 :         outBitmapset(str, node->path.param_info->ppi_req_outer);
    3847             :     else
    3848           0 :         outBitmapset(str, NULL);
    3849           0 :     WRITE_BOOL_FIELD(path.parallel_aware);
    3850           0 :     WRITE_BOOL_FIELD(path.parallel_safe);
    3851           0 :     WRITE_INT_FIELD(path.parallel_workers);
    3852           0 :     WRITE_FLOAT_FIELD(path.rows);
    3853           0 :     WRITE_FLOAT_FIELD(path.startup_cost);
    3854           0 :     WRITE_FLOAT_FIELD(path.total_cost);
    3855           0 :     WRITE_NODE_FIELD(path.pathkeys);
    3856           0 :     WRITE_NODE_FIELD(subpath);
    3857           0 :     WRITE_BOOL_FIELD(single_copy);
    3858           0 :     WRITE_INT_FIELD(num_workers);
    3859           0 : }
    3860             : 
    3861             : static void
    3862           0 : _outGatherMergePath(StringInfo str, const GatherMergePath *node)
    3863             : {
    3864           0 :     WRITE_NODE_TYPE("GATHERMERGEPATH");
    3865             : 
    3866           0 :     WRITE_ENUM_FIELD(path.pathtype, NodeTag);
    3867           0 :     appendStringInfoString(str, " :parent_relids ");
    3868           0 :     outBitmapset(str, node->path.parent->relids);
    3869           0 :     if (node->path.pathtarget != node->path.parent->reltarget)
    3870           0 :         WRITE_NODE_FIELD(path.pathtarget);
    3871           0 :     appendStringInfoString(str, " :required_outer ");
    3872           0 :     if (node->path.param_info)
    3873           0 :         outBitmapset(str, node->path.param_info->ppi_req_outer);
    3874             :     else
    3875           0 :         outBitmapset(str, NULL);
    3876           0 :     WRITE_BOOL_FIELD(path.parallel_aware);
    3877           0 :     WRITE_BOOL_FIELD(path.parallel_safe);
    3878           0 :     WRITE_INT_FIELD(path.parallel_workers);
    3879           0 :     WRITE_FLOAT_FIELD(path.rows);
    3880           0 :     WRITE_FLOAT_FIELD(path.startup_cost);
    3881           0 :     WRITE_FLOAT_FIELD(path.total_cost);
    3882           0 :     WRITE_NODE_FIELD(path.pathkeys);
    3883           0 :     WRITE_NODE_FIELD(subpath);
    3884           0 :     WRITE_INT_FIELD(num_workers);
    3885           0 : }
    3886             : 
    3887             : static void
    3888           0 : _outNestPath(StringInfo str, const NestPath *node)
    3889             : {
    3890           0 :     WRITE_NODE_TYPE("NESTPATH");
    3891             : 
    3892           0 :     WRITE_ENUM_FIELD(jpath.path.pathtype, NodeTag);
    3893           0 :     appendStringInfoString(str, " :parent_relids ");
    3894           0 :     outBitmapset(str, node->jpath.path.parent->relids);
    3895           0 :     if (node->jpath.path.pathtarget != node->jpath.path.parent->reltarget)
    3896           0 :         WRITE_NODE_FIELD(jpath.path.pathtarget);
    3897           0 :     appendStringInfoString(str, " :required_outer ");
    3898           0 :     if (node->jpath.path.param_info)
    3899           0 :         outBitmapset(str, node->jpath.path.param_info->ppi_req_outer);
    3900             :     else
    3901           0 :         outBitmapset(str, NULL);
    3902           0 :     WRITE_BOOL_FIELD(jpath.path.parallel_aware);
    3903           0 :     WRITE_BOOL_FIELD(jpath.path.parallel_safe);
    3904           0 :     WRITE_INT_FIELD(jpath.path.parallel_workers);
    3905           0 :     WRITE_FLOAT_FIELD(jpath.path.rows);
    3906           0 :     WRITE_FLOAT_FIELD(jpath.path.startup_cost);
    3907           0 :     WRITE_FLOAT_FIELD(jpath.path.total_cost);
    3908           0 :     WRITE_NODE_FIELD(jpath.path.pathkeys);
    3909           0 :     WRITE_ENUM_FIELD(jpath.jointype, JoinType);
    3910           0 :     WRITE_BOOL_FIELD(jpath.inner_unique);
    3911           0 :     WRITE_NODE_FIELD(jpath.outerjoinpath);
    3912           0 :     WRITE_NODE_FIELD(jpath.innerjoinpath);
    3913           0 :     WRITE_NODE_FIELD(jpath.joinrestrictinfo);
    3914           0 : }
    3915             : 
    3916             : static void
    3917           0 : _outMergePath(StringInfo str, const MergePath *node)
    3918             : {
    3919           0 :     WRITE_NODE_TYPE("MERGEPATH");
    3920             : 
    3921           0 :     WRITE_ENUM_FIELD(jpath.path.pathtype, NodeTag);
    3922           0 :     appendStringInfoString(str, " :parent_relids ");
    3923           0 :     outBitmapset(str, node->jpath.path.parent->relids);
    3924           0 :     if (node->jpath.path.pathtarget != node->jpath.path.parent->reltarget)
    3925           0 :         WRITE_NODE_FIELD(jpath.path.pathtarget);
    3926           0 :     appendStringInfoString(str, " :required_outer ");
    3927           0 :     if (node->jpath.path.param_info)
    3928           0 :         outBitmapset(str, node->jpath.path.param_info->ppi_req_outer);
    3929             :     else
    3930           0 :         outBitmapset(str, NULL);
    3931           0 :     WRITE_BOOL_FIELD(jpath.path.parallel_aware);
    3932           0 :     WRITE_BOOL_FIELD(jpath.path.parallel_safe);
    3933           0 :     WRITE_INT_FIELD(jpath.path.parallel_workers);
    3934           0 :     WRITE_FLOAT_FIELD(jpath.path.rows);
    3935           0 :     WRITE_FLOAT_FIELD(jpath.path.startup_cost);
    3936           0 :     WRITE_FLOAT_FIELD(jpath.path.total_cost);
    3937           0 :     WRITE_NODE_FIELD(jpath.path.pathkeys);
    3938           0 :     WRITE_ENUM_FIELD(jpath.jointype, JoinType);
    3939           0 :     WRITE_BOOL_FIELD(jpath.inner_unique);
    3940           0 :     WRITE_NODE_FIELD(jpath.outerjoinpath);
    3941           0 :     WRITE_NODE_FIELD(jpath.innerjoinpath);
    3942           0 :     WRITE_NODE_FIELD(jpath.joinrestrictinfo);
    3943           0 :     WRITE_NODE_FIELD(path_mergeclauses);
    3944           0 :     WRITE_NODE_FIELD(outersortkeys);
    3945           0 :     WRITE_NODE_FIELD(innersortkeys);
    3946           0 :     WRITE_BOOL_FIELD(skip_mark_restore);
    3947           0 :     WRITE_BOOL_FIELD(materialize_inner);
    3948           0 : }
    3949             : 
    3950             : static void
    3951           0 : _outHashPath(StringInfo str, const HashPath *node)
    3952             : {
    3953           0 :     WRITE_NODE_TYPE("HASHPATH");
    3954             : 
    3955           0 :     WRITE_ENUM_FIELD(jpath.path.pathtype, NodeTag);
    3956           0 :     appendStringInfoString(str, " :parent_relids ");
    3957           0 :     outBitmapset(str, node->jpath.path.parent->relids);
    3958           0 :     if (node->jpath.path.pathtarget != node->jpath.path.parent->reltarget)
    3959           0 :         WRITE_NODE_FIELD(jpath.path.pathtarget);
    3960           0 :     appendStringInfoString(str, " :required_outer ");
    3961           0 :     if (node->jpath.path.param_info)
    3962           0 :         outBitmapset(str, node->jpath.path.param_info->ppi_req_outer);
    3963             :     else
    3964           0 :         outBitmapset(str, NULL);
    3965           0 :     WRITE_BOOL_FIELD(jpath.path.parallel_aware);
    3966           0 :     WRITE_BOOL_FIELD(jpath.path.parallel_safe);
    3967           0 :     WRITE_INT_FIELD(jpath.path.parallel_workers);
    3968           0 :     WRITE_FLOAT_FIELD(jpath.path.rows);
    3969           0 :     WRITE_FLOAT_FIELD(jpath.path.startup_cost);
    3970           0 :     WRITE_FLOAT_FIELD(jpath.path.total_cost);
    3971           0 :     WRITE_NODE_FIELD(jpath.path.pathkeys);
    3972           0 :     WRITE_ENUM_FIELD(jpath.jointype, JoinType);
    3973           0 :     WRITE_BOOL_FIELD(jpath.inner_unique);
    3974           0 :     WRITE_NODE_FIELD(jpath.outerjoinpath);
    3975           0 :     WRITE_NODE_FIELD(jpath.innerjoinpath);
    3976           0 :     WRITE_NODE_FIELD(jpath.joinrestrictinfo);
    3977           0 :     WRITE_NODE_FIELD(path_hashclauses);
    3978           0 :     WRITE_INT_FIELD(num_batches);
    3979           0 :     WRITE_FLOAT_FIELD(inner_rows_total);
    3980           0 : }
    3981             : 
    3982             : static void
    3983           0 : _outProjectionPath(StringInfo str, const ProjectionPath *node)
    3984             : {
    3985           0 :     WRITE_NODE_TYPE("PROJECTIONPATH");
    3986             : 
    3987           0 :     WRITE_ENUM_FIELD(path.pathtype, NodeTag);
    3988           0 :     appendStringInfoString(str, " :parent_relids ");
    3989           0 :     outBitmapset(str, node->path.parent->relids);
    3990           0 :     if (node->path.pathtarget != node->path.parent->reltarget)
    3991           0 :         WRITE_NODE_FIELD(path.pathtarget);
    3992           0 :     appendStringInfoString(str, " :required_outer ");
    3993           0 :     if (node->path.param_info)
    3994           0 :         outBitmapset(str, node->path.param_info->ppi_req_outer);
    3995             :     else
    3996           0 :         outBitmapset(str, NULL);
    3997           0 :     WRITE_BOOL_FIELD(path.parallel_aware);
    3998           0 :     WRITE_BOOL_FIELD(path.parallel_safe);
    3999           0 :     WRITE_INT_FIELD(path.parallel_workers);
    4000           0 :     WRITE_FLOAT_FIELD(path.rows);
    4001           0 :     WRITE_FLOAT_FIELD(path.startup_cost);
    4002           0 :     WRITE_FLOAT_FIELD(path.total_cost);
    4003           0 :     WRITE_NODE_FIELD(path.pathkeys);
    4004           0 :     WRITE_NODE_FIELD(subpath);
    4005           0 :     WRITE_BOOL_FIELD(dummypp);
    4006           0 : }
    4007             : 
    4008             : static void
    4009           0 : _outProjectSetPath(StringInfo str, const ProjectSetPath *node)
    4010             : {
    4011           0 :     WRITE_NODE_TYPE("PROJECTSETPATH");
    4012             : 
    4013           0 :     WRITE_ENUM_FIELD(path.pathtype, NodeTag);
    4014           0 :     appendStringInfoString(str, " :parent_relids ");
    4015           0 :     outBitmapset(str, node->path.parent->relids);
    4016           0 :     if (node->path.pathtarget != node->path.parent->reltarget)
    4017           0 :         WRITE_NODE_FIELD(path.pathtarget);
    4018           0 :     appendStringInfoString(str, " :required_outer ");
    4019           0 :     if (node->path.param_info)
    4020           0 :         outBitmapset(str, node->path.param_info->ppi_req_outer);
    4021             :     else
    4022           0 :         outBitmapset(str, NULL);
    4023           0 :     WRITE_BOOL_FIELD(path.parallel_aware);
    4024           0 :     WRITE_BOOL_FIELD(path.parallel_safe);
    4025           0 :     WRITE_INT_FIELD(path.parallel_workers);
    4026           0 :     WRITE_FLOAT_FIELD(path.rows);
    4027           0 :     WRITE_FLOAT_FIELD(path.startup_cost);
    4028           0 :     WRITE_FLOAT_FIELD(path.total_cost);
    4029           0 :     WRITE_NODE_FIELD(path.pathkeys);
    4030           0 :     WRITE_NODE_FIELD(subpath);
    4031           0 : }
    4032             : 
    4033             : static void
    4034           0 : _outSortPath(StringInfo str, const SortPath *node)
    4035             : {
    4036           0 :     WRITE_NODE_TYPE("SORTPATH");
    4037             : 
    4038           0 :     WRITE_ENUM_FIELD(path.pathtype, NodeTag);
    4039           0 :     appendStringInfoString(str, " :parent_relids ");
    4040           0 :     outBitmapset(str, node->path.parent->relids);
    4041           0 :     if (node->path.pathtarget != node->path.parent->reltarget)
    4042           0 :         WRITE_NODE_FIELD(path.pathtarget);
    4043           0 :     appendStringInfoString(str, " :required_outer ");
    4044           0 :     if (node->path.param_info)
    4045           0 :         outBitmapset(str, node->path.param_info->ppi_req_outer);
    4046             :     else
    4047           0 :         outBitmapset(str, NULL);
    4048           0 :     WRITE_BOOL_FIELD(path.parallel_aware);
    4049           0 :     WRITE_BOOL_FIELD(path.parallel_safe);
    4050           0 :     WRITE_INT_FIELD(path.parallel_workers);
    4051           0 :     WRITE_FLOAT_FIELD(path.rows);
    4052           0 :     WRITE_FLOAT_FIELD(path.startup_cost);
    4053           0 :     WRITE_FLOAT_FIELD(path.total_cost);
    4054           0 :     WRITE_NODE_FIELD(path.pathkeys);
    4055           0 :     WRITE_NODE_FIELD(subpath);
    4056           0 : }
    4057             : 
    4058             : static void
    4059           0 : _outIncrementalSortPath(StringInfo str, const IncrementalSortPath *node)
    4060             : {
    4061           0 :     WRITE_NODE_TYPE("INCREMENTALSORTPATH");
    4062             : 
    4063           0 :     WRITE_ENUM_FIELD(spath.path.pathtype, NodeTag);
    4064           0 :     appendStringInfoString(str, " :parent_relids ");
    4065           0 :     outBitmapset(str, node->spath.path.parent->relids);
    4066           0 :     if (node->spath.path.pathtarget != node->spath.path.parent->reltarget)
    4067           0 :         WRITE_NODE_FIELD(spath.path.pathtarget);
    4068           0 :     appendStringInfoString(str, " :required_outer ");
    4069           0 :     if (node->spath.path.param_info)
    4070           0 :         outBitmapset(str, node->spath.path.param_info->ppi_req_outer);
    4071             :     else
    4072           0 :         outBitmapset(str, NULL);
    4073           0 :     WRITE_BOOL_FIELD(spath.path.parallel_aware);
    4074           0 :     WRITE_BOOL_FIELD(spath.path.parallel_safe);
    4075           0 :     WRITE_INT_FIELD(spath.path.parallel_workers);
    4076           0 :     WRITE_FLOAT_FIELD(spath.path.rows);
    4077           0 :     WRITE_FLOAT_FIELD(spath.path.startup_cost);
    4078           0 :     WRITE_FLOAT_FIELD(spath.path.total_cost);
    4079           0 :     WRITE_NODE_FIELD(spath.path.pathkeys);
    4080           0 :     WRITE_NODE_FIELD(spath.subpath);
    4081           0 :     WRITE_INT_FIELD(nPresortedCols);
    4082           0 : }
    4083             : 
    4084             : static void
    4085           0 : _outGroupPath(StringInfo str, const GroupPath *node)
    4086             : {
    4087           0 :     WRITE_NODE_TYPE("GROUPPATH");
    4088             : 
    4089           0 :     WRITE_ENUM_FIELD(path.pathtype, NodeTag);
    4090           0 :     appendStringInfoString(str, " :parent_relids ");
    4091           0 :     outBitmapset(str, node->path.parent->relids);
    4092           0 :     if (node->path.pathtarget != node->path.parent->reltarget)
    4093           0 :         WRITE_NODE_FIELD(path.pathtarget);
    4094           0 :     appendStringInfoString(str, " :required_outer ");
    4095           0 :     if (node->path.param_info)
    4096           0 :         outBitmapset(str, node->path.param_info->ppi_req_outer);
    4097             :     else
    4098           0 :         outBitmapset(str, NULL);
    4099           0 :     WRITE_BOOL_FIELD(path.parallel_aware);
    4100           0 :     WRITE_BOOL_FIELD(path.parallel_safe);
    4101           0 :     WRITE_INT_FIELD(path.parallel_workers);
    4102           0 :     WRITE_FLOAT_FIELD(path.rows);
    4103           0 :     WRITE_FLOAT_FIELD(path.startup_cost);
    4104           0 :     WRITE_FLOAT_FIELD(path.total_cost);
    4105           0 :     WRITE_NODE_FIELD(path.pathkeys);
    4106           0 :     WRITE_NODE_FIELD(subpath);
    4107           0 :     WRITE_NODE_FIELD(groupClause);
    4108           0 :     WRITE_NODE_FIELD(qual);
    4109           0 : }
    4110             : 
    4111             : static void
    4112           0 : _outUpperUniquePath(StringInfo str, const UpperUniquePath *node)
    4113             : {
    4114           0 :     WRITE_NODE_TYPE("UPPERUNIQUEPATH");
    4115             : 
    4116           0 :     WRITE_ENUM_FIELD(path.pathtype, NodeTag);
    4117           0 :     appendStringInfoString(str, " :parent_relids ");
    4118           0 :     outBitmapset(str, node->path.parent->relids);
    4119           0 :     if (node->path.pathtarget != node->path.parent->reltarget)
    4120           0 :         WRITE_NODE_FIELD(path.pathtarget);
    4121           0 :     appendStringInfoString(str, " :required_outer ");
    4122           0 :     if (node->path.param_info)
    4123           0 :         outBitmapset(str, node->path.param_info->ppi_req_outer);
    4124             :     else
    4125           0 :         outBitmapset(str, NULL);
    4126           0 :     WRITE_BOOL_FIELD(path.parallel_aware);
    4127           0 :     WRITE_BOOL_FIELD(path.parallel_safe);
    4128           0 :     WRITE_INT_FIELD(path.parallel_workers);
    4129           0 :     WRITE_FLOAT_FIELD(path.rows);
    4130           0 :     WRITE_FLOAT_FIELD(path.startup_cost);
    4131           0 :     WRITE_FLOAT_FIELD(path.total_cost);
    4132           0 :     WRITE_NODE_FIELD(path.pathkeys);
    4133           0 :     WRITE_NODE_FIELD(subpath);
    4134           0 :     WRITE_INT_FIELD(numkeys);
    4135           0 : }
    4136             : 
    4137             : static void
    4138           0 : _outAggPath(StringInfo str, const AggPath *node)
    4139             : {
    4140           0 :     WRITE_NODE_TYPE("AGGPATH");
    4141             : 
    4142           0 :     WRITE_ENUM_FIELD(path.pathtype, NodeTag);
    4143           0 :     appendStringInfoString(str, " :parent_relids ");
    4144           0 :     outBitmapset(str, node->path.parent->relids);
    4145           0 :     if (node->path.pathtarget != node->path.parent->reltarget)
    4146           0 :         WRITE_NODE_FIELD(path.pathtarget);
    4147           0 :     appendStringInfoString(str, " :required_outer ");
    4148           0 :     if (node->path.param_info)
    4149           0 :         outBitmapset(str, node->path.param_info->ppi_req_outer);
    4150             :     else
    4151           0 :         outBitmapset(str, NULL);
    4152           0 :     WRITE_BOOL_FIELD(path.parallel_aware);
    4153           0 :     WRITE_BOOL_FIELD(path.parallel_safe);
    4154           0 :     WRITE_INT_FIELD(path.parallel_workers);
    4155           0 :     WRITE_FLOAT_FIELD(path.rows);
    4156           0 :     WRITE_FLOAT_FIELD(path.startup_cost);
    4157           0 :     WRITE_FLOAT_FIELD(path.total_cost);
    4158           0 :     WRITE_NODE_FIELD(path.pathkeys);
    4159           0 :     WRITE_NODE_FIELD(subpath);
    4160           0 :     WRITE_ENUM_FIELD(aggstrategy, AggStrategy);
    4161           0 :     WRITE_ENUM_FIELD(aggsplit, AggSplit);
    4162           0 :     WRITE_FLOAT_FIELD(numGroups);
    4163           0 :     WRITE_UINT64_FIELD(transitionSpace);
    4164           0 :     WRITE_NODE_FIELD(groupClause);
    4165           0 :     WRITE_NODE_FIELD(qual);
    4166           0 : }
    4167             : 
    4168             : static void
    4169           0 : _outGroupingSetData(StringInfo str, const GroupingSetData *node)
    4170             : {
    4171           0 :     WRITE_NODE_TYPE("GROUPINGSETDATA");
    4172             : 
    4173           0 :     WRITE_NODE_FIELD(set);
    4174           0 :     WRITE_FLOAT_FIELD(numGroups);
    4175           0 : }
    4176             : 
    4177             : static void
    4178           0 : _outRollupData(StringInfo str, const RollupData *node)
    4179             : {
    4180           0 :     WRITE_NODE_TYPE("ROLLUPDATA");
    4181             : 
    4182           0 :     WRITE_NODE_FIELD(groupClause);
    4183           0 :     WRITE_NODE_FIELD(gsets);
    4184           0 :     WRITE_NODE_FIELD(gsets_data);
    4185           0 :     WRITE_FLOAT_FIELD(numGroups);
    4186           0 :     WRITE_BOOL_FIELD(hashable);
    4187           0 :     WRITE_BOOL_FIELD(is_hashed);
    4188           0 : }
    4189             : 
    4190             : static void
    4191           0 : _outGroupingSetsPath(StringInfo str, const GroupingSetsPath *node)
    4192             : {
    4193           0 :     WRITE_NODE_TYPE("GROUPINGSETSPATH");
    4194             : 
    4195           0 :     WRITE_ENUM_FIELD(path.pathtype, NodeTag);
    4196           0 :     appendStringInfoString(str, " :parent_relids ");
    4197           0 :     outBitmapset(str, node->path.parent->relids);
    4198           0 :     if (node->path.pathtarget != node->path.parent->reltarget)
    4199           0 :         WRITE_NODE_FIELD(path.pathtarget);
    4200           0 :     appendStringInfoString(str, " :required_outer ");
    4201           0 :     if (node->path.param_info)
    4202           0 :         outBitmapset(str, node->path.param_info->ppi_req_outer);
    4203             :     else
    4204           0 :         outBitmapset(str, NULL);
    4205           0 :     WRITE_BOOL_FIELD(path.parallel_aware);
    4206           0 :     WRITE_BOOL_FIELD(path.parallel_safe);
    4207           0 :     WRITE_INT_FIELD(path.parallel_workers);
    4208           0 :     WRITE_FLOAT_FIELD(path.rows);
    4209           0 :     WRITE_FLOAT_FIELD(path.startup_cost);
    4210           0 :     WRITE_FLOAT_FIELD(path.total_cost);
    4211           0 :     WRITE_NODE_FIELD(path.pathkeys);
    4212           0 :     WRITE_NODE_FIELD(subpath);
    4213           0 :     WRITE_ENUM_FIELD(aggstrategy, AggStrategy);
    4214           0 :     WRITE_NODE_FIELD(rollups);
    4215           0 :     WRITE_NODE_FIELD(qual);
    4216           0 :     WRITE_UINT64_FIELD(transitionSpace);
    4217           0 : }
    4218             : 
    4219             : static void
    4220           0 : _outMinMaxAggPath(StringInfo str, const MinMaxAggPath *node)
    4221             : {
    4222           0 :     WRITE_NODE_TYPE("MINMAXAGGPATH");
    4223             : 
    4224           0 :     WRITE_ENUM_FIELD(path.pathtype, NodeTag);
    4225           0 :     appendStringInfoString(str, " :parent_relids ");
    4226           0 :     outBitmapset(str, node->path.parent->relids);
    4227           0 :     if (node->path.pathtarget != node->path.parent->reltarget)
    4228           0 :         WRITE_NODE_FIELD(path.pathtarget);
    4229           0 :     appendStringInfoString(str, " :required_outer ");
    4230           0 :     if (node->path.param_info)
    4231           0 :         outBitmapset(str, node->path.param_info->ppi_req_outer);
    4232             :     else
    4233           0 :         outBitmapset(str, NULL);
    4234           0 :     WRITE_BOOL_FIELD(path.parallel_aware);
    4235           0 :     WRITE_BOOL_FIELD(path.parallel_safe);
    4236           0 :     WRITE_INT_FIELD(path.parallel_workers);
    4237           0 :     WRITE_FLOAT_FIELD(path.rows);
    4238           0 :     WRITE_FLOAT_FIELD(path.startup_cost);
    4239           0 :     WRITE_FLOAT_FIELD(path.total_cost);
    4240           0 :     WRITE_NODE_FIELD(path.pathkeys);
    4241           0 :     WRITE_NODE_FIELD(mmaggregates);
    4242           0 :     WRITE_NODE_FIELD(quals);
    4243           0 : }
    4244             : 
    4245             : static void
    4246           0 : _outWindowAggPath(StringInfo str, const WindowAggPath *node)
    4247             : {
    4248           0 :     WRITE_NODE_TYPE("WINDOWAGGPATH");
    4249             : 
    4250           0 :     WRITE_ENUM_FIELD(path.pathtype, NodeTag);
    4251           0 :     appendStringInfoString(str, " :parent_relids ");
    4252           0 :     outBitmapset(str, node->path.parent->relids);
    4253           0 :     if (node->path.pathtarget != node->path.parent->reltarget)
    4254           0 :         WRITE_NODE_FIELD(path.pathtarget);
    4255           0 :     appendStringInfoString(str, " :required_outer ");
    4256           0 :     if (node->path.param_info)
    4257           0 :         outBitmapset(str, node->path.param_info->ppi_req_outer);
    4258             :     else
    4259           0 :         outBitmapset(str, NULL);
    4260           0 :     WRITE_BOOL_FIELD(path.parallel_aware);
    4261           0 :     WRITE_BOOL_FIELD(path.parallel_safe);
    4262           0 :     WRITE_INT_FIELD(path.parallel_workers);
    4263           0 :     WRITE_FLOAT_FIELD(path.rows);
    4264           0 :     WRITE_FLOAT_FIELD(path.startup_cost);
    4265           0 :     WRITE_FLOAT_FIELD(path.total_cost);
    4266           0 :     WRITE_NODE_FIELD(path.pathkeys);
    4267           0 :     WRITE_NODE_FIELD(subpath);
    4268           0 :     WRITE_NODE_FIELD(winclause);
    4269           0 :     WRITE_NODE_FIELD(qual);
    4270           0 :     WRITE_BOOL_FIELD(topwindow);
    4271           0 : }
    4272             : 
    4273             : static void
    4274           0 : _outSetOpPath(StringInfo str, const SetOpPath *node)
    4275             : {
    4276           0 :     WRITE_NODE_TYPE("SETOPPATH");
    4277             : 
    4278           0 :     WRITE_ENUM_FIELD(path.pathtype, NodeTag);
    4279           0 :     appendStringInfoString(str, " :parent_relids ");
    4280           0 :     outBitmapset(str, node->path.parent->relids);
    4281           0 :     if (node->path.pathtarget != node->path.parent->reltarget)
    4282           0 :         WRITE_NODE_FIELD(path.pathtarget);
    4283           0 :     appendStringInfoString(str, " :required_outer ");
    4284           0 :     if (node->path.param_info)
    4285           0 :         outBitmapset(str, node->path.param_info->ppi_req_outer);
    4286             :     else
    4287           0 :         outBitmapset(str, NULL);
    4288           0 :     WRITE_BOOL_FIELD(path.parallel_aware);
    4289           0 :     WRITE_BOOL_FIELD(path.parallel_safe);
    4290           0 :     WRITE_INT_FIELD(path.parallel_workers);
    4291           0 :     WRITE_FLOAT_FIELD(path.rows);
    4292           0 :     WRITE_FLOAT_FIELD(path.startup_cost);
    4293           0 :     WRITE_FLOAT_FIELD(path.total_cost);
    4294           0 :     WRITE_NODE_FIELD(path.pathkeys);
    4295           0 :     WRITE_NODE_FIELD(subpath);
    4296           0 :     WRITE_ENUM_FIELD(cmd, SetOpCmd);
    4297           0 :     WRITE_ENUM_FIELD(strategy, SetOpStrategy);
    4298           0 :     WRITE_NODE_FIELD(distinctList);
    4299           0 :     WRITE_INT_FIELD(flagColIdx);
    4300           0 :     WRITE_INT_FIELD(firstFlag);
    4301           0 :     WRITE_FLOAT_FIELD(numGroups);
    4302           0 : }
    4303             : 
    4304             : static void
    4305           0 : _outRecursiveUnionPath(StringInfo str, const RecursiveUnionPath *node)
    4306             : {
    4307           0 :     WRITE_NODE_TYPE("RECURSIVEUNIONPATH");
    4308             : 
    4309           0 :     WRITE_ENUM_FIELD(path.pathtype, NodeTag);
    4310           0 :     appendStringInfoString(str, " :parent_relids ");
    4311           0 :     outBitmapset(str, node->path.parent->relids);
    4312           0 :     if (node->path.pathtarget != node->path.parent->reltarget)
    4313           0 :         WRITE_NODE_FIELD(path.pathtarget);
    4314           0 :     appendStringInfoString(str, " :required_outer ");
    4315           0 :     if (node->path.param_info)
    4316           0 :         outBitmapset(str, node->path.param_info->ppi_req_outer);
    4317             :     else
    4318           0 :         outBitmapset(str, NULL);
    4319           0 :     WRITE_BOOL_FIELD(path.parallel_aware);
    4320           0 :     WRITE_BOOL_FIELD(path.parallel_safe);
    4321           0 :     WRITE_INT_FIELD(path.parallel_workers);
    4322           0 :     WRITE_FLOAT_FIELD(path.rows);
    4323           0 :     WRITE_FLOAT_FIELD(path.startup_cost);
    4324           0 :     WRITE_FLOAT_FIELD(path.total_cost);
    4325           0 :     WRITE_NODE_FIELD(path.pathkeys);
    4326           0 :     WRITE_NODE_FIELD(leftpath);
    4327           0 :     WRITE_NODE_FIELD(rightpath);
    4328           0 :     WRITE_NODE_FIELD(distinctList);
    4329           0 :     WRITE_INT_FIELD(wtParam);
    4330           0 :     WRITE_FLOAT_FIELD(numGroups);
    4331           0 : }
    4332             : 
    4333             : static void
    4334           0 : _outLockRowsPath(StringInfo str, const LockRowsPath *node)
    4335             : {
    4336           0 :     WRITE_NODE_TYPE("LOCKROWSPATH");
    4337             : 
    4338           0 :     WRITE_ENUM_FIELD(path.pathtype, NodeTag);
    4339           0 :     appendStringInfoString(str, " :parent_relids ");
    4340           0 :     outBitmapset(str, node->path.parent->relids);
    4341           0 :     if (node->path.pathtarget != node->path.parent->reltarget)
    4342           0 :         WRITE_NODE_FIELD(path.pathtarget);
    4343           0 :     appendStringInfoString(str, " :required_outer ");
    4344           0 :     if (node->path.param_info)
    4345           0 :         outBitmapset(str, node->path.param_info->ppi_req_outer);
    4346             :     else
    4347           0 :         outBitmapset(str, NULL);
    4348           0 :     WRITE_BOOL_FIELD(path.parallel_aware);
    4349           0 :     WRITE_BOOL_FIELD(path.parallel_safe);
    4350           0 :     WRITE_INT_FIELD(path.parallel_workers);
    4351           0 :     WRITE_FLOAT_FIELD(path.rows);
    4352           0 :     WRITE_FLOAT_FIELD(path.startup_cost);
    4353           0 :     WRITE_FLOAT_FIELD(path.total_cost);
    4354           0 :     WRITE_NODE_FIELD(path.pathkeys);
    4355           0 :     WRITE_NODE_FIELD(subpath);
    4356           0 :     WRITE_NODE_FIELD(rowMarks);
    4357           0 :     WRITE_INT_FIELD(epqParam);
    4358           0 : }
    4359             : 
    4360             : static void
    4361           0 : _outModifyTablePath(StringInfo str, const ModifyTablePath *node)
    4362             : {
    4363           0 :     WRITE_NODE_TYPE("MODIFYTABLEPATH");
    4364             : 
    4365           0 :     WRITE_ENUM_FIELD(path.pathtype, NodeTag);
    4366           0 :     appendStringInfoString(str, " :parent_relids ");
    4367           0 :     outBitmapset(str, node->path.parent->relids);
    4368           0 :     if (node->path.pathtarget != node->path.parent->reltarget)
    4369           0 :         WRITE_NODE_FIELD(path.pathtarget);
    4370           0 :     appendStringInfoString(str, " :required_outer ");
    4371           0 :     if (node->path.param_info)
    4372           0 :         outBitmapset(str, node->path.param_info->ppi_req_outer);
    4373             :     else
    4374           0 :         outBitmapset(str, NULL);
    4375           0 :     WRITE_BOOL_FIELD(path.parallel_aware);
    4376           0 :     WRITE_BOOL_FIELD(path.parallel_safe);
    4377           0 :     WRITE_INT_FIELD(path.parallel_workers);
    4378           0 :     WRITE_FLOAT_FIELD(path.rows);
    4379           0 :     WRITE_FLOAT_FIELD(path.startup_cost);
    4380           0 :     WRITE_FLOAT_FIELD(path.total_cost);
    4381           0 :     WRITE_NODE_FIELD(path.pathkeys);
    4382           0 :     WRITE_NODE_FIELD(subpath);
    4383           0 :     WRITE_ENUM_FIELD(operation, CmdType);
    4384           0 :     WRITE_BOOL_FIELD(canSetTag);
    4385           0 :     WRITE_UINT_FIELD(nominalRelation);
    4386           0 :     WRITE_UINT_FIELD(rootRelation);
    4387           0 :     WRITE_BOOL_FIELD(partColsUpdated);
    4388           0 :     WRITE_NODE_FIELD(resultRelations);
    4389           0 :     WRITE_NODE_FIELD(updateColnosLists);
    4390           0 :     WRITE_NODE_FIELD(withCheckOptionLists);
    4391           0 :     WRITE_NODE_FIELD(returningLists);
    4392           0 :     WRITE_NODE_FIELD(rowMarks);
    4393           0 :     WRITE_NODE_FIELD(onconflict);
    4394           0 :     WRITE_INT_FIELD(epqParam);
    4395           0 :     WRITE_NODE_FIELD(mergeActionLists);
    4396           0 :     WRITE_NODE_FIELD(mergeJoinConditions);
    4397           0 : }
    4398             : 
    4399             : static void
    4400           0 : _outLimitPath(StringInfo str, const LimitPath *node)
    4401             : {
    4402           0 :     WRITE_NODE_TYPE("LIMITPATH");
    4403             : 
    4404           0 :     WRITE_ENUM_FIELD(path.pathtype, NodeTag);
    4405           0 :     appendStringInfoString(str, " :parent_relids ");
    4406           0 :     outBitmapset(str, node->path.parent->relids);
    4407           0 :     if (node->path.pathtarget != node->path.parent->reltarget)
    4408           0 :         WRITE_NODE_FIELD(path.pathtarget);
    4409           0 :     appendStringInfoString(str, " :required_outer ");
    4410           0 :     if (node->path.param_info)
    4411           0 :         outBitmapset(str, node->path.param_info->ppi_req_outer);
    4412             :     else
    4413           0 :         outBitmapset(str, NULL);
    4414           0 :     WRITE_BOOL_FIELD(path.parallel_aware);
    4415           0 :     WRITE_BOOL_FIELD(path.parallel_safe);
    4416           0 :     WRITE_INT_FIELD(path.parallel_workers);
    4417           0 :     WRITE_FLOAT_FIELD(path.rows);
    4418           0 :     WRITE_FLOAT_FIELD(path.startup_cost);
    4419           0 :     WRITE_FLOAT_FIELD(path.total_cost);
    4420           0 :     WRITE_NODE_FIELD(path.pathkeys);
    4421           0 :     WRITE_NODE_FIELD(subpath);
    4422           0 :     WRITE_NODE_FIELD(limitOffset);
    4423           0 :     WRITE_NODE_FIELD(limitCount);
    4424           0 :     WRITE_ENUM_FIELD(limitOption, LimitOption);
    4425           0 : }
    4426             : 
    4427             : static void
    4428           0 : _outRestrictInfo(StringInfo str, const RestrictInfo *node)
    4429             : {
    4430           0 :     WRITE_NODE_TYPE("RESTRICTINFO");
    4431             : 
    4432           0 :     WRITE_NODE_FIELD(clause);
    4433           0 :     WRITE_BOOL_FIELD(is_pushed_down);
    4434           0 :     WRITE_BOOL_FIELD(can_join);
    4435           0 :     WRITE_BOOL_FIELD(pseudoconstant);
    4436           0 :     WRITE_BOOL_FIELD(has_clone);
    4437           0 :     WRITE_BOOL_FIELD(is_clone);
    4438           0 :     WRITE_BOOL_FIELD(leakproof);
    4439           0 :     WRITE_ENUM_FIELD(has_volatile, VolatileFunctionStatus);
    4440           0 :     WRITE_UINT_FIELD(security_level);
    4441           0 :     WRITE_INT_FIELD(num_base_rels);
    4442           0 :     WRITE_BITMAPSET_FIELD(clause_relids);
    4443           0 :     WRITE_BITMAPSET_FIELD(required_relids);
    4444           0 :     WRITE_BITMAPSET_FIELD(incompatible_relids);
    4445           0 :     WRITE_BITMAPSET_FIELD(outer_relids);
    4446           0 :     WRITE_BITMAPSET_FIELD(left_relids);
    4447           0 :     WRITE_BITMAPSET_FIELD(right_relids);
    4448           0 :     WRITE_NODE_FIELD(orclause);
    4449           0 :     WRITE_INT_FIELD(rinfo_serial);
    4450           0 :     WRITE_FLOAT_FIELD(eval_cost.startup);
    4451           0 :     WRITE_FLOAT_FIELD(eval_cost.per_tuple);
    4452           0 :     WRITE_FLOAT_FIELD(norm_selec);
    4453           0 :     WRITE_FLOAT_FIELD(outer_selec);
    4454           0 :     WRITE_NODE_FIELD(mergeopfamilies);
    4455           0 :     WRITE_NODE_FIELD(left_em);
    4456           0 :     WRITE_NODE_FIELD(right_em);
    4457           0 :     WRITE_BOOL_FIELD(outer_is_left);
    4458           0 :     WRITE_OID_FIELD(hashjoinoperator);
    4459           0 :     WRITE_FLOAT_FIELD(left_bucketsize);
    4460           0 :     WRITE_FLOAT_FIELD(right_bucketsize);
    4461           0 :     WRITE_FLOAT_FIELD(left_mcvfreq);
    4462           0 :     WRITE_FLOAT_FIELD(right_mcvfreq);
    4463           0 :     WRITE_OID_FIELD(left_hasheqoperator);
    4464           0 :     WRITE_OID_FIELD(right_hasheqoperator);
    4465           0 : }
    4466             : 
    4467             : static void
    4468           0 : _outPlaceHolderVar(StringInfo str, const PlaceHolderVar *node)
    4469             : {
    4470           0 :     WRITE_NODE_TYPE("PLACEHOLDERVAR");
    4471             : 
    4472           0 :     WRITE_NODE_FIELD(phexpr);
    4473           0 :     WRITE_BITMAPSET_FIELD(phrels);
    4474           0 :     WRITE_BITMAPSET_FIELD(phnullingrels);
    4475           0 :     WRITE_UINT_FIELD(phid);
    4476           0 :     WRITE_UINT_FIELD(phlevelsup);
    4477           0 : }
    4478             : 
    4479             : static void
    4480           0 : _outSpecialJoinInfo(StringInfo str, const SpecialJoinInfo *node)
    4481             : {
    4482           0 :     WRITE_NODE_TYPE("SPECIALJOININFO");
    4483             : 
    4484           0 :     WRITE_BITMAPSET_FIELD(min_lefthand);
    4485           0 :     WRITE_BITMAPSET_FIELD(min_righthand);
    4486           0 :     WRITE_BITMAPSET_FIELD(syn_lefthand);
    4487           0 :     WRITE_BITMAPSET_FIELD(syn_righthand);
    4488           0 :     WRITE_ENUM_FIELD(jointype, JoinType);
    4489           0 :     WRITE_UINT_FIELD(ojrelid);
    4490           0 :     WRITE_BITMAPSET_FIELD(commute_above_l);
    4491           0 :     WRITE_BITMAPSET_FIELD(commute_above_r);
    4492           0 :     WRITE_BITMAPSET_FIELD(commute_below_l);
    4493           0 :     WRITE_BITMAPSET_FIELD(commute_below_r);
    4494           0 :     WRITE_BOOL_FIELD(lhs_strict);
    4495           0 :     WRITE_BOOL_FIELD(semi_can_btree);
    4496           0 :     WRITE_BOOL_FIELD(semi_can_hash);
    4497           0 :     WRITE_NODE_FIELD(semi_operators);
    4498           0 :     WRITE_NODE_FIELD(semi_rhs_exprs);
    4499           0 : }
    4500             : 
    4501             : static void
    4502           0 : _outOuterJoinClauseInfo(StringInfo str, const OuterJoinClauseInfo *node)
    4503             : {
    4504           0 :     WRITE_NODE_TYPE("OUTERJOINCLAUSEINFO");
    4505             : 
    4506           0 :     WRITE_NODE_FIELD(rinfo);
    4507           0 :     WRITE_NODE_FIELD(sjinfo);
    4508           0 : }
    4509             : 
    4510             : static void
    4511       42556 : _outAppendRelInfo(StringInfo str, const AppendRelInfo *node)
    4512             : {
    4513       42556 :     WRITE_NODE_TYPE("APPENDRELINFO");
    4514             : 
    4515       42556 :     WRITE_UINT_FIELD(parent_relid);
    4516       42556 :     WRITE_UINT_FIELD(child_relid);
    4517       42556 :     WRITE_OID_FIELD(parent_reltype);
    4518       42556 :     WRITE_OID_FIELD(child_reltype);
    4519       42556 :     WRITE_NODE_FIELD(translated_vars);
    4520       42556 :     WRITE_INT_FIELD(num_child_cols);
    4521       42556 :     WRITE_ATTRNUMBER_ARRAY(parent_colnos, node->num_child_cols);
    4522       42556 :     WRITE_OID_FIELD(parent_reloid);
    4523       42556 : }
    4524             : 
    4525             : static void
    4526           0 : _outRowIdentityVarInfo(StringInfo str, const RowIdentityVarInfo *node)
    4527             : {
    4528           0 :     WRITE_NODE_TYPE("ROWIDENTITYVARINFO");
    4529             : 
    4530           0 :     WRITE_NODE_FIELD(rowidvar);
    4531           0 :     WRITE_INT_FIELD(rowidwidth);
    4532           0 :     WRITE_STRING_FIELD(rowidname);
    4533           0 :     WRITE_BITMAPSET_FIELD(rowidrels);
    4534           0 : }
    4535             : 
    4536             : static void
    4537           0 : _outPlaceHolderInfo(StringInfo str, const PlaceHolderInfo *node)
    4538             : {
    4539           0 :     WRITE_NODE_TYPE("PLACEHOLDERINFO");
    4540             : 
    4541           0 :     WRITE_UINT_FIELD(phid);
    4542           0 :     WRITE_NODE_FIELD(ph_var);
    4543           0 :     WRITE_BITMAPSET_FIELD(ph_eval_at);
    4544           0 :     WRITE_BITMAPSET_FIELD(ph_lateral);
    4545           0 :     WRITE_BITMAPSET_FIELD(ph_needed);
    4546           0 :     WRITE_INT_FIELD(ph_width);
    4547           0 : }
    4548             : 
    4549             : static void
    4550           0 : _outMinMaxAggInfo(StringInfo str, const MinMaxAggInfo *node)
    4551             : {
    4552           0 :     WRITE_NODE_TYPE("MINMAXAGGINFO");
    4553             : 
    4554           0 :     WRITE_OID_FIELD(aggfnoid);
    4555           0 :     WRITE_OID_FIELD(aggsortop);
    4556           0 :     WRITE_NODE_FIELD(target);
    4557           0 :     WRITE_NODE_FIELD(path);
    4558           0 :     WRITE_FLOAT_FIELD(pathcost);
    4559           0 :     WRITE_NODE_FIELD(param);
    4560           0 : }
    4561             : 
    4562             : static void
    4563           0 : _outPlannerParamItem(StringInfo str, const PlannerParamItem *node)
    4564             : {
    4565           0 :     WRITE_NODE_TYPE("PLANNERPARAMITEM");
    4566             : 
    4567           0 :     WRITE_NODE_FIELD(item);
    4568           0 :     WRITE_INT_FIELD(paramId);
    4569           0 : }
    4570             : 
    4571             : static void
    4572           0 : _outAggInfo(StringInfo str, const AggInfo *node)
    4573             : {
    4574           0 :     WRITE_NODE_TYPE("AGGINFO");
    4575             : 
    4576           0 :     WRITE_NODE_FIELD(aggrefs);
    4577           0 :     WRITE_INT_FIELD(transno);
    4578           0 :     WRITE_BOOL_FIELD(shareable);
    4579           0 :     WRITE_OID_FIELD(finalfn_oid);
    4580           0 : }
    4581             : 
    4582             : static void
    4583           0 : _outAggTransInfo(StringInfo str, const AggTransInfo *node)
    4584             : {
    4585           0 :     WRITE_NODE_TYPE("AGGTRANSINFO");
    4586             : 
    4587           0 :     WRITE_NODE_FIELD(args);
    4588           0 :     WRITE_NODE_FIELD(aggfilter);
    4589           0 :     WRITE_OID_FIELD(transfn_oid);
    4590           0 :     WRITE_OID_FIELD(serialfn_oid);
    4591           0 :     WRITE_OID_FIELD(deserialfn_oid);
    4592           0 :     WRITE_OID_FIELD(combinefn_oid);
    4593           0 :     WRITE_OID_FIELD(aggtranstype);
    4594           0 :     WRITE_INT_FIELD(aggtranstypmod);
    4595           0 :     WRITE_INT_FIELD(transtypeLen);
    4596           0 :     WRITE_BOOL_FIELD(transtypeByVal);
    4597           0 :     WRITE_INT_FIELD(aggtransspace);
    4598           0 :     WRITE_BOOL_FIELD(initValueIsNull);
    4599           0 : }
    4600             : 
    4601             : static void
    4602           0 : _outUniqueRelInfo(StringInfo str, const UniqueRelInfo *node)
    4603             : {
    4604           0 :     WRITE_NODE_TYPE("UNIQUERELINFO");
    4605             : 
    4606           0 :     WRITE_BITMAPSET_FIELD(outerrelids);
    4607           0 :     WRITE_BOOL_FIELD(self_join);
    4608           0 :     WRITE_NODE_FIELD(extra_clauses);
    4609           0 : }
    4610             : 
    4611             : static void
    4612      430316 : _outPlannedStmt(StringInfo str, const PlannedStmt *node)
    4613             : {
    4614      430316 :     WRITE_NODE_TYPE("PLANNEDSTMT");
    4615             : 
    4616      430316 :     WRITE_ENUM_FIELD(commandType, CmdType);
    4617      430316 :     WRITE_UINT64_FIELD(queryId);
    4618      430316 :     WRITE_BOOL_FIELD(hasReturning);
    4619      430316 :     WRITE_BOOL_FIELD(hasModifyingCTE);
    4620      430316 :     WRITE_BOOL_FIELD(canSetTag);
    4621      430316 :     WRITE_BOOL_FIELD(transientPlan);
    4622      430316 :     WRITE_BOOL_FIELD(dependsOnRole);
    4623      430316 :     WRITE_BOOL_FIELD(parallelModeNeeded);
    4624      430316 :     WRITE_INT_FIELD(jitFlags);
    4625      430316 :     WRITE_NODE_FIELD(planTree);
    4626      430316 :     WRITE_NODE_FIELD(rtable);
    4627      430316 :     WRITE_NODE_FIELD(permInfos);
    4628      430316 :     WRITE_NODE_FIELD(resultRelations);
    4629      430316 :     WRITE_NODE_FIELD(appendRelations);
    4630      430316 :     WRITE_NODE_FIELD(subplans);
    4631      430316 :     WRITE_BITMAPSET_FIELD(rewindPlanIDs);
    4632      430316 :     WRITE_NODE_FIELD(rowMarks);
    4633      430316 :     WRITE_NODE_FIELD(relationOids);
    4634      430316 :     WRITE_NODE_FIELD(invalItems);
    4635      430316 :     WRITE_NODE_FIELD(paramExecTypes);
    4636      430316 :     WRITE_NODE_FIELD(utilityStmt);
    4637      430316 :     WRITE_LOCATION_FIELD(stmt_location);
    4638      430316 :     WRITE_LOCATION_FIELD(stmt_len);
    4639      430316 : }
    4640             : 
    4641             : static void
    4642      219104 : _outResult(StringInfo str, const Result *node)
    4643             : {
    4644      219104 :     WRITE_NODE_TYPE("RESULT");
    4645             : 
    4646      219104 :     WRITE_FLOAT_FIELD(plan.startup_cost);
    4647      219104 :     WRITE_FLOAT_FIELD(plan.total_cost);
    4648      219104 :     WRITE_FLOAT_FIELD(plan.plan_rows);
    4649      219104 :     WRITE_INT_FIELD(plan.plan_width);
    4650      219104 :     WRITE_BOOL_FIELD(plan.parallel_aware);
    4651      219104 :     WRITE_BOOL_FIELD(plan.parallel_safe);
    4652      219104 :     WRITE_BOOL_FIELD(plan.async_capable);
    4653      219104 :     WRITE_INT_FIELD(plan.plan_node_id);
    4654      219104 :     WRITE_NODE_FIELD(plan.targetlist);
    4655      219104 :     WRITE_NODE_FIELD(plan.qual);
    4656      219104 :     WRITE_NODE_FIELD(plan.lefttree);
    4657      219104 :     WRITE_NODE_FIELD(plan.righttree);
    4658      219104 :     WRITE_NODE_FIELD(plan.initPlan);
    4659      219104 :     WRITE_BITMAPSET_FIELD(plan.extParam);
    4660      219104 :     WRITE_BITMAPSET_FIELD(plan.allParam);
    4661      219104 :     WRITE_NODE_FIELD(resconstantqual);
    4662      219104 : }
    4663             : 
    4664             : static void
    4665        8390 : _outProjectSet(StringInfo str, const ProjectSet *node)
    4666             : {
    4667        8390 :     WRITE_NODE_TYPE("PROJECTSET");
    4668             : 
    4669        8390 :     WRITE_FLOAT_FIELD(plan.startup_cost);
    4670        8390 :     WRITE_FLOAT_FIELD(plan.total_cost);
    4671        8390 :     WRITE_FLOAT_FIELD(plan.plan_rows);
    4672        8390 :     WRITE_INT_FIELD(plan.plan_width);
    4673        8390 :     WRITE_BOOL_FIELD(plan.parallel_aware);
    4674        8390 :     WRITE_BOOL_FIELD(plan.parallel_safe);
    4675        8390 :     WRITE_BOOL_FIELD(plan.async_capable);
    4676        8390 :     WRITE_INT_FIELD(plan.plan_node_id);
    4677        8390 :     WRITE_NODE_FIELD(plan.targetlist);
    4678        8390 :     WRITE_NODE_FIELD(plan.qual);
    4679        8390 :     WRITE_NODE_FIELD(plan.lefttree);
    4680        8390 :     WRITE_NODE_FIELD(plan.righttree);
    4681        8390 :     WRITE_NODE_FIELD(plan.initPlan);
    4682        8390 :     WRITE_BITMAPSET_FIELD(plan.extParam);
    4683        8390 :     WRITE_BITMAPSET_FIELD(plan.allParam);
    4684        8390 : }
    4685             : 
    4686             : static void
    4687       89898 : _outModifyTable(StringInfo str, const ModifyTable *node)
    4688             : {
    4689       89898 :     WRITE_NODE_TYPE("MODIFYTABLE");
    4690             : 
    4691       89898 :     WRITE_FLOAT_FIELD(plan.startup_cost);
    4692       89898 :     WRITE_FLOAT_FIELD(plan.total_cost);
    4693       89898 :     WRITE_FLOAT_FIELD(plan.plan_rows);
    4694       89898 :     WRITE_INT_FIELD(plan.plan_width);
    4695       89898 :     WRITE_BOOL_FIELD(plan.parallel_aware);
    4696       89898 :     WRITE_BOOL_FIELD(plan.parallel_safe);
    4697       89898 :     WRITE_BOOL_FIELD(plan.async_capable);
    4698       89898 :     WRITE_INT_FIELD(plan.plan_node_id);
    4699       89898 :     WRITE_NODE_FIELD(plan.targetlist);
    4700       89898 :     WRITE_NODE_FIELD(plan.qual);
    4701       89898 :     WRITE_NODE_FIELD(plan.lefttree);
    4702       89898 :     WRITE_NODE_FIELD(plan.righttree);
    4703       89898 :     WRITE_NODE_FIELD(plan.initPlan);
    4704       89898 :     WRITE_BITMAPSET_FIELD(plan.extParam);
    4705       89898 :     WRITE_BITMAPSET_FIELD(plan.allParam);
    4706       89898 :     WRITE_ENUM_FIELD(operation, CmdType);
    4707       89898 :     WRITE_BOOL_FIELD(canSetTag);
    4708       89898 :     WRITE_UINT_FIELD(nominalRelation);
    4709       89898 :     WRITE_UINT_FIELD(rootRelation);
    4710       89898 :     WRITE_BOOL_FIELD(partColsUpdated);
    4711       89898 :     WRITE_NODE_FIELD(resultRelations);
    4712       89898 :     WRITE_NODE_FIELD(updateColnosLists);
    4713       89898 :     WRITE_NODE_FIELD(withCheckOptionLists);
    4714       89898 :     WRITE_NODE_FIELD(returningLists);
    4715       89898 :     WRITE_NODE_FIELD(fdwPrivLists);
    4716       89898 :     WRITE_BITMAPSET_FIELD(fdwDirectModifyPlans);
    4717       89898 :     WRITE_NODE_FIELD(rowMarks);
    4718       89898 :     WRITE_INT_FIELD(epqParam);
    4719       89898 :     WRITE_ENUM_FIELD(onConflictAction, OnConflictAction);
    4720       89898 :     WRITE_NODE_FIELD(arbiterIndexes);
    4721       89898 :     WRITE_NODE_FIELD(onConflictSet);
    4722       89898 :     WRITE_NODE_FIELD(onConflictCols);
    4723       89898 :     WRITE_NODE_FIELD(onConflictWhere);
    4724       89898 :     WRITE_UINT_FIELD(exclRelRTI);
    4725       89898 :     WRITE_NODE_FIELD(exclRelTlist);
    4726       89898 :     WRITE_NODE_FIELD(mergeActionLists);
    4727       89898 :     WRITE_NODE_FIELD(mergeJoinConditions);
    4728       89898 : }
    4729             : 
    4730             : static void
    4731       13594 : _outAppend(StringInfo str, const Append *node)
    4732             : {
    4733       13594 :     WRITE_NODE_TYPE("APPEND");
    4734             : 
    4735       13594 :     WRITE_FLOAT_FIELD(plan.startup_cost);
    4736       13594 :     WRITE_FLOAT_FIELD(plan.total_cost);
    4737       13594 :     WRITE_FLOAT_FIELD(plan.plan_rows);
    4738       13594 :     WRITE_INT_FIELD(plan.plan_width);
    4739       13594 :     WRITE_BOOL_FIELD(plan.parallel_aware);
    4740       13594 :     WRITE_BOOL_FIELD(plan.parallel_safe);
    4741       13594 :     WRITE_BOOL_FIELD(plan.async_capable);
    4742       13594 :     WRITE_INT_FIELD(plan.plan_node_id);
    4743       13594 :     WRITE_NODE_FIELD(plan.targetlist);
    4744       13594 :     WRITE_NODE_FIELD(plan.qual);
    4745       13594 :     WRITE_NODE_FIELD(plan.lefttree);
    4746       13594 :     WRITE_NODE_FIELD(plan.righttree);
    4747       13594 :     WRITE_NODE_FIELD(plan.initPlan);
    4748       13594 :     WRITE_BITMAPSET_FIELD(plan.extParam);
    4749       13594 :     WRITE_BITMAPSET_FIELD(plan.allParam);
    4750       13594 :     WRITE_BITMAPSET_FIELD(apprelids);
    4751       13594 :     WRITE_NODE_FIELD(appendplans);
    4752       13594 :     WRITE_INT_FIELD(nasyncplans);
    4753       13594 :     WRITE_INT_FIELD(first_partial_plan);
    4754       13594 :     WRITE_NODE_FIELD(part_prune_info);
    4755       13594 : }
    4756             : 
    4757             : static void
    4758         466 : _outMergeAppend(StringInfo str, const MergeAppend *node)
    4759             : {
    4760         466 :     WRITE_NODE_TYPE("MERGEAPPEND");
    4761             : 
    4762         466 :     WRITE_FLOAT_FIELD(plan.startup_cost);
    4763         466 :     WRITE_FLOAT_FIELD(plan.total_cost);
    4764         466 :     WRITE_FLOAT_FIELD(plan.plan_rows);
    4765         466 :     WRITE_INT_FIELD(plan.plan_width);
    4766         466 :     WRITE_BOOL_FIELD(plan.parallel_aware);
    4767         466 :     WRITE_BOOL_FIELD(plan.parallel_safe);
    4768         466 :     WRITE_BOOL_FIELD(plan.async_capable);
    4769         466 :     WRITE_INT_FIELD(plan.plan_node_id);
    4770         466 :     WRITE_NODE_FIELD(plan.targetlist);
    4771         466 :     WRITE_NODE_FIELD(plan.qual);
    4772         466 :     WRITE_NODE_FIELD(plan.lefttree);
    4773         466 :     WRITE_NODE_FIELD(plan.righttree);
    4774         466 :     WRITE_NODE_FIELD(plan.initPlan);
    4775         466 :     WRITE_BITMAPSET_FIELD(plan.extParam);
    4776         466 :     WRITE_BITMAPSET_FIELD(plan.allParam);
    4777         466 :     WRITE_BITMAPSET_FIELD(apprelids);
    4778         466 :     WRITE_NODE_FIELD(mergeplans);
    4779         466 :     WRITE_INT_FIELD(numCols);
    4780         466 :     WRITE_ATTRNUMBER_ARRAY(sortColIdx, node->numCols);
    4781         466 :     WRITE_OID_ARRAY(sortOperators, node->numCols);
    4782         466 :     WRITE_OID_ARRAY(collations, node->numCols);
    4783         466 :     WRITE_BOOL_ARRAY(nullsFirst, node->numCols);
    4784         466 :     WRITE_NODE_FIELD(part_prune_info);
    4785         466 : }
    4786             : 
    4787             : static void
    4788         800 : _outRecursiveUnion(StringInfo str, const RecursiveUnion *node)
    4789             : {
    4790         800 :     WRITE_NODE_TYPE("RECURSIVEUNION");
    4791             : 
    4792         800 :     WRITE_FLOAT_FIELD(plan.startup_cost);
    4793         800 :     WRITE_FLOAT_FIELD(plan.total_cost);
    4794         800 :     WRITE_FLOAT_FIELD(plan.plan_rows);
    4795         800 :     WRITE_INT_FIELD(plan.plan_width);
    4796         800 :     WRITE_BOOL_FIELD(plan.parallel_aware);
    4797         800 :     WRITE_BOOL_FIELD(plan.parallel_safe);
    4798         800 :     WRITE_BOOL_FIELD(plan.async_capable);
    4799         800 :     WRITE_INT_FIELD(plan.plan_node_id);
    4800         800 :     WRITE_NODE_FIELD(plan.targetlist);
    4801         800 :     WRITE_NODE_FIELD(plan.qual);
    4802         800 :     WRITE_NODE_FIELD(plan.lefttree);
    4803         800 :     WRITE_NODE_FIELD(plan.righttree);
    4804         800 :     WRITE_NODE_FIELD(plan.initPlan);
    4805         800 :     WRITE_BITMAPSET_FIELD(plan.extParam);
    4806         800 :     WRITE_BITMAPSET_FIELD(plan.allParam);
    4807         800 :     WRITE_INT_FIELD(wtParam);
    4808         800 :     WRITE_INT_FIELD(numCols);
    4809         800 :     WRITE_ATTRNUMBER_ARRAY(dupColIdx, node->numCols);
    4810         800 :     WRITE_OID_ARRAY(dupOperators, node->numCols);
    4811         800 :     WRITE_OID_ARRAY(dupCollations, node->numCols);
    4812         800 :     WRITE_LONG_FIELD(numGroups);
    4813         800 : }
    4814             : 
    4815             : static void
    4816         104 : _outBitmapAnd(StringInfo str, const BitmapAnd *node)
    4817             : {
    4818         104 :     WRITE_NODE_TYPE("BITMAPAND");
    4819             : 
    4820         104 :     WRITE_FLOAT_FIELD(plan.startup_cost);
    4821         104 :     WRITE_FLOAT_FIELD(plan.total_cost);
    4822         104 :     WRITE_FLOAT_FIELD(plan.plan_rows);
    4823         104 :     WRITE_INT_FIELD(plan.plan_width);
    4824         104 :     WRITE_BOOL_FIELD(plan.parallel_aware);
    4825         104 :     WRITE_BOOL_FIELD(plan.parallel_safe);
    4826         104 :     WRITE_BOOL_FIELD(plan.async_capable);
    4827         104 :     WRITE_INT_FIELD(plan.plan_node_id);
    4828         104 :     WRITE_NODE_FIELD(plan.targetlist);
    4829         104 :     WRITE_NODE_FIELD(plan.qual);
    4830         104 :     WRITE_NODE_FIELD(plan.lefttree);
    4831         104 :     WRITE_NODE_FIELD(plan.righttree);
    4832         104 :     WRITE_NODE_FIELD(plan.initPlan);
    4833         104 :     WRITE_BITMAPSET_FIELD(plan.extParam);
    4834         104 :     WRITE_BITMAPSET_FIELD(plan.allParam);
    4835         104 :     WRITE_NODE_FIELD(bitmapplans);
    4836         104 : }
    4837             : 
    4838             : static void
    4839         288 : _outBitmapOr(StringInfo str, const BitmapOr *node)
    4840             : {
    4841         288 :     WRITE_NODE_TYPE("BITMAPOR");
    4842             : 
    4843         288 :     WRITE_FLOAT_FIELD(plan.startup_cost);
    4844         288 :     WRITE_FLOAT_FIELD(plan.total_cost);
    4845         288 :     WRITE_FLOAT_FIELD(plan.plan_rows);
    4846         288 :     WRITE_INT_FIELD(plan.plan_width);
    4847         288 :     WRITE_BOOL_FIELD(plan.parallel_aware);
    4848         288 :     WRITE_BOOL_FIELD(plan.parallel_safe);
    4849         288 :     WRITE_BOOL_FIELD(plan.async_capable);
    4850         288 :     WRITE_INT_FIELD(plan.plan_node_id);
    4851         288 :     WRITE_NODE_FIELD(plan.targetlist);
    4852         288 :     WRITE_NODE_FIELD(plan.qual);
    4853         288 :     WRITE_NODE_FIELD(plan.lefttree);
    4854         288 :     WRITE_NODE_FIELD(plan.righttree);
    4855         288 :     WRITE_NODE_FIELD(plan.initPlan);
    4856         288 :     WRITE_BITMAPSET_FIELD(plan.extParam);
    4857         288 :     WRITE_BITMAPSET_FIELD(plan.allParam);
    4858         288 :     WRITE_BOOL_FIELD(isshared);
    4859         288 :     WRITE_NODE_FIELD(bitmapplans);
    4860         288 : }
    4861             : 
    4862             : static void
    4863      181294 : _outSeqScan(StringInfo str, const SeqScan *node)
    4864             : {
    4865      181294 :     WRITE_NODE_TYPE("SEQSCAN");
    4866             : 
    4867      181294 :     WRITE_FLOAT_FIELD(scan.plan.startup_cost);
    4868      181294 :     WRITE_FLOAT_FIELD(scan.plan.total_cost);
    4869      181294 :     WRITE_FLOAT_FIELD(scan.plan.plan_rows);
    4870      181294 :     WRITE_INT_FIELD(scan.plan.plan_width);
    4871      181294 :     WRITE_BOOL_FIELD(scan.plan.parallel_aware);
    4872      181294 :     WRITE_BOOL_FIELD(scan.plan.parallel_safe);
    4873      181294 :     WRITE_BOOL_FIELD(scan.plan.async_capable);
    4874      181294 :     WRITE_INT_FIELD(scan.plan.plan_node_id);
    4875      181294 :     WRITE_NODE_FIELD(scan.plan.targetlist);
    4876      181294 :     WRITE_NODE_FIELD(scan.plan.qual);
    4877      181294 :     WRITE_NODE_FIELD(scan.plan.lefttree);
    4878      181294 :     WRITE_NODE_FIELD(scan.plan.righttree);
    4879      181294 :     WRITE_NODE_FIELD(scan.plan.initPlan);
    4880      181294 :     WRITE_BITMAPSET_FIELD(scan.plan.extParam);
    4881      181294 :     WRITE_BITMAPSET_FIELD(scan.plan.allParam);
    4882      181294 :     WRITE_UINT_FIELD(scan.scanrelid);
    4883      181294 : }
    4884             : 
    4885             : static void
    4886         300 : _outSampleScan(StringInfo str, const SampleScan *node)
    4887             : {
    4888         300 :     WRITE_NODE_TYPE("SAMPLESCAN");
    4889             : 
    4890         300 :     WRITE_FLOAT_FIELD(scan.plan.startup_cost);
    4891         300 :     WRITE_FLOAT_FIELD(scan.plan.total_cost);
    4892         300 :     WRITE_FLOAT_FIELD(scan.plan.plan_rows);
    4893         300 :     WRITE_INT_FIELD(scan.plan.plan_width);
    4894         300 :     WRITE_BOOL_FIELD(scan.plan.parallel_aware);
    4895         300 :     WRITE_BOOL_FIELD(scan.plan.parallel_safe);
    4896         300 :     WRITE_BOOL_FIELD(scan.plan.async_capable);
    4897         300 :     WRITE_INT_FIELD(scan.plan.plan_node_id);
    4898         300 :     WRITE_NODE_FIELD(scan.plan.targetlist);
    4899         300 :     WRITE_NODE_FIELD(scan.plan.qual);
    4900         300 :     WRITE_NODE_FIELD(scan.plan.lefttree);
    4901         300 :     WRITE_NODE_FIELD(scan.plan.righttree);
    4902         300 :     WRITE_NODE_FIELD(scan.plan.initPlan);
    4903         300 :     WRITE_BITMAPSET_FIELD(scan.plan.extParam);
    4904         300 :     WRITE_BITMAPSET_FIELD(scan.plan.allParam);
    4905         300 :     WRITE_UINT_FIELD(scan.scanrelid);
    4906         300 :     WRITE_NODE_FIELD(tablesample);
    4907         300 : }
    4908             : 
    4909             : static void
    4910      127278 : _outIndexScan(StringInfo str, const IndexScan *node)
    4911             : {
    4912      127278 :     WRITE_NODE_TYPE("INDEXSCAN");
    4913             : 
    4914      127278 :     WRITE_FLOAT_FIELD(scan.plan.startup_cost);
    4915      127278 :     WRITE_FLOAT_FIELD(scan.plan.total_cost);
    4916      127278 :     WRITE_FLOAT_FIELD(scan.plan.plan_rows);
    4917      127278 :     WRITE_INT_FIELD(scan.plan.plan_width);
    4918      127278 :     WRITE_BOOL_FIELD(scan.plan.parallel_aware);
    4919      127278 :     WRITE_BOOL_FIELD(scan.plan.parallel_safe);
    4920      127278 :     WRITE_BOOL_FIELD(scan.plan.async_capable);
    4921      127278 :     WRITE_INT_FIELD(scan.plan.plan_node_id);
    4922      127278 :     WRITE_NODE_FIELD(scan.plan.targetlist);
    4923      127278 :     WRITE_NODE_FIELD(scan.plan.qual);
    4924      127278 :     WRITE_NODE_FIELD(scan.plan.lefttree);
    4925      127278 :     WRITE_NODE_FIELD(scan.plan.righttree);
    4926      127278 :     WRITE_NODE_FIELD(scan.plan.initPlan);
    4927      127278 :     WRITE_BITMAPSET_FIELD(scan.plan.extParam);
    4928      127278 :     WRITE_BITMAPSET_FIELD(scan.plan.allParam);
    4929      127278 :     WRITE_UINT_FIELD(scan.scanrelid);
    4930      127278 :     WRITE_OID_FIELD(indexid);
    4931      127278 :     WRITE_NODE_FIELD(indexqual);
    4932      127278 :     WRITE_NODE_FIELD(indexqualorig);
    4933      127278 :     WRITE_NODE_FIELD(indexorderby);
    4934      127278 :     WRITE_NODE_FIELD(indexorderbyorig);
    4935      127278 :     WRITE_NODE_FIELD(indexorderbyops);
    4936      127278 :     WRITE_ENUM_FIELD(indexorderdir, ScanDirection);
    4937      127278 : }
    4938             : 
    4939             : static void
    4940       14958 : _outIndexOnlyScan(StringInfo str, const IndexOnlyScan *node)
    4941             : {
    4942       14958 :     WRITE_NODE_TYPE("INDEXONLYSCAN");
    4943             : 
    4944       14958 :     WRITE_FLOAT_FIELD(scan.plan.startup_cost);
    4945       14958 :     WRITE_FLOAT_FIELD(scan.plan.total_cost);
    4946       14958 :     WRITE_FLOAT_FIELD(scan.plan.plan_rows);
    4947       14958 :     WRITE_INT_FIELD(scan.plan.plan_width);
    4948       14958 :     WRITE_BOOL_FIELD(scan.plan.parallel_aware);
    4949       14958 :     WRITE_BOOL_FIELD(scan.plan.parallel_safe);
    4950       14958 :     WRITE_BOOL_FIELD(scan.plan.async_capable);
    4951       14958 :     WRITE_INT_FIELD(scan.plan.plan_node_id);
    4952       14958 :     WRITE_NODE_FIELD(scan.plan.targetlist);
    4953       14958 :     WRITE_NODE_FIELD(scan.plan.qual);
    4954       14958 :     WRITE_NODE_FIELD(scan.plan.lefttree);
    4955       14958 :     WRITE_NODE_FIELD(scan.plan.righttree);
    4956       14958 :     WRITE_NODE_FIELD(scan.plan.initPlan);
    4957       14958 :     WRITE_BITMAPSET_FIELD(scan.plan.extParam);
    4958       14958 :     WRITE_BITMAPSET_FIELD(scan.plan.allParam);
    4959       14958 :     WRITE_UINT_FIELD(scan.scanrelid);
    4960       14958 :     WRITE_OID_FIELD(indexid);
    4961       14958 :     WRITE_NODE_FIELD(indexqual);
    4962       14958 :     WRITE_NODE_FIELD(recheckqual);
    4963       14958 :     WRITE_NODE_FIELD(indexorderby);
    4964       14958 :     WRITE_NODE_FIELD(indextlist);
    4965       14958 :     WRITE_ENUM_FIELD(indexorderdir, ScanDirection);
    4966       14958 : }
    4967             : 
    4968             : static void
    4969       21530 : _outBitmapIndexScan(StringInfo str, const BitmapIndexScan *node)
    4970             : {
    4971       21530 :     WRITE_NODE_TYPE("BITMAPINDEXSCAN");
    4972             : 
    4973       21530 :     WRITE_FLOAT_FIELD(scan.plan.startup_cost);
    4974       21530 :     WRITE_FLOAT_FIELD(scan.plan.total_cost);
    4975       21530 :     WRITE_FLOAT_FIELD(scan.plan.plan_rows);
    4976       21530 :     WRITE_INT_FIELD(scan.plan.plan_width);
    4977       21530 :     WRITE_BOOL_FIELD(scan.plan.parallel_aware);
    4978       21530 :     WRITE_BOOL_FIELD(scan.plan.parallel_safe);
    4979       21530 :     WRITE_BOOL_FIELD(scan.plan.async_capable);
    4980       21530 :     WRITE_INT_FIELD(scan.plan.plan_node_id);
    4981       21530 :     WRITE_NODE_FIELD(scan.plan.targetlist);
    4982       21530 :     WRITE_NODE_FIELD(scan.plan.qual);
    4983       21530 :     WRITE_NODE_FIELD(scan.plan.lefttree);
    4984       21530 :     WRITE_NODE_FIELD(scan.plan.righttree);
    4985       21530 :     WRITE_NODE_FIELD(scan.plan.initPlan);
    4986       21530 :     WRITE_BITMAPSET_FIELD(scan.plan.extParam);
    4987       21530 :     WRITE_BITMAPSET_FIELD(scan.plan.allParam);
    4988       21530 :     WRITE_UINT_FIELD(scan.scanrelid);
    4989       21530 :     WRITE_OID_FIELD(indexid);
    4990       21530 :     WRITE_BOOL_FIELD(isshared);
    4991       21530 :     WRITE_NODE_FIELD(indexqual);
    4992       21530 :     WRITE_NODE_FIELD(indexqualorig);
    4993       21530 : }
    4994             : 
    4995             : static void
    4996       21084 : _outBitmapHeapScan(StringInfo str, const BitmapHeapScan *node)
    4997             : {
    4998       21084 :     WRITE_NODE_TYPE("BITMAPHEAPSCAN");
    4999             : 
    5000       21084 :     WRITE_FLOAT_FIELD(scan.plan.startup_cost);
    5001       21084 :     WRITE_FLOAT_FIELD(scan.plan.total_cost);
    5002       21084 :     WRITE_FLOAT_FIELD(scan.plan.plan_rows);
    5003       21084 :     WRITE_INT_FIELD(scan.plan.plan_width);
    5004       21084 :     WRITE_BOOL_FIELD(scan.plan.parallel_aware);
    5005       21084 :     WRITE_BOOL_FIELD(scan.plan.parallel_safe);
    5006       21084 :     WRITE_BOOL_FIELD(scan.plan.async_capable);
    5007       21084 :     WRITE_INT_FIELD(scan.plan.plan_node_id);
    5008       21084 :     WRITE_NODE_FIELD(scan.plan.targetlist);
    5009       21084 :     WRITE_NODE_FIELD(scan.plan.qual);
    5010       21084 :     WRITE_NODE_FIELD(scan.plan.lefttree);
    5011       21084 :     WRITE_NODE_FIELD(scan.plan.righttree);
    5012       21084 :     WRITE_NODE_FIELD(scan.plan.initPlan);
    5013       21084 :     WRITE_BITMAPSET_FIELD(scan.plan.extParam);
    5014       21084 :     WRITE_BITMAPSET_FIELD(scan.plan.allParam);
    5015       21084 :     WRITE_UINT_FIELD(scan.scanrelid);
    5016       21084 :     WRITE_NODE_FIELD(bitmapqualorig);
    5017       21084 : }
    5018             : 
    5019             : static void
    5020         636 : _outTidScan(StringInfo str, const TidScan *node)
    5021             : {
    5022         636 :     WRITE_NODE_TYPE("TIDSCAN");
    5023             : 
    5024         636 :     WRITE_FLOAT_FIELD(scan.plan.startup_cost);
    5025         636 :     WRITE_FLOAT_FIELD(scan.plan.total_cost);
    5026         636 :     WRITE_FLOAT_FIELD(scan.plan.plan_rows);
    5027         636 :     WRITE_INT_FIELD(scan.plan.plan_width);
    5028         636 :     WRITE_BOOL_FIELD(scan.plan.parallel_aware);
    5029         636 :     WRITE_BOOL_FIELD(scan.plan.parallel_safe);
    5030         636 :     WRITE_BOOL_FIELD(scan.plan.async_capable);
    5031         636 :     WRITE_INT_FIELD(scan.plan.plan_node_id);
    5032         636 :     WRITE_NODE_FIELD(scan.plan.targetlist);
    5033         636 :     WRITE_NODE_FIELD(scan.plan.qual);
    5034         636 :     WRITE_NODE_FIELD(scan.plan.lefttree);
    5035         636 :     WRITE_NODE_FIELD(scan.plan.righttree);
    5036         636 :     WRITE_NODE_FIELD(scan.plan.initPlan);
    5037         636 :     WRITE_BITMAPSET_FIELD(scan.plan.extParam);
    5038         636 :     WRITE_BITMAPSET_FIELD(scan.plan.allParam);
    5039         636 :     WRITE_UINT_FIELD(scan.scanrelid);
    5040         636 :     WRITE_NODE_FIELD(tidquals);
    5041         636 : }
    5042             : 
    5043             : static void
    5044         202 : _outTidRangeScan(StringInfo str, const TidRangeScan *node)
    5045             : {
    5046         202 :     WRITE_NODE_TYPE("TIDRANGESCAN");
    5047             : 
    5048         202 :     WRITE_FLOAT_FIELD(scan.plan.startup_cost);
    5049         202 :     WRITE_FLOAT_FIELD(scan.plan.total_cost);
    5050         202 :     WRITE_FLOAT_FIELD(scan.plan.plan_rows);
    5051         202 :     WRITE_INT_FIELD(scan.plan.plan_width);
    5052         202 :     WRITE_BOOL_FIELD(scan.plan.parallel_aware);
    5053         202 :     WRITE_BOOL_FIELD(scan.plan.parallel_safe);
    5054         202 :     WRITE_BOOL_FIELD(scan.plan.async_capable);
    5055         202 :     WRITE_INT_FIELD(scan.plan.plan_node_id);
    5056         202 :     WRITE_NODE_FIELD(scan.plan.targetlist);
    5057         202 :     WRITE_NODE_FIELD(scan.plan.qual);
    5058         202 :     WRITE_NODE_FIELD(scan.plan.lefttree);
    5059         202 :     WRITE_NODE_FIELD(scan.plan.righttree);
    5060         202 :     WRITE_NODE_FIELD(scan.plan.initPlan);
    5061         202 :     WRITE_BITMAPSET_FIELD(scan.plan.extParam);
    5062         202 :     WRITE_BITMAPSET_FIELD(scan.plan.allParam);
    5063         202 :     WRITE_UINT_FIELD(scan.scanrelid);
    5064         202 :     WRITE_NODE_FIELD(tidrangequals);
    5065         202 : }
    5066             : 
    5067             : static void
    5068       10532 : _outSubqueryScan(StringInfo str, const SubqueryScan *node)
    5069             : {
    5070       10532 :     WRITE_NODE_TYPE("SUBQUERYSCAN");
    5071             : 
    5072       10532 :     WRITE_FLOAT_FIELD(scan.plan.startup_cost);
    5073       10532 :     WRITE_FLOAT_FIELD(scan.plan.total_cost);
    5074       10532 :     WRITE_FLOAT_FIELD(scan.plan.plan_rows);
    5075       10532 :     WRITE_INT_FIELD(scan.plan.plan_width);
    5076       10532 :     WRITE_BOOL_FIELD(scan.plan.parallel_aware);
    5077       10532 :     WRITE_BOOL_FIELD(scan.plan.parallel_safe);
    5078       10532 :     WRITE_BOOL_FIELD(scan.plan.async_capable);
    5079       10532 :     WRITE_INT_FIELD(scan.plan.plan_node_id);
    5080       10532 :     WRITE_NODE_FIELD(scan.plan.targetlist);
    5081       10532 :     WRITE_NODE_FIELD(scan.plan.qual);
    5082       10532 :     WRITE_NODE_FIELD(scan.plan.lefttree);
    5083       10532 :     WRITE_NODE_FIELD(scan.plan.righttree);
    5084       10532 :     WRITE_NODE_FIELD(scan.plan.initPlan);
    5085       10532 :     WRITE_BITMAPSET_FIELD(scan.plan.extParam);
    5086       10532 :     WRITE_BITMAPSET_FIELD(scan.plan.allParam);
    5087       10532 :     WRITE_UINT_FIELD(scan.scanrelid);
    5088       10532 :     WRITE_NODE_FIELD(subplan);
    5089       10532 :     WRITE_ENUM_FIELD(scanstatus, SubqueryScanStatus);
    5090       10532 : }
    5091             : 
    5092             : static void
    5093       39646 : _outFunctionScan(StringInfo str, const FunctionScan *node)
    5094             : {
    5095       39646 :     WRITE_NODE_TYPE("FUNCTIONSCAN");
    5096             : 
    5097       39646 :     WRITE_FLOAT_FIELD(scan.plan.startup_cost);
    5098       39646 :     WRITE_FLOAT_FIELD(scan.plan.total_cost);
    5099       39646 :     WRITE_FLOAT_FIELD(scan.plan.plan_rows);
    5100       39646 :     WRITE_INT_FIELD(scan.plan.plan_width);
    5101       39646 :     WRITE_BOOL_FIELD(scan.plan.parallel_aware);
    5102       39646 :     WRITE_BOOL_FIELD(scan.plan.parallel_safe);
    5103       39646 :     WRITE_BOOL_FIELD(scan.plan.async_capable);
    5104       39646 :     WRITE_INT_FIELD(scan.plan.plan_node_id);
    5105       39646 :     WRITE_NODE_FIELD(scan.plan.targetlist);
    5106       39646 :     WRITE_NODE_FIELD(scan.plan.qual);
    5107       39646 :     WRITE_NODE_FIELD(scan.plan.lefttree);
    5108       39646 :     WRITE_NODE_FIELD(scan.plan.righttree);
    5109       39646 :     WRITE_NODE_FIELD(scan.plan.initPlan);
    5110       39646 :     WRITE_BITMAPSET_FIELD(scan.plan.extParam);
    5111       39646 :     WRITE_BITMAPSET_FIELD(scan.plan.allParam);
    5112       39646 :     WRITE_UINT_FIELD(scan.scanrelid);
    5113       39646 :     WRITE_NODE_FIELD(functions);
    5114       39646 :     WRITE_BOOL_FIELD(funcordinality);
    5115       39646 : }
    5116             : 
    5117             : static void
    5118        7734 : _outValuesScan(StringInfo str, const ValuesScan *node)
    5119             : {
    5120        7734 :     WRITE_NODE_TYPE("VALUESSCAN");
    5121             : 
    5122        7734 :     WRITE_FLOAT_FIELD(scan.plan.startup_cost);
    5123        7734 :     WRITE_FLOAT_FIELD(scan.plan.total_cost);
    5124        7734 :     WRITE_FLOAT_FIELD(scan.plan.plan_rows);
    5125        7734 :     WRITE_INT_FIELD(scan.plan.plan_width);
    5126        7734 :     WRITE_BOOL_FIELD(scan.plan.parallel_aware);
    5127        7734 :     WRITE_BOOL_FIELD(scan.plan.parallel_safe);
    5128        7734 :     WRITE_BOOL_FIELD(scan.plan.async_capable);
    5129        7734 :     WRITE_INT_FIELD(scan.plan.plan_node_id);
    5130        7734 :     WRITE_NODE_FIELD(scan.plan.targetlist);
    5131        7734 :     WRITE_NODE_FIELD(scan.plan.qual);
    5132        7734 :     WRITE_NODE_FIELD(scan.plan.lefttree);
    5133        7734 :     WRITE_NODE_FIELD(scan.plan.righttree);
    5134        7734 :     WRITE_NODE_FIELD(scan.plan.initPlan);
    5135        7734 :     WRITE_BITMAPSET_FIELD(scan.plan.extParam);
    5136        7734 :     WRITE_BITMAPSET_FIELD(scan.plan.allParam);
    5137        7734 :     WRITE_UINT_FIELD(scan.scanrelid);
    5138        7734 :     WRITE_NODE_FIELD(values_lists);
    5139        7734 : }
    5140             : 
    5141             : static void
    5142         548 : _outTableFuncScan(StringInfo str, const TableFuncScan *node)
    5143             : {
    5144         548 :     WRITE_NODE_TYPE("TABLEFUNCSCAN");
    5145             : 
    5146         548 :     WRITE_FLOAT_FIELD(scan.plan.startup_cost);
    5147         548 :     WRITE_FLOAT_FIELD(scan.plan.total_cost);
    5148         548 :     WRITE_FLOAT_FIELD(scan.plan.plan_rows);
    5149         548 :     WRITE_INT_FIELD(scan.plan.plan_width);
    5150         548 :     WRITE_BOOL_FIELD(scan.plan.parallel_aware);
    5151         548 :     WRITE_BOOL_FIELD(scan.plan.parallel_safe);
    5152         548 :     WRITE_BOOL_FIELD(scan.plan.async_capable);
    5153         548 :     WRITE_INT_FIELD(scan.plan.plan_node_id);
    5154         548 :     WRITE_NODE_FIELD(scan.plan.targetlist);
    5155         548 :     WRITE_NODE_FIELD(scan.plan.qual);
    5156         548 :     WRITE_NODE_FIELD(scan.plan.lefttree);
    5157         548 :     WRITE_NODE_FIELD(scan.plan.righttree);
    5158         548 :     WRITE_NODE_FIELD(scan.plan.initPlan);
    5159         548 :     WRITE_BITMAPSET_FIELD(scan.plan.extParam);
    5160         548 :     WRITE_BITMAPSET_FIELD(scan.plan.allParam);
    5161         548 :     WRITE_UINT_FIELD(scan.scanrelid);
    5162         548 :     WRITE_NODE_FIELD(tablefunc);
    5163         548 : }
    5164             : 
    5165             : static void
    5166        3200 : _outCteScan(StringInfo str, const CteScan *node)
    5167             : {
    5168        3200 :     WRITE_NODE_TYPE("CTESCAN");
    5169             : 
    5170        3200 :     WRITE_FLOAT_FIELD(scan.plan.startup_cost);
    5171        3200 :     WRITE_FLOAT_FIELD(scan.plan.total_cost);
    5172        3200 :     WRITE_FLOAT_FIELD(scan.plan.plan_rows);
    5173        3200 :     WRITE_INT_FIELD(scan.plan.plan_width);
    5174        3200 :     WRITE_BOOL_FIELD(scan.plan.parallel_aware);
    5175        3200 :     WRITE_BOOL_FIELD(scan.plan.parallel_safe);
    5176        3200 :     WRITE_BOOL_FIELD(scan.plan.async_capable);
    5177        3200 :     WRITE_INT_FIELD(scan.plan.plan_node_id);
    5178        3200 :     WRITE_NODE_FIELD(scan.plan.targetlist);
    5179        3200 :     WRITE_NODE_FIELD(scan.plan.qual);
    5180        3200 :     WRITE_NODE_FIELD(scan.plan.lefttree);
    5181        3200 :     WRITE_NODE_FIELD(scan.plan.righttree);
    5182        3200 :     WRITE_NODE_FIELD(scan.plan.initPlan);
    5183        3200 :     WRITE_BITMAPSET_FIELD(scan.plan.extParam);
    5184        3200 :     WRITE_BITMAPSET_FIELD(scan.plan.allParam);
    5185        3200 :     WRITE_UINT_FIELD(scan.scanrelid);
    5186        3200 :     WRITE_INT_FIELD(ctePlanId);
    5187        3200 :     WRITE_INT_FIELD(cteParam);
    5188        3200 : }
    5189             : 
    5190             : static void
    5191         438 : _outNamedTuplestoreScan(StringInfo str, const NamedTuplestoreScan *node)
    5192             : {
    5193         438 :     WRITE_NODE_TYPE("NAMEDTUPLESTORESCAN");
    5194             : 
    5195         438 :     WRITE_FLOAT_FIELD(scan.plan.startup_cost);
    5196         438 :     WRITE_FLOAT_FIELD(scan.plan.total_cost);
    5197         438 :     WRITE_FLOAT_FIELD(scan.plan.plan_rows);
    5198         438 :     WRITE_INT_FIELD(scan.plan.plan_width);
    5199         438 :     WRITE_BOOL_FIELD(scan.plan.parallel_aware);
    5200         438 :     WRITE_BOOL_FIELD(scan.plan.parallel_safe);
    5201         438 :     WRITE_BOOL_FIELD(scan.plan.async_capable);
    5202         438 :     WRITE_INT_FIELD(scan.plan.plan_node_id);
    5203         438 :     WRITE_NODE_FIELD(scan.plan.targetlist);
    5204         438 :     WRITE_NODE_FIELD(scan.plan.qual);
    5205         438 :     WRITE_NODE_FIELD(scan.plan.lefttree);
    5206         438 :     WRITE_NODE_FIELD(scan.plan.righttree);
    5207         438 :     WRITE_NODE_FIELD(scan.plan.initPlan);
    5208         438 :     WRITE_BITMAPSET_FIELD(scan.plan.extParam);
    5209         438 :     WRITE_BITMAPSET_FIELD(scan.plan.allParam);
    5210         438 :     WRITE_UINT_FIELD(scan.scanrelid);
    5211         438 :     WRITE_STRING_FIELD(enrname);
    5212         438 : }
    5213             : 
    5214             : static void
    5215         800 : _outWorkTableScan(StringInfo str, const WorkTableScan *node)
    5216             : {
    5217         800 :     WRITE_NODE_TYPE("WORKTABLESCAN");
    5218             : 
    5219         800 :     WRITE_FLOAT_FIELD(scan.plan.startup_cost);
    5220         800 :     WRITE_FLOAT_FIELD(scan.plan.total_cost);
    5221         800 :     WRITE_FLOAT_FIELD(scan.plan.plan_rows);
    5222         800 :     WRITE_INT_FIELD(scan.plan.plan_width);
    5223         800 :     WRITE_BOOL_FIELD(scan.plan.parallel_aware);
    5224         800 :     WRITE_BOOL_FIELD(scan.plan.parallel_safe);
    5225         800 :     WRITE_BOOL_FIELD(scan.plan.async_capable);
    5226         800 :     WRITE_INT_FIELD(scan.plan.plan_node_id);
    5227         800 :     WRITE_NODE_FIELD(scan.plan.targetlist);
    5228         800 :     WRITE_NODE_FIELD(scan.plan.qual);
    5229         800 :     WRITE_NODE_FIELD(scan.plan.lefttree);
    5230         800 :     WRITE_NODE_FIELD(scan.plan.righttree);
    5231         800 :     WRITE_NODE_FIELD(scan.plan.initPlan);
    5232         800 :     WRITE_BITMAPSET_FIELD(scan.plan.extParam);
    5233         800 :     WRITE_BITMAPSET_FIELD(scan.plan.allParam);
    5234         800 :     WRITE_UINT_FIELD(scan.scanrelid);
    5235         800 :     WRITE_INT_FIELD(wtParam);
    5236         800 : }
    5237             : 
    5238             : static void
    5239        1930 : _outForeignScan(StringInfo str, const ForeignScan *node)
    5240             : {
    5241        1930 :     WRITE_NODE_TYPE("FOREIGNSCAN");
    5242             : 
    5243        1930 :     WRITE_FLOAT_FIELD(scan.plan.startup_cost);
    5244        1930 :     WRITE_FLOAT_FIELD(scan.plan.total_cost);
    5245        1930 :     WRITE_FLOAT_FIELD(scan.plan.plan_rows);
    5246        1930 :     WRITE_INT_FIELD(scan.plan.plan_width);
    5247        1930 :     WRITE_BOOL_FIELD(scan.plan.parallel_aware);
    5248        1930 :     WRITE_BOOL_FIELD(scan.plan.parallel_safe);
    5249        1930 :     WRITE_BOOL_FIELD(scan.plan.async_capable);
    5250        1930 :     WRITE_INT_FIELD(scan.plan.plan_node_id);
    5251        1930 :     WRITE_NODE_FIELD(scan.plan.targetlist);
    5252        1930 :     WRITE_NODE_FIELD(scan.plan.qual);
    5253        1930 :     WRITE_NODE_FIELD(scan.plan.lefttree);
    5254        1930 :     WRITE_NODE_FIELD(scan.plan.righttree);
    5255        1930 :     WRITE_NODE_FIELD(scan.plan.initPlan);
    5256        1930 :     WRITE_BITMAPSET_FIELD(scan.plan.extParam);
    5257        1930 :     WRITE_BITMAPSET_FIELD(scan.plan.allParam);
    5258        1930 :     WRITE_UINT_FIELD(scan.scanrelid);
    5259        1930 :     WRITE_ENUM_FIELD(operation, CmdType);
    5260        1930 :     WRITE_UINT_FIELD(resultRelation);
    5261        1930 :     WRITE_OID_FIELD(checkAsUser);
    5262        1930 :     WRITE_OID_FIELD(fs_server);
    5263        1930 :     WRITE_NODE_FIELD(fdw_exprs);
    5264        1930 :     WRITE_NODE_FIELD(fdw_private);
    5265        1930 :     WRITE_NODE_FIELD(fdw_scan_tlist);
    5266        1930 :     WRITE_NODE_FIELD(fdw_recheck_quals);
    5267        1930 :     WRITE_BITMAPSET_FIELD(fs_relids);
    5268        1930 :     WRITE_BITMAPSET_FIELD(fs_base_relids);
    5269        1930 :     WRITE_BOOL_FIELD(fsSystemCol);
    5270        1930 : }
    5271             : 
    5272             : static void
    5273           0 : _outCustomScan(StringInfo str, const CustomScan *node)
    5274             : {
    5275           0 :     WRITE_NODE_TYPE("CUSTOMSCAN");
    5276             : 
    5277           0 :     WRITE_FLOAT_FIELD(scan.plan.startup_cost);
    5278           0 :     WRITE_FLOAT_FIELD(scan.plan.total_cost);
    5279           0 :     WRITE_FLOAT_FIELD(scan.plan.plan_rows);
    5280           0 :     WRITE_INT_FIELD(scan.plan.plan_width);
    5281           0 :     WRITE_BOOL_FIELD(scan.plan.parallel_aware);
    5282           0 :     WRITE_BOOL_FIELD(scan.plan.parallel_safe);
    5283           0 :     WRITE_BOOL_FIELD(scan.plan.async_capable);
    5284           0 :     WRITE_INT_FIELD(scan.plan.plan_node_id);
    5285           0 :     WRITE_NODE_FIELD(scan.plan.targetlist);
    5286           0 :     WRITE_NODE_FIELD(scan.plan.qual);
    5287           0 :     WRITE_NODE_FIELD(scan.plan.lefttree);
    5288           0 :     WRITE_NODE_FIELD(scan.plan.righttree);
    5289           0 :     WRITE_NODE_FIELD(scan.plan.initPlan);
    5290           0 :     WRITE_BITMAPSET_FIELD(scan.plan.extParam);
    5291           0 :     WRITE_BITMAPSET_FIELD(scan.plan.allParam);
    5292           0 :     WRITE_UINT_FIELD(scan.scanrelid);
    5293           0 :     WRITE_UINT_FIELD(flags);
    5294           0 :     WRITE_NODE_FIELD(custom_plans);
    5295           0 :     WRITE_NODE_FIELD(custom_exprs);
    5296           0 :     WRITE_NODE_FIELD(custom_private);
    5297           0 :     WRITE_NODE_FIELD(custom_scan_tlist);
    5298           0 :     WRITE_BITMAPSET_FIELD(custom_relids);
    5299             : 
    5300             :     /* CustomName is a key to lookup CustomScanMethods */
    5301           0 :     appendStringInfoString(str, " :methods ");
    5302           0 :     outToken(str, node->methods->CustomName);
    5303           0 : }
    5304             : 
    5305             : static void
    5306       80076 : _outNestLoop(StringInfo str, const NestLoop *node)
    5307             : {
    5308       80076 :     WRITE_NODE_TYPE("NESTLOOP");
    5309             : 
    5310       80076 :     WRITE_FLOAT_FIELD(join.plan.startup_cost);
    5311       80076 :     WRITE_FLOAT_FIELD(join.plan.total_cost);
    5312       80076 :     WRITE_FLOAT_FIELD(join.plan.plan_rows);
    5313       80076 :     WRITE_INT_FIELD(join.plan.plan_width);
    5314       80076 :     WRITE_BOOL_FIELD(join.plan.parallel_aware);
    5315       80076 :     WRITE_BOOL_FIELD(join.plan.parallel_safe);
    5316       80076 :     WRITE_BOOL_FIELD(join.plan.async_capable);
    5317       80076 :     WRITE_INT_FIELD(join.plan.plan_node_id);
    5318       80076 :     WRITE_NODE_FIELD(join.plan.targetlist);
    5319       80076 :     WRITE_NODE_FIELD(join.plan.qual);
    5320       80076 :     WRITE_NODE_FIELD(join.plan.lefttree);
    5321       80076 :     WRITE_NODE_FIELD(join.plan.righttree);
    5322       80076 :     WRITE_NODE_FIELD(join.plan.initPlan);
    5323       80076 :     WRITE_BITMAPSET_FIELD(join.plan.extParam);
    5324       80076 :     WRITE_BITMAPSET_FIELD(join.plan.allParam);
    5325       80076 :     WRITE_ENUM_FIELD(join.jointype, JoinType);
    5326       80076 :     WRITE_BOOL_FIELD(join.inner_unique);
    5327       80076 :     WRITE_NODE_FIELD(join.joinqual);
    5328       80076 :     WRITE_NODE_FIELD(nestParams);
    5329       80076 : }
    5330             : 
    5331             : static void
    5332       46128 : _outNestLoopParam(StringInfo str, const NestLoopParam *node)
    5333             : {
    5334       46128 :     WRITE_NODE_TYPE("NESTLOOPPARAM");
    5335             : 
    5336       46128 :     WRITE_INT_FIELD(paramno);
    5337       46128 :     WRITE_NODE_FIELD(paramval);
    5338       46128 : }
    5339             : 
    5340             : static void
    5341        5698 : _outMergeJoin(StringInfo str, const MergeJoin *node)
    5342             : {
    5343        5698 :     WRITE_NODE_TYPE("MERGEJOIN");
    5344             : 
    5345        5698 :     WRITE_FLOAT_FIELD(join.plan.startup_cost);
    5346        5698 :     WRITE_FLOAT_FIELD(join.plan.total_cost);
    5347        5698 :     WRITE_FLOAT_FIELD(join.plan.plan_rows);
    5348        5698 :     WRITE_INT_FIELD(join.plan.plan_width);
    5349        5698 :     WRITE_BOOL_FIELD(join.plan.parallel_aware);
    5350        5698 :     WRITE_BOOL_FIELD(join.plan.parallel_safe);
    5351        5698 :     WRITE_BOOL_FIELD(join.plan.async_capable);
    5352        5698 :     WRITE_INT_FIELD(join.plan.plan_node_id);
    5353        5698 :     WRITE_NODE_FIELD(join.plan.targetlist);
    5354        5698 :     WRITE_NODE_FIELD(join.plan.qual);
    5355        5698 :     WRITE_NODE_FIELD(join.plan.lefttree);
    5356        5698 :     WRITE_NODE_FIELD(join.plan.righttree);
    5357        5698 :     WRITE_NODE_FIELD(join.plan.initPlan);
    5358        5698 :     WRITE_BITMAPSET_FIELD(join.plan.extParam);
    5359        5698 :     WRITE_BITMAPSET_FIELD(join.plan.allParam);
    5360        5698 :     WRITE_ENUM_FIELD(join.jointype, JoinType);
    5361        5698 :     WRITE_BOOL_FIELD(join.inner_unique);
    5362        5698 :     WRITE_NODE_FIELD(join.joinqual);
    5363        5698 :     WRITE_BOOL_FIELD(skip_mark_restore);
    5364        5698 :     WRITE_NODE_FIELD(mergeclauses);
    5365        5698 :     WRITE_OID_ARRAY(mergeFamilies, list_length(node->mergeclauses));
    5366        5698 :     WRITE_OID_ARRAY(mergeCollations, list_length(node->mergeclauses));
    5367        5698 :     WRITE_INT_ARRAY(mergeStrategies, list_length(node->mergeclauses));
    5368        5698 :     WRITE_BOOL_ARRAY(mergeNullsFirst, list_length(node->mergeclauses));
    5369        5698 : }
    5370             : 
    5371             : static void
    5372       29432 : _outHashJoin(StringInfo str, const HashJoin *node)
    5373             : {
    5374       29432 :     WRITE_NODE_TYPE("HASHJOIN");
    5375             : 
    5376       29432 :     WRITE_FLOAT_FIELD(join.plan.startup_cost);
    5377       29432 :     WRITE_FLOAT_FIELD(join.plan.total_cost);
    5378       29432 :     WRITE_FLOAT_FIELD(join.plan.plan_rows);
    5379       29432 :     WRITE_INT_FIELD(join.plan.plan_width);
    5380       29432 :     WRITE_BOOL_FIELD(join.plan.parallel_aware);
    5381       29432 :     WRITE_BOOL_FIELD(join.plan.parallel_safe);
    5382       29432 :     WRITE_BOOL_FIELD(join.plan.async_capable);
    5383       29432 :     WRITE_INT_FIELD(join.plan.plan_node_id);
    5384       29432 :     WRITE_NODE_FIELD(join.plan.targetlist);
    5385       29432 :     WRITE_NODE_FIELD(join.plan.qual);
    5386       29432 :     WRITE_NODE_FIELD(join.plan.lefttree);
    5387       29432 :     WRITE_NODE_FIELD(join.plan.righttree);
    5388       29432 :     WRITE_NODE_FIELD(join.plan.initPlan);
    5389       29432 :     WRITE_BITMAPSET_FIELD(join.plan.extParam);
    5390       29432 :     WRITE_BITMAPSET_FIELD(join.plan.allParam);
    5391       29432 :     WRITE_ENUM_FIELD(join.jointype, JoinType);
    5392       29432 :     WRITE_BOOL_FIELD(join.inner_unique);
    5393       29432 :     WRITE_NODE_FIELD(join.joinqual);
    5394       29432 :     WRITE_NODE_FIELD(hashclauses);
    5395       29432 :     WRITE_NODE_FIELD(hashoperators);
    5396       29432 :     WRITE_NODE_FIELD(hashcollations);
    5397       29432 :     WRITE_NODE_FIELD(hashkeys);
    5398       29432 : }
    5399             : 
    5400             : static void
    5401        3988 : _outMaterial(StringInfo str, const Material *node)
    5402             : {
    5403        3988 :     WRITE_NODE_TYPE("MATERIAL");
    5404             : 
    5405        3988 :     WRITE_FLOAT_FIELD(plan.startup_cost);
    5406        3988 :     WRITE_FLOAT_FIELD(plan.total_cost);
    5407        3988 :     WRITE_FLOAT_FIELD(plan.plan_rows);
    5408        3988 :     WRITE_INT_FIELD(plan.plan_width);
    5409        3988 :     WRITE_BOOL_FIELD(plan.parallel_aware);
    5410        3988 :     WRITE_BOOL_FIELD(plan.parallel_safe);
    5411        3988 :     WRITE_BOOL_FIELD(plan.async_capable);
    5412        3988 :     WRITE_INT_FIELD(plan.plan_node_id);
    5413        3988 :     WRITE_NODE_FIELD(plan.targetlist);
    5414        3988 :     WRITE_NODE_FIELD(plan.qual);
    5415        3988 :     WRITE_NODE_FIELD(plan.lefttree);
    5416        3988 :     WRITE_NODE_FIELD(plan.righttree);
    5417        3988 :     WRITE_NODE_FIELD(plan.initPlan);
    5418        3988 :     WRITE_BITMAPSET_FIELD(plan.extParam);
    5419        3988 :     WRITE_BITMAPSET_FIELD(plan.allParam);
    5420        3988 : }
    5421             : 
    5422             : static void
    5423        1346 : _outMemoize(StringInfo str, const Memoize *node)
    5424             : {
    5425        1346 :     WRITE_NODE_TYPE("MEMOIZE");
    5426             : 
    5427        1346 :     WRITE_FLOAT_FIELD(plan.startup_cost);
    5428        1346 :     WRITE_FLOAT_FIELD(plan.total_cost);
    5429        1346 :     WRITE_FLOAT_FIELD(plan.plan_rows);
    5430        1346 :     WRITE_INT_FIELD(plan.plan_width);
    5431        1346 :     WRITE_BOOL_FIELD(plan.parallel_aware);
    5432        1346 :     WRITE_BOOL_FIELD(plan.parallel_safe);
    5433        1346 :     WRITE_BOOL_FIELD(plan.async_capable);
    5434        1346 :     WRITE_INT_FIELD(plan.plan_node_id);
    5435        1346 :     WRITE_NODE_FIELD(plan.targetlist);
    5436        1346 :     WRITE_NODE_FIELD(plan.qual);
    5437        1346 :     WRITE_NODE_FIELD(plan.lefttree);
    5438        1346 :     WRITE_NODE_FIELD(plan.righttree);
    5439        1346 :     WRITE_NODE_FIELD(plan.initPlan);
    5440        1346 :     WRITE_BITMAPSET_FIELD(plan.extParam);
    5441        1346 :     WRITE_BITMAPSET_FIELD(plan.allParam);
    5442        1346 :     WRITE_INT_FIELD(numKeys);
    5443        1346 :     WRITE_OID_ARRAY(hashOperators, node->numKeys);
    5444        1346 :     WRITE_OID_ARRAY(collations, node->numKeys);
    5445        1346 :     WRITE_NODE_FIELD(param_exprs);
    5446        1346 :     WRITE_BOOL_FIELD(singlerow);
    5447        1346 :     WRITE_BOOL_FIELD(binary_mode);
    5448        1346 :     WRITE_UINT_FIELD(est_entries);
    5449        1346 :     WRITE_BITMAPSET_FIELD(keyparamids);
    5450        1346 : }
    5451             : 
    5452             : static void
    5453       61772 : _outSort(StringInfo str, const Sort *node)
    5454             : {
    5455       61772 :     WRITE_NODE_TYPE("SORT");
    5456             : 
    5457       61772 :     WRITE_FLOAT_FIELD(plan.startup_cost);
    5458       61772 :     WRITE_FLOAT_FIELD(plan.total_cost);
    5459       61772 :     WRITE_FLOAT_FIELD(plan.plan_rows);
    5460       61772 :     WRITE_INT_FIELD(plan.plan_width);
    5461       61772 :     WRITE_BOOL_FIELD(plan.parallel_aware);
    5462       61772 :     WRITE_BOOL_FIELD(plan.parallel_safe);
    5463       61772 :     WRITE_BOOL_FIELD(plan.async_capable);
    5464       61772 :     WRITE_INT_FIELD(plan.plan_node_id);
    5465       61772 :     WRITE_NODE_FIELD(plan.targetlist);
    5466       61772 :     WRITE_NODE_FIELD(plan.qual);
    5467       61772 :     WRITE_NODE_FIELD(plan.lefttree);
    5468       61772 :     WRITE_NODE_FIELD(plan.righttree);
    5469       61772 :     WRITE_NODE_FIELD(plan.initPlan);
    5470       61772 :     WRITE_BITMAPSET_FIELD(plan.extParam);
    5471       61772 :     WRITE_BITMAPSET_FIELD(plan.allParam);
    5472       61772 :     WRITE_INT_FIELD(numCols);
    5473       61772 :     WRITE_ATTRNUMBER_ARRAY(sortColIdx, node->numCols);
    5474       61772 :     WRITE_OID_ARRAY(sortOperators, node->numCols);
    5475       61772 :     WRITE_OID_ARRAY(collations, node->numCols);
    5476       61772 :     WRITE_BOOL_ARRAY(nullsFirst, node->numCols);
    5477       61772 : }
    5478             : 
    5479             : static void
    5480         656 : _outIncrementalSort(StringInfo str, const IncrementalSort *node)
    5481             : {
    5482         656 :     WRITE_NODE_TYPE("INCREMENTALSORT");
    5483             : 
    5484         656 :     WRITE_FLOAT_FIELD(sort.plan.startup_cost);
    5485         656 :     WRITE_FLOAT_FIELD(sort.plan.total_cost);
    5486         656 :     WRITE_FLOAT_FIELD(sort.plan.plan_rows);
    5487         656 :     WRITE_INT_FIELD(sort.plan.plan_width);
    5488         656 :     WRITE_BOOL_FIELD(sort.plan.parallel_aware);
    5489         656 :     WRITE_BOOL_FIELD(sort.plan.parallel_safe);
    5490         656 :     WRITE_BOOL_FIELD(sort.plan.async_capable);
    5491         656 :     WRITE_INT_FIELD(sort.plan.plan_node_id);
    5492         656 :     WRITE_NODE_FIELD(sort.plan.targetlist);
    5493         656 :     WRITE_NODE_FIELD(sort.plan.qual);
    5494         656 :     WRITE_NODE_FIELD(sort.plan.lefttree);
    5495         656 :     WRITE_NODE_FIELD(sort.plan.righttree);
    5496         656 :     WRITE_NODE_FIELD(sort.plan.initPlan);
    5497         656 :     WRITE_BITMAPSET_FIELD(sort.plan.extParam);
    5498         656 :     WRITE_BITMAPSET_FIELD(sort.plan.allParam);
    5499         656 :     WRITE_INT_FIELD(sort.numCols);
    5500         656 :     WRITE_ATTRNUMBER_ARRAY(sort.sortColIdx, node->sort.numCols);
    5501         656 :     WRITE_OID_ARRAY(sort.sortOperators, node->sort.numCols);
    5502         656 :     WRITE_OID_ARRAY(sort.collations, node->sort.numCols);
    5503         656 :     WRITE_BOOL_ARRAY(sort.nullsFirst, node->sort.numCols);
    5504         656 :     WRITE_INT_FIELD(nPresortedCols);
    5505         656 : }
    5506             : 
    5507             : static void
    5508         222 : _outGroup(StringInfo str, const Group *node)
    5509             : {
    5510         222 :     WRITE_NODE_TYPE("GROUP");
    5511             : 
    5512         222 :     WRITE_FLOAT_FIELD(plan.startup_cost);
    5513         222 :     WRITE_FLOAT_FIELD(plan.total_cost);
    5514         222 :     WRITE_FLOAT_FIELD(plan.plan_rows);
    5515         222 :     WRITE_INT_FIELD(plan.plan_width);
    5516         222 :     WRITE_BOOL_FIELD(plan.parallel_aware);
    5517         222 :     WRITE_BOOL_FIELD(plan.parallel_safe);
    5518         222 :     WRITE_BOOL_FIELD(plan.async_capable);
    5519         222 :     WRITE_INT_FIELD(plan.plan_node_id);
    5520         222 :     WRITE_NODE_FIELD(plan.targetlist);
    5521         222 :     WRITE_NODE_FIELD(plan.qual);
    5522         222 :     WRITE_NODE_FIELD(plan.lefttree);
    5523         222 :     WRITE_NODE_FIELD(plan.righttree);
    5524         222 :     WRITE_NODE_FIELD(plan.initPlan);
    5525         222 :     WRITE_BITMAPSET_FIELD(plan.extParam);
    5526         222 :     WRITE_BITMAPSET_FIELD(plan.allParam);
    5527         222 :     WRITE_INT_FIELD(numCols);
    5528         222 :     WRITE_ATTRNUMBER_ARRAY(grpColIdx, node->numCols);
    5529         222 :     WRITE_OID_ARRAY(grpOperators, node->numCols);
    5530         222 :     WRITE_OID_ARRAY(grpCollations, node->numCols);
    5531         222 : }
    5532             : 
    5533             : static void
    5534       37710 : _outAgg(StringInfo str, const Agg *node)
    5535             : {
    5536       37710 :     WRITE_NODE_TYPE("AGG");
    5537             : 
    5538       37710 :     WRITE_FLOAT_FIELD(plan.startup_cost);
    5539       37710 :     WRITE_FLOAT_FIELD(plan.total_cost);
    5540       37710 :     WRITE_FLOAT_FIELD(plan.plan_rows);
    5541       37710 :     WRITE_INT_FIELD(plan.plan_width);
    5542       37710 :     WRITE_BOOL_FIELD(plan.parallel_aware);
    5543       37710 :     WRITE_BOOL_FIELD(plan.parallel_safe);
    5544       37710 :     WRITE_BOOL_FIELD(plan.async_capable);
    5545       37710 :     WRITE_INT_FIELD(plan.plan_node_id);
    5546       37710 :     WRITE_NODE_FIELD(plan.targetlist);
    5547       37710 :     WRITE_NODE_FIELD(plan.qual);
    5548       37710 :     WRITE_NODE_FIELD(plan.lefttree);
    5549       37710 :     WRITE_NODE_FIELD(plan.righttree);
    5550       37710 :     WRITE_NODE_FIELD(plan.initPlan);
    5551       37710 :     WRITE_BITMAPSET_FIELD(plan.extParam);
    5552       37710 :     WRITE_BITMAPSET_FIELD(plan.allParam);
    5553       37710 :     WRITE_ENUM_FIELD(aggstrategy, AggStrategy);
    5554       37710 :     WRITE_ENUM_FIELD(aggsplit, AggSplit);
    5555       37710 :     WRITE_INT_FIELD(numCols);
    5556       37710 :     WRITE_ATTRNUMBER_ARRAY(grpColIdx, node->numCols);
    5557       37710 :     WRITE_OID_ARRAY(grpOperators, node->numCols);
    5558       37710 :     WRITE_OID_ARRAY(grpCollations, node->numCols);
    5559       37710 :     WRITE_LONG_FIELD(numGroups);
    5560       37710 :     WRITE_UINT64_FIELD(transitionSpace);
    5561       37710 :     WRITE_BITMAPSET_FIELD(aggParams);
    5562       37710 :     WRITE_NODE_FIELD(groupingSets);
    5563       37710 :     WRITE_NODE_FIELD(chain);
    5564       37710 : }
    5565             : 
    5566             : static void
    5567        2444 : _outWindowAgg(StringInfo str, const WindowAgg *node)
    5568             : {
    5569        2444 :     WRITE_NODE_TYPE("WINDOWAGG");
    5570             : 
    5571        2444 :     WRITE_FLOAT_FIELD(plan.startup_cost);
    5572        2444 :     WRITE_FLOAT_FIELD(plan.total_cost);
    5573        2444 :     WRITE_FLOAT_FIELD(plan.plan_rows);
    5574        2444 :     WRITE_INT_FIELD(plan.plan_width);
    5575        2444 :     WRITE_BOOL_FIELD(plan.parallel_aware);
    5576        2444 :     WRITE_BOOL_FIELD(plan.parallel_safe);
    5577        2444 :     WRITE_BOOL_FIELD(plan.async_capable);
    5578        2444 :     WRITE_INT_FIELD(plan.plan_node_id);
    5579        2444 :     WRITE_NODE_FIELD(plan.targetlist);
    5580        2444 :     WRITE_NODE_FIELD(plan.qual);
    5581        2444 :     WRITE_NODE_FIELD(plan.lefttree);
    5582        2444 :     WRITE_NODE_FIELD(plan.righttree);
    5583        2444 :     WRITE_NODE_FIELD(plan.initPlan);
    5584        2444 :     WRITE_BITMAPSET_FIELD(plan.extParam);
    5585        2444 :     WRITE_BITMAPSET_FIELD(plan.allParam);
    5586        2444 :     WRITE_UINT_FIELD(winref);
    5587        2444 :     WRITE_INT_FIELD(partNumCols);
    5588        2444 :     WRITE_ATTRNUMBER_ARRAY(partColIdx, node->partNumCols);
    5589        2444 :     WRITE_OID_ARRAY(partOperators, node->partNumCols);
    5590        2444 :     WRITE_OID_ARRAY(partCollations, node->partNumCols);
    5591        2444 :     WRITE_INT_FIELD(ordNumCols);
    5592        2444 :     WRITE_ATTRNUMBER_ARRAY(ordColIdx, node->ordNumCols);
    5593        2444 :     WRITE_OID_ARRAY(ordOperators, node->ordNumCols);
    5594        2444 :     WRITE_OID_ARRAY(ordCollations, node->ordNumCols);
    5595        2444 :     WRITE_INT_FIELD(frameOptions);
    5596        2444 :     WRITE_NODE_FIELD(startOffset);
    5597        2444 :     WRITE_NODE_FIELD(endOffset);
    5598        2444 :     WRITE_NODE_FIELD(runCondition);
    5599        2444 :     WRITE_NODE_FIELD(runConditionOrig);
    5600        2444 :     WRITE_OID_FIELD(startInRangeFunc);
    5601        2444 :     WRITE_OID_FIELD(endInRangeFunc);
    5602        2444 :     WRITE_OID_FIELD(inRangeColl);
    5603        2444 :     WRITE_BOOL_FIELD(inRangeAsc);
    5604        2444 :     WRITE_BOOL_FIELD(inRangeNullsFirst);
    5605        2444 :     WRITE_BOOL_FIELD(topWindow);
    5606        2444 : }
    5607             : 
    5608             : static void
    5609        4774 : _outUnique(StringInfo str, const Unique *node)
    5610             : {
    5611        4774 :     WRITE_NODE_TYPE("UNIQUE");
    5612             : 
    5613        4774 :     WRITE_FLOAT_FIELD(plan.startup_cost);
    5614        4774 :     WRITE_FLOAT_FIELD(plan.total_cost);
    5615        4774 :     WRITE_FLOAT_FIELD(plan.plan_rows);
    5616        4774 :     WRITE_INT_FIELD(plan.plan_width);
    5617        4774 :     WRITE_BOOL_FIELD(plan.parallel_aware);
    5618        4774 :     WRITE_BOOL_FIELD(plan.parallel_safe);
    5619        4774 :     WRITE_BOOL_FIELD(plan.async_capable);
    5620        4774 :     WRITE_INT_FIELD(plan.plan_node_id);
    5621        4774 :     WRITE_NODE_FIELD(plan.targetlist);
    5622        4774 :     WRITE_NODE_FIELD(plan.qual);
    5623        4774 :     WRITE_NODE_FIELD(plan.lefttree);
    5624        4774 :     WRITE_NODE_FIELD(plan.righttree);
    5625        4774 :     WRITE_NODE_FIELD(plan.initPlan);
    5626        4774 :     WRITE_BITMAPSET_FIELD(plan.extParam);
    5627        4774 :     WRITE_BITMAPSET_FIELD(plan.allParam);
    5628        4774 :     WRITE_INT_FIELD(numCols);
    5629        4774 :     WRITE_ATTRNUMBER_ARRAY(uniqColIdx, node->numCols);
    5630        4774 :     WRITE_OID_ARRAY(uniqOperators, node->numCols);
    5631        4774 :     WRITE_OID_ARRAY(uniqCollations, node->numCols);
    5632        4774 : }
    5633             : 
    5634             : static void
    5635         958 : _outGather(StringInfo str, const Gather *node)
    5636             : {
    5637         958 :     WRITE_NODE_TYPE("GATHER");
    5638             : 
    5639         958 :     WRITE_FLOAT_FIELD(plan.startup_cost);
    5640         958 :     WRITE_FLOAT_FIELD(plan.total_cost);
    5641         958 :     WRITE_FLOAT_FIELD(plan.plan_rows);
    5642         958 :     WRITE_INT_FIELD(plan.plan_width);
    5643         958 :     WRITE_BOOL_FIELD(plan.parallel_aware);
    5644         958 :     WRITE_BOOL_FIELD(plan.parallel_safe);
    5645         958 :     WRITE_BOOL_FIELD(plan.async_capable);
    5646         958 :     WRITE_INT_FIELD(plan.plan_node_id);
    5647         958 :     WRITE_NODE_FIELD(plan.targetlist);
    5648         958 :     WRITE_NODE_FIELD(plan.qual);
    5649         958 :     WRITE_NODE_FIELD(plan.lefttree);
    5650         958 :     WRITE_NODE_FIELD(plan.righttree);
    5651         958 :     WRITE_NODE_FIELD(plan.initPlan);
    5652         958 :     WRITE_BITMAPSET_FIELD(plan.extParam);
    5653         958 :     WRITE_BITMAPSET_FIELD(plan.allParam);
    5654         958 :     WRITE_INT_FIELD(num_workers);
    5655         958 :     WRITE_INT_FIELD(rescan_param);
    5656         958 :     WRITE_BOOL_FIELD(single_copy);
    5657         958 :     WRITE_BOOL_FIELD(invisible);
    5658         958 :     WRITE_BITMAPSET_FIELD(initParam);
    5659         958 : }
    5660             : 
    5661             : static void
    5662         320 : _outGatherMerge(StringInfo str, const GatherMerge *node)
    5663             : {
    5664         320 :     WRITE_NODE_TYPE("GATHERMERGE");
    5665             : 
    5666         320 :     WRITE_FLOAT_FIELD(plan.startup_cost);
    5667         320 :     WRITE_FLOAT_FIELD(plan.total_cost);
    5668         320 :     WRITE_FLOAT_FIELD(plan.plan_rows);
    5669         320 :     WRITE_INT_FIELD(plan.plan_width);
    5670         320 :     WRITE_BOOL_FIELD(plan.parallel_aware);
    5671         320 :     WRITE_BOOL_FIELD(plan.parallel_safe);
    5672         320 :     WRITE_BOOL_FIELD(plan.async_capable);
    5673         320 :     WRITE_INT_FIELD(plan.plan_node_id);
    5674         320 :     WRITE_NODE_FIELD(plan.targetlist);
    5675         320 :     WRITE_NODE_FIELD(plan.qual);
    5676         320 :     WRITE_NODE_FIELD(plan.lefttree);
    5677         320 :     WRITE_NODE_FIELD(plan.righttree);
    5678         320 :     WRITE_NODE_FIELD(plan.initPlan);
    5679         320 :     WRITE_BITMAPSET_FIELD(plan.extParam);
    5680         320 :     WRITE_BITMAPSET_FIELD(plan.allParam);
    5681         320 :     WRITE_INT_FIELD(num_workers);
    5682         320 :     WRITE_INT_FIELD(rescan_param);
    5683         320 :     WRITE_INT_FIELD(numCols);
    5684         320 :     WRITE_ATTRNUMBER_ARRAY(sortColIdx, node->numCols);
    5685         320 :     WRITE_OID_ARRAY(sortOperators, node->numCols);
    5686         320 :     WRITE_OID_ARRAY(collations, node->numCols);
    5687         320 :     WRITE_BOOL_ARRAY(nullsFirst, node->numCols);
    5688         320 :     WRITE_BITMAPSET_FIELD(initParam);
    5689         320 : }
    5690             : 
    5691             : static void
    5692       29432 : _outHash(StringInfo str, const Hash *node)
    5693             : {
    5694       29432 :     WRITE_NODE_TYPE("HASH");
    5695             : 
    5696       29432 :     WRITE_FLOAT_FIELD(plan.startup_cost);
    5697       29432 :     WRITE_FLOAT_FIELD(plan.total_cost);
    5698       29432 :     WRITE_FLOAT_FIELD(plan.plan_rows);
    5699       29432 :     WRITE_INT_FIELD(plan.plan_width);
    5700       29432 :     WRITE_BOOL_FIELD(plan.parallel_aware);
    5701       29432 :     WRITE_BOOL_FIELD(plan.parallel_safe);
    5702       29432 :     WRITE_BOOL_FIELD(plan.async_capable);
    5703       29432 :     WRITE_INT_FIELD(plan.plan_node_id);
    5704       29432 :     WRITE_NODE_FIELD(plan.targetlist);
    5705       29432 :     WRITE_NODE_FIELD(plan.qual);
    5706       29432 :     WRITE_NODE_FIELD(plan.lefttree);
    5707       29432 :     WRITE_NODE_FIELD(plan.righttree);
    5708       29432 :     WRITE_NODE_FIELD(plan.initPlan);
    5709       29432 :     WRITE_BITMAPSET_FIELD(plan.extParam);
    5710       29432 :     WRITE_BITMAPSET_FIELD(plan.allParam);
    5711       29432 :     WRITE_NODE_FIELD(hashkeys);
    5712       29432 :     WRITE_OID_FIELD(skewTable);
    5713       29432 :     WRITE_INT_FIELD(skewColumn);
    5714       29432 :     WRITE_BOOL_FIELD(skewInherit);
    5715       29432 :     WRITE_FLOAT_FIELD(rows_total);
    5716       29432 : }
    5717             : 
    5718             : static void
    5719         608 : _outSetOp(StringInfo str, const SetOp *node)
    5720             : {
    5721         608 :     WRITE_NODE_TYPE("SETOP");
    5722             : 
    5723         608 :     WRITE_FLOAT_FIELD(plan.startup_cost);
    5724         608 :     WRITE_FLOAT_FIELD(plan.total_cost);
    5725         608 :     WRITE_FLOAT_FIELD(plan.plan_rows);
    5726         608 :     WRITE_INT_FIELD(plan.plan_width);
    5727         608 :     WRITE_BOOL_FIELD(plan.parallel_aware);
    5728         608 :     WRITE_BOOL_FIELD(plan.parallel_safe);
    5729         608 :     WRITE_BOOL_FIELD(plan.async_capable);
    5730         608 :     WRITE_INT_FIELD(plan.plan_node_id);
    5731         608 :     WRITE_NODE_FIELD(plan.targetlist);
    5732         608 :     WRITE_NODE_FIELD(plan.qual);
    5733         608 :     WRITE_NODE_FIELD(plan.lefttree);
    5734         608 :     WRITE_NODE_FIELD(plan.righttree);
    5735         608 :     WRITE_NODE_FIELD(plan.initPlan);
    5736         608 :     WRITE_BITMAPSET_FIELD(plan.extParam);
    5737         608 :     WRITE_BITMAPSET_FIELD(plan.allParam);
    5738         608 :     WRITE_ENUM_FIELD(cmd, SetOpCmd);
    5739         608 :     WRITE_ENUM_FIELD(strategy, SetOpStrategy);
    5740         608 :     WRITE_INT_FIELD(numCols);
    5741         608 :     WRITE_ATTRNUMBER_ARRAY(dupColIdx, node->numCols);
    5742         608 :     WRITE_OID_ARRAY(dupOperators, node->numCols);
    5743         608 :     WRITE_OID_ARRAY(dupCollations, node->numCols);
    5744         608 :     WRITE_INT_FIELD(flagColIdx);
    5745         608 :     WRITE_INT_FIELD(firstFlag);
    5746         608 :     WRITE_LONG_FIELD(numGroups);
    5747         608 : }
    5748             : 
    5749             : static void
    5750        7498 : _outLockRows(StringInfo str, const LockRows *node)
    5751             : {
    5752        7498 :     WRITE_NODE_TYPE("LOCKROWS");
    5753             : 
    5754        7498 :     WRITE_FLOAT_FIELD(plan.startup_cost);
    5755        7498 :     WRITE_FLOAT_FIELD(plan.total_cost);
    5756        7498 :     WRITE_FLOAT_FIELD(plan.plan_rows);
    5757        7498 :     WRITE_INT_FIELD(plan.plan_width);
    5758        7498 :     WRITE_BOOL_FIELD(plan.parallel_aware);
    5759        7498 :     WRITE_BOOL_FIELD(plan.parallel_safe);
    5760        7498 :     WRITE_BOOL_FIELD(plan.async_capable);
    5761        7498 :     WRITE_INT_FIELD(plan.plan_node_id);
    5762        7498 :     WRITE_NODE_FIELD(plan.targetlist);
    5763        7498 :     WRITE_NODE_FIELD(plan.qual);
    5764        7498 :     WRITE_NODE_FIELD(plan.lefttree);
    5765        7498 :     WRITE_NODE_FIELD(plan.righttree);
    5766        7498 :     WRITE_NODE_FIELD(plan.initPlan);
    5767        7498 :     WRITE_BITMAPSET_FIELD(plan.extParam);
    5768        7498 :     WRITE_BITMAPSET_FIELD(plan.allParam);
    5769        7498 :     WRITE_NODE_FIELD(rowMarks);
    5770        7498 :     WRITE_INT_FIELD(epqParam);
    5771        7498 : }
    5772             : 
    5773             : static void
    5774        4466 : _outLimit(StringInfo str, const Limit *node)
    5775             : {
    5776        4466 :     WRITE_NODE_TYPE("LIMIT");
    5777             : 
    5778        4466 :     WRITE_FLOAT_FIELD(plan.startup_cost);
    5779        4466 :     WRITE_FLOAT_FIELD(plan.total_cost);
    5780        4466 :     WRITE_FLOAT_FIELD(plan.plan_rows);
    5781        4466 :     WRITE_INT_FIELD(plan.plan_width);
    5782        4466 :     WRITE_BOOL_FIELD(plan.parallel_aware);
    5783        4466 :     WRITE_BOOL_FIELD(plan.parallel_safe);
    5784        4466 :     WRITE_BOOL_FIELD(plan.async_capable);
    5785        4466 :     WRITE_INT_FIELD(plan.plan_node_id);
    5786        4466 :     WRITE_NODE_FIELD(plan.targetlist);
    5787        4466 :     WRITE_NODE_FIELD(plan.qual);
    5788        4466 :     WRITE_NODE_FIELD(plan.lefttree);
    5789        4466 :     WRITE_NODE_FIELD(plan.righttree);
    5790        4466 :     WRITE_NODE_FIELD(plan.initPlan);
    5791        4466 :     WRITE_BITMAPSET_FIELD(plan.extParam);
    5792        4466 :     WRITE_BITMAPSET_FIELD(plan.allParam);
    5793        4466 :     WRITE_NODE_FIELD(limitOffset);
    5794        4466 :     WRITE_NODE_FIELD(limitCount);
    5795        4466 :     WRITE_ENUM_FIELD(limitOption, LimitOption);
    5796        4466 :     WRITE_INT_FIELD(uniqNumCols);
    5797        4466 :     WRITE_ATTRNUMBER_ARRAY(uniqColIdx, node->uniqNumCols);
    5798        4466 :     WRITE_OID_ARRAY(uniqOperators, node->uniqNumCols);
    5799        4466 :     WRITE_OID_ARRAY(uniqCollations, node->uniqNumCols);
    5800        4466 : }
    5801             : 
    5802             : static void
    5803       24468 : _outPlanRowMark(StringInfo str, const PlanRowMark *node)
    5804             : {
    5805       24468 :     WRITE_NODE_TYPE("PLANROWMARK");
    5806             : 
    5807       24468 :     WRITE_UINT_FIELD(rti);
    5808       24468 :     WRITE_UINT_FIELD(prti);
    5809       24468 :     WRITE_UINT_FIELD(rowmarkId);
    5810       24468 :     WRITE_ENUM_FIELD(markType, RowMarkType);
    5811       24468 :     WRITE_INT_FIELD(allMarkTypes);
    5812       24468 :     WRITE_ENUM_FIELD(strength, LockClauseStrength);
    5813       24468 :     WRITE_ENUM_FIELD(waitPolicy, LockWaitPolicy);
    5814       24468 :     WRITE_BOOL_FIELD(isParent);
    5815       24468 : }
    5816             : 
    5817             : static void
    5818         540 : _outPartitionPruneInfo(StringInfo str, const PartitionPruneInfo *node)
    5819             : {
    5820         540 :     WRITE_NODE_TYPE("PARTITIONPRUNEINFO");
    5821             : 
    5822         540 :     WRITE_NODE_FIELD(prune_infos);
    5823         540 :     WRITE_BITMAPSET_FIELD(other_subplans);
    5824         540 : }
    5825             : 
    5826             : static void
    5827        1152 : _outPartitionedRelPruneInfo(StringInfo str, const PartitionedRelPruneInfo *node)
    5828             : {
    5829        1152 :     WRITE_NODE_TYPE("PARTITIONEDRELPRUNEINFO");
    5830             : 
    5831        1152 :     WRITE_UINT_FIELD(rtindex);
    5832        1152 :     WRITE_BITMAPSET_FIELD(present_parts);
    5833        1152 :     WRITE_INT_FIELD(nparts);
    5834        1152 :     WRITE_INT_ARRAY(subplan_map, node->nparts);
    5835        1152 :     WRITE_INT_ARRAY(subpart_map, node->nparts);
    5836        1152 :     WRITE_OID_ARRAY(relid_map, node->nparts);
    5837        1152 :     WRITE_NODE_FIELD(initial_pruning_steps);
    5838        1152 :     WRITE_NODE_FIELD(exec_pruning_steps);
    5839        1152 :     WRITE_BITMAPSET_FIELD(execparamids);
    5840        1152 : }
    5841             : 
    5842             : static void
    5843         968 : _outPartitionPruneStepOp(StringInfo str, const PartitionPruneStepOp *node)
    5844             : {
    5845         968 :     WRITE_NODE_TYPE("PARTITIONPRUNESTEPOP");
    5846             : 
    5847         968 :     WRITE_INT_FIELD(step.step_id);
    5848         968 :     WRITE_INT_FIELD(opstrategy);
    5849         968 :     WRITE_NODE_FIELD(exprs);
    5850         968 :     WRITE_NODE_FIELD(cmpfns);
    5851         968 :     WRITE_BITMAPSET_FIELD(nullkeys);
    5852         968 : }
    5853             : 
    5854             : static void
    5855         192 : _outPartitionPruneStepCombine(StringInfo str, const PartitionPruneStepCombine *node)
    5856             : {
    5857         192 :     WRITE_NODE_TYPE("PARTITIONPRUNESTEPCOMBINE");
    5858             : 
    5859         192 :     WRITE_INT_FIELD(step.step_id);
    5860         192 :     WRITE_ENUM_FIELD(combineOp, PartitionPruneCombineOp);
    5861         192 :     WRITE_NODE_FIELD(source_stepids);
    5862         192 : }
    5863             : 
    5864             : static void
    5865       78996 : _outPlanInvalItem(StringInfo str, const PlanInvalItem *node)
    5866             : {
    5867       78996 :     WRITE_NODE_TYPE("PLANINVALITEM");
    5868             : 
    5869       78996 :     WRITE_INT_FIELD(cacheId);
    5870       78996 :     WRITE_UINT_FIELD(hashValue);
    5871       78996 : }
    5872             : 
    5873             : static void
    5874           0 : _outForeignKeyCacheInfo(StringInfo str, const ForeignKeyCacheInfo *node)
    5875             : {
    5876           0 :     WRITE_NODE_TYPE("FOREIGNKEYCACHEINFO");
    5877             : 
    5878           0 :     WRITE_OID_FIELD(conoid);
    5879           0 :     WRITE_OID_FIELD(conrelid);
    5880           0 :     WRITE_OID_FIELD(confrelid);
    5881           0 :     WRITE_INT_FIELD(nkeys);
    5882           0 :     WRITE_ATTRNUMBER_ARRAY(conkey, node->nkeys);
    5883           0 :     WRITE_ATTRNUMBER_ARRAY(confkey, node->nkeys);
    5884           0 :     WRITE_OID_ARRAY(conpfeqop, node->nkeys);
    5885           0 : }

Generated by: LCOV version 1.14