mirror of
https://github.com/postgres/postgres.git
synced 2025-07-02 09:02:37 +03:00
Preparatory refactoring for parallel merge join support.
Extract the logic used by hash_inner_and_outer into a separate function, get_cheapest_parallel_safe_total_inner, so that it can also be used to plan parallel merge joins. Also, add a require_parallel_safe argument to the existing function get_cheapest_path_for_pathkeys, because parallel merge join needs to find the cheapest path for a given set of pathkeys that is parallel-safe, not just the cheapest one overall. Patch by me, reviewed by Dilip Kumar. Discussion: http://postgr.es/m/CA+TgmoYOv+dFK0MWW6366dFj_xTnohQfoBDrHyB7d1oZhrgPjA@mail.gmail.com
This commit is contained in:
@ -1447,12 +1447,14 @@ generate_mergeappend_paths(PlannerInfo *root, RelOptInfo *rel,
|
||||
get_cheapest_path_for_pathkeys(childrel->pathlist,
|
||||
pathkeys,
|
||||
NULL,
|
||||
STARTUP_COST);
|
||||
STARTUP_COST,
|
||||
false);
|
||||
cheapest_total =
|
||||
get_cheapest_path_for_pathkeys(childrel->pathlist,
|
||||
pathkeys,
|
||||
NULL,
|
||||
TOTAL_COST);
|
||||
TOTAL_COST,
|
||||
false);
|
||||
|
||||
/*
|
||||
* If we can't find any paths with the right order just use the
|
||||
@ -1517,7 +1519,8 @@ get_cheapest_parameterized_child_path(PlannerInfo *root, RelOptInfo *rel,
|
||||
cheapest = get_cheapest_path_for_pathkeys(rel->pathlist,
|
||||
NIL,
|
||||
required_outer,
|
||||
TOTAL_COST);
|
||||
TOTAL_COST,
|
||||
false);
|
||||
Assert(cheapest != NULL);
|
||||
if (bms_equal(PATH_REQ_OUTER(cheapest), required_outer))
|
||||
return cheapest;
|
||||
|
Reference in New Issue
Block a user