Re: BUG #19507: Auto-named partition table constraint conflicts
От
Vismay Tiwari
Тема
Re: BUG #19507: Auto-named partition table constraint conflicts
Дата
Msg-id
CALHMmB_q1Sme-7_OvGiZAyJ6eSB8eKkfRuwreZK3rO88Nfk78w@mail.gmail.com
Список
Дерево обсуждения
Re: BUG #19507: Auto-named partition table constraint conflicts Vismay Tiwari <vismay.t@gmail.com>
Hi, Thanks for the report, Marko. I could reproduce both cases on current master. The root of it is that when the constraint name is auto-generated for the partitioned parent, ChooseConstraintName only checks for a clash within the parent's own schema. So a partition sitting in another schema that already has a constraint by that name isn't noticed, and the name then collides once it's propagated down. A same-schema partition doesn't trip this, because the namespace-scoped lookup already sees that one and picks a non-conflicting name; that makes it specific to partitions in other schemas. The attached patch gathers the constraint names already present on the descendants and passes them to ChooseConstraintName as names to avoid, so the generated name comes out unique across the whole hierarchy. I deliberately kept those names out of the checknames/nnnames lists, since those also drive the duplicate check for explicitly-named constraints, and folding them in would break legitimate merges of same-named inherited constraints. It's guarded on relhassubclass, so there's no extra work for tables without children. I added a regression test in constraints.sql covering both the SET NOT NULL and ADD CHECK cases; make check passes. One thing I didn't chase down: foreign-key names go through a similar auto-naming path, so they may have the same issue. I haven't tested that, so I'm flagging it in case it's worth a look. Regards, Vismay Tiwari
В списке pgsql-bugs по дате отправления
От: Ewan Young
Дата:
От: Vismay Tiwari
Дата: