1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-03 20:02:46 +03:00

Reformat node comments in plannodes.h

This is similar to d575051b9a but this time for the comments in
plannodes.h to avoid long lines, which is useful if adding per-field
annotations with pg_node_attr() to these planner structures.

Some patches are under discussion to add such properties to planner
fields, which is something that may or may not happen, and this change
makes future proposals easier to work on and review, which being more
consistent in style with the parse nodes.

Author: Sami Imseih
Discussion: https://postgr.es/m/Z5xTb5iBHVGns35R@paquier.xyz
This commit is contained in:
Michael Paquier
2025-02-10 09:58:25 +09:00
parent 9926f854d0
commit 3d17d7d7fb

View File

@ -49,61 +49,90 @@ typedef struct PlannedStmt
NodeTag type; NodeTag type;
CmdType commandType; /* select|insert|update|delete|merge|utility */ /* select|insert|update|delete|merge|utility */
CmdType commandType;
uint64 queryId; /* query identifier (copied from Query) */ /* query identifier (copied from Query) */
uint64 queryId;
bool hasReturning; /* is it insert|update|delete|merge RETURNING? */ /* is it insert|update|delete|merge RETURNING? */
bool hasReturning;
bool hasModifyingCTE; /* has insert|update|delete|merge in WITH? */ /* has insert|update|delete|merge in WITH? */
bool hasModifyingCTE;
bool canSetTag; /* do I set the command result tag? */ /* do I set the command result tag? */
bool canSetTag;
bool transientPlan; /* redo plan when TransactionXmin changes? */ /* redo plan when TransactionXmin changes? */
bool transientPlan;
bool dependsOnRole; /* is plan specific to current role? */ /* is plan specific to current role? */
bool dependsOnRole;
bool parallelModeNeeded; /* parallel mode required to execute? */ /* parallel mode required to execute? */
bool parallelModeNeeded;
int jitFlags; /* which forms of JIT should be performed */ /* which forms of JIT should be performed */
int jitFlags;
struct Plan *planTree; /* tree of Plan nodes */ /* tree of Plan nodes */
struct Plan *planTree;
List *partPruneInfos; /* List of PartitionPruneInfo contained in the /*
* plan */ * List of PartitionPruneInfo contained in the plan
*/
List *partPruneInfos;
List *rtable; /* list of RangeTblEntry nodes */ /* list of RangeTblEntry nodes */
List *rtable;
Bitmapset *unprunableRelids; /* RT indexes of relations that are not /*
* subject to runtime pruning or are * RT indexes of relations that are not subject to runtime pruning or are
* needed to perform runtime pruning */ * needed to perform runtime pruning
*/
Bitmapset *unprunableRelids;
List *permInfos; /* list of RTEPermissionInfo nodes for rtable /*
* entries needing one */ * list of RTEPermissionInfo nodes for rtable entries needing one
*/
List *permInfos;
/* rtable indexes of target relations for INSERT/UPDATE/DELETE/MERGE */ /* rtable indexes of target relations for INSERT/UPDATE/DELETE/MERGE */
List *resultRelations; /* integer list of RT indexes, or NIL */ /* integer list of RT indexes, or NIL */
List *resultRelations;
List *appendRelations; /* list of AppendRelInfo nodes */ /* list of AppendRelInfo nodes */
List *appendRelations;
List *subplans; /* Plan trees for SubPlan expressions; note /*
* that some could be NULL */ * Plan trees for SubPlan expressions; note that some could be NULL
*/
List *subplans;
Bitmapset *rewindPlanIDs; /* indices of subplans that require REWIND */ /* indices of subplans that require REWIND */
Bitmapset *rewindPlanIDs;
List *rowMarks; /* a list of PlanRowMark's */ /* a list of PlanRowMark's */
List *rowMarks;
List *relationOids; /* OIDs of relations the plan depends on */ /* OIDs of relations the plan depends on */
List *relationOids;
List *invalItems; /* other dependencies, as PlanInvalItems */ /* other dependencies, as PlanInvalItems */
List *invalItems;
List *paramExecTypes; /* type OIDs for PARAM_EXEC Params */ /* type OIDs for PARAM_EXEC Params */
List *paramExecTypes;
Node *utilityStmt; /* non-null if this is utility stmt */ /* non-null if this is utility stmt */
Node *utilityStmt;
/* statement location in source string (copied from Query) */ /* statement location in source string (copied from Query) */
ParseLoc stmt_location; /* start location, or -1 if unknown */ /* start location, or -1 if unknown */
ParseLoc stmt_len; /* length in bytes; 0 means "rest of string" */ ParseLoc stmt_location;
/* length in bytes; 0 means "rest of string" */
ParseLoc stmt_len;
} PlannedStmt; } PlannedStmt;
/* macro for fetching the Plan associated with a SubPlan node */ /* macro for fetching the Plan associated with a SubPlan node */
@ -132,37 +161,49 @@ typedef struct Plan
/* /*
* estimated execution costs for plan (see costsize.c for more info) * estimated execution costs for plan (see costsize.c for more info)
*/ */
int disabled_nodes; /* count of disabled nodes */ /* count of disabled nodes */
Cost startup_cost; /* cost expended before fetching any tuples */ int disabled_nodes;
Cost total_cost; /* total cost (assuming all tuples fetched) */ /* cost expended before fetching any tuples */
Cost startup_cost;
/* total cost (assuming all tuples fetched) */
Cost total_cost;
/* /*
* planner's estimate of result size of this plan step * planner's estimate of result size of this plan step
*/ */
Cardinality plan_rows; /* number of rows plan is expected to emit */ /* number of rows plan is expected to emit */
int plan_width; /* average row width in bytes */ Cardinality plan_rows;
/* average row width in bytes */
int plan_width;
/* /*
* information needed for parallel query * information needed for parallel query
*/ */
bool parallel_aware; /* engage parallel-aware logic? */ /* engage parallel-aware logic? */
bool parallel_safe; /* OK to use as part of parallel plan? */ bool parallel_aware;
/* OK to use as part of parallel plan? */
bool parallel_safe;
/* /*
* information needed for asynchronous execution * information needed for asynchronous execution
*/ */
bool async_capable; /* engage asynchronous-capable logic? */ /* engage asynchronous-capable logic? */
bool async_capable;
/* /*
* Common structural data for all Plan types. * Common structural data for all Plan types.
*/ */
int plan_node_id; /* unique across entire final plan tree */ /* unique across entire final plan tree */
List *targetlist; /* target list to be computed at this node */ int plan_node_id;
List *qual; /* implicitly-ANDed qual conditions */ /* target list to be computed at this node */
struct Plan *lefttree; /* input plan tree(s) */ List *targetlist;
/* implicitly-ANDed qual conditions */
List *qual;
/* input plan tree(s) */
struct Plan *lefttree;
struct Plan *righttree; struct Plan *righttree;
List *initPlan; /* Init Plan nodes (un-correlated expr /* Init Plan nodes (un-correlated expr subselects) */
* subselects) */ List *initPlan;
/* /*
* Information for management of parameter-change-driven rescanning * Information for management of parameter-change-driven rescanning
@ -237,32 +278,54 @@ typedef struct ProjectSet
typedef struct ModifyTable typedef struct ModifyTable
{ {
Plan plan; Plan plan;
CmdType operation; /* INSERT, UPDATE, DELETE, or MERGE */ /* INSERT, UPDATE, DELETE, or MERGE */
bool canSetTag; /* do we set the command tag/es_processed? */ CmdType operation;
Index nominalRelation; /* Parent RT index for use of EXPLAIN */ /* do we set the command tag/es_processed? */
Index rootRelation; /* Root RT index, if partitioned/inherited */ bool canSetTag;
bool partColsUpdated; /* some part key in hierarchy updated? */ /* Parent RT index for use of EXPLAIN */
List *resultRelations; /* integer list of RT indexes */ Index nominalRelation;
List *updateColnosLists; /* per-target-table update_colnos lists */ /* Root RT index, if partitioned/inherited */
List *withCheckOptionLists; /* per-target-table WCO lists */ Index rootRelation;
char *returningOldAlias; /* alias for OLD in RETURNING lists */ /* some part key in hierarchy updated? */
char *returningNewAlias; /* alias for NEW in RETURNING lists */ bool partColsUpdated;
List *returningLists; /* per-target-table RETURNING tlists */ /* integer list of RT indexes */
List *fdwPrivLists; /* per-target-table FDW private data lists */ List *resultRelations;
Bitmapset *fdwDirectModifyPlans; /* indices of FDW DM plans */ /* per-target-table update_colnos lists */
List *rowMarks; /* PlanRowMarks (non-locking only) */ List *updateColnosLists;
int epqParam; /* ID of Param for EvalPlanQual re-eval */ /* per-target-table WCO lists */
OnConflictAction onConflictAction; /* ON CONFLICT action */ List *withCheckOptionLists;
List *arbiterIndexes; /* List of ON CONFLICT arbiter index OIDs */ /* alias for OLD in RETURNING lists */
List *onConflictSet; /* INSERT ON CONFLICT DO UPDATE targetlist */ char *returningOldAlias;
List *onConflictCols; /* target column numbers for onConflictSet */ /* alias for NEW in RETURNING lists */
Node *onConflictWhere; /* WHERE for ON CONFLICT UPDATE */ char *returningNewAlias;
Index exclRelRTI; /* RTI of the EXCLUDED pseudo relation */ /* per-target-table RETURNING tlists */
List *exclRelTlist; /* tlist of the EXCLUDED pseudo relation */ List *returningLists;
List *mergeActionLists; /* per-target-table lists of actions for /* per-target-table FDW private data lists */
* MERGE */ List *fdwPrivLists;
List *mergeJoinConditions; /* per-target-table join conditions /* indices of FDW DM plans */
* for MERGE */ Bitmapset *fdwDirectModifyPlans;
/* PlanRowMarks (non-locking only) */
List *rowMarks;
/* ID of Param for EvalPlanQual re-eval */
int epqParam;
/* ON CONFLICT action */
OnConflictAction onConflictAction;
/* List of ON CONFLICT arbiter index OIDs */
List *arbiterIndexes;
/* INSERT ON CONFLICT DO UPDATE targetlist */
List *onConflictSet;
/* target column numbers for onConflictSet */
List *onConflictCols;
/* WHERE for ON CONFLICT UPDATE */
Node *onConflictWhere;
/* RTI of the EXCLUDED pseudo relation */
Index exclRelRTI;
/* tlist of the EXCLUDED pseudo relation */
List *exclRelTlist;
/* per-target-table lists of actions for MERGE */
List *mergeActionLists;
/* per-target-table join conditions for MERGE */
List *mergeJoinConditions;
} ModifyTable; } ModifyTable;
struct PartitionPruneInfo; /* forward reference to struct below */ struct PartitionPruneInfo; /* forward reference to struct below */
@ -275,9 +338,11 @@ struct PartitionPruneInfo; /* forward reference to struct below */
typedef struct Append typedef struct Append
{ {
Plan plan; Plan plan;
Bitmapset *apprelids; /* RTIs of appendrel(s) formed by this node */ /* RTIs of appendrel(s) formed by this node */
Bitmapset *apprelids;
List *appendplans; List *appendplans;
int nasyncplans; /* # of asynchronous plans */ /* # of asynchronous plans */
int nasyncplans;
/* /*
* All 'appendplans' preceding this index are non-partial plans. All * All 'appendplans' preceding this index are non-partial plans. All
@ -404,7 +469,8 @@ typedef struct Scan
pg_node_attr(abstract) pg_node_attr(abstract)
Plan plan; Plan plan;
Index scanrelid; /* relid is index into the range table */ /* relid is index into the range table */
Index scanrelid;
} Scan; } Scan;
/* ---------------- /* ----------------
@ -467,13 +533,20 @@ typedef struct SampleScan
typedef struct IndexScan typedef struct IndexScan
{ {
Scan scan; Scan scan;
Oid indexid; /* OID of index to scan */ /* OID of index to scan */
List *indexqual; /* list of index quals (usually OpExprs) */ Oid indexid;
List *indexqualorig; /* the same in original form */ /* list of index quals (usually OpExprs) */
List *indexorderby; /* list of index ORDER BY exprs */ List *indexqual;
List *indexorderbyorig; /* the same in original form */ /* the same in original form */
List *indexorderbyops; /* OIDs of sort ops for ORDER BY exprs */ List *indexqualorig;
ScanDirection indexorderdir; /* forward or backward or don't care */ /* list of index ORDER BY exprs */
List *indexorderby;
/* the same in original form */
List *indexorderbyorig;
/* OIDs of sort ops for ORDER BY exprs */
List *indexorderbyops;
/* forward or backward or don't care */
ScanDirection indexorderdir;
} IndexScan; } IndexScan;
/* ---------------- /* ----------------
@ -510,12 +583,18 @@ typedef struct IndexScan
typedef struct IndexOnlyScan typedef struct IndexOnlyScan
{ {
Scan scan; Scan scan;
Oid indexid; /* OID of index to scan */ /* OID of index to scan */
List *indexqual; /* list of index quals (usually OpExprs) */ Oid indexid;
List *recheckqual; /* index quals in recheckable form */ /* list of index quals (usually OpExprs) */
List *indexorderby; /* list of index ORDER BY exprs */ List *indexqual;
List *indextlist; /* TargetEntry list describing index's cols */ /* index quals in recheckable form */
ScanDirection indexorderdir; /* forward or backward or don't care */ List *recheckqual;
/* list of index ORDER BY exprs */
List *indexorderby;
/* TargetEntry list describing index's cols */
List *indextlist;
/* forward or backward or don't care */
ScanDirection indexorderdir;
} IndexOnlyScan; } IndexOnlyScan;
/* ---------------- /* ----------------
@ -538,10 +617,14 @@ typedef struct IndexOnlyScan
typedef struct BitmapIndexScan typedef struct BitmapIndexScan
{ {
Scan scan; Scan scan;
Oid indexid; /* OID of index to scan */ /* OID of index to scan */
bool isshared; /* Create shared bitmap if set */ Oid indexid;
List *indexqual; /* list of index quals (OpExprs) */ /* Create shared bitmap if set */
List *indexqualorig; /* the same in original form */ bool isshared;
/* list of index quals (OpExprs) */
List *indexqual;
/* the same in original form */
List *indexqualorig;
} BitmapIndexScan; } BitmapIndexScan;
/* ---------------- /* ----------------
@ -556,7 +639,8 @@ typedef struct BitmapIndexScan
typedef struct BitmapHeapScan typedef struct BitmapHeapScan
{ {
Scan scan; Scan scan;
List *bitmapqualorig; /* index quals, in standard expr form */ /* index quals, in standard expr form */
List *bitmapqualorig;
} BitmapHeapScan; } BitmapHeapScan;
/* ---------------- /* ----------------
@ -570,7 +654,8 @@ typedef struct BitmapHeapScan
typedef struct TidScan typedef struct TidScan
{ {
Scan scan; Scan scan;
List *tidquals; /* qual(s) involving CTID = something */ /* qual(s) involving CTID = something */
List *tidquals;
} TidScan; } TidScan;
/* ---------------- /* ----------------
@ -583,7 +668,8 @@ typedef struct TidScan
typedef struct TidRangeScan typedef struct TidRangeScan
{ {
Scan scan; Scan scan;
List *tidrangequals; /* qual(s) involving CTID op something */ /* qual(s) involving CTID op something */
List *tidrangequals;
} TidRangeScan; } TidRangeScan;
/* ---------------- /* ----------------
@ -627,8 +713,10 @@ typedef struct SubqueryScan
typedef struct FunctionScan typedef struct FunctionScan
{ {
Scan scan; Scan scan;
List *functions; /* list of RangeTblFunction nodes */ /* list of RangeTblFunction nodes */
bool funcordinality; /* WITH ORDINALITY */ List *functions;
/* WITH ORDINALITY */
bool funcordinality;
} FunctionScan; } FunctionScan;
/* ---------------- /* ----------------
@ -638,7 +726,8 @@ typedef struct FunctionScan
typedef struct ValuesScan typedef struct ValuesScan
{ {
Scan scan; Scan scan;
List *values_lists; /* list of expression lists */ /* list of expression lists */
List *values_lists;
} ValuesScan; } ValuesScan;
/* ---------------- /* ----------------
@ -648,7 +737,8 @@ typedef struct ValuesScan
typedef struct TableFuncScan typedef struct TableFuncScan
{ {
Scan scan; Scan scan;
TableFunc *tablefunc; /* table function node */ /* table function node */
TableFunc *tablefunc;
} TableFuncScan; } TableFuncScan;
/* ---------------- /* ----------------
@ -658,8 +748,10 @@ typedef struct TableFuncScan
typedef struct CteScan typedef struct CteScan
{ {
Scan scan; Scan scan;
int ctePlanId; /* ID of init SubPlan for CTE */ /* ID of init SubPlan for CTE */
int cteParam; /* ID of Param representing CTE output */ int ctePlanId;
/* ID of Param representing CTE output */
int cteParam;
} CteScan; } CteScan;
/* ---------------- /* ----------------
@ -669,7 +761,8 @@ typedef struct CteScan
typedef struct NamedTuplestoreScan typedef struct NamedTuplestoreScan
{ {
Scan scan; Scan scan;
char *enrname; /* Name given to Ephemeral Named Relation */ /* Name given to Ephemeral Named Relation */
char *enrname;
} NamedTuplestoreScan; } NamedTuplestoreScan;
/* ---------------- /* ----------------
@ -679,7 +772,8 @@ typedef struct NamedTuplestoreScan
typedef struct WorkTableScan typedef struct WorkTableScan
{ {
Scan scan; Scan scan;
int wtParam; /* ID of Param representing work table */ /* ID of Param representing work table */
int wtParam;
} WorkTableScan; } WorkTableScan;
/* ---------------- /* ----------------
@ -725,18 +819,28 @@ typedef struct WorkTableScan
typedef struct ForeignScan typedef struct ForeignScan
{ {
Scan scan; Scan scan;
CmdType operation; /* SELECT/INSERT/UPDATE/DELETE */ /* SELECT/INSERT/UPDATE/DELETE */
Index resultRelation; /* direct modification target's RT index */ CmdType operation;
Oid checkAsUser; /* user to perform the scan as; 0 means to /* direct modification target's RT index */
* check as current user */ Index resultRelation;
Oid fs_server; /* OID of foreign server */ /* user to perform the scan as; 0 means to check as current user */
List *fdw_exprs; /* expressions that FDW may evaluate */ Oid checkAsUser;
List *fdw_private; /* private data for FDW */ /* OID of foreign server */
List *fdw_scan_tlist; /* optional tlist describing scan tuple */ Oid fs_server;
List *fdw_recheck_quals; /* original quals not in scan.plan.qual */ /* expressions that FDW may evaluate */
Bitmapset *fs_relids; /* base+OJ RTIs generated by this scan */ List *fdw_exprs;
Bitmapset *fs_base_relids; /* base RTIs generated by this scan */ /* private data for FDW */
bool fsSystemCol; /* true if any "system column" is needed */ List *fdw_private;
/* optional tlist describing scan tuple */
List *fdw_scan_tlist;
/* original quals not in scan.plan.qual */
List *fdw_recheck_quals;
/* base+OJ RTIs generated by this scan */
Bitmapset *fs_relids;
/* base RTIs generated by this scan */
Bitmapset *fs_base_relids;
/* true if any "system column" is needed */
bool fsSystemCol;
} ForeignScan; } ForeignScan;
/* ---------------- /* ----------------
@ -757,13 +861,18 @@ struct CustomScanMethods;
typedef struct CustomScan typedef struct CustomScan
{ {
Scan scan; Scan scan;
uint32 flags; /* mask of CUSTOMPATH_* flags, see /* mask of CUSTOMPATH_* flags, see nodes/extensible.h */
* nodes/extensible.h */ uint32 flags;
List *custom_plans; /* list of Plan nodes, if any */ /* list of Plan nodes, if any */
List *custom_exprs; /* expressions that custom code may evaluate */ List *custom_plans;
List *custom_private; /* private data for custom code */ /* expressions that custom code may evaluate */
List *custom_scan_tlist; /* optional tlist describing scan tuple */ List *custom_exprs;
Bitmapset *custom_relids; /* RTIs generated by this scan */ /* private data for custom code */
List *custom_private;
/* optional tlist describing scan tuple */
List *custom_scan_tlist;
/* RTIs generated by this scan */
Bitmapset *custom_relids;
/* /*
* NOTE: The method field of CustomScan is required to be a pointer to a * NOTE: The method field of CustomScan is required to be a pointer to a
@ -808,7 +917,8 @@ typedef struct Join
Plan plan; Plan plan;
JoinType jointype; JoinType jointype;
bool inner_unique; bool inner_unique;
List *joinqual; /* JOIN quals (in addition to plan.qual) */ /* JOIN quals (in addition to plan.qual) */
List *joinqual;
} Join; } Join;
/* ---------------- /* ----------------
@ -825,7 +935,8 @@ typedef struct Join
typedef struct NestLoop typedef struct NestLoop
{ {
Join join; Join join;
List *nestParams; /* list of NestLoopParam nodes */ /* list of NestLoopParam nodes */
List *nestParams;
} NestLoop; } NestLoop;
typedef struct NestLoopParam typedef struct NestLoopParam
@ -833,8 +944,10 @@ typedef struct NestLoopParam
pg_node_attr(no_equal, no_query_jumble) pg_node_attr(no_equal, no_query_jumble)
NodeTag type; NodeTag type;
int paramno; /* number of the PARAM_EXEC Param to set */ /* number of the PARAM_EXEC Param to set */
Var *paramval; /* outer-relation Var to assign to Param */ int paramno;
/* outer-relation Var to assign to Param */
Var *paramval;
} NestLoopParam; } NestLoopParam;
/* ---------------- /* ----------------
@ -973,7 +1086,8 @@ typedef struct Sort
typedef struct IncrementalSort typedef struct IncrementalSort
{ {
Sort sort; Sort sort;
int nPresortedCols; /* number of presorted columns */ /* number of presorted columns */
int nPresortedCols;
} IncrementalSort; } IncrementalSort;
/* --------------- /* ---------------
@ -1158,12 +1272,20 @@ typedef struct Unique
typedef struct Gather typedef struct Gather
{ {
Plan plan; Plan plan;
int num_workers; /* planned number of worker processes */ /* planned number of worker processes */
int rescan_param; /* ID of Param that signals a rescan, or -1 */ int num_workers;
bool single_copy; /* don't execute plan more than once */ /* ID of Param that signals a rescan, or -1 */
bool invisible; /* suppress EXPLAIN display (for testing)? */ int rescan_param;
Bitmapset *initParam; /* param id's of initplans which are referred /* don't execute plan more than once */
* at gather or one of its child nodes */ bool single_copy;
/* suppress EXPLAIN display (for testing)? */
bool invisible;
/*
* param id's of initplans which are referred at gather or one of its
* child nodes
*/
Bitmapset *initParam;
} Gather; } Gather;
/* ------------ /* ------------
@ -1220,12 +1342,17 @@ typedef struct Hash
* List of expressions to be hashed for tuples from Hash's outer plan, * List of expressions to be hashed for tuples from Hash's outer plan,
* needed to put them into the hashtable. * needed to put them into the hashtable.
*/ */
List *hashkeys; /* hash keys for the hashjoin condition */ /* hash keys for the hashjoin condition */
Oid skewTable; /* outer join key's table OID, or InvalidOid */ List *hashkeys;
AttrNumber skewColumn; /* outer join key's column #, or zero */ /* outer join key's table OID, or InvalidOid */
bool skewInherit; /* is outer join rel an inheritance tree? */ Oid skewTable;
/* outer join key's column #, or zero */
AttrNumber skewColumn;
/* is outer join rel an inheritance tree? */
bool skewInherit;
/* all other info is in the parent HashJoin node */ /* all other info is in the parent HashJoin node */
Cardinality rows_total; /* estimate total rows if parallel_aware */ /* estimate total rows if parallel_aware */
Cardinality rows_total;
} Hash; } Hash;
/* ---------------- /* ----------------
@ -1271,8 +1398,10 @@ typedef struct SetOp
typedef struct LockRows typedef struct LockRows
{ {
Plan plan; Plan plan;
List *rowMarks; /* a list of PlanRowMark's */ /* a list of PlanRowMark's */
int epqParam; /* ID of Param for EvalPlanQual re-eval */ List *rowMarks;
/* ID of Param for EvalPlanQual re-eval */
int epqParam;
} LockRows; } LockRows;
/* ---------------- /* ----------------
@ -1394,14 +1523,22 @@ typedef struct PlanRowMark
pg_node_attr(no_equal, no_query_jumble) pg_node_attr(no_equal, no_query_jumble)
NodeTag type; NodeTag type;
Index rti; /* range table index of markable relation */ /* range table index of markable relation */
Index prti; /* range table index of parent relation */ Index rti;
Index rowmarkId; /* unique identifier for resjunk columns */ /* range table index of parent relation */
RowMarkType markType; /* see enum above */ Index prti;
int allMarkTypes; /* OR of (1<<markType) for all children */ /* unique identifier for resjunk columns */
LockClauseStrength strength; /* LockingClause's strength, or LCS_NONE */ Index rowmarkId;
LockWaitPolicy waitPolicy; /* NOWAIT and SKIP LOCKED options */ /* see enum above */
bool isParent; /* true if this is a "dummy" parent entry */ RowMarkType markType;
/* OR of (1<<markType) for all children */
int allMarkTypes;
/* LockingClause's strength, or LCS_NONE */
LockClauseStrength strength;
/* NOWAIT and SKIP LOCKED options */
LockWaitPolicy waitPolicy;
/* true if this is a "dummy" parent entry */
bool isParent;
} PlanRowMark; } PlanRowMark;
@ -1503,8 +1640,10 @@ typedef struct PartitionedRelPruneInfo
* is required. exec_pruning_steps shows how to prune with PARAM_EXEC * is required. exec_pruning_steps shows how to prune with PARAM_EXEC
* Params; it is NIL if no per-scan pruning is required. * Params; it is NIL if no per-scan pruning is required.
*/ */
List *initial_pruning_steps; /* List of PartitionPruneStep */ /* List of PartitionPruneStep */
List *exec_pruning_steps; /* List of PartitionPruneStep */ List *initial_pruning_steps;
/* List of PartitionPruneStep */
List *exec_pruning_steps;
/* All PARAM_EXEC Param IDs in exec_pruning_steps */ /* All PARAM_EXEC Param IDs in exec_pruning_steps */
Bitmapset *execparamids; Bitmapset *execparamids;
@ -1596,8 +1735,10 @@ typedef struct PlanInvalItem
pg_node_attr(no_equal, no_query_jumble) pg_node_attr(no_equal, no_query_jumble)
NodeTag type; NodeTag type;
int cacheId; /* a syscache ID, see utils/syscache.h */ /* a syscache ID, see utils/syscache.h */
uint32 hashValue; /* hash value of object's cache lookup key */ int cacheId;
/* hash value of object's cache lookup key */
uint32 hashValue;
} PlanInvalItem; } PlanInvalItem;
/* /*