Unique indexes & constraints on partitioned tables
От | Alvaro Herrera |
---|---|
Тема | Unique indexes & constraints on partitioned tables |
Дата | |
Msg-id | 20171222212921.hi6hg6pem2w2t36z@alvherre.pgsql обсуждение исходный текст |
Ответы |
Re: Unique indexes & constraints on partitioned tables
|
Список | pgsql-hackers |
Hello, I'm giving this patch its own thread for mental sanity, but this is essentially what already posted in [1], plus some doc fixes. This patch depends on the main "local partitioned indexes" in that thread, last version of which is at [2]. I also added a mechanism to set the constraints in partitions as dependent on the constraint in the parent partitioned table, so deletion is sensible: the PK in partitions goes away when the PK in the parent table is dropped; and you can't drop the PK in partitions on their own. In order to implement that I dress Rube Goldberg as Santa: the constraint OID of the parent is needed by index_constraint_create when creating the child; but it's the previous index_constraint_create itself that generates the OID when creating the parent, and it's DefineIndex that does the recursion. So index_constraint_create returns the value to index_create who returns it to DefineIndex, so that the recursive step can pass it down to index_create to give it to index_constraint_create. It seems crazy, but it's correct. As far as I can tell, pg_dump works correctly without any additional changes. [1] https://postgr.es/m/20171220194937.pldcecyx7yrwmgkg@alvherre.pgsql [2] https://postgr.es/m/20171220212503.aamhlrs425flg47f@alvherre.pgsql -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Вложения
В списке pgsql-hackers по дате отправления: