Re: Alias of VALUES RTE in explain plan - Mailing list pgsql-hackers

From Yasir
Subject Re: Alias of VALUES RTE in explain plan
Date
Msg-id CAA9OW9cL+d-uDA9OxcvLTRnqtVdgFq4A_rVdjtQp_bcAWhjbiQ@mail.gmail.com
Whole thread Raw
In response to Re: Alias of VALUES RTE in explain plan  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: Alias of VALUES RTE in explain plan
List pgsql-hackers


On Sat, Oct 26, 2024 at 12:21 AM Tom Lane <tgl@sss.pgh.pa.us> wrote:
I wrote:
> However ... I don't like this implementation, not even a little
> bit.

I forgot to mention a third problem, which is that reassigning the
alias during subquery pullup means it doesn't happen if subquery
pullup doesn't happen.  As an example, with your patch:

regression=# explain verbose select * from (values (1), (2)) v(x);
                     QUERY PLAN                     
----------------------------------------------------
 Values Scan on v  (cost=0.00..0.03 rows=2 width=4)
   Output: v.x
(2 rows)

regression=# explain verbose select * from (values (1), (random())) v(x);
                         QUERY PLAN                         
-------------------------------------------------------------
 Values Scan on "*VALUES*"  (cost=0.00..0.03 rows=2 width=8)
   Output: "*VALUES*".column1
(2 rows)

That's because the volatile function prevents subquery flattening.

Yes, that is by design. As I used is_simple_values() so if the values list is not a simple one, which is not in this case, the alias won't be reassigned. 


                        regards, tom lane

pgsql-hackers by date:

Previous
From: Kirill Reshke
Date:
Subject: Re: [Patch] remove duplicated smgrclose
Next
From: Tom Lane
Date:
Subject: Re: Alias of VALUES RTE in explain plan