From: | Neil Conway <neil(dot)conway(at)gmail(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | pgsql-bugs(at)postgresql(dot)org |
Subject: | Re: row_to_json(), NULL values, and AS |
Date: | 2018-06-15 17:22:30 |
Message-ID: | CAOW5sYY2bkRutaoTm1CG5VoYhZk6YvL1m8MkUONJvXmtfkFH_g@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs pgsql-hackers |
[ Hi Tom! Hope you're doing well. ]
On Fri, Jun 15, 2018 at 7:53 AM Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> Oh! What is actually happening is
>
> (1) With no explicit alias, the column name of the sub-select's second
> output column is chosen to be "row_to_json".
>
> (2) That makes the outer query's notation row_to_json(x) ambiguous: it
> could be a function-syntax reference to the column x.row_to_json.
>
> (3) As it happens, the column interpretation is chosen when it's
> ambiguous (cf ParseComplexProjection).
>
> I'm a bit hesitant to muck with this behavior, given that it's stood
> for ~20 years. However, if we did want to touch it, maybe the right
> thing would be to give up the absolutist position that f(x) and x.f
> are exactly interchangeable. We could say instead that we prefer the
> function interpretation if function syntax is used, and the column
> interpretation if column syntax is used.
Interesting! Your proposed change seems quite reasonable to me.
Thanks for digging into it.
Neil
From | Date | Subject | |
---|---|---|---|
Next Message | Andrew Gierth | 2018-06-15 18:47:01 | Re: BUG #15237: I got "ERROR: source for a multiple-column UPDATE item must be a sub-SELECT or ROW() expression" |
Previous Message | Tom Lane | 2018-06-15 17:21:07 | Re: BUG #15237: I got "ERROR: source for a multiple-column UPDATE item must be a sub-SELECT or ROW() expression" |
From | Date | Subject | |
---|---|---|---|
Next Message | Andres Freund | 2018-06-15 17:45:04 | Re: Speedup of relation deletes during recovery |
Previous Message | Tom Lane | 2018-06-15 17:21:07 | Re: BUG #15237: I got "ERROR: source for a multiple-column UPDATE item must be a sub-SELECT or ROW() expression" |