From: | Yasir <yasir(dot)hussain(dot)shah(at)gmail(dot)com> |
---|---|
To: | Ashutosh Bapat <ashutosh(dot)bapat(dot)oss(at)gmail(dot)com> |
Cc: | PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: Alias of VALUES RTE in explain plan |
Date: | 2024-08-15 14:13:29 |
Message-ID: | CAA9OW9dnt9u9EbDf6JZ10ezXFSCPNYSVsCAXcBPKXcW6yw7YYg@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Mon, Jul 1, 2024 at 3:17 PM Ashutosh Bapat <ashutosh(dot)bapat(dot)oss(at)gmail(dot)com>
wrote:
> Hi All,
> While reviewing Richard's patch for grouping sets, I stumbled upon
> following explain output
>
> explain (costs off)
> select distinct on (a, b) a, b
> from (values (1, 1), (2, 2)) as t (a, b) where a = b
> group by grouping sets((a, b), (a))
> order by a, b;
> QUERY PLAN
> ----------------------------------------------------------------
> Unique
> -> Sort
> Sort Key: "*VALUES*".column1, "*VALUES*".column2
> -> HashAggregate
> Hash Key: "*VALUES*".column1, "*VALUES*".column2
> Hash Key: "*VALUES*".column1
> -> Values Scan on "*VALUES*"
> Filter: (column1 = column2)
> (8 rows)
>
> There is no VALUES.column1 and VALUES.column2 in the query. The alias t.a
> and t.b do not appear anywhere in the explain output. I think explain
> output should look like
> explain (costs off)
> select distinct on (a, b) a, b
> from (values (1, 1), (2, 2)) as t (a, b) where a = b
> group by grouping sets((a, b), (a))
> order by a, b;
> QUERY PLAN
> ----------------------------------------------------------------
> Unique
> -> Sort
> Sort Key: t.a, t.b
> -> HashAggregate
> Hash Key: t.a, t.b
> Hash Key: t.a
> -> Values Scan on "*VALUES*" t
> Filter: (a = b)
> (8 rows)
>
> I didn't get time to figure out the reason behind this, nor the history.
> But I thought I would report it nonetheless.
>
I have looked into the issue and found that when subqueries are pulled up,
a modifiable copy of the subquery is created for modification in the
pull_up_simple_subquery() function. During this process,
flatten_join_alias_vars() is called to flatten any join alias variables in
the subquery's target list. However at this point, we lose subquery's alias.
If you/hackers agree with my findings, I can provide a working patch soon.
> --
> Best Wishes,
> Ashutosh Bapat
>
From | Date | Subject | |
---|---|---|---|
Next Message | Nathan Bossart | 2024-08-15 14:26:57 | Re: Opinion poll: Sending an automated email to a thread when it gets added to the commitfest |
Previous Message | Tom Lane | 2024-08-15 14:05:07 | Re: format_datum debugging function |