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

Generated by: LCOV version 1.16