X-Git-Url: https://granicus.if.org/sourcecode?a=blobdiff_plain;f=src%2Fbackend%2Fnodes%2Foutfuncs.c;h=869905f0cc548e01b42ecf74f314bbc850b43597;hb=6808f1b1de0ebcd4af558ba84c3226b2027f55ea;hp=b18b6988cfa776163141f877c8b570eaf6ae52c5;hpb=a78fcfb5124379532ce35f3076679f04bd987d60;p=postgresql diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c index b18b6988cf..869905f0cc 100644 --- a/src/backend/nodes/outfuncs.c +++ b/src/backend/nodes/outfuncs.c @@ -3,12 +3,12 @@ * outfuncs.c * Output functions for Postgres tree nodes. * - * Portions Copyright (c) 1996-2006, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/nodes/outfuncs.c,v 1.288 2006/12/23 00:43:10 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/nodes/outfuncs.c,v 1.310 2007/06/11 01:16:22 tgl Exp $ * * NOTES * Every node type that can appear in stored rules' parsetrees *must* @@ -234,6 +234,25 @@ _outDatum(StringInfo str, Datum value, int typlen, bool typbyval) * Stuff from plannodes.h */ +static void +_outPlannedStmt(StringInfo str, PlannedStmt *node) +{ + WRITE_NODE_TYPE("PLANNEDSTMT"); + + WRITE_ENUM_FIELD(commandType, CmdType); + WRITE_BOOL_FIELD(canSetTag); + WRITE_NODE_FIELD(planTree); + WRITE_NODE_FIELD(rtable); + WRITE_NODE_FIELD(resultRelations); + WRITE_NODE_FIELD(utilityStmt); + WRITE_NODE_FIELD(intoClause); + WRITE_NODE_FIELD(subplans); + WRITE_BITMAPSET_FIELD(rewindPlanIDs); + WRITE_NODE_FIELD(returningLists); + WRITE_NODE_FIELD(rowMarks); + WRITE_INT_FIELD(nParamExec); +} + /* * print the basic stuff of all nodes that inherit from Plan */ @@ -251,7 +270,6 @@ _outPlanInfo(StringInfo str, Plan *node) WRITE_NODE_FIELD(initPlan); WRITE_BITMAPSET_FIELD(extParam); WRITE_BITMAPSET_FIELD(allParam); - WRITE_INT_FIELD(nParamExec); } /* @@ -400,6 +418,7 @@ _outSubqueryScan(StringInfo str, SubqueryScan *node) _outScanInfo(str, (Scan *) node); WRITE_NODE_FIELD(subplan); + WRITE_NODE_FIELD(subrtable); } static void @@ -408,6 +427,11 @@ _outFunctionScan(StringInfo str, FunctionScan *node) WRITE_NODE_TYPE("FUNCTIONSCAN"); _outScanInfo(str, (Scan *) node); + + WRITE_NODE_FIELD(funcexpr); + WRITE_NODE_FIELD(funccolnames); + WRITE_NODE_FIELD(funccoltypes); + WRITE_NODE_FIELD(funccoltypmods); } static void @@ -416,6 +440,8 @@ _outValuesScan(StringInfo str, ValuesScan *node) WRITE_NODE_TYPE("VALUESSCAN"); _outScanInfo(str, (Scan *) node); + + WRITE_NODE_FIELD(values_lists); } static void @@ -437,13 +463,28 @@ _outNestLoop(StringInfo str, NestLoop *node) static void _outMergeJoin(StringInfo str, MergeJoin *node) { + int numCols; + int i; + WRITE_NODE_TYPE("MERGEJOIN"); _outJoinPlanInfo(str, (Join *) node); WRITE_NODE_FIELD(mergeclauses); - WRITE_NODE_FIELD(mergefamilies); - WRITE_NODE_FIELD(mergestrategies); + + numCols = list_length(node->mergeclauses); + + appendStringInfo(str, " :mergeFamilies"); + for (i = 0; i < numCols; i++) + appendStringInfo(str, " %u", node->mergeFamilies[i]); + + appendStringInfo(str, " :mergeStrategies"); + for (i = 0; i < numCols; i++) + appendStringInfo(str, " %d", node->mergeStrategies[i]); + + appendStringInfo(str, " :mergeNullsFirst"); + for (i = 0; i < numCols; i++) + appendStringInfo(str, " %d", (int) node->mergeNullsFirst[i]); } static void @@ -482,6 +523,10 @@ _outGroup(StringInfo str, Group *node) appendStringInfo(str, " :grpColIdx"); for (i = 0; i < node->numCols; i++) appendStringInfo(str, " %d", node->grpColIdx[i]); + + appendStringInfo(str, " :grpOperators"); + for (i = 0; i < node->numCols; i++) + appendStringInfo(str, " %u", node->grpOperators[i]); } static void @@ -510,6 +555,10 @@ _outSort(StringInfo str, Sort *node) appendStringInfo(str, " :sortOperators"); for (i = 0; i < node->numCols; i++) appendStringInfo(str, " %u", node->sortOperators[i]); + + appendStringInfo(str, " :nullsFirst"); + for (i = 0; i < node->numCols; i++) + appendStringInfo(str, " %s", booltostr(node->nullsFirst[i])); } static void @@ -526,6 +575,10 @@ _outUnique(StringInfo str, Unique *node) appendStringInfo(str, " :uniqColIdx"); for (i = 0; i < node->numCols; i++) appendStringInfo(str, " %d", node->uniqColIdx[i]); + + appendStringInfo(str, " :uniqOperators"); + for (i = 0; i < node->numCols; i++) + appendStringInfo(str, " %u", node->uniqOperators[i]); } static void @@ -544,6 +597,10 @@ _outSetOp(StringInfo str, SetOp *node) for (i = 0; i < node->numCols; i++) appendStringInfo(str, " %d", node->dupColIdx[i]); + appendStringInfo(str, " :dupOperators"); + for (i = 0; i < node->numCols; i++) + appendStringInfo(str, " %d", node->dupOperators[i]); + WRITE_INT_FIELD(flagColIdx); } @@ -597,6 +654,18 @@ _outRangeVar(StringInfo str, RangeVar *node) WRITE_NODE_FIELD(alias); } +static void +_outIntoClause(StringInfo str, IntoClause *node) +{ + WRITE_NODE_TYPE("INTOCLAUSE"); + + WRITE_NODE_FIELD(rel); + WRITE_NODE_FIELD(colNames); + WRITE_NODE_FIELD(options); + WRITE_ENUM_FIELD(onCommit, OnCommitAction); + WRITE_STRING_FIELD(tableSpaceName); +} + static void _outVar(StringInfo str, Var *node) { @@ -617,6 +686,7 @@ _outConst(StringInfo str, Const *node) WRITE_NODE_TYPE("CONST"); WRITE_OID_FIELD(consttype); + WRITE_INT_FIELD(consttypmod); WRITE_INT_FIELD(constlen); WRITE_BOOL_FIELD(constbyval); WRITE_BOOL_FIELD(constisnull); @@ -657,9 +727,9 @@ _outArrayRef(StringInfo str, ArrayRef *node) { WRITE_NODE_TYPE("ARRAYREF"); - WRITE_OID_FIELD(refrestype); WRITE_OID_FIELD(refarraytype); WRITE_OID_FIELD(refelemtype); + WRITE_INT_FIELD(reftypmod); WRITE_NODE_FIELD(refupperindexpr); WRITE_NODE_FIELD(reflowerindexpr); WRITE_NODE_FIELD(refexpr); @@ -758,9 +828,8 @@ _outSubPlan(StringInfo str, SubPlan *node) WRITE_ENUM_FIELD(subLinkType, SubLinkType); WRITE_NODE_FIELD(testexpr); WRITE_NODE_FIELD(paramIds); - WRITE_NODE_FIELD(plan); WRITE_INT_FIELD(plan_id); - WRITE_NODE_FIELD(rtable); + WRITE_OID_FIELD(firstColType); WRITE_BOOL_FIELD(useHashTable); WRITE_BOOL_FIELD(unknownEqFalse); WRITE_NODE_FIELD(setParam); @@ -801,6 +870,29 @@ _outRelabelType(StringInfo str, RelabelType *node) WRITE_ENUM_FIELD(relabelformat, CoercionForm); } +static void +_outCoerceViaIO(StringInfo str, CoerceViaIO *node) +{ + WRITE_NODE_TYPE("COERCEVIAIO"); + + WRITE_NODE_FIELD(arg); + WRITE_OID_FIELD(resulttype); + WRITE_ENUM_FIELD(coerceformat, CoercionForm); +} + +static void +_outArrayCoerceExpr(StringInfo str, ArrayCoerceExpr *node) +{ + WRITE_NODE_TYPE("ARRAYCOERCEEXPR"); + + WRITE_NODE_FIELD(arg); + WRITE_OID_FIELD(elemfuncid); + WRITE_OID_FIELD(resulttype); + WRITE_INT_FIELD(resulttypmod); + WRITE_BOOL_FIELD(isExplicit); + WRITE_ENUM_FIELD(coerceformat, CoercionForm); +} + static void _outConvertRowtypeExpr(StringInfo str, ConvertRowtypeExpr *node) { @@ -892,6 +984,21 @@ _outMinMaxExpr(StringInfo str, MinMaxExpr *node) WRITE_NODE_FIELD(args); } +static void +_outXmlExpr(StringInfo str, XmlExpr *node) +{ + WRITE_NODE_TYPE("XMLEXPR"); + + WRITE_ENUM_FIELD(op, XmlExprOp); + WRITE_STRING_FIELD(name); + WRITE_NODE_FIELD(named_args); + WRITE_NODE_FIELD(arg_names); + WRITE_NODE_FIELD(args); + WRITE_ENUM_FIELD(xmloption, XmlOptionType); + WRITE_OID_FIELD(type); + WRITE_INT_FIELD(typmod); +} + static void _outNullIfExpr(StringInfo str, NullIfExpr *node) { @@ -922,17 +1029,6 @@ _outBooleanTest(StringInfo str, BooleanTest *node) WRITE_ENUM_FIELD(booltesttype, BoolTestType); } -static void -_outXmlExpr(StringInfo str, XmlExpr *node) -{ - WRITE_NODE_TYPE("XMLEXPR"); - - WRITE_ENUM_FIELD(op, XmlExprOp); - WRITE_STRING_FIELD(name); - WRITE_NODE_FIELD(named_args); - WRITE_NODE_FIELD(args); -} - static void _outCoerceToDomain(StringInfo str, CoerceToDomain *node) { @@ -962,6 +1058,15 @@ _outSetToDefault(StringInfo str, SetToDefault *node) WRITE_INT_FIELD(typeMod); } +static void +_outCurrentOfExpr(StringInfo str, CurrentOfExpr *node) +{ + WRITE_NODE_TYPE("CURRENTOFEXPR"); + + WRITE_UINT_FIELD(cvarno); + WRITE_STRING_FIELD(cursor_name); +} + static void _outTargetEntry(StringInfo str, TargetEntry *node) { @@ -1169,8 +1274,6 @@ _outMergePath(StringInfo str, MergePath *node) _outJoinPathInfo(str, (JoinPath *) node); WRITE_NODE_FIELD(path_mergeclauses); - WRITE_NODE_FIELD(path_mergefamilies); - WRITE_NODE_FIELD(path_mergestrategies); WRITE_NODE_FIELD(outersortkeys); WRITE_NODE_FIELD(innersortkeys); } @@ -1185,6 +1288,19 @@ _outHashPath(StringInfo str, HashPath *node) WRITE_NODE_FIELD(path_hashclauses); } +static void +_outPlannerGlobal(StringInfo str, PlannerGlobal *node) +{ + WRITE_NODE_TYPE("PLANNERGLOBAL"); + + /* NB: this isn't a complete set of fields */ + WRITE_NODE_FIELD(paramlist); + WRITE_NODE_FIELD(subplans); + WRITE_NODE_FIELD(subrtables); + WRITE_BITMAPSET_FIELD(rewindPlanIDs); + WRITE_NODE_FIELD(finalrtable); +} + static void _outPlannerInfo(StringInfo str, PlannerInfo *node) { @@ -1192,8 +1308,14 @@ _outPlannerInfo(StringInfo str, PlannerInfo *node) /* NB: this isn't a complete set of fields */ WRITE_NODE_FIELD(parse); + WRITE_NODE_FIELD(glob); + WRITE_UINT_FIELD(query_level); WRITE_NODE_FIELD(join_rel_list); - WRITE_NODE_FIELD(equi_key_list); + WRITE_NODE_FIELD(resultRelations); + WRITE_NODE_FIELD(returningLists); + WRITE_NODE_FIELD(init_plans); + WRITE_NODE_FIELD(eq_classes); + WRITE_NODE_FIELD(canon_pathkeys); WRITE_NODE_FIELD(left_join_clauses); WRITE_NODE_FIELD(right_join_clauses); WRITE_NODE_FIELD(full_join_clauses); @@ -1234,8 +1356,10 @@ _outRelOptInfo(StringInfo str, RelOptInfo *node) WRITE_UINT_FIELD(pages); WRITE_FLOAT_FIELD(tuples, "%.0f"); WRITE_NODE_FIELD(subplan); + WRITE_NODE_FIELD(subrtable); WRITE_NODE_FIELD(baserestrictinfo); WRITE_NODE_FIELD(joininfo); + WRITE_BOOL_FIELD(has_eclass_joins); WRITE_BITMAPSET_FIELD(index_outer_relids); WRITE_NODE_FIELD(index_inner_paths); } @@ -1258,12 +1382,49 @@ _outIndexOptInfo(StringInfo str, IndexOptInfo *node) } static void -_outPathKeyItem(StringInfo str, PathKeyItem *node) +_outEquivalenceClass(StringInfo str, EquivalenceClass *node) { - WRITE_NODE_TYPE("PATHKEYITEM"); + /* + * To simplify reading, we just chase up to the topmost merged EC and + * print that, without bothering to show the merge-ees separately. + */ + while (node->ec_merged) + node = node->ec_merged; - WRITE_NODE_FIELD(key); - WRITE_OID_FIELD(sortop); + WRITE_NODE_TYPE("EQUIVALENCECLASS"); + + WRITE_NODE_FIELD(ec_opfamilies); + WRITE_NODE_FIELD(ec_members); + WRITE_NODE_FIELD(ec_sources); + WRITE_NODE_FIELD(ec_derives); + WRITE_BITMAPSET_FIELD(ec_relids); + WRITE_BOOL_FIELD(ec_has_const); + WRITE_BOOL_FIELD(ec_has_volatile); + WRITE_BOOL_FIELD(ec_below_outer_join); + WRITE_BOOL_FIELD(ec_broken); +} + +static void +_outEquivalenceMember(StringInfo str, EquivalenceMember *node) +{ + WRITE_NODE_TYPE("EQUIVALENCEMEMBER"); + + WRITE_NODE_FIELD(em_expr); + WRITE_BITMAPSET_FIELD(em_relids); + WRITE_BOOL_FIELD(em_is_const); + WRITE_BOOL_FIELD(em_is_child); + WRITE_OID_FIELD(em_datatype); +} + +static void +_outPathKey(StringInfo str, PathKey *node) +{ + WRITE_NODE_TYPE("PATHKEY"); + + WRITE_NODE_FIELD(pk_eclass); + WRITE_OID_FIELD(pk_opfamily); + WRITE_INT_FIELD(pk_strategy); + WRITE_BOOL_FIELD(pk_nulls_first); } static void @@ -1282,12 +1443,13 @@ _outRestrictInfo(StringInfo str, RestrictInfo *node) WRITE_BITMAPSET_FIELD(left_relids); WRITE_BITMAPSET_FIELD(right_relids); WRITE_NODE_FIELD(orclause); - WRITE_OID_FIELD(mergejoinoperator); - WRITE_OID_FIELD(left_sortop); - WRITE_OID_FIELD(right_sortop); - WRITE_OID_FIELD(mergeopfamily); - WRITE_NODE_FIELD(left_pathkey); - WRITE_NODE_FIELD(right_pathkey); + /* don't write parent_ec, leads to infinite recursion in plan tree dump */ + WRITE_NODE_FIELD(mergeopfamilies); + /* don't write left_ec, leads to infinite recursion in plan tree dump */ + /* don't write right_ec, leads to infinite recursion in plan tree dump */ + WRITE_NODE_FIELD(left_em); + WRITE_NODE_FIELD(right_em); + WRITE_BOOL_FIELD(outer_is_left); WRITE_OID_FIELD(hashjoinoperator); } @@ -1297,7 +1459,8 @@ _outInnerIndexscanInfo(StringInfo str, InnerIndexscanInfo *node) WRITE_NODE_TYPE("INNERINDEXSCANINFO"); WRITE_BITMAPSET_FIELD(other_relids); WRITE_BOOL_FIELD(isouterjoin); - WRITE_NODE_FIELD(best_innerpath); + WRITE_NODE_FIELD(cheapest_startup_innerpath); + WRITE_NODE_FIELD(cheapest_total_innerpath); } static void @@ -1309,6 +1472,7 @@ _outOuterJoinInfo(StringInfo str, OuterJoinInfo *node) WRITE_BITMAPSET_FIELD(min_righthand); WRITE_BOOL_FIELD(is_full_join); WRITE_BOOL_FIELD(lhs_strict); + WRITE_BOOL_FIELD(delay_upper_joins); } static void @@ -1319,6 +1483,7 @@ _outInClauseInfo(StringInfo str, InClauseInfo *node) WRITE_BITMAPSET_FIELD(lefthand); WRITE_BITMAPSET_FIELD(righthand); WRITE_NODE_FIELD(sub_targetlist); + WRITE_NODE_FIELD(in_operators); } static void @@ -1335,6 +1500,15 @@ _outAppendRelInfo(StringInfo str, AppendRelInfo *node) WRITE_OID_FIELD(parent_reloid); } +static void +_outPlannerParamItem(StringInfo str, PlannerParamItem *node) +{ + WRITE_NODE_TYPE("PLANNERPARAMITEM"); + + WRITE_NODE_FIELD(item); + WRITE_UINT_FIELD(abslevel); +} + /***************************************************************************** * * Stuff from parsenodes.h. @@ -1367,7 +1541,6 @@ _outIndexStmt(StringInfo str, IndexStmt *node) WRITE_NODE_FIELD(indexParams); WRITE_NODE_FIELD(options); WRITE_NODE_FIELD(whereClause); - WRITE_NODE_FIELD(rangetable); WRITE_BOOL_FIELD(unique); WRITE_BOOL_FIELD(primary); WRITE_BOOL_FIELD(isconstraint); @@ -1398,11 +1571,7 @@ _outSelectStmt(StringInfo str, SelectStmt *node) WRITE_NODE_TYPE("SELECT"); WRITE_NODE_FIELD(distinctClause); - WRITE_NODE_FIELD(into); - WRITE_NODE_FIELD(intoColNames); - WRITE_NODE_FIELD(intoOptions); - WRITE_ENUM_FIELD(intoOnCommit, OnCommitAction); - WRITE_STRING_FIELD(intoTableSpaceName); + WRITE_NODE_FIELD(intoClause); WRITE_NODE_FIELD(targetList); WRITE_NODE_FIELD(fromClause); WRITE_NODE_FIELD(whereClause); @@ -1450,6 +1619,16 @@ _outLockingClause(StringInfo str, LockingClause *node) WRITE_BOOL_FIELD(noWait); } +static void +_outXmlSerialize(StringInfo str, XmlSerialize *node) +{ + WRITE_NODE_TYPE("XMLSERIALIZE"); + + WRITE_ENUM_FIELD(xmloption, XmlOptionType); + WRITE_NODE_FIELD(expr); + WRITE_NODE_FIELD(typename); +} + static void _outColumnDef(StringInfo str, ColumnDef *node) { @@ -1475,7 +1654,8 @@ _outTypeName(StringInfo str, TypeName *node) WRITE_BOOL_FIELD(timezone); WRITE_BOOL_FIELD(setof); WRITE_BOOL_FIELD(pct_type); - WRITE_INT_FIELD(typmod); + WRITE_NODE_FIELD(typmods); + WRITE_INT_FIELD(typemod); WRITE_NODE_FIELD(arrayBounds); WRITE_INT_FIELD(location); } @@ -1497,6 +1677,8 @@ _outIndexElem(StringInfo str, IndexElem *node) WRITE_STRING_FIELD(name); WRITE_NODE_FIELD(expr); WRITE_NODE_FIELD(opclass); + WRITE_ENUM_FIELD(ordering, SortByDir); + WRITE_ENUM_FIELD(nulls_ordering, SortByNulls); } static void @@ -1534,10 +1716,7 @@ _outQuery(StringInfo str, Query *node) appendStringInfo(str, " :utilityStmt <>"); WRITE_INT_FIELD(resultRelation); - WRITE_NODE_FIELD(into); - WRITE_NODE_FIELD(intoOptions); - WRITE_ENUM_FIELD(intoOnCommit, OnCommitAction); - WRITE_STRING_FIELD(intoTableSpaceName); + WRITE_NODE_FIELD(intoClause); WRITE_BOOL_FIELD(hasAggs); WRITE_BOOL_FIELD(hasSubLinks); WRITE_NODE_FIELD(rtable); @@ -1552,8 +1731,6 @@ _outQuery(StringInfo str, Query *node) WRITE_NODE_FIELD(limitCount); WRITE_NODE_FIELD(rowMarks); WRITE_NODE_FIELD(setOperations); - WRITE_NODE_FIELD(resultRelations); - WRITE_NODE_FIELD(returningLists); } static void @@ -1563,6 +1740,7 @@ _outSortClause(StringInfo str, SortClause *node) WRITE_UINT_FIELD(tleSortGroupRef); WRITE_OID_FIELD(sortop); + WRITE_BOOL_FIELD(nulls_first); } static void @@ -1572,6 +1750,7 @@ _outGroupClause(StringInfo str, GroupClause *node) WRITE_UINT_FIELD(tleSortGroupRef); WRITE_OID_FIELD(sortop); + WRITE_BOOL_FIELD(nulls_first); } static void @@ -1870,6 +2049,9 @@ _outNode(StringInfo str, void *obj) appendStringInfoChar(str, '{'); switch (nodeTag(obj)) { + case T_PlannedStmt: + _outPlannedStmt(str, obj); + break; case T_Plan: _outPlan(str, obj); break; @@ -1954,6 +2136,9 @@ _outNode(StringInfo str, void *obj) case T_RangeVar: _outRangeVar(str, obj); break; + case T_IntoClause: + _outIntoClause(str, obj); + break; case T_Var: _outVar(str, obj); break; @@ -1999,6 +2184,12 @@ _outNode(StringInfo str, void *obj) case T_RelabelType: _outRelabelType(str, obj); break; + case T_CoerceViaIO: + _outCoerceViaIO(str, obj); + break; + case T_ArrayCoerceExpr: + _outArrayCoerceExpr(str, obj); + break; case T_ConvertRowtypeExpr: _outConvertRowtypeExpr(str, obj); break; @@ -2026,6 +2217,9 @@ _outNode(StringInfo str, void *obj) case T_MinMaxExpr: _outMinMaxExpr(str, obj); break; + case T_XmlExpr: + _outXmlExpr(str, obj); + break; case T_NullIfExpr: _outNullIfExpr(str, obj); break; @@ -2035,9 +2229,6 @@ _outNode(StringInfo str, void *obj) case T_BooleanTest: _outBooleanTest(str, obj); break; - case T_XmlExpr: - _outXmlExpr(str, obj); - break; case T_CoerceToDomain: _outCoerceToDomain(str, obj); break; @@ -2047,6 +2238,9 @@ _outNode(StringInfo str, void *obj) case T_SetToDefault: _outSetToDefault(str, obj); break; + case T_CurrentOfExpr: + _outCurrentOfExpr(str, obj); + break; case T_TargetEntry: _outTargetEntry(str, obj); break; @@ -2099,6 +2293,9 @@ _outNode(StringInfo str, void *obj) case T_HashPath: _outHashPath(str, obj); break; + case T_PlannerGlobal: + _outPlannerGlobal(str, obj); + break; case T_PlannerInfo: _outPlannerInfo(str, obj); break; @@ -2108,8 +2305,14 @@ _outNode(StringInfo str, void *obj) case T_IndexOptInfo: _outIndexOptInfo(str, obj); break; - case T_PathKeyItem: - _outPathKeyItem(str, obj); + case T_EquivalenceClass: + _outEquivalenceClass(str, obj); + break; + case T_EquivalenceMember: + _outEquivalenceMember(str, obj); + break; + case T_PathKey: + _outPathKey(str, obj); break; case T_RestrictInfo: _outRestrictInfo(str, obj); @@ -2126,6 +2329,9 @@ _outNode(StringInfo str, void *obj) case T_AppendRelInfo: _outAppendRelInfo(str, obj); break; + case T_PlannerParamItem: + _outPlannerParamItem(str, obj); + break; case T_CreateStmt: _outCreateStmt(str, obj); @@ -2208,6 +2414,9 @@ _outNode(StringInfo str, void *obj) case T_LockingClause: _outLockingClause(str, obj); break; + case T_XmlSerialize: + _outXmlSerialize(str, obj); + break; default: