Re: alter check constraint enforceability - Mailing list pgsql-hackers

From Kirill Reshke
Subject Re: alter check constraint enforceability
Date
Msg-id CALdSSPg7x+zfKaCkq_bBbz7q8nYu93G3-tK+3si_kPwOcnU0iw@mail.gmail.com
Whole thread Raw
In response to Re: alter check constraint enforceability  (jian he <jian.universality@gmail.com>)
List pgsql-hackers
On Mon, 11 Aug 2025 at 14:53, jian he <jian.universality@gmail.com> wrote:
>
> On Thu, Aug 7, 2025 at 7:35 AM Robert Treat <rob@xzilla.net> wrote:
> >
> > + if (rel->rd_rel->relkind == RELKIND_RELATION &&
> > +     cmdcon->is_enforced &&
> > +     !currcon->conenforced)
> >
> > i think I have convinced myself that this is correct, but maybe I will
> > ask you if you had any concerns that this needed to also consider
> > RELKIND_PARTITIONED_TABLE as well?
> >
>
> ATExecAlterCheckConstrEnforceability itself will be recursive to all
> the children.
> AlterConstrUpdateConstraintEntry is responsible for changing the catalog state.
> except the changing the catalog state, if we change the check
> constraint from NOT ENFORCED
> to ENFORCED,  we also need to verify it in phase 3.
> that's the purpose of
> > + if (rel->rd_rel->relkind == RELKIND_RELATION &&
> > +     cmdcon->is_enforced &&
> > +     !currcon->conenforced)
>
> partitioned tables don't have storage, phase3 table scan to verify
> check constraint on partitioned table
> don't have effect.
>
> also partitioned table check constraint (name, definition
> (pg_constraint.conbin) must match with partition
> otherwise partition can be attached to the partitioned table.
> so here you don't need to consider RELKIND_PARTITIONED_TABLE.


Hi!
I looked at v3.

Should we rename `ATExecAlterConstrEnforceability` to
`ATExecAlterFKConstrEnforceability `?


--
Best regards,
Kirill Reshke



pgsql-hackers by date:

Previous
From: Peter Eisentraut
Date:
Subject: Re: SQL Property Graph Queries (SQL/PGQ)
Next
From: Tomas Vondra
Date:
Subject: Re: index prefetching