static void _outAlterQueueStmt(StringInfo str, AlterQueueStmt *node) { WRITE_NODE_TYPE("ALTERQUEUESTMT"); WRITE_STRING_FIELD(queue); WRITE_NODE_FIELD(options); /* List of DefElem nodes */ }
static void _outCreateResourceGroupStmt(StringInfo str, CreateResourceGroupStmt *node) { WRITE_NODE_TYPE("CREATERESOURCEGROUPSTMT"); WRITE_STRING_FIELD(name); WRITE_NODE_FIELD(options); /* List of DefElem nodes */ }
static void _outCreateQueueStmt(StringInfo str, CreateQueueStmt *node) { WRITE_NODE_TYPE("CREATEQUEUESTMT"); WRITE_STRING_FIELD(queue); WRITE_NODE_FIELD(options); /* List of DefElem nodes */ }
void OutDistributedPlan(OUTFUNC_ARGS) { WRITE_LOCALS(DistributedPlan); WRITE_NODE_TYPE("DISTRIBUTEDPLAN"); WRITE_UINT64_FIELD(planId); WRITE_INT_FIELD(operation); WRITE_BOOL_FIELD(hasReturning); WRITE_NODE_FIELD(workerJob); WRITE_NODE_FIELD(masterQuery); WRITE_BOOL_FIELD(routerExecutable); WRITE_UINT64_FIELD(queryId); WRITE_NODE_FIELD(relationIdList); WRITE_NODE_FIELD(insertSelectSubquery); WRITE_NODE_FIELD(insertTargetList); WRITE_OID_FIELD(targetRelationId); WRITE_NODE_FIELD(subPlanList); WRITE_NODE_FIELD(planningError); }
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 _outColumnDef(StringInfo str, ColumnDef *node) { WRITE_NODE_TYPE("COLUMNDEF"); WRITE_STRING_FIELD(colname); WRITE_NODE_FIELD(typname); WRITE_INT_FIELD(inhcount); WRITE_BOOL_FIELD(is_local); WRITE_BOOL_FIELD(is_not_null); WRITE_INT_FIELD(attnum); WRITE_OID_FIELD(default_oid); WRITE_NODE_FIELD(raw_default); WRITE_BOOL_FIELD(default_is_null); WRITE_STRING_FIELD(cooked_default); WRITE_NODE_FIELD(constraints); WRITE_NODE_FIELD(encoding); }
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); }
static void set_T_UniquePath(DebugGraph *graph, DebugNode *n, PlannerInfo *root, Node *node) { UniquePath *actual_node = (UniquePath*) node; set_T_Path(graph, n, root, node); /* inheritance */ WRITE_NODE_FIELD(subpath); }
void OutMultiPartition(OUTFUNC_ARGS) { WRITE_LOCALS(MultiPartition); WRITE_NODE_TYPE("MULTIPARTITION"); WRITE_NODE_FIELD(partitionColumn); OutMultiUnaryNodeFields(str, (const MultiUnaryNode *) node); }
void OutMultiProject(OUTFUNC_ARGS) { WRITE_LOCALS(MultiProject); WRITE_NODE_TYPE("MULTIPROJECT"); WRITE_NODE_FIELD(columnList); OutMultiUnaryNodeFields(str, (const MultiUnaryNode *) node); }
void OutMultiSelect(OUTFUNC_ARGS) { WRITE_LOCALS(MultiSelect); WRITE_NODE_TYPE("MULTISELECT"); WRITE_NODE_FIELD(selectClauseList); OutMultiUnaryNodeFields(str, (const MultiUnaryNode *) node); }
static void _outSubqueryScan(StringInfo str, SubqueryScan *node) { WRITE_NODE_TYPE("SUBQUERYSCAN"); _outScanInfo(str, (Scan *) node); WRITE_NODE_FIELD(subplan); /* Planner-only: subrtable -- don't serialize. */ }
static void _outWindowKey(StringInfo str, WindowKey *node) { WRITE_NODE_TYPE("WINDOWKEY"); WRITE_INT_FIELD(numSortCols); WRITE_INT_ARRAY(sortColIdx, numSortCols, AttrNumber); WRITE_OID_ARRAY(sortOperators, numSortCols); WRITE_NODE_FIELD(frame); }
static void _outCustomScan(StringInfo str, CustomScan *node) { WRITE_NODE_TYPE("CUSTOMSCAN"); _outScanInfo(str, (Scan *) node); WRITE_UINT_FIELD(flags); WRITE_NODE_FIELD(custom_plans); WRITE_NODE_FIELD(custom_exprs); WRITE_NODE_FIELD(custom_private); WRITE_NODE_FIELD(custom_scan_tlist); WRITE_BITMAPSET_FIELD(custom_relids); // serialize CustomScanMethods WRITE_STRING_FIELD(methods->CustomName); WRITE_STRING_FIELD(methods->LibraryName); WRITE_STRING_FIELD(methods->SymbolName); }
static void set_T_HashPath(DebugGraph *graph, DebugNode *n, PlannerInfo *root, Node *node) { HashPath *actual_node = (HashPath*) node; set_T_JoinPath(graph, n, root, node); /* inheritance */ WRITE_NODE_FIELD(path_hashclauses); WRITE_INT_FIELD(num_batches); }
static void _outAConst(StringInfo str, A_Const *node) { WRITE_NODE_TYPE("A_CONST"); _outValue(str, &(node->val)); WRITE_NODE_FIELD(typname); WRITE_INT_FIELD(location); /*CDB*/ }
void OutDistributedSubPlan(OUTFUNC_ARGS) { WRITE_LOCALS(DistributedSubPlan); WRITE_NODE_TYPE("DISTRIBUTEDSUBPLAN"); WRITE_UINT_FIELD(subPlanId); WRITE_NODE_FIELD(plan); }
static void set_T_ParamPathInfo(DebugGraph *graph, DebugNode *n, PlannerInfo *root, Node *node) { ParamPathInfo *actual_node = (ParamPathInfo*) node; addRelids(n, "ppi_req_outer", root, actual_node->ppi_req_outer); WRITE_FLOAT_FIELD(ppi_rows, "%lf"); WRITE_NODE_FIELD(ppi_clauses); }
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 _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 _outWindow(StringInfo str, Window *node) { WRITE_NODE_TYPE("WINDOW"); _outPlanInfo(str, (Plan *) node); WRITE_INT_FIELD(numPartCols); WRITE_INT_ARRAY(partColIdx, numPartCols, AttrNumber); WRITE_NODE_FIELD(windowKeys); }
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 set_T_PlannerInfo(DebugGraph *graph, DebugNode *n, PlannerInfo *ignored, Node *node) { PlannerInfo *root = (PlannerInfo*) node; PlannerInfo *actual_node = (PlannerInfo*) node; WRITE_UINT_FIELD(query_level); WRITE_NODE_FIELD(parent_root); addRelids(n, "all_baserels", root, root->all_baserels); WRITE_NODE_FIELD(left_join_clauses); WRITE_NODE_FIELD(right_join_clauses); WRITE_NODE_FIELD(full_join_clauses); WRITE_NODE_FIELD(initial_rels); WRITE_FLOAT_FIELD(total_table_pages, "%lf"); WRITE_FLOAT_FIELD(tuple_fraction, "%lf"); WRITE_FLOAT_FIELD(limit_tuples, "%lf"); }
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; } }
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, numOutputSegs, int); WRITE_INT_FIELD(numSortCols); WRITE_INT_ARRAY(sortColIdx, numSortCols, AttrNumber); WRITE_OID_ARRAY(sortOperators, numSortCols); WRITE_INT_FIELD(segidColIdx); _outPlanInfo(str, (Plan *) node); }
static void set_T_RelOptInfo(DebugGraph *graph, DebugNode *n, PlannerInfo *root, Node *node) { RelOptInfo *actual_node = (RelOptInfo*) node; addRelids(n, "relids", root, actual_node->relids); WRITE_FLOAT_FIELD(rows, "%lf"); WRITE_INT_FIELD(width); # if PG_VERSION_NUM/100 >= 903 addRelids(n, "lateral_relids", root, actual_node->lateral_relids); WRITE_BOOL_FIELD(consider_startup); # endif WRITE_UINT_FIELD(relid); newDebugEdgeByNode(graph, n, getTablespace(graph, actual_node->reltablespace), "reltablespace"); WRITE_INT_FIELD(rtekind); WRITE_FLOAT_FIELD(tuples, "%lf"); WRITE_FLOAT_FIELD(allvisfrac, "%lf"); WRITE_UINT_FIELD(pages); WRITE_NODE_FIELD(pathlist); WRITE_NODE_FIELD(cheapest_startup_path); WRITE_NODE_FIELD(cheapest_total_path); WRITE_NODE_FIELD(baserestrictinfo); WRITE_FLOAT_FIELD(baserestrictcost.startup, "%lf"); WRITE_FLOAT_FIELD(baserestrictcost.per_tuple, "%lf"); WRITE_NODE_FIELD(joininfo); WRITE_BOOL_FIELD(has_eclass_joins); /* pseudo attribute. Is there more than one root per reloptinfo? */ newDebugEdgeByNode(graph, n, getNode(graph, root, (Node*)root), "_root"); }
static void _outSort(StringInfo str, Sort *node) { WRITE_NODE_TYPE("SORT"); _outPlanInfo(str, (Plan *) node); WRITE_INT_FIELD(numCols); WRITE_INT_ARRAY(sortColIdx, node->numCols, AttrNumber); WRITE_OID_ARRAY(sortOperators, node->numCols); WRITE_BOOL_ARRAY(nullsFirst, node->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); }
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); }
/* * print the basic stuff of all nodes that inherit from Plan */ static void _outPlanInfo(StringInfo str, Plan *node) { if (print_variable_fields) { WRITE_INT_FIELD(plan_node_id); WRITE_INT_FIELD(plan_parent_node_id); WRITE_FLOAT_FIELD(startup_cost, "%.2f"); WRITE_FLOAT_FIELD(total_cost, "%.2f"); WRITE_FLOAT_FIELD(plan_rows, "%.0f"); WRITE_INT_FIELD(plan_width); } WRITE_NODE_FIELD(targetlist); WRITE_NODE_FIELD(qual); WRITE_BITMAPSET_FIELD(extParam); WRITE_BITMAPSET_FIELD(allParam); WRITE_INT_FIELD(nParamExec); if (print_variable_fields) { WRITE_NODE_FIELD(flow); WRITE_INT_FIELD(dispatch); WRITE_BOOL_FIELD(directDispatch.isDirectDispatch); WRITE_NODE_FIELD(directDispatch.contentIds); WRITE_INT_FIELD(nMotionNodes); WRITE_INT_FIELD(nInitPlans); WRITE_NODE_FIELD(sliceTable); } WRITE_NODE_FIELD(lefttree); WRITE_NODE_FIELD(righttree); WRITE_NODE_FIELD(initPlan); if (print_variable_fields) { WRITE_UINT64_FIELD(operatorMemKB); } }
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_OID_FIELD(oidInfo.relOid); WRITE_OID_FIELD(oidInfo.comptypeOid); WRITE_OID_FIELD(oidInfo.toastOid); WRITE_OID_FIELD(oidInfo.toastIndexOid); WRITE_OID_FIELD(oidInfo.toastComptypeOid); WRITE_OID_FIELD(oidInfo.aosegOid); WRITE_OID_FIELD(oidInfo.aosegIndexOid); WRITE_OID_FIELD(oidInfo.aosegComptypeOid); WRITE_OID_FIELD(oidInfo.aovisimapOid); WRITE_OID_FIELD(oidInfo.aovisimapIndexOid); WRITE_OID_FIELD(oidInfo.aovisimapComptypeOid); WRITE_OID_FIELD(oidInfo.aoblkdirOid); WRITE_OID_FIELD(oidInfo.aoblkdirIndexOid); WRITE_OID_FIELD(oidInfo.aoblkdirComptypeOid); 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_BOOL_FIELD(is_error_table); WRITE_NODE_FIELD(attr_encodings); }