summaryrefslogtreecommitdiff
path: root/src/backend/optimizer/path/joinpath.c
diff options
context:
space:
mode:
authorRobert Haas <rhaas@postgresql.org>2017-03-07 10:22:07 -0500
committerRobert Haas <rhaas@postgresql.org>2017-03-07 10:22:07 -0500
commit655393a022bd653e2b48dbf20b69236981e35195 (patch)
tree90ded750bd3a37b7130133b32ccc65c9dc8d656e /src/backend/optimizer/path/joinpath.c
parentb2678efd43f17db7dfa04e0ca076ea01275cd9bc (diff)
downloadpostgresql-655393a022bd653e2b48dbf20b69236981e35195.tar.gz
Fix parallel hash join path search.
When the very cheapest path is not parallel-safe, we want to instead use the cheapest unparameterized path that is. The old code searched innerrel->cheapest_parameterized_paths, but that isn't right, because the path we want may not be in that list. Search innerrel->pathlist instead. Spotted by Dilip Kumar. Discussion: http://postgr.es/m/CAFiTN-szCEcZrQm0i_w4xqSaRUTOUFstNu32Zn4rxxDcoa8gnA@mail.gmail.com
Diffstat (limited to 'src/backend/optimizer/path/joinpath.c')
-rw-r--r--src/backend/optimizer/path/joinpath.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/backend/optimizer/path/joinpath.c b/src/backend/optimizer/path/joinpath.c
index 2897245883..99ec5834bf 100644
--- a/src/backend/optimizer/path/joinpath.c
+++ b/src/backend/optimizer/path/joinpath.c
@@ -1510,9 +1510,9 @@ hash_inner_and_outer(PlannerInfo *root,
/*
* Normally, given that the joinrel is parallel-safe, the cheapest
* total inner path will also be parallel-safe, but if not, we'll
- * have to search cheapest_parameterized_paths for the cheapest
- * safe, unparameterized inner path. If doing JOIN_UNIQUE_INNER,
- * we can't use any alternative inner path.
+ * have to search for the cheapest safe, unparameterized inner
+ * path. If doing JOIN_UNIQUE_INNER, we can't use any alternative
+ * inner path.
*/
if (cheapest_total_inner->parallel_safe)
cheapest_safe_inner = cheapest_total_inner;
@@ -1520,7 +1520,7 @@ hash_inner_and_outer(PlannerInfo *root,
{
ListCell *lc;
- foreach(lc, innerrel->cheapest_parameterized_paths)
+ foreach(lc, innerrel->pathlist)
{
Path *innerpath = (Path *) lfirst(lc);