Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 9c75e1a

Browse files
committed
Forbid parallel Hash Right Join or Hash Full Join.
That won't work. You'll get bogus null-extended rows. Mithun Cy
1 parent cfb863f commit 9c75e1a

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

src/backend/optimizer/path/joinpath.c

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1450,10 +1450,14 @@ hash_inner_and_outer(PlannerInfo *root,
14501450
* If the joinrel is parallel-safe, we may be able to consider a
14511451
* partial hash join. However, we can't handle JOIN_UNIQUE_OUTER,
14521452
* because the outer path will be partial, and therefore we won't be
1453-
* able to properly guarantee uniqueness. Also, the resulting path
1454-
* must not be parameterized.
1453+
* able to properly guarantee uniqueness. Similarly, we can't handle
1454+
* JOIN_FULL and JOIN_RIGHT, because they can produce false null
1455+
* extended rows. Also, the resulting path must not be parameterized.
14551456
*/
1456-
if (joinrel->consider_parallel && jointype != JOIN_UNIQUE_OUTER &&
1457+
if (joinrel->consider_parallel &&
1458+
jointype != JOIN_UNIQUE_OUTER &&
1459+
jointype != JOIN_FULL &&
1460+
jointype != JOIN_RIGHT &&
14571461
outerrel->partial_pathlist != NIL &&
14581462
bms_is_empty(joinrel->lateral_relids))
14591463
{

0 commit comments

Comments
 (0)