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

Pavel Stehule <pavel.stehule@gmail.com>

From: Pavel Stehule <pavel.stehule@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Marko Tiikkaja <marko@joh.to>, Andres Freund <andres@anarazel.de>, andy@prestigedigital.com, pgsql-bugs@lists.postgresql.org
Date: 2018-08-13T17:47:37Z
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 →
  1. Don't allow LIMIT/OFFSET clause within sub-selects to be pushed to workers.

  2. Back-patch "Fix parallel hash join path search."

  3. Prohibit pushing subqueries containing window function calculation to

  4. Fix parallel hash join path search.

2018-08-13 19:26 GMT+02:00 Tom Lane <tgl@sss.pgh.pa.us>:

> Marko Tiikkaja <marko@joh.to> writes:
> > On Mon, Aug 13, 2018 at 7:35 PM, Andres Freund <andres@anarazel.de>
> wrote:
> >> Well, the subselect with thelimit going to return different results from
> >> run to run. Unless you add an ORDER BY there's no guaranteed order in
> >> which tuples are returned.  So I don't think it's surprising that you're
> >> getting results that differ between runs.
>
> > While this is true, that's missing the point.
>
> Yeah, I agree.  I think probably what's happening is that the sub-select
> is getting pushed down to the parallel workers and they are not all
> computing the same set of sub-select results, leading to inconsistent
> answers at the top level.
>
> 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.
>

Isn't it default behave of LIMIT/OFFSET without ORDER BY clause?

If we don't need to solve order of rows, then parallel unsafe is not
necessary.

Regards

Pavel


>                         regards, tom lane
>
>