LCOV - code coverage report
Current view: top level - src/backend/nodes - outfuncs.funcs.c (source / functions) Hit Total Coverage
Test: PostgreSQL 18devel Lines: 3178 4452 71.4 %
Date: 2025-01-18 05:15:39 Functions: 304 368 82.6 %
Legend: Lines: hit not hit

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

Generated by: LCOV version 1.14