Changeset: 9d958e0f96ea for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/9d958e0f96ea
Modified Files:
sql/backends/monet5/rel_bin.c
sql/test/2024/Tests/check.test
sql/test/BugConstraints/Tests/3335_check_no_error.test
sql/test/BugConstraints/Tests/3568_check_not_enforced.test
sql/test/BugConstraints/Tests/check_constraints.test
Branch: Aug2024
Log Message:
Improve the violation message for CHECK constraints by including the check sql
expression and adding the schema name to the constraint name.
diffs (229 lines):
diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -5189,7 +5189,7 @@ sql_insert_check(backend *be, sql_key *k
sql_subfunc *cnt = sql_bind_func(sql, "sys", "count",
sql_bind_localtype("void"), NULL, F_AGGR, true, true);
s = stmt_uselect(be, column(be, s), stmt_bool(be, 0), cmp_equal, NULL,
0, 1);
s = stmt_aggr(be, s, NULL, NULL, cnt, 1, 0, 1);
- char *msg = sa_message(sql->sa, SQLSTATE(40002) "INSERT INTO: CHECK
constraint violated: %s", key->base.name);
+ char *msg = sa_message(sql->sa, SQLSTATE(40002) "INSERT INTO: violated
constraint '%s.%s' CHECK(%s)", key->t->s->base.name, key->base.name,
exp->comment);
(void)stmt_exception(be, s, msg, 00001);
}
@@ -6209,7 +6209,7 @@ sql_update_check(backend *be, stmt **upd
sql_subfunc *cnt = sql_bind_func(sql, "sys", "count",
sql_bind_localtype("void"), NULL, F_AGGR, true, true);
s = stmt_uselect(be, column(be, s), stmt_bool(be, 0), cmp_equal, NULL,
0, 1);
s = stmt_aggr(be, s, NULL, NULL, cnt, 1, 0, 1);
- char *msg = sa_message(sql->sa, SQLSTATE(40002) "UPDATE: CHECK
constraint violated: %s", key->base.name);
+ char *msg = sa_message(sql->sa, SQLSTATE(40002) "UPDATE: violated
constraint '%s.%s' CHECK(%s)", key->t->s->base.name, key->base.name,
exp->comment);
(void)stmt_exception(be, s, msg, 00001);
}
diff --git a/sql/test/2024/Tests/check.test b/sql/test/2024/Tests/check.test
--- a/sql/test/2024/Tests/check.test
+++ b/sql/test/2024/Tests/check.test
@@ -4,19 +4,19 @@ create table foo (i int CHECK (i > 0), j
statement ok
insert into foo values (1,10), (2, 20), (3, 30)
-statement error 40002!UPDATE: CHECK constraint violated: foo_j_check
+statement error 40002!UPDATE: violated constraint 'sys.foo_j_check' CHECK(j >
0)
update foo set j = -30 where i = 3
-statement error 40002!UPDATE: CHECK constraint violated: foo_j_check
+statement error 40002!UPDATE: violated constraint 'sys.foo_j_check' CHECK(j >
0)
update foo set j = -j
-statement error 40002!INSERT INTO: CHECK constraint violated: foo_j_check
+statement error 40002!INSERT INTO: violated constraint 'sys.foo_j_check'
CHECK(j > 0)
insert into foo values (4, -40)
statement ok
insert into foo select * from foo
-statement error 40002!INSERT INTO: CHECK constraint violated: foo_j_check
+statement error 40002!INSERT INTO: violated constraint 'sys.foo_j_check'
CHECK(j > 0)
insert into foo select 4, -40
statement ok
@@ -25,16 +25,16 @@ drop table foo
statement ok
create table bar (i int, j int, constraint check_i_j CHECK (i < j))
-statement error 40002!INSERT INTO: CHECK constraint violated: check_i_j
+statement error 40002!INSERT INTO: violated constraint 'sys.check_i_j' CHECK(i
< j)
insert into bar values (30, 20)
statement ok
insert into bar values (10,20), (20, 30), (30, 40)
-statement error 40002!UPDATE: CHECK constraint violated: check_i_j
+statement error 40002!UPDATE: violated constraint 'sys.check_i_j' CHECK(i < j)
update bar set i = 50 where i = 30
-statement error 40002!UPDATE: CHECK constraint violated: check_i_j
+statement error 40002!UPDATE: violated constraint 'sys.check_i_j' CHECK(i < j)
update bar set i = 50, j = 40 where i = 30
statement ok
@@ -54,16 +54,16 @@ create table t3335(x integer check(x > 0
statement ok
insert into t3335 values(1)
-statement error 40002!INSERT INTO: CHECK constraint violated: t3335_x_check
+statement error 40002!INSERT INTO: violated constraint 'sys.t3335_x_check'
CHECK(x > 0 and x < 2)
insert into t3335 values(0)
-statement error 40002!INSERT INTO: CHECK constraint violated: t3335_x_check
+statement error 40002!INSERT INTO: violated constraint 'sys.t3335_x_check'
CHECK(x > 0 and x < 2)
insert into t3335 values(2)
-statement error 40002!INSERT INTO: CHECK constraint violated: t3335_x_check
+statement error 40002!INSERT INTO: violated constraint 'sys.t3335_x_check'
CHECK(x > 0 and x < 2)
insert into t3335 values(-1)
-statement error 40002!INSERT INTO: CHECK constraint violated: t3335_x_check
+statement error 40002!INSERT INTO: violated constraint 'sys.t3335_x_check'
CHECK(x > 0 and x < 2)
insert into t3335 values(3)
statement ok
@@ -72,13 +72,13 @@ drop table t3335
statement ok
create table bar(i int, j int check (i < 10))
-statement error 40002!INSERT INTO: CHECK constraint violated: bar_j_check
+statement error 40002!INSERT INTO: violated constraint 'sys.bar_j_check'
CHECK(i < 10)
insert into bar(i) values(10)
statement ok
insert into bar(i) values(0)
-statement error 40002!UPDATE: CHECK constraint violated: bar_j_check
+statement error 40002!UPDATE: violated constraint 'sys.bar_j_check' CHECK(i <
10)
update bar set i = 10
statement ok
diff --git a/sql/test/BugConstraints/Tests/3335_check_no_error.test
b/sql/test/BugConstraints/Tests/3335_check_no_error.test
--- a/sql/test/BugConstraints/Tests/3335_check_no_error.test
+++ b/sql/test/BugConstraints/Tests/3335_check_no_error.test
@@ -4,19 +4,19 @@ create table ary(x integer check(x >0 an
statement ok
insert into ary values(1)
-statement error 40002!INSERT INTO: CHECK constraint violated: ary_x_check
+statement error 40002!INSERT INTO: violated constraint 'sys.ary_x_check'
CHECK(x >0 and x <3)
insert into ary values(0)
statement ok
insert into ary values(2)
-statement error 40002!INSERT INTO: CHECK constraint violated: ary_x_check
+statement error 40002!INSERT INTO: violated constraint 'sys.ary_x_check'
CHECK(x >0 and x <3)
insert into ary values(-1)
-statement error 40002!INSERT INTO: CHECK constraint violated: ary_x_check
+statement error 40002!INSERT INTO: violated constraint 'sys.ary_x_check'
CHECK(x >0 and x <3)
insert into ary values(3)
-statement error 40002!UPDATE: CHECK constraint violated: ary_x_check
+statement error 40002!UPDATE: violated constraint 'sys.ary_x_check' CHECK(x >0
and x <3)
update ary set x = x+1
statement ok
diff --git a/sql/test/BugConstraints/Tests/3568_check_not_enforced.test
b/sql/test/BugConstraints/Tests/3568_check_not_enforced.test
--- a/sql/test/BugConstraints/Tests/3568_check_not_enforced.test
+++ b/sql/test/BugConstraints/Tests/3568_check_not_enforced.test
@@ -4,31 +4,31 @@ CREATE TABLE TBLCHECK(nr int CHECK (nr >
statement ok
INSERT INTO TBLCHECK VALUES (11)
-statement error 40002!INSERT INTO: CHECK constraint violated: tblcheck_nr_check
+statement error 40002!INSERT INTO: violated constraint 'sys.tblcheck_nr_check'
CHECK(nr > 10)
INSERT INTO TBLCHECK VALUES (10)
-statement error 40002!INSERT INTO: CHECK constraint violated: tblcheck_nr_check
+statement error 40002!INSERT INTO: violated constraint 'sys.tblcheck_nr_check'
CHECK(nr > 10)
INSERT INTO TBLCHECK VALUES (09)
-statement error 40002!INSERT INTO: CHECK constraint violated: tblcheck_nr_check
+statement error 40002!INSERT INTO: violated constraint 'sys.tblcheck_nr_check'
CHECK(nr > 10)
INSERT INTO TBLCHECK VALUES (01)
-statement error 40002!INSERT INTO: CHECK constraint violated: tblcheck_nr_check
+statement error 40002!INSERT INTO: violated constraint 'sys.tblcheck_nr_check'
CHECK(nr > 10)
INSERT INTO TBLCHECK VALUES (00)
-statement error 40002!INSERT INTO: CHECK constraint violated: tblcheck_nr_check
+statement error 40002!INSERT INTO: violated constraint 'sys.tblcheck_nr_check'
CHECK(nr > 10)
INSERT INTO TBLCHECK VALUES (-01)
-statement error 40002!INSERT INTO: CHECK constraint violated: tblcheck_nr_check
+statement error 40002!INSERT INTO: violated constraint 'sys.tblcheck_nr_check'
CHECK(nr > 10)
INSERT INTO TBLCHECK VALUES (-+02)
-statement error 40002!INSERT INTO: CHECK constraint violated: tblcheck_nr_check
+statement error 40002!INSERT INTO: violated constraint 'sys.tblcheck_nr_check'
CHECK(nr > 10)
INSERT INTO TBLCHECK VALUES (+-+03)
-statement error 40002!INSERT INTO: CHECK constraint violated: tblcheck_nr_check
+statement error 40002!INSERT INTO: violated constraint 'sys.tblcheck_nr_check'
CHECK(nr > 10)
INSERT INTO TBLCHECK VALUES (-+-04)
-statement error 40002!INSERT INTO: CHECK constraint violated: tblcheck_nr_check
+statement error 40002!INSERT INTO: violated constraint 'sys.tblcheck_nr_check'
CHECK(nr > 10)
INSERT INTO TBLCHECK VALUES (+-+-05)
query I rowsort
@@ -36,7 +36,7 @@ SELECT * FROM TBLCHECK
----
11
-statement error 40002!UPDATE: CHECK constraint violated: tblcheck_nr_check
+statement error 40002!UPDATE: violated constraint 'sys.tblcheck_nr_check'
CHECK(nr > 10)
UPDATE TBLCHECK SET nr = nr -10
statement ok
diff --git a/sql/test/BugConstraints/Tests/check_constraints.test
b/sql/test/BugConstraints/Tests/check_constraints.test
--- a/sql/test/BugConstraints/Tests/check_constraints.test
+++ b/sql/test/BugConstraints/Tests/check_constraints.test
@@ -4,19 +4,19 @@ create table kw(x integer primary key ch
statement ok
insert into kw values(1, 'FIRST')
-statement error 40002!INSERT INTO: CHECK constraint violated: kw_x_check
+statement error 40002!INSERT INTO: violated constraint 'sys.kw_x_check'
CHECK(x >= 1)
insert into kw values(0, 'FIRST')
-statement error 40002!INSERT INTO: CHECK constraint violated: kwname_upper
+statement error 40002!INSERT INTO: violated constraint 'sys.kwname_upper'
CHECK(nm = upper(nm))
insert into kw values(2, 'Second')
statement ok
insert into kw values(3, 'FREE')
-statement error 40002!INSERT INTO: CHECK constraint violated: kwname_len_1
+statement error 40002!INSERT INTO: violated constraint 'sys.kwname_len_1'
CHECK(length(nm) > 0)
insert into kw values(4, '')
-statement error 40002!INSERT INTO: CHECK constraint violated: kw_nm_check
+statement error 40002!INSERT INTO: violated constraint 'sys.kw_nm_check'
CHECK(nm is not null and length(nm) >= 0)
insert into kw values(5, NULL)
query IT rowsort
@@ -51,13 +51,13 @@ insert into kw values(5, NULL)
statement ok
alter table kw add constraint kw_x_check check(x >= 1)
-statement error 40002!UPDATE: CHECK constraint violated: kw_nm_check
+statement error 40002!UPDATE: violated constraint 'sys.kw_nm_check' CHECK(nm
is not null and length(nm) >= 0)
alter table kw add constraint kw_nm_check check (nm IS NOT NULL AND length(nm)
>= 0)
-statement error 40002!UPDATE: CHECK constraint violated: kwname_upper
+statement error 40002!UPDATE: violated constraint 'sys.kwname_upper' CHECK(nm
= upper(nm))
alter table kw add constraint kwname_upper check (nm = upper(nm))
-statement error 40002!UPDATE: CHECK constraint violated: kwname_len_1
+statement error 40002!UPDATE: violated constraint 'sys.kwname_len_1'
CHECK(length(nm) > 0)
alter table kw add constraint kwname_len_1 check (length(nm) > 0)
statement ok
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]