Re: row_to_json(), NULL values, and AS
Neil Conway <neil.conway@gmail.com>
From: Neil Conway <neil.conway@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: pgsql-bugs@postgresql.org
Date: 2018-06-15T17:22:30Z
Lists: pgsql-bugs, pgsql-hackers
[ Hi Tom! Hope you're doing well. ] On Fri, Jun 15, 2018 at 7:53 AM Tom Lane <tgl@sss.pgh.pa.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
Commits
-
Remove obsolete prohibition on function name matching a column name.
- 45e98ee73062 11.0 landed
-
Consider syntactic form when disambiguating function vs column reference.
- b97a3465d73b 11.0 landed