On Thu, Dec 5, 2024 at 11:02 AM jian he <jian.universal...@gmail.com> wrote: > > hi. > accidentally hit segfault. > create table c11 (a int not enforced); > create table c11 (a int enforced); > we can solve it via the following or changing SUPPORTS_ATTRS accordingly. > > diff --git a/src/backend/parser/parse_utilcmd.c > b/src/backend/parser/parse_utilcmd.c > index 5ab44149e5..fe1116c092 100644 > --- a/src/backend/parser/parse_utilcmd.c > +++ b/src/backend/parser/parse_utilcmd.c > @@ -3965,7 +3965,7 @@ transformConstraintAttrs(CreateStmtContext *cxt, > List *constraintList) > break; > case CONSTR_ATTR_ENFORCED: > - if (lastprimarycon && > + if (lastprimarycon == NULL || > lastprimarycon->contype != > CONSTR_CHECK) > ereport(ERROR, > > (errcode(ERRCODE_SYNTAX_ERROR), > @@ -3981,7 +3981,7 @@ transformConstraintAttrs(CreateStmtContext *cxt, > List *constraintList) > break; > case CONSTR_ATTR_NOT_ENFORCED: > - if (lastprimarycon && > + if (lastprimarycon == NULL || > lastprimarycon->contype != > CONSTR_CHECK) > ereport(ERROR, > > (errcode(ERRCODE_SYNTAX_ERROR), >
Yes, that was a logical oversight on my part. Your suggestion looks good to me, thanks. > > ALTER DOMAIN constraint_comments_dom ADD CONSTRAINT the_constraint > CHECK (value > 0) NOT ENFORCED; > ERROR: CHECK constraints cannot be marked NOT ENFORCED > > the error message is not good? maybe better option would be: > ERROR: DOMAIN CHECK constraints cannot be marked NOT ENFORCED > > we can do it like: > index 833b3be02b..4a7ab0c2a3 100644 > --- a/src/backend/parser/gram.y > +++ b/src/backend/parser/gram.y > @@ -4342,7 +4342,7 @@ DomainConstraintElem: > n->location = @1; > n->raw_expr = $3; > n->cooked_expr = NULL; > - processCASbits($5, @5, "CHECK", > + processCASbits($5, @5, "DOMAIN CHECK", > > NULL, NULL, NULL, &n->skip_validation, > > &n->is_no_inherit, yyscanner); I believe this should either be a separate patch or potentially included in your "Refactor AlterDomainAddConstraint" proposal[1]. Regards, Amul 1] https://postgr.es/m/cacjufxhitd5lglbssapshhtdwxt0vivkthinkyw-skbx93t...@mail.gmail.com