aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPeter Eisentraut <peter@eisentraut.org>2021-08-08 16:55:51 +0200
committerPeter Eisentraut <peter@eisentraut.org>2021-08-08 18:46:34 +0200
commit2226b4189bb4ccfcc53917a8695d24e91ff2f950 (patch)
treeb1ed4a8a152756d6603d1ecf28330cff71d01d68 /src
parent00116dee5ad4c1964777c91e687bb98b1d9f7ea0 (diff)
downloadpostgresql-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
Diffstat (limited to 'src')
-rw-r--r--src/backend/executor/nodeSeqscan.c4
-rw-r--r--src/backend/nodes/readfuncs.c2
-rw-r--r--src/backend/optimizer/plan/createplan.c6
-rw-r--r--src/backend/optimizer/plan/setrefs.c10
-rw-r--r--src/include/nodes/plannodes.h5
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