Re: BUG #15324: Non-deterministic behaviour from parallelised sub-query
Amit Kapila <amit.kapila16@gmail.com>
From: Amit Kapila <amit.kapila16@gmail.com>
To: Stephen Frost <sfrost@snowman.net>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Marko Tiikkaja <marko@joh.to>,
Andres Freund <andres@anarazel.de>, Andrew Fletcher <andy@prestigedigital.com>, PostgreSQL mailing lists <pgsql-bugs@lists.postgresql.org>
Date: 2018-08-20T10:50:06Z
Lists: pgsql-bugs
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Don't allow LIMIT/OFFSET clause within sub-selects to be pushed to workers.
- 568b4e1fdeb3 9.6.11 landed
- 1ceb103e7d1e 10.6 landed
- 830d7565902f 11.0 landed
- 75f9c4ca5a80 12.0 landed
-
Back-patch "Fix parallel hash join path search."
- 271b678436ce 9.6.11 landed
-
Prohibit pushing subqueries containing window function calculation to
- f658235a448a 9.6.11 landed
- bf61873ae3b6 10.6 landed
- 14e9b2a752ef 12.0 landed
- 2ce253cf57b1 11.0 landed
-
Fix parallel hash join path search.
- 655393a022bd 10.0 cited
Attachments
- prohibit_parallel_limit_subselect_v2.patch (application/octet-stream) patch v2
- treat_window_func_calc_parallel_restricted_v1.patch (application/octet-stream) patch v1
On Thu, Aug 16, 2018 at 9:25 AM, Amit Kapila <amit.kapila16@gmail.com> wrote: > On Wed, Aug 15, 2018 at 4:40 PM, Stephen Frost <sfrost@snowman.net> wrote: >> Greetings, >> > > Yeah, let me summarize the problems which require patches: > (a) Consider the presence of a LIMIT/OFFSET in a sub-select as making > it parallel-unsafe. > As mentioned up-thread, I have considered adding a check in max_parallel_hazard_walker, but it turns out that it will make the whole query parallel-unsafe even if one of the sub-selects has Limit/Offset. I think the better idea is to detect that during set_rel_consider_parallel. Attached patch prohibit_parallel_limit_subselect_v2 implements the fix for same. I have also tried to consider waving off the case when Order By is present in the sub-select, but for that, I think we need to ensure that Order By is on the same column as the target list. It is not clear to me whether adding additional code checks to detect that is valuable because it can consume planner time for some cases. Also, I think it is not advisable to have such checks for the back-branches as pointed by Tom as well. So, I didn't do anything about it. > (b) Consider the presence of any window function calculation as > parallel-restricted operation. > For this, we need to mark all the window functions like row_number, rank, dense_rank, etc as parallel-restricted. Additionally, we also need to detect the presence of aggregate functions that act as window functions (when an OVER clause follows the call). Attached patch treat_window_func_calc_parallel_restricted_v1 implements the fix. > Initially, I will prepare two separate patches for them and then we > will see if we want to combine them into one before committing. > One can apply patches in the order prohibit_parallel_limit_subselect_v2 and treat_window_func_calc_parallel_restricted_v1. -- With Regards, Amit Kapila. EnterpriseDB: http://www.enterprisedb.com