]> granicus.if.org Git - postgresql/commit
Fix creation of duplicate foreign keys on partitions
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Fri, 18 Jan 2019 17:49:40 +0000 (14:49 -0300)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Fri, 18 Jan 2019 17:57:49 +0000 (14:57 -0300)
commit4dff8935fbab64aef38470424cc57dbda9efa1cf
tree30945215314c799aff9a25573a3fda6a6e4c906d
parentfca6cabed17c4960224408d44e3d384b560b78f5
Fix creation of duplicate foreign keys on partitions

When creating a foreign key in a partitioned table, if some partitions
already have equivalent constraints, we wastefully create duplicates of
the constraints instead of attaching to the existing ones.  That's
inconsistent with the de-duplication that is applied when a table is
attached as a partition.  To fix, reuse the FK-cloning code instead of
having a separate code path.

Backpatch to Postgres 11.  This is a subtle behavior change, but surely
a welcome one since there's no use in having duplicate foreign keys.

Discovered by Álvaro Herrera while thinking about a different problem
reported by Jesper Pedersen (bug #15587).

Author: Álvaro Herrera
Discussion: https://postgr.es/m/201901151935.zfadrzvyof4k@alvherre.pgsql
src/backend/commands/tablecmds.c
src/test/regress/expected/foreign_key.out
src/test/regress/sql/foreign_key.sql