Prevent Parallel Hash Join for JOIN_UNIQUE_INNER.
WHERE EXISTS (...) queries cannot be executed by Parallel Hash Join with jointype JOIN_UNIQUE_INNER, because there is no way to make a partial plan totally unique. The consequence of allowing such plans was duplicate results from some EXISTS queries. Back-patch to 11. Bug #15857. Author: Thomas Munro Reviewed-by: Tom Lane Reported-by: Vladimir Kriukov Discussion: https://postgr.es/m/15857-d1ba2a64bce0795e%40postgresql.org
This commit is contained in:
parent
e5f26d79ba
commit
14d8b539d3
@ -1867,9 +1867,12 @@ hash_inner_and_outer(PlannerInfo *root,
|
||||
|
||||
/*
|
||||
* Can we use a partial inner plan too, so that we can build a
|
||||
* shared hash table in parallel?
|
||||
* shared hash table in parallel? We can't handle
|
||||
* JOIN_UNIQUE_INNER because we can't guarantee uniqueness.
|
||||
*/
|
||||
if (innerrel->partial_pathlist != NIL && enable_parallel_hash)
|
||||
if (innerrel->partial_pathlist != NIL &&
|
||||
save_jointype != JOIN_UNIQUE_INNER &&
|
||||
enable_parallel_hash)
|
||||
{
|
||||
cheapest_partial_inner =
|
||||
(Path *) linitial(innerrel->partial_pathlist);
|
||||
|
Loading…
x
Reference in New Issue
Block a user