Re: HINTing on UPDATE foo SET foo.bar = ..;
От | Marko Tiikkaja |
---|---|
Тема | Re: HINTing on UPDATE foo SET foo.bar = ..; |
Дата | |
Msg-id | 5470C911.5040800@joh.to обсуждение исходный текст |
Ответ на | Re: HINTing on UPDATE foo SET foo.bar = ..; (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: HINTing on UPDATE foo SET foo.bar = ..;
|
Список | pgsql-hackers |
On 2014-11-22 18:02, Tom Lane wrote: > Marko Tiikkaja <marko@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
В списке pgsql-hackers по дате отправления: