Re: NOT ENFORCED constraint feature - Mailing list pgsql-hackers

From jian he
Subject Re: NOT ENFORCED constraint feature
Date
Msg-id CACJufxEnXrj89pfVx0h4LXUVaHd=44ft=boQbbN6DrRX3tpgAw@mail.gmail.com
Whole thread Raw
In response to Re: NOT ENFORCED constraint feature  ("Joel Jacobson" <joel@compiler.org>)
Responses Re: NOT ENFORCED constraint feature
List pgsql-hackers
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);



pgsql-hackers by date:

Previous
From: Thomas Munro
Date:
Subject: Re: Cannot find a working 64-bit integer type on Illumos
Next
From: Ravi
Date:
Subject: Re: [PERF] Improve Cardinality Estimation for Joins with GROUP BY Having Single Clause