pgsql: Block creation of partitions with open references to its parent

Поиск
Список
Период
Сортировка
От Michael Paquier
Тема pgsql: Block creation of partitions with open references to its parent
Дата
Msg-id E1gJUGR-0000yv-P8@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Block creation of partitions with open references to its parent

When a partition is created as part of a trigger processing, it is
possible that the partition which just gets created changes the
properties of the table the executor of the ongoing command relies on,
causing a subsequent crash.  This has been found possible when for
example using a BEFORE INSERT which creates a new partition for a
partitioned table being inserted to.

Any attempt to do so is blocked when working on a partition, with
regression tests added for both CREATE TABLE PARTITION OF and ALTER
TABLE ATTACH PARTITION.

Reported-by: Dmitry Shalashov
Author: Amit Langote
Reviewed-by: Michael Paquier, Tom Lane
Discussion: https://postgr.es/m/15437-3fe01ee66bd1bae1@postgresql.org
Backpatch-through: 10

Branch
------
REL_11_STABLE

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

Modified Files
--------------
src/backend/commands/tablecmds.c           |  8 ++++++++
src/test/regress/expected/alter_table.out  | 18 ++++++++++++++++++
src/test/regress/expected/create_table.out | 16 ++++++++++++++++
src/test/regress/sql/alter_table.sql       | 16 ++++++++++++++++
src/test/regress/sql/create_table.sql      | 14 ++++++++++++++
5 files changed, 72 insertions(+)


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

Предыдущее
От: Michael Paquier
Дата:
Сообщение: pgsql: Ignore partitioned tables when processing ON COMMIT DELETE ROWS
Следующее
От: Peter Eisentraut
Дата:
Сообщение: pgsql: Translation updates