From: | Moshe Jacobson <moshe(at)neadwerx(dot)com> |
---|---|
To: | Robert Haas <robertmhaas(at)gmail(dot)com> |
Cc: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Postgres-Bugs <pgsql-bugs(at)postgresql(dot)org>, Robert Mowlavi <robert(at)neadwerx(dot)com>, Chris Autry <chris(at)neadwerx(dot)com> |
Subject: | Re: LEFT JOINs not optimized away when not needed |
Date: | 2014-07-10 16:12:03 |
Message-ID: | CAJ4CxL=vTAQ1dVYtAQoeS636qniO1mOy8E83Q4w7YzWuYyqtdg@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs pgsql-hackers |
On Thu, Jul 10, 2014 at 11:06 AM, Robert Haas <robertmhaas(at)gmail(dot)com> wrote:
> CREATE VIEW person_with_cars AS
> SELECT p.id, p.full_name, p.something_else, array_agg(c.plate_number)
> AS plate_numbers
> FROM person p LEFT JOIN cars c ON p.id = c.person_id
> GROUP BY p.id, p.full_name, p.something_else;
>
> It's reasonable to hope that if the aggregated column isn't selected,
> the join will get removed, but cars (person_id) is not unique.
>
Exactly. But the same should be true even if c.plate_number is not
aggregated in the view def.
As long as it's not selected, the output should list one row per person_id
and the cars table should be removed from the join.
What I've just described is our most common use case.
Moshe Jacobson
Manager of Systems Engineering, Nead Werx Inc. <http://www.neadwerx.com>
2323 Cumberland Parkway · Suite 201 · Atlanta, GA 30339
"Quality is not an act, it is a habit." -- Aristotle
From | Date | Subject | |
---|---|---|---|
Next Message | Francisco Olarte | 2014-07-10 16:27:10 | Re: BUG #10917: How to connect pgadmin of another system. |
Previous Message | Robert Haas | 2014-07-10 15:06:49 | Re: LEFT JOINs not optimized away when not needed |
From | Date | Subject | |
---|---|---|---|
Next Message | Claudio Freire | 2014-07-10 17:40:12 | Re: Minmax indexes |
Previous Message | Robert Haas | 2014-07-10 16:02:50 | pgindent weirdness |