]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
New test cases for date/time functions in indexes on expressions, in the index-on-date-func
authordrh <drh@noemail.net>
Thu, 20 Jul 2017 14:36:26 +0000 (14:36 +0000)
committerdrh <drh@noemail.net>
Thu, 20 Jul 2017 14:36:26 +0000 (14:36 +0000)
WHERE clause of partial indexes, and in CHECK constraints.

FossilOrigin-Name: b7f70c7fcabc10b8b3e62fe5ac68476cec23acaee037c7250ff70bca3f3ab541

manifest
manifest.uuid
test/date2.test

index 8076acadd49bcedcc12f951d68ba6eea3704aee3..5ce4964e92f0ba18ff279213040d0c19314d804c 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Combine\sthe\sParse.ckBase\sand\sParse.iSelfTab\sfields\sinto\sjust\sParse.iSelfTab.\nThis\sfixes\sa\sproblem\swith\sdate/time\sfunctions\sin\scheck-constraints.\s\sAdd\nsome\stest\scases\sfor\sdate/time\sfunctions\sin\sindex\sexpressions\sand\scheck\nconstraints.
-D 2017-07-20T13:17:08.298
+C New\stest\scases\sfor\sdate/time\sfunctions\sin\sindexes\son\sexpressions,\sin\sthe\nWHERE\sclause\sof\spartial\sindexes,\sand\sin\sCHECK\sconstraints.
+D 2017-07-20T14:36:26.145
 F Makefile.in d9873c9925917cca9990ee24be17eb9613a668012c85a343aef7e5536ae266e8
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc 02b469e9dcd5b7ee63fc1fb05babc174260ee4cfa4e0ef2e48c3c6801567a016
@@ -697,7 +697,7 @@ F test/ctime.test 78749e6c9a5f0010d67985be80788f841e3cd2da18114e2ed6010399a7d807
 F test/cursorhint.test 7bc346788390475e77a345da2b92270d04d35856
 F test/cursorhint2.test 8457e93d97f665f23f97cdbc8477d16e3480331b
 F test/date.test 9b73bbeb1b82d9c1f44dec5cf563bf7da58d2373
-F test/date2.test f8d82bb0bdcab156e2f480337bd874b89fe175a52cd0de0db583eee226d32bbe
+F test/date2.test 74c234bece1b016e94dd4ef9c8cc7a199a8806c0e2291cab7ba64bace6350b10
 F test/dbfuzz.c 73047c920d6210e5912c87cdffd9a1c281d4252e
 F test/dbstatus.test 73149851b3aff14fc6db478e58f9083a66422cf5
 F test/dbstatus2.test e93ab03bfae6d62d4d935f20de928c19ca0ed0ab
@@ -1637,7 +1637,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 0a5e1c04d9d07bb7fd6546a9ddac1bf42b19ea19c2b79570aea6cd4226887a27
-R a25d10c9c943ee05f3ba67aef01e9e07
+P 22eda0985ecd1f456c073e6ad735a8417f3ff1fb6aaad1640e1cec01e50c51d8
+R 636bb2618e46215e27cfa1dc613ec36a
 U drh
-Z d1c30883ae74083a00de3da1ad7b0ca1
+Z 9fcd2c9047a36a4760d07f2c77f0a563
index 2fa3ac8c9d9c1da61cafc98e18c7b332d64b2121..7e0ceb0e6307cbb9c0a5d8da7997c1a7e44312e6 100644 (file)
@@ -1 +1 @@
-22eda0985ecd1f456c073e6ad735a8417f3ff1fb6aaad1640e1cec01e50c51d8
\ No newline at end of file
+b7f70c7fcabc10b8b3e62fe5ac68476cec23acaee037c7250ff70bca3f3ab541
\ No newline at end of file
index f2f04cb6e92c71bb5655296ca1722c00439578c9..2815df5ec772350cfaa5dd56a41bdb92a7a63fc8 100644 (file)
@@ -50,4 +50,85 @@ do_execsql_test date2-220 {
   SELECT x, y FROM t2 ORDER BY x;
 } {1 2017-07-20 2 xyzzy}
 
+do_execsql_test date2-300 {
+  CREATE TABLE t3(a INTEGER PRIMARY KEY,b);
+  WITH RECURSIVE c(x) AS (VALUES(1) UNION ALL SELECT x+1 FROM c WHERE x<1000)
+    INSERT INTO t3(a,b) SELECT x, julianday('2017-07-01')+x FROM c;
+  UPDATE t3 SET b='now' WHERE a=500;
+}
+do_catchsql_test date2-310 {
+  CREATE INDEX t3b1 ON t3(datetime(b));
+} {1 {non-deterministic function in index expression or CHECK constraint}}
+do_catchsql_test date2-320 {
+  CREATE INDEX t3b1 ON t3(datetime(b)) WHERE typeof(b)='real';
+} {0 {}}
+do_execsql_test date2-330 {
+  EXPLAIN QUERY PLAN
+  SELECT a FROM t3
+   WHERE typeof(b)='real'
+     AND datetime(b) BETWEEN '2017-07-04' AND '2017-07-08';
+} {/USING INDEX t3b/}
+do_execsql_test date2-331 {
+  SELECT a FROM t3
+   WHERE typeof(b)='real'
+     AND datetime(b) BETWEEN '2017-07-04' AND '2017-07-08'
+  ORDER BY a;
+} {3 4 5 6}
+
+do_execsql_test date2-400 {
+  CREATE TABLE t4(a INTEGER PRIMARY KEY,b);
+  WITH RECURSIVE c(x) AS (VALUES(1) UNION ALL SELECT x+1 FROM c WHERE x<1000)
+    INSERT INTO t4(a,b) SELECT x, julianday('2017-07-01')+x FROM c;
+  UPDATE t4 SET b='now' WHERE a=500;
+}
+do_catchsql_test date2-410 {
+  CREATE INDEX t4b1 ON t4(b)
+    WHERE date(b) BETWEEN '2017-06-01' AND '2017-08-31';
+} {1 {non-deterministic function in index expression or CHECK constraint}}
+do_execsql_test date2-420 {
+  DELETE FROM t4 WHERE a=500;
+  CREATE INDEX t4b1 ON t4(b)
+    WHERE date(b) BETWEEN '2017-06-01' AND '2017-08-31';
+}
+do_catchsql_test date2-430 {
+  INSERT INTO t4(a,b) VALUES(9999,'now');
+} {1 {non-deterministic function in index expression or CHECK constraint}}
+
+do_execsql_test date2-500 {
+  CREATE TABLE mods(x);
+  INSERT INTO mods(x) VALUES
+    ('+10 days'),
+    ('-10 days'),
+    ('+10 hours'),
+    ('-10 hours'),
+    ('+10 minutes'),
+    ('-10 minutes'),
+    ('+10 seconds'),
+    ('-10 seconds'),
+    ('+10 months'),
+    ('-10 months'),
+    ('+10 years'),
+    ('-10 years'),
+    ('start of month'),
+    ('start of year'),
+    ('start of day'),
+    ('weekday 1'),
+    ('unixepoch');
+  CREATE TABLE t5(y,m);
+  WITH RECURSIVE c(x) AS (VALUES(1) UNION ALL SELECT x+1 FROM c WHERE x<5)
+    INSERT INTO t5(y,m) SELECT julianday('2017-07-01')+c.x, mods.x FROM c, mods;
+  CREATE INDEX t5x1 on t5(y) WHERE datetime(y,m) IS NOT NULL;
+}
+do_catchsql_test date2-510 {
+  INSERT INTO t5(y,m) VALUES('2017-07-20','localtime');
+} {1 {non-deterministic function in index expression or CHECK constraint}}
+do_catchsql_test date2-520 {
+  INSERT INTO t5(y,m) VALUES('2017-07-20','utc');
+} {1 {non-deterministic function in index expression or CHECK constraint}}
+
+
+
+  
+
+
 finish_test