Re: Trying to pull up EXPR SubLinks

From: Andy Fan <zhihui(dot)fan1213(at)gmail(dot)com>
To: Richard Guo <guofenglinux(at)gmail(dot)com>
Cc: PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Trying to pull up EXPR SubLinks
Date: 2020-02-28 07:02:28
Message-ID: CAKU4AWoQ=SWSwQacjQf99cEdZXgHYLpw7iQMmAiERmE9Z3uuWw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Fri, Feb 28, 2020 at 2:35 PM Richard Guo <guofenglinux(at)gmail(dot)com> wrote:

> Hi All,
>
> Currently we will not consider EXPR_SUBLINK when pulling up sublinks and
> this would cause performance issues for some queries with the form of:
> 'a > (SELECT agg(b) from ...)' as described in [1].
>
> So here is a patch as an attempt to pull up EXPR SubLinks. The idea,
> which is based on Greenplum's implementation, is to perform the
> following transformation.
>
> For query:
>
> select * from foo where foo.a >
> (select avg(bar.a) from bar where foo.b = bar.b);
>
> we transform it to:
>
> select * from foo inner join
> (select bar.b, avg(bar.a) as avg from bar group by bar.b) sub
> on foo.b = sub.b and foo.a > sub.avg;
>

Glad to see this. I think the hard part is this transform is not *always*
good. for example foo.a only has 1 rows, but bar has a lot of rows, if so
the original would be the better one. doss this patch consider this
problem?

> Thanks
> Richard
>

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Michael Paquier 2020-02-28 07:17:12 Re: Assert failure due to "drop schema pg_temp_3 cascade" for temporary tables and \d+ is not showing any info after drooping temp table schema
Previous Message Kyotaro Horiguchi 2020-02-28 07:01:00 Make mesage at end-of-recovery less scary.