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), 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);