On Fri, Nov 15, 2024 at 11:15 AM Robert Haas <robertmh...@gmail.com> wrote: > > On Thu, Nov 14, 2024 at 12:02 AM Suraj Kharage > <suraj.khar...@enterprisedb.com> wrote: >> >> Alvaro stated that allowing a not null constraint state to be modified from >> INHERIT to NO INHERIT is going to be quite problematic because of the number >> of weird cases to avoid, so for now that support is not added. > > What's the reasoning behind that restriction? What are the weird cases?
current status: drop table if exists idxpart,idxpart0,idxpart1 cascade; create table idxpart (a int not null) partition by list (a); create table idxpart0 (a int constraint foo not null no inherit); alter table idxpart attach partition idxpart0 for values in (0,1); ERROR: constraint "foo" conflicts with non-inherited constraint on child table "idxpart0" to make it attach to the partition, we need to drop and recreate the not-null constraint "foo". that would be very expensive, since recreate, we need to revalidate the previous row is not null or not. related post: https://www.postgresql.org/message-id/202410021219.bvjmxzdspif2%40alvherre.pgsql with alter table idxpart0 alter constraint foo inherit; then we can alter table idxpart attach partition idxpart0 for values in (0,1);