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

From jian he
Subject Re: alter check constraint enforceability
Date
Msg-id CACJufxFY=GkptsiH8X=VdyYAnNE_=u5j6WyDufTste6CuzRvnw@mail.gmail.com
Whole thread Raw
In response to Re: alter check constraint enforceability  (Robert Treat <rob@xzilla.net>)
Responses Re: alter check constraint enforceability
List pgsql-hackers
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.

Attachment

pgsql-hackers by date:

Previous
From: Japin Li
Date:
Subject: Re: [WIP]Vertical Clustered Index (columnar store extension) - take2
Next
From: Michael Paquier
Date:
Subject: Re: [PATCH] Proposal to Enable/Disable Index using ALTER INDEX