pgsql: In INSERT/UPDATE, use the table's real tuple descriptor as targe

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: In INSERT/UPDATE, use the table's real tuple descriptor as targe
Дата
Msg-id E1kbp7W-0004Kw-O9@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
In INSERT/UPDATE, use the table's real tuple descriptor as target.

This back-patches commit 20d3fe900 into the v12 and v13 branches.
At the time I thought that commit was not fixing any observable
bug, but Bertrand Drouvot showed otherwise: adding a dropped column
to the previously-considered scenario crashes v12 and v13, unless the
dropped column happens to be an integer.  That is, of course, because
the tupdesc we derive from the plan output tlist fails to describe
the dropped column accurately, so that we'll do the wrong thing with
a tuple in which that column isn't NULL.

There is no bug in pre-v12 branches because they already did use
the table's real tuple descriptor for any trigger-returned tuple.
It seems that this set of bugs can be blamed on the changes that
removed es_trig_tuple_slot, though I've not attempted to pin that
down precisely.

Although there's no code change needed in HEAD, update the test case
to include a dropped column there too.

Discussion: https://postgr.es/m/db5d97c8-f48a-51e2-7b08-b73d5434d425@amazon.com
Discussion: https://postgr.es/m/16644-5da7ef98a7ac4545@postgresql.org

Branch
------
REL_13_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/7aeb6404f0aa250e75b7156d21ebe12d0ec2d1c8

Modified Files
--------------
src/backend/commands/trigger.c         | 38 +-------------------------
src/backend/executor/execJunk.c        | 42 ++++++++++++++++++++++------
src/backend/executor/nodeModifyTable.c | 22 +++++++++++----
src/include/executor/executor.h        |  3 ++
src/test/regress/expected/triggers.out | 50 ++++++++++++++++++++++++----------
src/test/regress/sql/triggers.sql      | 13 +++++++--
6 files changed, 102 insertions(+), 66 deletions(-)


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

Предыдущее
От: Thomas Munro
Дата:
Сообщение: pgsql: Fix assertion in collation version lookup.
Следующее
От: Tom Lane
Дата:
Сообщение: pgsql: Release notes for 13.1, 12.5, 11.10, 10.15, 9.6.20, 9.5.24.