mirror of
https://github.com/postgres/postgres.git
synced 2025-05-08 07:21:33 +03:00
Fix failure to use clamp_row_est() for parallel joins.
Commit 0c2070cefa0e5d097b715c9a3b9b5499470019aa neglected to use clamp_row_est() where it should have done so. Patch by me. Report by Amit Kapila. Discussion: http://postgr.es/m/CAA4eK1KPm8RYa1Kun3ZmQj9pb723b-EFN70j47Pid1vn3ByquA@mail.gmail.com
This commit is contained in:
parent
18dc2aee5f
commit
5feb78ae88
@ -1998,7 +1998,12 @@ final_cost_nestloop(PlannerInfo *root, NestPath *path,
|
|||||||
|
|
||||||
/* For partial paths, scale row estimate. */
|
/* For partial paths, scale row estimate. */
|
||||||
if (path->path.parallel_workers > 0)
|
if (path->path.parallel_workers > 0)
|
||||||
path->path.rows /= get_parallel_divisor(&path->path);
|
{
|
||||||
|
double parallel_divisor = get_parallel_divisor(&path->path);
|
||||||
|
|
||||||
|
path->path.rows =
|
||||||
|
clamp_row_est(path->path.rows / parallel_divisor);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We could include disable_cost in the preliminary estimate, but that
|
* We could include disable_cost in the preliminary estimate, but that
|
||||||
@ -2420,7 +2425,12 @@ final_cost_mergejoin(PlannerInfo *root, MergePath *path,
|
|||||||
|
|
||||||
/* For partial paths, scale row estimate. */
|
/* For partial paths, scale row estimate. */
|
||||||
if (path->jpath.path.parallel_workers > 0)
|
if (path->jpath.path.parallel_workers > 0)
|
||||||
path->jpath.path.rows /= get_parallel_divisor(&path->jpath.path);
|
{
|
||||||
|
double parallel_divisor = get_parallel_divisor(&path->jpath.path);
|
||||||
|
|
||||||
|
path->jpath.path.rows =
|
||||||
|
clamp_row_est(path->jpath.path.rows / parallel_divisor);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We could include disable_cost in the preliminary estimate, but that
|
* We could include disable_cost in the preliminary estimate, but that
|
||||||
@ -2803,7 +2813,12 @@ final_cost_hashjoin(PlannerInfo *root, HashPath *path,
|
|||||||
|
|
||||||
/* For partial paths, scale row estimate. */
|
/* For partial paths, scale row estimate. */
|
||||||
if (path->jpath.path.parallel_workers > 0)
|
if (path->jpath.path.parallel_workers > 0)
|
||||||
path->jpath.path.rows /= get_parallel_divisor(&path->jpath.path);
|
{
|
||||||
|
double parallel_divisor = get_parallel_divisor(&path->jpath.path);
|
||||||
|
|
||||||
|
path->jpath.path.rows =
|
||||||
|
clamp_row_est(path->jpath.path.rows / parallel_divisor);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We could include disable_cost in the preliminary estimate, but that
|
* We could include disable_cost in the preliminary estimate, but that
|
||||||
|
Loading…
x
Reference in New Issue
Block a user