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

Generated by: LCOV version 1.16