pgsql: Fix failure to create FKs correctly in partitions

Поиск
Список
Период
Сортировка
От Alvaro Herrera
Тема pgsql: Fix failure to create FKs correctly in partitions
Дата
Msg-id E1j0BAt-0005cn-1M@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Fix failure to create FKs correctly in partitions

On a multi-level partioned table, when adding a partition not directly
connected to the root table, foreign key constraints referencing the
root were not cloned to the new partition, leading to the FK being
possibly inadvertently violated later on.

This was caused by fuzzy thinking in CloneFkReferenced (commit
f56f8f8da6af): it was skipping constraints marked as having parents on
the theory that cloning those would create duplicates; but that's only
correct for the top level of the partitioning hierarchy.  For levels
below that one, such constraints must still be considered and only
skipped if later on we see that we'd create duplicates.  Apparently, I
(Álvaro) wrote the comments right but the code implemented something
slightly different.

Author: Jehan-Guillaume de Rorthais
Discussion: https://postgr.es/m/20200206004948.238352db@firost

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/55173d2e663fbe32430665ce7bd65a47856dc237

Modified Files
--------------
src/backend/commands/tablecmds.c          | 28 +++++++++++++++++-----------
src/test/regress/expected/foreign_key.out | 24 ++++++++++++++++++++++++
src/test/regress/sql/foreign_key.sql      | 18 ++++++++++++++++++
3 files changed, 59 insertions(+), 11 deletions(-)


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

Предыдущее
От: Alvaro Herrera
Дата:
Сообщение: pgsql: Fix TRUNCATE .. CASCADE on partitions
Следующее
От: Tom Lane
Дата:
Сообщение: pgsql: First-draft release notes for 12.2.