Change SeqScan node to contain Scan node
authorPeter Eisentraut <peter@eisentraut.org>
Sun, 8 Aug 2021 14:55:51 +0000 (16:55 +0200)
committerPeter Eisentraut <peter@eisentraut.org>
Sun, 8 Aug 2021 16:46:34 +0000 (18:46 +0200)
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

src/backend/executor/nodeSeqscan.c
src/backend/nodes/readfuncs.c
src/backend/optimizer/plan/createplan.c
src/backend/optimizer/plan/setrefs.c
src/include/nodes/plannodes.h

index 066f9ae37e0b17714547d7144783f0b195106d78..4d2bf16a6fd56dafea8c82463b952039872110a0 100644 (file)
@@ -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;
 }
index 77d082d8b488f9abf237286d05f4ea5fe6d41cf4..0dd1ad7dfce73346e0972cab7b889aa5b8e75feb 100644 (file)
@@ -1833,7 +1833,7 @@ _readSeqScan(void)
 {
        READ_LOCALS_NO_FIELDS(SeqScan);
 
-       ReadCommonScan(local_node);
+       ReadCommonScan(&local_node->scan);
 
        READ_DONE();
 }
index d3f8639a40865c3a4ccbb33f8df0c2457991fcdd..0738d7055c952fc1d413886fcca3d2edcd2baf41 100644 (file)
@@ -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;
 }
index b145c5f45fd7bf9d734faa2e990de2c6d50f107e..e50624c465eea9a874e0ae50405531bdd5291a15 100644 (file)
@@ -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;
index 98a4c73f939e4c66543bacd5edcaf7e0a9cd4eeb..ec9a8b0c819f15a959d75608bacc2efd77fbda4a 100644 (file)
@@ -348,7 +348,10 @@ typedef struct Scan
  *             sequential scan node
  * ----------------
  */
-typedef Scan SeqScan;
+typedef struct SeqScan
+{
+       Scan            scan;
+} SeqScan;
 
 /* ----------------
  *             table sample scan node