LCOV - code coverage report
Current view: top level - src/backend/nodes - outfuncs.funcs.c (source / functions) Coverage Total Hit
Test: PostgreSQL 19devel Lines: 71.2 % 4546 3238
Test Date: 2026-03-10 17:14:41 Functions: 82.0 % 377 309
Legend: Lines:     hit not hit

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

Generated by: LCOV version 2.0-1