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
*/
scanstate->ss.ss_currentRelation =
ExecOpenScanRelation(estate,
- node->scanrelid,
+ node->scan.scanrelid,
eflags);
/* and create slot with the appropriate rowtype */
* initialize child expressions
*/
scanstate->ss.ps.qual =
- ExecInitQual(node->plan.qual, (PlanState *) scanstate);
+ ExecInitQual(node->scan.plan.qual, (PlanState *) scanstate);
return scanstate;
}
{
READ_LOCALS_NO_FIELDS(SeqScan);
- ReadCommonScan(local_node);
+ ReadCommonScan(&local_node->scan);
READ_DONE();
}
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;
}
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;
}
{
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;
* sequential scan node
* ----------------
*/
-typedef Scan SeqScan;
+typedef struct SeqScan
+{
+ Scan scan;
+} SeqScan;
/* ----------------
* table sample scan node