Index: third_party/sqlite/src/test/check.test |
diff --git a/third_party/sqlite/src/test/check.test b/third_party/sqlite/src/test/check.test |
index 02b99f2ac9137c18a8507855d083f7393f8da49e..43e447f70d7ad9d5b8c285ccc2681b55fd5b180a 100644 |
--- a/third_party/sqlite/src/test/check.test |
+++ b/third_party/sqlite/src/test/check.test |
@@ -459,4 +459,24 @@ do_execsql_test 8.1 { |
CREATE TABLE t811(b, CHECK( xyzzy.t811.b BETWEEN 5 AND 10 )); |
} {} |
+# Make sure check constraints involving the ROWID are not ignored |
+# |
+do_execsql_test 9.1 { |
+ CREATE TABLE t1( |
+ a INTEGER PRIMARY KEY, |
+ b INTEGER NOT NULL CONSTRAINT 'b-check' CHECK( b>a ), |
+ c INTEGER NOT NULL CONSTRAINT 'c-check' CHECK( c>rowid*2 ), |
+ d INTEGER NOT NULL CONSTRAINT 'd-check' CHECK( d BETWEEN b AND c ) |
+ ); |
+ INSERT INTO t1(a,b,c,d) VALUES(1,2,4,3),(2,4,6,5),(3,10,30,20); |
+} {} |
+do_catchsql_test 9.2 { |
+ UPDATE t1 SET b=0 WHERE a=1; |
+} {1 {CHECK constraint failed: b-check}} |
+do_catchsql_test 9.3 { |
+ UPDATE t1 SET c=a*2 WHERE a=1; |
+} {1 {CHECK constraint failed: c-check}} |
+ |
+ |
+ |
finish_test |