diff options
author | Peter Eisentraut <peter@eisentraut.org> | 2021-08-08 16:55:51 +0200 |
---|---|---|
committer | Peter Eisentraut <peter@eisentraut.org> | 2021-08-08 18:46:34 +0200 |
commit | 2226b4189bb4ccfcc53917a8695d24e91ff2f950 (patch) | |
tree | b1ed4a8a152756d6603d1ecf28330cff71d01d68 | |
parent | 00116dee5ad4c1964777c91e687bb98b1d9f7ea0 (diff) | |
download | postgresql-2226b4189bb4ccfcc53917a8695d24e91ff2f950.tar.gz postgresql-2226b4189bb4ccfcc53917a8695d24e91ff2f950.zip |
Change SeqScan node to contain Scan node
This makes the structure of all Scan-derived nodes the same,
independent of whether they have additional fields.
Discussion: https://www.postgresql.org/message-id/flat/c1097590-a6a4-486a-64b1-e1f9cc0533ce@enterprisedb.com
-rw-r--r-- | src/backend/executor/nodeSeqscan.c | 4 | ||||
-rw-r--r-- | src/backend/nodes/readfuncs.c | 2 | ||||
-rw-r--r-- | src/backend/optimizer/plan/createplan.c | 6 | ||||
-rw-r--r-- | src/backend/optimizer/plan/setrefs.c | 10 | ||||
-rw-r--r-- | src/include/nodes/plannodes.h | 5 |
5 files changed, 15 insertions, 12 deletions
diff --git a/src/backend/executor/nodeSeqscan.c b/src/backend/executor/nodeSeqscan.c index 066f9ae37e0..4d2bf16a6fd 100644 --- a/src/backend/executor/nodeSeqscan.c +++ b/src/backend/executor/nodeSeqscan.c @@ -151,7 +151,7 @@ ExecInitSeqScan(SeqScan *node, EState *estate, int eflags) */ scanstate->ss.ss_currentRelation = ExecOpenScanRelation(estate, - node->scanrelid, + node->scan.scanrelid, eflags); /* and create slot with the appropriate rowtype */ @@ -169,7 +169,7 @@ ExecInitSeqScan(SeqScan *node, EState *estate, int eflags) * initialize child expressions */ scanstate->ss.ps.qual = - ExecInitQual(node->plan.qual, (PlanState *) scanstate); + ExecInitQual(node->scan.plan.qual, (PlanState *) scanstate); return scanstate; } diff --git a/src/backend/nodes/readfuncs.c b/src/backend/nodes/readfuncs.c index 77d082d8b48..0dd1ad7dfce 100644 --- a/src/backend/nodes/readfuncs.c +++ b/src/backend/nodes/readfuncs.c @@ -1833,7 +1833,7 @@ _readSeqScan(void) { READ_LOCALS_NO_FIELDS(SeqScan); - ReadCommonScan(local_node); + ReadCommonScan(&local_node->scan); READ_DONE(); } diff --git a/src/backend/optimizer/plan/createplan.c b/src/backend/optimizer/plan/createplan.c index d3f8639a408..0738d7055c9 100644 --- a/src/backend/optimizer/plan/createplan.c +++ b/src/backend/optimizer/plan/createplan.c @@ -2855,7 +2855,7 @@ create_seqscan_plan(PlannerInfo *root, Path *best_path, scan_clauses, scan_relid); - copy_generic_path_info(&scan_plan->plan, best_path); + copy_generic_path_info(&scan_plan->scan.plan, best_path); return scan_plan; } @@ -5369,13 +5369,13 @@ make_seqscan(List *qptlist, Index scanrelid) { SeqScan *node = makeNode(SeqScan); - Plan *plan = &node->plan; + Plan *plan = &node->scan.plan; plan->targetlist = qptlist; plan->qual = qpqual; plan->lefttree = NULL; plan->righttree = NULL; - node->scanrelid = scanrelid; + node->scan.scanrelid = scanrelid; return node; } diff --git a/src/backend/optimizer/plan/setrefs.c b/src/backend/optimizer/plan/setrefs.c index b145c5f45fd..e50624c465e 100644 --- a/src/backend/optimizer/plan/setrefs.c +++ b/src/backend/optimizer/plan/setrefs.c @@ -516,12 +516,12 @@ set_plan_refs(PlannerInfo *root, Plan *plan, int rtoffset) { SeqScan *splan = (SeqScan *) plan; - splan->scanrelid += rtoffset; - splan->plan.targetlist = - fix_scan_list(root, splan->plan.targetlist, + splan->scan.scanrelid += rtoffset; + splan->scan.plan.targetlist = + fix_scan_list(root, splan->scan.plan.targetlist, rtoffset, NUM_EXEC_TLIST(plan)); - splan->plan.qual = - fix_scan_list(root, splan->plan.qual, + splan->scan.plan.qual = + fix_scan_list(root, splan->scan.plan.qual, rtoffset, NUM_EXEC_QUAL(plan)); } break; diff --git a/src/include/nodes/plannodes.h b/src/include/nodes/plannodes.h index 98a4c73f939..ec9a8b0c819 100644 --- a/src/include/nodes/plannodes.h +++ b/src/include/nodes/plannodes.h @@ -348,7 +348,10 @@ typedef struct Scan * sequential scan node * ---------------- */ -typedef Scan SeqScan; +typedef struct SeqScan +{ + Scan scan; +} SeqScan; /* ---------------- * table sample scan node |