pgsql: Fix bug around assignment expressions containing indirections.

Поиск
Список
Период
Сортировка
От Andres Freund
Тема pgsql: Fix bug around assignment expressions containing indirections.
Дата
Msg-id E1ZIZjx-0005EG-1P@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Fix bug around assignment expressions containing indirections.

Handling of assigned-to expressions with indirection (e.g. set f1[1] =
3) was broken for ON CONFLICT DO UPDATE.  The problem was that
ParseState was consulted to determine if an INSERT-appropriate or
UPDATE-appropriate behavior should be used when transforming expressions
with indirections. When the wrong path was taken the old row was
substituted with NULL, leading to wrong results..

To fix remove p_is_update and only use p_is_insert to decide how to
transform the assignment expression, and uset p_is_insert while parsing
the on conflict statement. This isn't particularly pretty, but it's not
any worse than before.

Author: Peter Geoghegan, slightly edited by me
Discussion: CAM3SWZS8RPvA=KFxADZWw3wAHnnbxMxDzkEC6fNaFc7zSm411w@mail.gmail.com
Backpatch: 9.5, where the feature was introduced

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/c1ca3a19df376bcbb6d651d15b9a4ffcaa377ff1

Modified Files
--------------
src/backend/parser/analyze.c         |    8 +++++++-
src/include/parser/parse_node.h      |    1 -
src/test/regress/expected/arrays.out |   21 +++++++++++++++++++++
src/test/regress/sql/arrays.sql      |   13 +++++++++++++
4 files changed, 41 insertions(+), 2 deletions(-)


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

Предыдущее
От: Andrew Dunstan
Дата:
Сообщение: pgsql: Redirect install output of make check into a log file
Следующее
От: Andres Freund
Дата:
Сообщение: pgsql: Fix bug around assignment expressions containing indirections.