On Oct 17, 2014 6:16 PM, "Tom Lane" <t...@sss.pgh.pa.us> wrote: > A more realistic objection goes like this: > > create table foo(f int, g int); > update foo x set x = (1,2); -- works > alter table foo add column x int; > update foo x set x = (1,2,3); -- no longer works > > It's not a real good thing if a column addition or renaming can > so fundamentally change the nature of a query.
I think a significant use case for this feature is when you already have a row-value and want to persist it in the database, like you can do with INSERT: insert into foo select * from populate_record_json(null::foo, '{...}'); In this case the opposite is true: requiring explicit column names would break the query if you add columns to the table. The fact that you can't reasonably use populate_record/_json with UPDATE is a significant omission. IMO this really speaks for supporting shorthand whole-row assignment, whatever the syntax. Regards, Marti