mirror of
https://github.com/postgres/postgres.git
synced 2025-06-26 12:21:12 +03:00
Make sequential scans parallel-aware.
In addition, this path fills in a number of missing bits and pieces in the parallel infrastructure. Paths and plans now have a parallel_aware flag indicating whether whatever parallel-aware logic they have should be engaged. It is believed that we will need this flag for a number of path/plan types, not just sequential scans, which is why the flag is generic rather than part of the SeqScan structures specifically. Also, execParallel.c now gives parallel nodes a chance to initialize their PlanState nodes from the DSM during parallel worker startup. Amit Kapila, with a fair amount of adjustment by me. Review of previous patch versions by Haribabu Kommi and others.
This commit is contained in:
@ -112,6 +112,7 @@ CopyPlanFields(const Plan *from, Plan *newnode)
|
||||
COPY_SCALAR_FIELD(total_cost);
|
||||
COPY_SCALAR_FIELD(plan_rows);
|
||||
COPY_SCALAR_FIELD(plan_width);
|
||||
COPY_SCALAR_FIELD(parallel_aware);
|
||||
COPY_SCALAR_FIELD(plan_node_id);
|
||||
COPY_NODE_FIELD(targetlist);
|
||||
COPY_NODE_FIELD(qual);
|
||||
|
@ -271,6 +271,7 @@ _outPlanInfo(StringInfo str, const Plan *node)
|
||||
WRITE_FLOAT_FIELD(total_cost, "%.2f");
|
||||
WRITE_FLOAT_FIELD(plan_rows, "%.0f");
|
||||
WRITE_INT_FIELD(plan_width);
|
||||
WRITE_BOOL_FIELD(parallel_aware);
|
||||
WRITE_INT_FIELD(plan_node_id);
|
||||
WRITE_NODE_FIELD(targetlist);
|
||||
WRITE_NODE_FIELD(qual);
|
||||
@ -1585,6 +1586,7 @@ _outPathInfo(StringInfo str, const Path *node)
|
||||
_outBitmapset(str, node->param_info->ppi_req_outer);
|
||||
else
|
||||
_outBitmapset(str, NULL);
|
||||
WRITE_BOOL_FIELD(parallel_aware);
|
||||
WRITE_FLOAT_FIELD(rows, "%.0f");
|
||||
WRITE_FLOAT_FIELD(startup_cost, "%.2f");
|
||||
WRITE_FLOAT_FIELD(total_cost, "%.2f");
|
||||
|
@ -1412,6 +1412,7 @@ ReadCommonPlan(Plan *local_node)
|
||||
READ_FLOAT_FIELD(total_cost);
|
||||
READ_FLOAT_FIELD(plan_rows);
|
||||
READ_INT_FIELD(plan_width);
|
||||
READ_BOOL_FIELD(parallel_aware);
|
||||
READ_INT_FIELD(plan_node_id);
|
||||
READ_NODE_FIELD(targetlist);
|
||||
READ_NODE_FIELD(qual);
|
||||
|
Reference in New Issue
Block a user