pgsql: Fix bug around assignment expressions containing indirections.
От | Andres Freund |
---|---|
Тема | pgsql: Fix bug around assignment expressions containing indirections. |
Дата | |
Msg-id | E1ZIZjy-0005Ec-W1@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 ------ REL9_5_STABLE Details ------- http://git.postgresql.org/pg/commitdiff/bb0203f26fa5f09fe2689a9db4bc632c1435edec 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 по дате отправления: