Re: row_to_json(), NULL values, and AS
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Neil Conway <neil.conway@gmail.com>
Cc: pgsql-bugs@postgresql.org
Date: 2018-06-15T14:53:13Z
Lists: pgsql-bugs, pgsql-hackers
I wrote: > Neil Conway <neil.conway@gmail.com> writes: >> The following behavior does not seem self-consistent to me: > Likewise. 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. I don't know how likely that is to break existing apps ... perhaps not very, but I wouldn't risk back-patching it in any case. regards, tom lane
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