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
Дата
Msg-id j9WVrqf9R9p8t103UQjQsp4u5-T579pZ-z8vB4vCYeApzBrqtr8XTQeWWWjlqRs0Lk2Fm8Oilxv6y2VC6q0hAy2V48i9a3xqDJ2ZMnrK_Q8=@protonmail.com
обсуждение исходный текст
Ответ на Re: [BUGS] Possible regression in 'UPDATE ... SET () = ' with just one single column/row value since v10  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-bugs
Hi David, Tom,

Thanks for information. I could have found it in the docs, but in hindsight, I did really think about the necessity to
todistinguish between the case with just one column and the case with multiple columns. It's clear for me now. 

Warm regards,

YasonTR

>-------- Original Message --------
>Subject: Re: [BUGS] Possible regression in 'UPDATE ... SET () = ' with just one single column/row value since v10
>Local Time: October 24, 2017 5:21 PM
>UTC Time: October 24, 2017 3:21 PM
>From: tgl@sss.pgh.pa.us
>To: David G. Johnston <david.g.johnston@gmail.com>
>YasonTR <yasontr@protonmail.com>, pgsql-bugs@postgresql.org <pgsql-bugs@postgresql.org>
>
>"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 of
>>> ROW(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
>>>
--
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 по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: [BUGS] Possible regression in 'UPDATE ... SET () = ' with just one single column/row value since v10
Следующее
От: andreigorita@gmail.com
Дата:
Сообщение: [BUGS] BUG #14870: wrong query results when using WITH with UPDATE