Add hint about not qualifying UPDATE...SET target with relation name.
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 20 Jan 2024 22:54:14 +0000 (17:54 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 20 Jan 2024 22:54:14 +0000 (17:54 -0500)
commit58447e31890ace0d552a4bf693744bef3a5335e6
treec170736fd48e1df283c1a6da796e2da70cb286df
parent075df6b2080b13e0a5adc88737b7c24417a873c1
Add hint about not qualifying UPDATE...SET target with relation name.

Target columns in UPDATE ... SET must not be qualified with the target
table; we disallow this because it'd create ambiguity about which name
is the column name in case of field-qualified names.  However, newbies
have been seen to expect that they could qualify a target name just
like other names.  The error message when they do is confusing:
"column "foo" of relation "foo" does not exist".  To improve matters,
issue a HINT if the invalid name is qualified and matches the
relation's alias.

James Coleman (editorialized a bit by me)

Discussion: https://postgr.es/m/CAAaqYe8S2Qa060UV-YF5GoSd5PkEhLV94x-fEi3=TOtpaXCV+w@mail.gmail.com
src/backend/parser/analyze.c
src/test/regress/expected/insert_conflict.out
src/test/regress/expected/update.out
src/test/regress/sql/insert_conflict.sql
src/test/regress/sql/update.sql