> ------------------------------------------------------------------------
> > i think your patch messed up with pg_constraint.conislocal.
> > for example:
> >
> > CREATE TABLE parted (id bigint default 1,id_abc bigint) PARTITION BY
> LIST (id);
> > alter TABLE parted add CONSTRAINT dummy_constr not null id not valid;
> > CREATE TABLE parted_1 (id bigint default 1,id_abc bigint);
> > alter TABLE parted_1 add CONSTRAINT dummy_constr not null id;
> > ALTER TABLE parted ATTACH PARTITION parted_1 FOR VALUES IN ('1');
>
> It's still not clear to me what to do to fix this problem.  But while
> trying to understand it, I had the chance to rework the pg_dump code
> somewhat, so here it is.  Feel free to propose fixes on top of this.
> (BTW, I think the business of assigning to tbinfo->checkexprs both the
> block for check constraints and the one for not-null constraints is
> bogus.  I didn't find what this breaks, but it looks wrong.  We probably
> need another struct _constraintInfo pointer in TableInfo.)
>

I fail to understand the issue here. I tested the scenario both with and
without the patch,
and the behavior remained the same in both cases. While testing without the
patch,
I ensured that I created valid constraints.

I ran the script below with and without the patch, and the output was the
same in both cases.

------------------------------------------------------------------

CREATE TABLE parted (id bigint default 1,id_abc bigint) PARTITION BY LIST
(id);
alter TABLE parted add CONSTRAINT dummy_constr not null id;
select conrelid::regclass, conname, conislocal
from pg_constraint where conname = 'dummy_constr';

CREATE TABLE parted_1 (id bigint default 1,id_abc bigint);
alter TABLE parted_1 add CONSTRAINT dummy_constr not null id;

select conrelid::regclass, conname, conislocal
from pg_constraint where conname = 'dummy_constr';

ALTER TABLE parted ATTACH PARTITION parted_1 FOR VALUES IN ('1');

select conrelid::regclass, conname, conislocal
from pg_constraint where conname = 'dummy_constr';

------------------------------------------------------------------

Are we expecting *conislocal* status to be different when it's NOT NULL NOT
VALID?

Thanks & Regards
Rushabh Lathia

Reply via email to