Re: [BUGS] Possible regression in 'UPDATE ... SET () = ' with just one single column/row value since v10

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: [BUGS] Possible regression in 'UPDATE ... SET () = ' with just one single column/row value since v10
Дата
Msg-id 25202.1508858486@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: [BUGS] Possible regression in 'UPDATE ... SET () =' with just one single column/row value since v10  ("David G. Johnston" <david.g.johnston@gmail.com>)
Ответы Re: [BUGS] Possible regression in 'UPDATE ... SET () = ' with just one single column/row value since v10
Список pgsql-bugs
"David G. Johnston" <david.g.johnston@gmail.com> writes:
> On Tue, Oct 24, 2017 at 7:55 AM, YasonTR <yasontr@protonmail.com> wrote:
>> I get your reference to the spec, but why is it working without ROW() when
>> multiple columns are involved? For example: "UPDATE my_table SET (a, b) =
>> (x, y)" works on v10 (afaik).

> "The key word ROW is optional when there is more than one expression in
> the list."

Right.  This was not one of the SQL committee's better syntax choices,
in my book --- allowing ROW to be optional makes the single-column case
a weird exception, since then and only then ROW is required to make it a
row constructor and not just an expression with useless extra parens.

The spec says that the source value for a parenthesized SET list
is a <contextually typed row value expression>.  Pre-v10, we handled
this with a grammar hack that looked specifically for a parenthesized
list of expressions, and as it happened it would accept a single
parenthesized expression as well.  Now it's expecting a normal
row constructor, which can be one ofROW(one_expr)ROW(an_expr, another_expr [, ...])(an_expr, another_expr [, ...])
        regards, tom lane


-- 
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

В списке pgsql-bugs по дате отправления:

Предыдущее
От: "David G. Johnston"
Дата:
Сообщение: Re: [BUGS] Possible regression in 'UPDATE ... SET () =' with just one single column/row value since v10
Следующее
От: YasonTR
Дата:
Сообщение: Re: [BUGS] Possible regression in 'UPDATE ... SET () = ' with just one single column/row value since v10