On 2014-11-22 18:02, Tom Lane wrote:
Marko Tiikkaja <ma...@joh.to> writes:
A common mistake is to try and qualify column references on the LHS of
SET in UPDATE. The error message can be a bit cryptic at times, too.
Perhaps, but this hint is not much of an improvement:
HINT: Target column references in UPDATE must not be qualified
because target column references *can* be "qualified", for example
if you have a composite column datatype you can assign directly to
one of its fields. (This ambiguity is exactly why we don't simply
allow the case.) So I don't think that "qualified" is a sufficiently
precise phrase to be helpful. Possibly something along the lines of
HINT: Do not qualify an UPDATE target column with the name of the table.
Sounds good to me. I didn't expect anyone to like the wording of the
hint in the first place ;-)
Also, the coding technique used here is poor, because the hint text
will not be exposed for translation. The usual pattern is
need_hint ? errhint("Message text here.") : 0
Oops. I just copied what the first relevant grep of errhint did, which
was from postgres_fdw. But its hints will already have been translated.
Will fix.
Also, as far as Peter's point goes, it would likely make sense to
issue this hint if the column basename is *either* the alias name
or the underlying table name.
Yeah, I thought about that too, but I thought that might be weird if
there's an alias in FROM with the name of the table, e.g:
UPDATE foo f1 SET foo.a = 1 FROM foo;
But I don't really care too much either way.
.marko
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers