Re: Consider parallel for lateral subqueries with limit

Поиск
Список
Период
Сортировка
От James Coleman
Тема Re: Consider parallel for lateral subqueries with limit
Дата
Msg-id CAAaqYe_gPW9jFsriDRcrejv=xHT50i32bcWJLji=xk5A+VPtVw@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Consider parallel for lateral subqueries with limit  (James Coleman <jtc331@gmail.com>)
Ответы Re: Consider parallel for lateral subqueries with limit  (Greg Nancarrow <gregn4422@gmail.com>)
Список pgsql-hackers
On Fri, Jul 16, 2021 at 3:16 PM James Coleman <jtc331@gmail.com> wrote:
>
> On Thu, May 27, 2021 at 9:01 PM Greg Nancarrow <gregn4422@gmail.com> wrote:
> >
> > On Tue, Dec 8, 2020 at 10:46 AM James Coleman <jtc331@gmail.com> wrote:
> > >
> > > While I haven't actually tracked down to guarantee this is handled
> > > elsewhere, a thought experiment -- I think -- shows it must be so.
> > > Here's why: suppose we don't have a limit here, but the query return
> > > order is different in different backends. Then we would have the same
> > > problem you bring up. In that case this code is already setting
> > > consider_parallel=true on the rel. So I don't think we're changing any
> > > behavior here.
> > >
> >
> > AFAICS, the patch seems very reasonable and specifically targets
> > lateral subqueries with limit/offset. It seems like the uncorrelated
> > case is the only real concern.
> > I generally agree that the current patch is probably not changing any
> > behavior in the uncorrelated case (and like yourself, haven't yet
> > found a case for which it breaks), but I'm not sure Brian's concerns
> > can be ruled out entirely.
> >
> > How about a minor update to the patch to make it slightly more
> > restrictive, to exclude the case when there are no lateral
> > cross-references, so we'll be allowing parallelism only when we know
> > the lateral subquery will be evaluated anew for each source row?
> > I was thinking of the following patch modification:
> >
> > BEFORE:
> > -                if (limit_needed(subquery))
> > +               if (!rte->lateral && limit_needed(subquery))
> >
> > AFTER:
> > -                if (limit_needed(subquery))
> > +               if ((!rte->lateral || bms_is_empty(rel->lateral_relids)) &&
> > +                     limit_needed(subquery))
> >
> >
> > Thoughts?
>
> Apologies for the delayed response; this seems fine to me. I've
> attached patch v2.

Greg,

Do you believe this is now ready for committer?

Thanks,
James Coleman



В списке pgsql-hackers по дате отправления:

Предыдущее
От: James Coleman
Дата:
Сообщение: Re: Parallelize correlated subqueries that execute within each worker
Следующее
От: Daniel Gustafsson
Дата:
Сообщение: Re: Predefined role pg_maintenance for VACUUM, ANALYZE, CHECKPOINT.