mirror of
https://github.com/postgres/postgres.git
synced 2025-07-08 11:42:09 +03:00
Code review for Parallel Append.
- Remove unnecessary #include mistakenly added in execnodes.h. - Fix mistake in comment in choose_next_subplan_for_leader. - Adjust row estimates in cost_append for a possibly-different parallel divisor. - Clamp row estimates in cost_append after operations that may not produce integers. Amit Kapila, with cosmetic adjustments by me. Discussion: http://postgr.es/m/CAA4eK1+qcbeai3coPpRW=GFCzFeLUsuY4T-AKHqMjxpEGZBPQg@mail.gmail.com
This commit is contained in:
@ -1883,18 +1883,26 @@ cost_append(AppendPath *apath)
|
||||
subpath->startup_cost);
|
||||
|
||||
/*
|
||||
* Apply parallel divisor to non-partial subpaths. Also add the
|
||||
* cost of partial paths to the total cost, but ignore non-partial
|
||||
* paths for now.
|
||||
* Apply parallel divisor to subpaths. Scale the number of rows
|
||||
* for each partial subpath based on the ratio of the parallel
|
||||
* divisor originally used for the subpath to the one we adopted.
|
||||
* Also add the cost of partial paths to the total cost, but
|
||||
* ignore non-partial paths for now.
|
||||
*/
|
||||
if (i < apath->first_partial_path)
|
||||
apath->path.rows += subpath->rows / parallel_divisor;
|
||||
else
|
||||
{
|
||||
apath->path.rows += subpath->rows;
|
||||
double subpath_parallel_divisor;
|
||||
|
||||
subpath_parallel_divisor = get_parallel_divisor(subpath);
|
||||
apath->path.rows += subpath->rows * (subpath_parallel_divisor /
|
||||
parallel_divisor);
|
||||
apath->path.total_cost += subpath->total_cost;
|
||||
}
|
||||
|
||||
apath->path.rows = clamp_row_est(apath->path.rows);
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user