Forbid parallel Hash Right Join or Hash Full Join.

That won't work.  You'll get bogus null-extended rows.

Mithun Cy
This commit is contained in:
Robert Haas 2016-04-20 17:48:55 -04:00
parent cfb863f20a
commit 9c75e1a36b
1 changed files with 7 additions and 3 deletions

View File

@ -1450,10 +1450,14 @@ hash_inner_and_outer(PlannerInfo *root,
* If the joinrel is parallel-safe, we may be able to consider a
* partial hash join. However, we can't handle JOIN_UNIQUE_OUTER,
* because the outer path will be partial, and therefore we won't be
* able to properly guarantee uniqueness. Also, the resulting path
* must not be parameterized.
* able to properly guarantee uniqueness. Similarly, we can't handle
* JOIN_FULL and JOIN_RIGHT, because they can produce false null
* extended rows. Also, the resulting path must not be parameterized.
*/
if (joinrel->consider_parallel && jointype != JOIN_UNIQUE_OUTER &&
if (joinrel->consider_parallel &&
jointype != JOIN_UNIQUE_OUTER &&
jointype != JOIN_FULL &&
jointype != JOIN_RIGHT &&
outerrel->partial_pathlist != NIL &&
bms_is_empty(joinrel->lateral_relids))
{