0001-Mark-more-nodes-with-node-attribute-no_query_jumble.patch
text/x-diff
Filename: 0001-Mark-more-nodes-with-node-attribute-no_query_jumble.patch
Type: text/x-diff
Part: 0
Patch
Format: format-patch
Series: patch 0001
Subject: Mark more nodes with node attribute no_query_jumble
| File | + | − |
|---|---|---|
| src/include/nodes/parsenodes.h | 8 | 0 |
| src/include/nodes/pathnodes.h | 100 | 26 |
| src/include/nodes/plannodes.h | 98 | 10 |
| src/include/nodes/primnodes.h | 4 | 0 |
From 5d8d730e5fc28acdf75e33b00c56c172b400ffe3 Mon Sep 17 00:00:00 2001
From: Michael Paquier <michael@paquier.xyz>
Date: Wed, 8 Feb 2023 15:22:28 +0900
Subject: [PATCH 1/2] Mark more nodes with node attribute no_query_jumble
This mostly covers plan and path nodes, which should never be included
in the jumbling because we ignore these in Query nodes.
---
src/include/nodes/parsenodes.h | 8 +++
src/include/nodes/pathnodes.h | 126 ++++++++++++++++++++++++++-------
src/include/nodes/plannodes.h | 108 +++++++++++++++++++++++++---
src/include/nodes/primnodes.h | 4 ++
4 files changed, 210 insertions(+), 36 deletions(-)
diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h
index 855da99ec0..29e2940b7d 100644
--- a/src/include/nodes/parsenodes.h
+++ b/src/include/nodes/parsenodes.h
@@ -1239,6 +1239,8 @@ typedef struct RangeTblEntry
*/
typedef struct RTEPermissionInfo
{
+ pg_node_attr(no_query_jumble)
+
NodeTag type;
Oid relid; /* relation OID */
@@ -1596,6 +1598,8 @@ typedef enum CTEMaterialize
typedef struct CTESearchClause
{
+ pg_node_attr(no_query_jumble)
+
NodeTag type;
List *search_col_list;
bool search_breadth_first;
@@ -1605,6 +1609,8 @@ typedef struct CTESearchClause
typedef struct CTECycleClause
{
+ pg_node_attr(no_query_jumble)
+
NodeTag type;
List *cycle_col_list;
char *cycle_mark_column;
@@ -1731,6 +1737,8 @@ typedef struct TriggerTransition
*/
typedef struct RawStmt
{
+ pg_node_attr(no_query_jumble)
+
NodeTag type;
Node *stmt; /* raw parse tree */
int stmt_location; /* start location, or -1 if unknown */
diff --git a/src/include/nodes/pathnodes.h b/src/include/nodes/pathnodes.h
index 0d4b1ec4e4..453dedaec8 100644
--- a/src/include/nodes/pathnodes.h
+++ b/src/include/nodes/pathnodes.h
@@ -94,7 +94,7 @@ typedef enum UpperRelationKind
*/
typedef struct PlannerGlobal
{
- pg_node_attr(no_copy_equal, no_read)
+ pg_node_attr(no_copy_equal, no_read, no_query_jumble)
NodeTag type;
@@ -194,7 +194,7 @@ typedef struct PlannerInfo PlannerInfo;
struct PlannerInfo
{
- pg_node_attr(no_copy_equal, no_read)
+ pg_node_attr(no_copy_equal, no_read, no_query_jumble)
NodeTag type;
@@ -853,7 +853,7 @@ typedef enum RelOptKind
typedef struct RelOptInfo
{
- pg_node_attr(no_copy_equal, no_read)
+ pg_node_attr(no_copy_equal, no_read, no_query_jumble)
NodeTag type;
@@ -1098,7 +1098,7 @@ typedef struct IndexOptInfo IndexOptInfo;
struct IndexOptInfo
{
- pg_node_attr(no_copy_equal, no_read)
+ pg_node_attr(no_copy_equal, no_read, no_query_jumble)
NodeTag type;
@@ -1208,7 +1208,7 @@ struct IndexOptInfo
*/
typedef struct ForeignKeyOptInfo
{
- pg_node_attr(custom_read_write, no_copy_equal, no_read)
+ pg_node_attr(custom_read_write, no_copy_equal, no_read, no_query_jumble)
NodeTag type;
@@ -1258,7 +1258,7 @@ typedef struct ForeignKeyOptInfo
*/
typedef struct StatisticExtInfo
{
- pg_node_attr(no_copy_equal, no_read)
+ pg_node_attr(no_copy_equal, no_read, no_query_jumble)
NodeTag type;
@@ -1309,7 +1309,7 @@ typedef struct StatisticExtInfo
*/
typedef struct JoinDomain
{
- pg_node_attr(no_copy_equal, no_read)
+ pg_node_attr(no_copy_equal, no_read, no_query_jumble)
NodeTag type;
@@ -1371,7 +1371,7 @@ typedef struct JoinDomain
*/
typedef struct EquivalenceClass
{
- pg_node_attr(custom_read_write, no_copy_equal, no_read)
+ pg_node_attr(custom_read_write, no_copy_equal, no_read, no_query_jumble)
NodeTag type;
@@ -1422,7 +1422,7 @@ typedef struct EquivalenceClass
*/
typedef struct EquivalenceMember
{
- pg_node_attr(no_copy_equal, no_read)
+ pg_node_attr(no_copy_equal, no_read, no_query_jumble)
NodeTag type;
@@ -1455,7 +1455,7 @@ typedef struct EquivalenceMember
*/
typedef struct PathKey
{
- pg_node_attr(no_read)
+ pg_node_attr(no_read, no_query_jumble)
NodeTag type;
@@ -1503,7 +1503,7 @@ typedef enum VolatileFunctionStatus
*/
typedef struct PathTarget
{
- pg_node_attr(no_copy_equal, no_read)
+ pg_node_attr(no_copy_equal, no_read, no_query_jumble)
NodeTag type;
@@ -1550,7 +1550,7 @@ typedef struct PathTarget
*/
typedef struct ParamPathInfo
{
- pg_node_attr(no_copy_equal, no_read)
+ pg_node_attr(no_copy_equal, no_read, no_query_jumble)
NodeTag type;
@@ -1596,7 +1596,7 @@ typedef struct ParamPathInfo
*/
typedef struct Path
{
- pg_node_attr(no_copy_equal, no_read)
+ pg_node_attr(no_copy_equal, no_read, no_query_jumble)
NodeTag type;
@@ -1684,6 +1684,8 @@ typedef struct Path
*/
typedef struct IndexPath
{
+ pg_node_attr(no_query_jumble)
+
Path path;
IndexOptInfo *indexinfo;
List *indexclauses;
@@ -1730,7 +1732,7 @@ typedef struct IndexPath
*/
typedef struct IndexClause
{
- pg_node_attr(no_copy_equal, no_read)
+ pg_node_attr(no_copy_equal, no_read, no_query_jumble)
NodeTag type;
struct RestrictInfo *rinfo; /* original restriction or join clause */
@@ -1759,6 +1761,8 @@ typedef struct IndexClause
*/
typedef struct BitmapHeapPath
{
+ pg_node_attr(no_query_jumble)
+
Path path;
Path *bitmapqual; /* IndexPath, BitmapAndPath, BitmapOrPath */
} BitmapHeapPath;
@@ -1771,6 +1775,8 @@ typedef struct BitmapHeapPath
*/
typedef struct BitmapAndPath
{
+ pg_node_attr(no_query_jumble)
+
Path path;
List *bitmapquals; /* IndexPaths and BitmapOrPaths */
Selectivity bitmapselectivity;
@@ -1784,6 +1790,8 @@ typedef struct BitmapAndPath
*/
typedef struct BitmapOrPath
{
+ pg_node_attr(no_query_jumble)
+
Path path;
List *bitmapquals; /* IndexPaths and BitmapAndPaths */
Selectivity bitmapselectivity;
@@ -1798,6 +1806,8 @@ typedef struct BitmapOrPath
*/
typedef struct TidPath
{
+ pg_node_attr(no_query_jumble)
+
Path path;
List *tidquals; /* qual(s) involving CTID = something */
} TidPath;
@@ -1810,6 +1820,8 @@ typedef struct TidPath
*/
typedef struct TidRangePath
{
+ pg_node_attr(no_query_jumble)
+
Path path;
List *tidrangequals;
} TidRangePath;
@@ -1824,6 +1836,8 @@ typedef struct TidRangePath
*/
typedef struct SubqueryScanPath
{
+ pg_node_attr(no_query_jumble)
+
Path path;
Path *subpath; /* path representing subquery execution */
} SubqueryScanPath;
@@ -1840,6 +1854,8 @@ typedef struct SubqueryScanPath
*/
typedef struct ForeignPath
{
+ pg_node_attr(no_query_jumble)
+
Path path;
Path *fdw_outerpath;
List *fdw_private;
@@ -1868,6 +1884,8 @@ struct CustomPathMethods;
typedef struct CustomPath
{
+ pg_node_attr(no_query_jumble)
+
Path path;
uint32 flags; /* mask of CUSTOMPATH_* flags, see
* nodes/extensible.h */
@@ -1893,6 +1911,8 @@ typedef struct CustomPath
*/
typedef struct AppendPath
{
+ pg_node_attr(no_query_jumble)
+
Path path;
List *subpaths; /* list of component Paths */
/* Index of first partial path in subpaths; list_length(subpaths) if none */
@@ -1917,6 +1937,8 @@ extern bool is_dummy_rel(RelOptInfo *rel);
*/
typedef struct MergeAppendPath
{
+ pg_node_attr(no_query_jumble)
+
Path path;
List *subpaths; /* list of component Paths */
Cardinality limit_tuples; /* hard limit on output tuples, or -1 */
@@ -1931,6 +1953,8 @@ typedef struct MergeAppendPath
*/
typedef struct GroupResultPath
{
+ pg_node_attr(no_query_jumble)
+
Path path;
List *quals;
} GroupResultPath;
@@ -1943,6 +1967,8 @@ typedef struct GroupResultPath
*/
typedef struct MaterialPath
{
+ pg_node_attr(no_query_jumble)
+
Path path;
Path *subpath;
} MaterialPath;
@@ -1954,6 +1980,8 @@ typedef struct MaterialPath
*/
typedef struct MemoizePath
{
+ pg_node_attr(no_query_jumble)
+
Path path;
Path *subpath; /* outerpath to cache tuples from */
List *hash_operators; /* OIDs of hash equality ops for cache keys */
@@ -1989,6 +2017,8 @@ typedef enum UniquePathMethod
typedef struct UniquePath
{
+ pg_node_attr(no_query_jumble)
+
Path path;
Path *subpath;
UniquePathMethod umethod;
@@ -2003,6 +2033,8 @@ typedef struct UniquePath
*/
typedef struct GatherPath
{
+ pg_node_attr(no_query_jumble)
+
Path path;
Path *subpath; /* path for each worker */
bool single_copy; /* don't execute path more than once */
@@ -2015,6 +2047,8 @@ typedef struct GatherPath
*/
typedef struct GatherMergePath
{
+ pg_node_attr(no_query_jumble)
+
Path path;
Path *subpath; /* path for each worker */
int num_workers; /* number of workers sought to help */
@@ -2027,7 +2061,7 @@ typedef struct GatherMergePath
typedef struct JoinPath
{
- pg_node_attr(abstract)
+ pg_node_attr(abstract, no_query_jumble)
Path path;
@@ -2054,6 +2088,8 @@ typedef struct JoinPath
typedef struct NestPath
{
+ pg_node_attr(no_query_jumble)
+
JoinPath jpath;
} NestPath;
@@ -2094,6 +2130,8 @@ typedef struct NestPath
typedef struct MergePath
{
+ pg_node_attr(no_query_jumble)
+
JoinPath jpath;
List *path_mergeclauses; /* join clauses to be used for merge */
List *outersortkeys; /* keys for explicit sort, if any */
@@ -2113,6 +2151,8 @@ typedef struct MergePath
typedef struct HashPath
{
+ pg_node_attr(no_query_jumble)
+
JoinPath jpath;
List *path_hashclauses; /* join clauses used for hashing */
int num_batches; /* number of batches expected */
@@ -2135,6 +2175,8 @@ typedef struct HashPath
*/
typedef struct ProjectionPath
{
+ pg_node_attr(no_query_jumble)
+
Path path;
Path *subpath; /* path representing input source */
bool dummypp; /* true if no separate Result is needed */
@@ -2147,6 +2189,8 @@ typedef struct ProjectionPath
*/
typedef struct ProjectSetPath
{
+ pg_node_attr(no_query_jumble)
+
Path path;
Path *subpath; /* path representing input source */
} ProjectSetPath;
@@ -2161,6 +2205,8 @@ typedef struct ProjectSetPath
*/
typedef struct SortPath
{
+ pg_node_attr(no_query_jumble)
+
Path path;
Path *subpath; /* path representing input source */
} SortPath;
@@ -2173,6 +2219,8 @@ typedef struct SortPath
*/
typedef struct IncrementalSortPath
{
+ pg_node_attr(no_query_jumble)
+
SortPath spath;
int nPresortedCols; /* number of presorted columns */
} IncrementalSortPath;
@@ -2187,6 +2235,8 @@ typedef struct IncrementalSortPath
*/
typedef struct GroupPath
{
+ pg_node_attr(no_query_jumble)
+
Path path;
Path *subpath; /* path representing input source */
List *groupClause; /* a list of SortGroupClause's */
@@ -2201,6 +2251,8 @@ typedef struct GroupPath
*/
typedef struct UpperUniquePath
{
+ pg_node_attr(no_query_jumble)
+
Path path;
Path *subpath; /* path representing input source */
int numkeys; /* number of pathkey columns to compare */
@@ -2215,6 +2267,8 @@ typedef struct UpperUniquePath
*/
typedef struct AggPath
{
+ pg_node_attr(no_query_jumble)
+
Path path;
Path *subpath; /* path representing input source */
AggStrategy aggstrategy; /* basic strategy, see nodes.h */
@@ -2231,7 +2285,7 @@ typedef struct AggPath
typedef struct GroupingSetData
{
- pg_node_attr(no_copy_equal, no_read)
+ pg_node_attr(no_copy_equal, no_read, no_query_jumble)
NodeTag type;
List *set; /* grouping set as list of sortgrouprefs */
@@ -2240,7 +2294,7 @@ typedef struct GroupingSetData
typedef struct RollupData
{
- pg_node_attr(no_copy_equal, no_read)
+ pg_node_attr(no_copy_equal, no_read, no_query_jumble)
NodeTag type;
List *groupClause; /* applicable subset of parse->groupClause */
@@ -2257,6 +2311,8 @@ typedef struct RollupData
typedef struct GroupingSetsPath
{
+ pg_node_attr(no_query_jumble)
+
Path path;
Path *subpath; /* path representing input source */
AggStrategy aggstrategy; /* basic strategy */
@@ -2270,6 +2326,8 @@ typedef struct GroupingSetsPath
*/
typedef struct MinMaxAggPath
{
+ pg_node_attr(no_query_jumble)
+
Path path;
List *mmaggregates; /* list of MinMaxAggInfo */
List *quals; /* HAVING quals, if any */
@@ -2280,6 +2338,8 @@ typedef struct MinMaxAggPath
*/
typedef struct WindowAggPath
{
+ pg_node_attr(no_query_jumble)
+
Path path;
Path *subpath; /* path representing input source */
WindowClause *winclause; /* WindowClause we'll be using */
@@ -2293,6 +2353,8 @@ typedef struct WindowAggPath
*/
typedef struct SetOpPath
{
+ pg_node_attr(no_query_jumble)
+
Path path;
Path *subpath; /* path representing input source */
SetOpCmd cmd; /* what to do, see nodes.h */
@@ -2308,6 +2370,8 @@ typedef struct SetOpPath
*/
typedef struct RecursiveUnionPath
{
+ pg_node_attr(no_query_jumble)
+
Path path;
Path *leftpath; /* paths representing input sources */
Path *rightpath;
@@ -2321,6 +2385,8 @@ typedef struct RecursiveUnionPath
*/
typedef struct LockRowsPath
{
+ pg_node_attr(no_query_jumble)
+
Path path;
Path *subpath; /* path representing input source */
List *rowMarks; /* a list of PlanRowMark's */
@@ -2336,6 +2402,8 @@ typedef struct LockRowsPath
*/
typedef struct ModifyTablePath
{
+ pg_node_attr(no_query_jumble)
+
Path path;
Path *subpath; /* Path producing source data */
CmdType operation; /* INSERT, UPDATE, DELETE, or MERGE */
@@ -2359,6 +2427,8 @@ typedef struct ModifyTablePath
*/
typedef struct LimitPath
{
+ pg_node_attr(no_query_jumble)
+
Path path;
Path *subpath; /* path representing input source */
Node *limitOffset; /* OFFSET parameter, or NULL if none */
@@ -2509,7 +2579,7 @@ typedef struct LimitPath
typedef struct RestrictInfo
{
- pg_node_attr(no_read)
+ pg_node_attr(no_read, no_query_jumble)
NodeTag type;
@@ -2724,6 +2794,8 @@ typedef struct MergeScanSelCache
typedef struct PlaceHolderVar
{
+ pg_node_attr(no_query_jumble)
+
Expr xpr;
/* the represented expression */
@@ -2825,7 +2897,7 @@ typedef struct SpecialJoinInfo SpecialJoinInfo;
struct SpecialJoinInfo
{
- pg_node_attr(no_read)
+ pg_node_attr(no_read, no_query_jumble)
NodeTag type;
Relids min_lefthand; /* base+OJ relids in minimum LHS for join */
@@ -2853,7 +2925,7 @@ struct SpecialJoinInfo
*/
typedef struct OuterJoinClauseInfo
{
- pg_node_attr(no_copy_equal, no_read)
+ pg_node_attr(no_copy_equal, no_read, no_query_jumble)
NodeTag type;
RestrictInfo *rinfo; /* a mergejoinable outer-join clause */
@@ -2892,6 +2964,8 @@ typedef struct OuterJoinClauseInfo
typedef struct AppendRelInfo
{
+ pg_node_attr(no_query_jumble)
+
NodeTag type;
/*
@@ -2967,7 +3041,7 @@ typedef struct AppendRelInfo
*/
typedef struct RowIdentityVarInfo
{
- pg_node_attr(no_copy_equal, no_read)
+ pg_node_attr(no_copy_equal, no_read, no_query_jumble)
NodeTag type;
@@ -3005,7 +3079,7 @@ typedef struct RowIdentityVarInfo
typedef struct PlaceHolderInfo
{
- pg_node_attr(no_read)
+ pg_node_attr(no_read, no_query_jumble)
NodeTag type;
@@ -3038,7 +3112,7 @@ typedef struct PlaceHolderInfo
*/
typedef struct MinMaxAggInfo
{
- pg_node_attr(no_copy_equal, no_read)
+ pg_node_attr(no_copy_equal, no_read, no_query_jumble)
NodeTag type;
@@ -3116,7 +3190,7 @@ typedef struct MinMaxAggInfo
*/
typedef struct PlannerParamItem
{
- pg_node_attr(no_copy_equal, no_read)
+ pg_node_attr(no_copy_equal, no_read, no_query_jumble)
NodeTag type;
@@ -3296,7 +3370,7 @@ typedef struct JoinCostWorkspace
*/
typedef struct AggInfo
{
- pg_node_attr(no_copy_equal, no_read)
+ pg_node_attr(no_copy_equal, no_read, no_query_jumble)
NodeTag type;
@@ -3330,7 +3404,7 @@ typedef struct AggInfo
*/
typedef struct AggTransInfo
{
- pg_node_attr(no_copy_equal, no_read)
+ pg_node_attr(no_copy_equal, no_read, no_query_jumble)
NodeTag type;
diff --git a/src/include/nodes/plannodes.h b/src/include/nodes/plannodes.h
index 4781a9c632..9199c16f6f 100644
--- a/src/include/nodes/plannodes.h
+++ b/src/include/nodes/plannodes.h
@@ -46,7 +46,7 @@
*/
typedef struct PlannedStmt
{
- pg_node_attr(no_equal)
+ pg_node_attr(no_equal, no_query_jumble)
NodeTag type;
@@ -122,7 +122,7 @@ typedef struct PlannedStmt
*/
typedef struct Plan
{
- pg_node_attr(abstract, no_equal)
+ pg_node_attr(abstract, no_equal, no_query_jumble)
NodeTag type;
@@ -199,6 +199,8 @@ typedef struct Plan
*/
typedef struct Result
{
+ pg_node_attr(no_query_jumble)
+
Plan plan;
Node *resconstantqual;
} Result;
@@ -211,6 +213,8 @@ typedef struct Result
*/
typedef struct ProjectSet
{
+ pg_node_attr(no_query_jumble)
+
Plan plan;
} ProjectSet;
@@ -231,6 +235,8 @@ typedef struct ProjectSet
*/
typedef struct ModifyTable
{
+ pg_node_attr(no_query_jumble)
+
Plan plan;
CmdType operation; /* INSERT, UPDATE, DELETE, or MERGE */
bool canSetTag; /* do we set the command tag/es_processed? */
@@ -265,6 +271,8 @@ struct PartitionPruneInfo; /* forward reference to struct below */
*/
typedef struct Append
{
+ pg_node_attr(no_query_jumble)
+
Plan plan;
Bitmapset *apprelids; /* RTIs of appendrel(s) formed by this node */
List *appendplans;
@@ -287,6 +295,8 @@ typedef struct Append
*/
typedef struct MergeAppend
{
+ pg_node_attr(no_query_jumble)
+
Plan plan;
/* RTIs of appendrel(s) formed by this node */
@@ -325,6 +335,8 @@ typedef struct MergeAppend
*/
typedef struct RecursiveUnion
{
+ pg_node_attr(no_query_jumble)
+
Plan plan;
/* ID of Param representing work table */
@@ -356,6 +368,8 @@ typedef struct RecursiveUnion
*/
typedef struct BitmapAnd
{
+ pg_node_attr(no_query_jumble)
+
Plan plan;
List *bitmapplans;
} BitmapAnd;
@@ -370,6 +384,8 @@ typedef struct BitmapAnd
*/
typedef struct BitmapOr
{
+ pg_node_attr(no_query_jumble)
+
Plan plan;
bool isshared;
List *bitmapplans;
@@ -384,7 +400,7 @@ typedef struct BitmapOr
*/
typedef struct Scan
{
- pg_node_attr(abstract)
+ pg_node_attr(abstract, no_query_jumble)
Plan plan;
Index scanrelid; /* relid is index into the range table */
@@ -396,6 +412,8 @@ typedef struct Scan
*/
typedef struct SeqScan
{
+ pg_node_attr(no_query_jumble)
+
Scan scan;
} SeqScan;
@@ -405,6 +423,8 @@ typedef struct SeqScan
*/
typedef struct SampleScan
{
+ pg_node_attr(no_query_jumble)
+
Scan scan;
/* use struct pointer to avoid including parsenodes.h here */
struct TableSampleClause *tablesample;
@@ -449,6 +469,8 @@ typedef struct SampleScan
*/
typedef struct IndexScan
{
+ pg_node_attr(no_query_jumble)
+
Scan scan;
Oid indexid; /* OID of index to scan */
List *indexqual; /* list of index quals (usually OpExprs) */
@@ -492,6 +514,8 @@ typedef struct IndexScan
*/
typedef struct IndexOnlyScan
{
+ pg_node_attr(no_query_jumble)
+
Scan scan;
Oid indexid; /* OID of index to scan */
List *indexqual; /* list of index quals (usually OpExprs) */
@@ -520,6 +544,8 @@ typedef struct IndexOnlyScan
*/
typedef struct BitmapIndexScan
{
+ pg_node_attr(no_query_jumble)
+
Scan scan;
Oid indexid; /* OID of index to scan */
bool isshared; /* Create shared bitmap if set */
@@ -538,6 +564,8 @@ typedef struct BitmapIndexScan
*/
typedef struct BitmapHeapScan
{
+ pg_node_attr(no_query_jumble)
+
Scan scan;
List *bitmapqualorig; /* index quals, in standard expr form */
} BitmapHeapScan;
@@ -552,6 +580,8 @@ typedef struct BitmapHeapScan
*/
typedef struct TidScan
{
+ pg_node_attr(no_query_jumble)
+
Scan scan;
List *tidquals; /* qual(s) involving CTID = something */
} TidScan;
@@ -565,6 +595,8 @@ typedef struct TidScan
*/
typedef struct TidRangeScan
{
+ pg_node_attr(no_query_jumble)
+
Scan scan;
List *tidrangequals; /* qual(s) involving CTID op something */
} TidRangeScan;
@@ -598,6 +630,8 @@ typedef enum SubqueryScanStatus
typedef struct SubqueryScan
{
+ pg_node_attr(no_query_jumble)
+
Scan scan;
Plan *subplan;
SubqueryScanStatus scanstatus;
@@ -609,6 +643,8 @@ typedef struct SubqueryScan
*/
typedef struct FunctionScan
{
+ pg_node_attr(no_query_jumble)
+
Scan scan;
List *functions; /* list of RangeTblFunction nodes */
bool funcordinality; /* WITH ORDINALITY */
@@ -620,6 +656,8 @@ typedef struct FunctionScan
*/
typedef struct ValuesScan
{
+ pg_node_attr(no_query_jumble)
+
Scan scan;
List *values_lists; /* list of expression lists */
} ValuesScan;
@@ -630,6 +668,8 @@ typedef struct ValuesScan
*/
typedef struct TableFuncScan
{
+ pg_node_attr(no_query_jumble)
+
Scan scan;
TableFunc *tablefunc; /* table function node */
} TableFuncScan;
@@ -640,6 +680,8 @@ typedef struct TableFuncScan
*/
typedef struct CteScan
{
+ pg_node_attr(no_query_jumble)
+
Scan scan;
int ctePlanId; /* ID of init SubPlan for CTE */
int cteParam; /* ID of Param representing CTE output */
@@ -651,6 +693,8 @@ typedef struct CteScan
*/
typedef struct NamedTuplestoreScan
{
+ pg_node_attr(no_query_jumble)
+
Scan scan;
char *enrname; /* Name given to Ephemeral Named Relation */
} NamedTuplestoreScan;
@@ -661,6 +705,8 @@ typedef struct NamedTuplestoreScan
*/
typedef struct WorkTableScan
{
+ pg_node_attr(no_query_jumble)
+
Scan scan;
int wtParam; /* ID of Param representing work table */
} WorkTableScan;
@@ -707,6 +753,8 @@ typedef struct WorkTableScan
*/
typedef struct ForeignScan
{
+ pg_node_attr(no_query_jumble)
+
Scan scan;
CmdType operation; /* SELECT/INSERT/UPDATE/DELETE */
Index resultRelation; /* direct modification target's RT index */
@@ -739,6 +787,8 @@ struct CustomScanMethods;
typedef struct CustomScan
{
+ pg_node_attr(no_query_jumble)
+
Scan scan;
uint32 flags; /* mask of CUSTOMPATH_* flags, see
* nodes/extensible.h */
@@ -786,7 +836,7 @@ typedef struct CustomScan
*/
typedef struct Join
{
- pg_node_attr(abstract)
+ pg_node_attr(abstract, no_query_jumble)
Plan plan;
JoinType jointype;
@@ -807,13 +857,15 @@ typedef struct Join
*/
typedef struct NestLoop
{
+ pg_node_attr(no_query_jumble)
+
Join join;
List *nestParams; /* list of NestLoopParam nodes */
} NestLoop;
typedef struct NestLoopParam
{
- pg_node_attr(no_equal)
+ pg_node_attr(no_equal, no_query_jumble)
NodeTag type;
int paramno; /* number of the PARAM_EXEC Param to set */
@@ -833,6 +885,8 @@ typedef struct NestLoopParam
*/
typedef struct MergeJoin
{
+ pg_node_attr(no_query_jumble)
+
Join join;
/* Can we skip mark/restore calls? */
@@ -862,6 +916,8 @@ typedef struct MergeJoin
*/
typedef struct HashJoin
{
+ pg_node_attr(no_query_jumble)
+
Join join;
List *hashclauses;
List *hashoperators;
@@ -880,6 +936,8 @@ typedef struct HashJoin
*/
typedef struct Material
{
+ pg_node_attr(no_query_jumble)
+
Plan plan;
} Material;
@@ -889,6 +947,8 @@ typedef struct Material
*/
typedef struct Memoize
{
+ pg_node_attr(no_query_jumble)
+
Plan plan;
/* size of the two arrays below */
@@ -931,6 +991,8 @@ typedef struct Memoize
*/
typedef struct Sort
{
+ pg_node_attr(no_query_jumble)
+
Plan plan;
/* number of sort-key columns */
@@ -955,6 +1017,8 @@ typedef struct Sort
*/
typedef struct IncrementalSort
{
+ pg_node_attr(no_query_jumble)
+
Sort sort;
int nPresortedCols; /* number of presorted columns */
} IncrementalSort;
@@ -967,6 +1031,8 @@ typedef struct IncrementalSort
*/
typedef struct Group
{
+ pg_node_attr(no_query_jumble)
+
Plan plan;
/* number of grouping columns */
@@ -996,6 +1062,8 @@ typedef struct Group
*/
typedef struct Agg
{
+ pg_node_attr(no_query_jumble)
+
Plan plan;
/* basic strategy, see nodes.h */
@@ -1038,6 +1106,8 @@ typedef struct Agg
*/
typedef struct WindowAgg
{
+ pg_node_attr(no_query_jumble)
+
Plan plan;
/* ID referenced by window functions */
@@ -1112,6 +1182,8 @@ typedef struct WindowAgg
*/
typedef struct Unique
{
+ pg_node_attr(no_query_jumble)
+
Plan plan;
/* number of columns to check for uniqueness */
@@ -1140,6 +1212,8 @@ typedef struct Unique
*/
typedef struct Gather
{
+ pg_node_attr(no_query_jumble)
+
Plan plan;
int num_workers; /* planned number of worker processes */
int rescan_param; /* ID of Param that signals a rescan, or -1 */
@@ -1155,6 +1229,8 @@ typedef struct Gather
*/
typedef struct GatherMerge
{
+ pg_node_attr(no_query_jumble)
+
Plan plan;
/* planned number of worker processes */
@@ -1197,6 +1273,8 @@ typedef struct GatherMerge
*/
typedef struct Hash
{
+ pg_node_attr(no_query_jumble)
+
Plan plan;
/*
@@ -1217,6 +1295,8 @@ typedef struct Hash
*/
typedef struct SetOp
{
+ pg_node_attr(no_query_jumble)
+
Plan plan;
/* what to do, see nodes.h */
@@ -1256,6 +1336,8 @@ typedef struct SetOp
*/
typedef struct LockRows
{
+ pg_node_attr(no_query_jumble)
+
Plan plan;
List *rowMarks; /* a list of PlanRowMark's */
int epqParam; /* ID of Param for EvalPlanQual re-eval */
@@ -1270,6 +1352,8 @@ typedef struct LockRows
*/
typedef struct Limit
{
+ pg_node_attr(no_query_jumble)
+
Plan plan;
/* OFFSET parameter, or NULL if none */
@@ -1377,7 +1461,7 @@ typedef enum RowMarkType
*/
typedef struct PlanRowMark
{
- pg_node_attr(no_equal)
+ pg_node_attr(no_equal, no_query_jumble)
NodeTag type;
Index rti; /* range table index of markable relation */
@@ -1425,7 +1509,7 @@ typedef struct PlanRowMark
*/
typedef struct PartitionPruneInfo
{
- pg_node_attr(no_equal)
+ pg_node_attr(no_equal, no_query_jumble)
NodeTag type;
Bitmapset *root_parent_relids;
@@ -1452,7 +1536,7 @@ typedef struct PartitionPruneInfo
*/
typedef struct PartitionedRelPruneInfo
{
- pg_node_attr(no_equal)
+ pg_node_attr(no_equal, no_query_jumble)
NodeTag type;
@@ -1495,7 +1579,7 @@ typedef struct PartitionedRelPruneInfo
*/
typedef struct PartitionPruneStep
{
- pg_node_attr(abstract, no_equal)
+ pg_node_attr(abstract, no_equal, no_query_jumble)
NodeTag type;
int step_id;
@@ -1530,6 +1614,8 @@ typedef struct PartitionPruneStep
*/
typedef struct PartitionPruneStepOp
{
+ pg_node_attr(no_query_jumble)
+
PartitionPruneStep step;
StrategyNumber opstrategy;
@@ -1552,6 +1638,8 @@ typedef enum PartitionPruneCombineOp
typedef struct PartitionPruneStepCombine
{
+ pg_node_attr(no_query_jumble)
+
PartitionPruneStep step;
PartitionPruneCombineOp combineOp;
@@ -1570,7 +1658,7 @@ typedef struct PartitionPruneStepCombine
*/
typedef struct PlanInvalItem
{
- pg_node_attr(no_equal)
+ pg_node_attr(no_equal, no_query_jumble)
NodeTag type;
int cacheId; /* a syscache ID, see utils/syscache.h */
diff --git a/src/include/nodes/primnodes.h b/src/include/nodes/primnodes.h
index 6d740be5c0..1be1642d92 100644
--- a/src/include/nodes/primnodes.h
+++ b/src/include/nodes/primnodes.h
@@ -982,6 +982,8 @@ typedef struct SubLink
*/
typedef struct SubPlan
{
+ pg_node_attr(no_query_jumble)
+
Expr xpr;
/* Fields copied from original SubLink: */
SubLinkType subLinkType; /* see above */
@@ -1029,6 +1031,8 @@ typedef struct SubPlan
*/
typedef struct AlternativeSubPlan
{
+ pg_node_attr(no_query_jumble)
+
Expr xpr;
List *subplans; /* SubPlan(s) with equivalent results */
} AlternativeSubPlan;
--
2.39.1