Re: PG12 change to DO UPDATE SET column references

David G. Johnston <david.g.johnston@gmail.com>

From: "David G. Johnston" <david.g.johnston@gmail.com>
To: James Coleman <jtc331@gmail.com>
Cc: pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2024-01-19T18:53:03Z
Lists: pgsql-hackers
On Fri, Jan 19, 2024 at 10:01 AM James Coleman <jtc331@gmail.com> wrote:

> Making this more confusing is the fact that if I want to do something
> like "SET bar = foo.bar + 1" the table qualification cannot be present
> on the setting column but is required on the reading column.
>
> There isn't anything in the docs that I see about this, and I don't
> see anything scanning the release notes for PG12 either (though I
> could have missed a keyword to search for).
>
>
https://www.postgresql.org/docs/12/sql-insert.html

"When referencing a column with ON CONFLICT DO UPDATE, do not include the
table's name in the specification of a target column. For example, INSERT
INTO table_name ... ON CONFLICT DO UPDATE SET table_name.col = 1 is invalid
(this follows the general behavior for UPDATE)."

The same text exists for v11.

David J.

Commits

  1. Add hint about not qualifying UPDATE...SET target with relation name.