Re: BUG #15324: Non-deterministic behaviour from parallelised sub-query

From: Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Marko Tiikkaja <marko(at)joh(dot)to>, Andres Freund <andres(at)anarazel(dot)de>, andy(at)prestigedigital(dot)com, PostgreSQL mailing lists <pgsql-bugs(at)lists(dot)postgresql(dot)org>
Subject: Re: BUG #15324: Non-deterministic behaviour from parallelised sub-query
Date: 2018-08-14 07:36:07
Message-ID: CAA4eK1LwH851qD2F1-WQP=xA=-cbJkTCE5UEeyJg3Q7XCN3c+g@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

On Tue, Aug 14, 2018 at 9:40 AM, Amit Kapila <amit(dot)kapila16(at)gmail(dot)com> wrote:
> On Mon, Aug 13, 2018 at 10:56 PM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
>
> As Tom said, it is evident from the plan that the Limit clause is
> pushed in the inner-side of the parallel plan and not all the workers
> compute the same result set for the inner side.
>
>> Likely, we need to treat the presence of a LIMIT/OFFSET in a sub-select
>> as making it parallel-unsafe, for exactly the reason that that makes
>> its results non-deterministic.
>>
>
> Yeah, one idea could be that we detect this in
> max_parallel_hazard_walker during the very first pass it performs on
> query-tree.
>

I have written a patch along those lines. This is still a WIP patch
and it is mainly to demonstrate what I have in mind. There is one
test in select_parallel.sql failing after this patch, but I think that
is expected and we need to adjust that test. Let me know if you see
a flaw in this approach?

--
With Regards,
Amit Kapila.
EnterpriseDB: http://www.enterprisedb.com

Attachment Content-Type Size
prohibit_parallel_limit_subselect_v1.patch application/octet-stream 2.1 KB

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message Marko Tiikkaja 2018-08-14 10:22:02 Re: BUG #15324: Non-deterministic behaviour from parallelised sub-query
Previous Message Sebastian Schwaighofer 2018-08-14 07:05:57 No receiving of password