static void _outQuery(StringInfo str, Query *node) { WRITE_NODE_TYPE("QUERY"); WRITE_ENUM_FIELD(commandType, CmdType); WRITE_ENUM_FIELD(querySource, QuerySource); WRITE_BOOL_FIELD(canSetTag); WRITE_NODE_FIELD(utilityStmt); WRITE_INT_FIELD(resultRelation); WRITE_NODE_FIELD(intoClause); WRITE_BOOL_FIELD(hasAggs); WRITE_BOOL_FIELD(hasWindFuncs); WRITE_BOOL_FIELD(hasSubLinks); WRITE_BOOL_FIELD(hasDynamicFunctions); WRITE_NODE_FIELD(rtable); WRITE_NODE_FIELD(jointree); WRITE_NODE_FIELD(targetList); WRITE_NODE_FIELD(returningList); WRITE_NODE_FIELD(groupClause); WRITE_NODE_FIELD(havingQual); WRITE_NODE_FIELD(windowClause); WRITE_NODE_FIELD(distinctClause); WRITE_NODE_FIELD(sortClause); WRITE_NODE_FIELD(scatterClause); WRITE_NODE_FIELD(cteList); WRITE_BOOL_FIELD(hasRecursive); WRITE_BOOL_FIELD(hasModifyingCTE); WRITE_NODE_FIELD(limitOffset); WRITE_NODE_FIELD(limitCount); WRITE_NODE_FIELD(rowMarks); WRITE_NODE_FIELD(setOperations); /* Don't serialize policy */ }
static void _outRangeTblEntry(StringInfo str, RangeTblEntry *node) { WRITE_NODE_TYPE("RTE"); /* put alias + eref first to make dump more legible */ WRITE_NODE_FIELD(alias); WRITE_NODE_FIELD(eref); WRITE_ENUM_FIELD(rtekind, RTEKind); switch (node->rtekind) { case RTE_RELATION: case RTE_SPECIAL: WRITE_OID_FIELD(relid); break; case RTE_SUBQUERY: WRITE_NODE_FIELD(subquery); break; case RTE_CTE: WRITE_STRING_FIELD(ctename); WRITE_INT_FIELD(ctelevelsup); WRITE_BOOL_FIELD(self_reference); WRITE_NODE_FIELD(ctecoltypes); WRITE_NODE_FIELD(ctecoltypmods); break; case RTE_FUNCTION: WRITE_NODE_FIELD(funcexpr); WRITE_NODE_FIELD(funccoltypes); WRITE_NODE_FIELD(funccoltypmods); break; case RTE_TABLEFUNCTION: WRITE_NODE_FIELD(subquery); WRITE_NODE_FIELD(funcexpr); WRITE_NODE_FIELD(funccoltypes); WRITE_NODE_FIELD(funccoltypmods); WRITE_BYTEA_FIELD(funcuserdata); break; case RTE_VALUES: WRITE_NODE_FIELD(values_lists); break; case RTE_JOIN: WRITE_ENUM_FIELD(jointype, JoinType); WRITE_NODE_FIELD(joinaliasvars); break; case RTE_VOID: /*CDB*/ break; default: elog(ERROR, "unrecognized RTE kind: %d", (int) node->rtekind); break; } WRITE_BOOL_FIELD(inh); WRITE_BOOL_FIELD(inFromCl); WRITE_UINT_FIELD(requiredPerms); WRITE_OID_FIELD(checkAsUser); WRITE_BOOL_FIELD(forceDistRandom); }
void OutMultiJoin(OUTFUNC_ARGS) { WRITE_LOCALS(MultiJoin); WRITE_NODE_TYPE("MULTIJOIN"); WRITE_NODE_FIELD(joinClauseList); WRITE_ENUM_FIELD(joinRuleType, JoinRuleType); WRITE_ENUM_FIELD(joinType, JoinType); OutMultiBinaryNodeFields(str, (const MultiBinaryNode *) node); }
static void _outMotion(StringInfo str, Motion *node) { WRITE_NODE_TYPE("MOTION"); WRITE_INT_FIELD(motionID); WRITE_ENUM_FIELD(motionType, MotionType); WRITE_BOOL_FIELD(sendSorted); WRITE_NODE_FIELD(hashExpr); WRITE_NODE_FIELD(hashDataTypes); WRITE_INT_FIELD(numOutputSegs); WRITE_INT_ARRAY(outputSegIdx, node->numOutputSegs, int); WRITE_INT_FIELD(numSortCols); WRITE_INT_ARRAY(sortColIdx, node->numSortCols, AttrNumber); WRITE_OID_ARRAY(sortOperators, node->numSortCols); WRITE_BOOL_ARRAY(nullsFirst, node->numSortCols); WRITE_INT_FIELD(segidColIdx); _outPlanInfo(str, (Plan *) node); }
static void _outSort(StringInfo str, Sort *node) { WRITE_NODE_TYPE("SORT"); _outPlanInfo(str, (Plan *) node); WRITE_INT_FIELD(numCols); WRITE_INT_ARRAY(sortColIdx, numCols, AttrNumber); WRITE_OID_ARRAY(sortOperators, numCols); /* CDB */ WRITE_NODE_FIELD(limitOffset); WRITE_NODE_FIELD(limitCount); WRITE_BOOL_FIELD(noduplicates); WRITE_ENUM_FIELD(share_type, ShareType); WRITE_INT_FIELD(share_id); WRITE_INT_FIELD(driver_slice); WRITE_INT_FIELD(nsharer); WRITE_INT_FIELD(nsharer_xslice); }
static void _outCreateStmt(StringInfo str, CreateStmt *node) { WRITE_NODE_TYPE("CREATESTMT"); WRITE_NODE_FIELD(relation); WRITE_NODE_FIELD(tableElts); WRITE_NODE_FIELD(inhRelations); WRITE_NODE_FIELD(inhOids); WRITE_INT_FIELD(parentOidCount); WRITE_NODE_FIELD(constraints); WRITE_NODE_FIELD(options); WRITE_ENUM_FIELD(oncommit, OnCommitAction); WRITE_STRING_FIELD(tablespacename); WRITE_NODE_FIELD(distributedBy); WRITE_CHAR_FIELD(relKind); WRITE_CHAR_FIELD(relStorage); /* policy omitted */ /* postCreate - for analysis, QD only */ /* deferredStmts - for analysis, QD only */ WRITE_BOOL_FIELD(is_part_child); WRITE_BOOL_FIELD(is_add_part); WRITE_BOOL_FIELD(is_split_part); WRITE_OID_FIELD(ownerid); WRITE_BOOL_FIELD(buildAoBlkdir); WRITE_NODE_FIELD(attr_encodings); }
void OutTask(OUTFUNC_ARGS) { WRITE_LOCALS(Task); WRITE_NODE_TYPE("TASK"); WRITE_ENUM_FIELD(taskType, TaskType); WRITE_UINT64_FIELD(jobId); WRITE_UINT_FIELD(taskId); WRITE_STRING_FIELD(queryString); WRITE_UINT64_FIELD(anchorShardId); WRITE_NODE_FIELD(taskPlacementList); WRITE_NODE_FIELD(dependedTaskList); WRITE_UINT_FIELD(partitionId); WRITE_UINT_FIELD(upstreamTaskId); WRITE_NODE_FIELD(shardInterval); WRITE_BOOL_FIELD(assignmentConstrained); WRITE_NODE_FIELD(taskExecution); WRITE_BOOL_FIELD(upsertQuery); WRITE_CHAR_FIELD(replicationModel); WRITE_BOOL_FIELD(modifyWithSubquery); WRITE_NODE_FIELD(relationShardList); WRITE_NODE_FIELD(relationRowLockList); WRITE_NODE_FIELD(rowValuesLists); }
static void _outAgg(StringInfo str, Agg *node) { WRITE_NODE_TYPE("AGG"); _outPlanInfo(str, (Plan *) node); WRITE_ENUM_FIELD(aggstrategy, AggStrategy); WRITE_INT_FIELD(numCols); WRITE_INT_ARRAY(grpColIdx, numCols, AttrNumber); if (print_variable_fields) { WRITE_LONG_FIELD(numGroups); WRITE_INT_FIELD(transSpace); } WRITE_INT_FIELD(numNullCols); WRITE_UINT64_FIELD(inputGrouping); WRITE_UINT64_FIELD(grouping); WRITE_BOOL_FIELD(inputHasGrouping); WRITE_INT_FIELD(rollupGSTimes); WRITE_BOOL_FIELD(lastAgg); WRITE_BOOL_FIELD(streaming); }
static void _outBoolExpr(StringInfo str, BoolExpr *node) { WRITE_NODE_TYPE("BOOLEXPR"); WRITE_ENUM_FIELD(boolop, BoolExprType); WRITE_NODE_FIELD(args); }
static void _outCreateExtensionStmt(StringInfo str, CreateExtensionStmt *node) { WRITE_NODE_TYPE("CREATEEXTENSIONSTMT"); WRITE_STRING_FIELD(extname); WRITE_BOOL_FIELD(if_not_exists); WRITE_NODE_FIELD(options); WRITE_ENUM_FIELD(create_ext_state, CreateExtensionState); }
void OutRelationRowLock(OUTFUNC_ARGS) { WRITE_LOCALS(RelationRowLock); WRITE_NODE_TYPE("RELATIONROWLOCK"); WRITE_OID_FIELD(relationId); WRITE_ENUM_FIELD(rowLockStrength, LockClauseStrength); }
static void _outAExpr(StringInfo str, A_Expr *node) { WRITE_NODE_TYPE("AEXPR"); WRITE_ENUM_FIELD(kind, A_Expr_Kind); switch (node->kind) { case AEXPR_OP: WRITE_NODE_FIELD(name); break; case AEXPR_AND: break; case AEXPR_OR: break; case AEXPR_NOT: break; case AEXPR_OP_ANY: WRITE_NODE_FIELD(name); break; case AEXPR_OP_ALL: WRITE_NODE_FIELD(name); break; case AEXPR_DISTINCT: WRITE_NODE_FIELD(name); break; case AEXPR_NULLIF: WRITE_NODE_FIELD(name); break; case AEXPR_OF: WRITE_NODE_FIELD(name); break; case AEXPR_IN: WRITE_NODE_FIELD(name); break; default: break; } WRITE_NODE_FIELD(lexpr); WRITE_NODE_FIELD(rexpr); WRITE_INT_FIELD(location); }
static void _outOuterJoinInfo(StringInfo str, OuterJoinInfo *node) { WRITE_NODE_TYPE("OUTERJOININFO"); WRITE_BITMAPSET_FIELD(min_lefthand); WRITE_BITMAPSET_FIELD(min_righthand); WRITE_ENUM_FIELD(join_type, JoinType); WRITE_BOOL_FIELD(lhs_strict); }
static void _outAlterDomainStmt(StringInfo str, AlterDomainStmt *node) { WRITE_NODE_TYPE("ALTERDOMAINSTMT"); WRITE_CHAR_FIELD(subtype); WRITE_NODE_FIELD(typname); WRITE_STRING_FIELD(name); WRITE_NODE_FIELD(def); WRITE_ENUM_FIELD(behavior, DropBehavior); }
static void _outSubLink(StringInfo str, SubLink *node) { WRITE_NODE_TYPE("SUBLINK"); WRITE_ENUM_FIELD(subLinkType, SubLinkType); WRITE_NODE_FIELD(testexpr); WRITE_NODE_FIELD(operName); WRITE_INT_FIELD(location); /*CDB*/ WRITE_NODE_FIELD(subselect); }
void OutGroupShardPlacement(OUTFUNC_ARGS) { WRITE_LOCALS(GroupShardPlacement); WRITE_NODE_TYPE("GROUPSHARDPLACEMENT"); WRITE_UINT64_FIELD(placementId); WRITE_UINT64_FIELD(shardId); WRITE_UINT64_FIELD(shardLength); WRITE_ENUM_FIELD(shardState, RelayFileState); WRITE_UINT_FIELD(groupId); }
static void _outFuncExpr(StringInfo str, FuncExpr *node) { WRITE_NODE_TYPE("FUNCEXPR"); WRITE_OID_FIELD(funcid); WRITE_OID_FIELD(funcresulttype); WRITE_BOOL_FIELD(funcretset); WRITE_ENUM_FIELD(funcformat, CoercionForm); WRITE_NODE_FIELD(args); WRITE_BOOL_FIELD(is_tablefunc); }
static void _outPlannedStmt(StringInfo str, PlannedStmt *node) { WRITE_NODE_TYPE("PLANNEDSTMT"); WRITE_ENUM_FIELD(commandType, CmdType); WRITE_ENUM_FIELD(planGen, PlanGenerator); WRITE_BOOL_FIELD(canSetTag); WRITE_BOOL_FIELD(transientPlan); 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(result_partitions); WRITE_NODE_FIELD(result_aosegnos); WRITE_NODE_FIELD(queryPartOids); WRITE_NODE_FIELD(queryPartsMetadata); WRITE_NODE_FIELD(numSelectorsPerScanId); WRITE_NODE_FIELD(rowMarks); WRITE_NODE_FIELD(relationOids); /* * Don't serialize invalItems. The TIDs of the invalidated items wouldn't * make sense in segments. */ WRITE_INT_FIELD(nParamExec); WRITE_INT_FIELD(nMotionNodes); WRITE_INT_FIELD(nInitPlans); /* Don't serialize policy */ WRITE_UINT64_FIELD(query_mem); }
static void outLogicalIndexInfo(StringInfo str, LogicalIndexInfo *node) { WRITE_OID_FIELD(logicalIndexOid); WRITE_INT_FIELD(nColumns); WRITE_INT_ARRAY(indexKeys, nColumns, AttrNumber); WRITE_NODE_FIELD(indPred); WRITE_NODE_FIELD(indExprs); WRITE_BOOL_FIELD(indIsUnique); WRITE_ENUM_FIELD(indType, LogicalIndexType); WRITE_NODE_FIELD(partCons); WRITE_NODE_FIELD(defaultLevels); }
static void _outFlow(StringInfo str, Flow *node) { WRITE_NODE_TYPE("FLOW"); WRITE_ENUM_FIELD(flotype, FlowType); WRITE_ENUM_FIELD(req_move, Movement); WRITE_ENUM_FIELD(locustype, CdbLocusType); WRITE_INT_FIELD(segindex); /* This array format as in Group and Sort nodes. */ WRITE_INT_FIELD(numSortCols); WRITE_INT_ARRAY(sortColIdx, numSortCols, AttrNumber); WRITE_OID_ARRAY(sortOperators, numSortCols); WRITE_NODE_FIELD(hashExpr); WRITE_NODE_FIELD(flow_before_req_move); }
static void _outPlannedStmt(StringInfo str, PlannedStmt *node) { WRITE_NODE_TYPE("PLANNEDSTMT"); WRITE_ENUM_FIELD(commandType, CmdType); WRITE_ENUM_FIELD(planGen, PlanGenerator); WRITE_BOOL_FIELD(canSetTag); WRITE_BOOL_FIELD(transientPlan); 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_NODE_FIELD(rewindPlanIDs); WRITE_NODE_FIELD(returningLists); WRITE_NODE_FIELD(result_partitions); WRITE_NODE_FIELD(result_aosegnos); WRITE_NODE_FIELD(queryPartOids); WRITE_NODE_FIELD(queryPartsMetadata); WRITE_NODE_FIELD(numSelectorsPerScanId); WRITE_NODE_FIELD(rowMarks); WRITE_NODE_FIELD(relationOids); WRITE_NODE_FIELD(invalItems); WRITE_INT_FIELD(nCrossLevelParams); WRITE_INT_FIELD(nMotionNodes); WRITE_INT_FIELD(nInitPlans); /* Don't serialize policy */ WRITE_NODE_FIELD(sliceTable); WRITE_UINT64_FIELD(query_mem); WRITE_NODE_FIELD(transientTypeRecords); }
static void _outJoinExpr(StringInfo str, JoinExpr *node) { WRITE_NODE_TYPE("JOINEXPR"); WRITE_ENUM_FIELD(jointype, JoinType); WRITE_BOOL_FIELD(isNatural); WRITE_NODE_FIELD(larg); WRITE_NODE_FIELD(rarg); WRITE_NODE_FIELD(usingClause); WRITE_NODE_FIELD(quals); WRITE_NODE_FIELD(alias); WRITE_INT_FIELD(rtindex); }
static void _outSetOp(StringInfo str, SetOp *node) { WRITE_NODE_TYPE("SETOP"); _outPlanInfo(str, (Plan *) node); WRITE_ENUM_FIELD(cmd, SetOpCmd); WRITE_INT_FIELD(numCols); WRITE_INT_ARRAY(dupColIdx, numCols, AttrNumber); WRITE_INT_FIELD(flagColIdx); }
static void _outAggref(StringInfo str, Aggref *node) { WRITE_NODE_TYPE("AGGREF"); WRITE_OID_FIELD(aggfnoid); WRITE_OID_FIELD(aggtype); WRITE_NODE_FIELD(args); WRITE_UINT_FIELD(agglevelsup); WRITE_BOOL_FIELD(aggstar); WRITE_BOOL_FIELD(aggdistinct); WRITE_ENUM_FIELD(aggstage, AggStage); WRITE_NODE_FIELD(aggorder); }
void OutShardPlacement(OUTFUNC_ARGS) { WRITE_LOCALS(ShardPlacement); WRITE_NODE_TYPE("SHARDPLACEMENT"); WRITE_UINT64_FIELD(placementId); WRITE_UINT64_FIELD(shardId); WRITE_UINT64_FIELD(shardLength); WRITE_ENUM_FIELD(shardState, RelayFileState); WRITE_UINT_FIELD(groupId); WRITE_STRING_FIELD(nodeName); WRITE_UINT_FIELD(nodePort); /* so we can deal with 0 */ WRITE_INT_FIELD(partitionMethod); WRITE_UINT_FIELD(colocationGroupId); WRITE_UINT_FIELD(representativeValue); }
static void _outConstraint(StringInfo str, Constraint *node) { WRITE_NODE_TYPE("CONSTRAINT"); WRITE_STRING_FIELD(name); WRITE_OID_FIELD(conoid); WRITE_ENUM_FIELD(contype,ConstrType); switch (node->contype) { case CONSTR_PRIMARY: case CONSTR_UNIQUE: WRITE_NODE_FIELD(keys); WRITE_NODE_FIELD(options); WRITE_STRING_FIELD(indexspace); break; case CONSTR_CHECK: case CONSTR_DEFAULT: WRITE_NODE_FIELD(raw_expr); WRITE_STRING_FIELD(cooked_expr); break; case CONSTR_NOTNULL: case CONSTR_NULL: case CONSTR_ATTR_DEFERRABLE: case CONSTR_ATTR_NOT_DEFERRABLE: case CONSTR_ATTR_DEFERRED: case CONSTR_ATTR_IMMEDIATE: break; default: elog(WARNING,"serialization doesn't know what to do with this constraint"); break; } }
void OutMapMergeJob(OUTFUNC_ARGS) { WRITE_LOCALS(MapMergeJob); int arrayLength = node->sortedShardIntervalArrayLength; int i; WRITE_NODE_TYPE("MAPMERGEJOB"); OutJobFields(str, (Job *) node); WRITE_NODE_FIELD(reduceQuery); WRITE_ENUM_FIELD(partitionType, PartitionType); WRITE_NODE_FIELD(partitionColumn); WRITE_UINT_FIELD(partitionCount); WRITE_INT_FIELD(sortedShardIntervalArrayLength); for (i = 0; i < arrayLength; ++i) { outNode(str, node->sortedShardIntervalArray[i]); } WRITE_NODE_FIELD(mapTaskList); WRITE_NODE_FIELD(mergeTaskList); }