]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Add a few simple TCL test cases for generated columns. (Full test coverage
authordrh <drh@noemail.net>
Thu, 31 Oct 2019 17:13:17 +0000 (17:13 +0000)
committerdrh <drh@noemail.net>
Thu, 31 Oct 2019 17:13:17 +0000 (17:13 +0000)
of the generated column logic is provided separately by TH3.)

FossilOrigin-Name: acedb5c7f7dc1d68bef62098d42ca59e1be7a5083bb03dc07c03b9f9d817158b

manifest
manifest.uuid
test/gencol1.test

index 7280981d1904fb0980953c725e04704364b4fe6e..7dd006225a8538c5b8d4bf22154033ab6b876628 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Ignore\sdifferences\sin\sExpr.op2\sin\ssqlite3ExprCompare()\sin\scases\swhere\sit\ndoes\smatter.\s\sTicket\s[1d2a8efc6c3a595a].
-D 2019-10-31T13:16:26.169
+C Add\sa\sfew\ssimple\sTCL\stest\scases\sfor\sgenerated\scolumns.\s\s(Full\stest\scoverage\nof\sthe\sgenerated\scolumn\slogic\sis\sprovided\sseparately\sby\sTH3.)
+D 2019-10-31T17:13:17.010
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -1021,7 +1021,7 @@ F test/fuzzer1.test 3d4c4b7e547aba5e5511a2991e3e3d07166cfbb8
 F test/fuzzer2.test a85ef814ce071293bce1ad8dffa217cbbaad4c14
 F test/fuzzerfault.test 8792cd77fd5bce765b05d0c8e01b9edcf8af8536
 F test/gcfault.test dd28c228a38976d6336a3fc42d7e5f1ad060cb8c
-F test/gencol1.test 27f80efa9047c8db10794d689e086d2d3ecbb0e1dfe8b8293e8c250e6015add3
+F test/gencol1.test 6dd63ec525059f2235e494148bfa8c1ab506eb46e403a8d5bf13004f3b165631
 F test/genesis.tcl 1e2e2e8e5cc4058549a154ff1892fe5c9de19f98
 F test/having.test e4098a4b8962f9596035c3b87a8928a10648acc509f1bb8d6f96413bbf79a1b3
 F test/hexlit.test 4a6a5f46e3c65c4bf1fa06f5dd5a9507a5627751
@@ -1849,7 +1849,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 aceeaf9e28767a0880a16872867a1f57bff163acd0f10d19d5688068077590fa
-R 4e0fef27b2755ee02a88ef863369c111
+P 329820673a12ff6a6c8759f40989d4ccf272441064b0366a5f491695b55ad0e9
+R e7170d3b73879549c652c7bfb423787f
 U drh
-Z 4d89f413d1dc6ce2106075b4c9bb6a03
+Z b826a93b8f760fe88872664a0ccdde39
index c379184ac21d6c88a6cd1425b3726cec6032f902..e59896f02e956f44659e5853cce755ba9c8535bb 100644 (file)
@@ -1 +1 @@
-329820673a12ff6a6c8759f40989d4ccf272441064b0366a5f491695b55ad0e9
\ No newline at end of file
+acedb5c7f7dc1d68bef62098d42ca59e1be7a5083bb03dc07c03b9f9d817158b
\ No newline at end of file
index 4902b5abf46ca81e634cf73c2851b1b0cf3035f4..63e397b218b7ebfd40d16ce83b4d3d8b09b744e0 100644 (file)
@@ -24,4 +24,125 @@ do_execsql_test gencol1-100 {
   SELECT * FROM t1;
 } {integer 0}
 
+foreach {tn schema} { 
+1 {
+   CREATE TABLE t1(
+     a INT,
+     b TEXT,
+     c ANY,
+     w INT GENERATED ALWAYS AS (a*10),
+     x TEXT AS (typeof(c)),
+     y TEXT AS (substr(b,a,a+2))
+   );
+  }
+2 {
+   CREATE TABLE t1(
+     w INT GENERATED ALWAYS AS (a*10),
+     x TEXT AS (typeof(c)),
+     y TEXT AS (substr(b,a,a+2)),
+     a INT,
+     b TEXT,
+     c ANY
+   );
+  }
+3 {
+   CREATE TABLE t1(
+     w INT GENERATED ALWAYS AS (a*10),
+     a INT,
+     x TEXT AS (typeof(c)) STORED,
+     b TEXT,
+     y TEXT AS (substr(b,a,a+2)),
+     c ANY
+   );
+  }
+4 {
+   CREATE TABLE t1(
+     a INTEGER PRIMARY KEY,
+     w INT GENERATED ALWAYS AS (a*10),
+     b TEXT,
+     x TEXT AS (typeof(c)),
+     y TEXT AS (substr(b,a,a+2)) STORED,
+     c ANY
+   );
+  }
+5 {
+   CREATE TABLE t1(
+     w INT GENERATED ALWAYS AS (a*10),
+     a INT,
+     x TEXT AS (typeof(c)),
+     b TEXT,
+     y TEXT AS (substr(b,a,a+2)) STORED,
+     c ANY,
+     PRIMARY KEY(a,b)
+   ) WITHOUT ROWID;
+  }
+6 {
+   CREATE TABLE t1(
+     w INT GENERATED ALWAYS AS (m*5),
+     m INT AS (a*2) STORED,
+     a INT,
+     x TEXT AS (typeof(c)),
+     b TEXT,
+     y TEXT AS (substr(b,m/2,m/2+2)) STORED,
+     c ANY,
+     PRIMARY KEY(a,b)
+   );
+  }
+7 {
+   CREATE TABLE t1(
+     w INT GENERATED ALWAYS AS (m*5),
+     m INT AS (a*2) NOT NULL,
+     a INT,
+     x TEXT AS (typeof(c)) CHECK (x<>'blank'),
+     b TEXT,
+     y TEXT AS (substr(b,m/2,m/2+2)) STORED,
+     c ANY,
+     PRIMARY KEY(b,a)
+   ) WITHOUT ROWID;
+  }
+} {
+  catch {db close}
+  sqlite3 db :memory:
+  db eval $schema
+  do_execsql_test gencol1-2.$tn.100 {
+    INSERT INTO t1(a,b,c) VALUES(1,'abcdef',5.5),(3,'cantaloupe',NULL);
+    SELECT w, x, y, '|' FROM t1 ORDER BY a;
+  } {10 real abc | 30 null ntalo |}
+  do_execsql_test gencol1-2.$tn.101 {
+    SELECT w, x, y, '|' FROM t1 ORDER BY w;
+  } {10 real abc | 30 null ntalo |}
+  do_execsql_test gencol1-2.$tn.102 {
+    SELECT a FROM t1 WHERE w=30;
+  } {3}
+  do_execsql_test gencol1-2.$tn.103 {
+    SELECT a FROM t1 WHERE x='real';
+  } {1}
+  do_execsql_test gencol1-2.$tn.104 {
+    SELECT a FROM t1 WHERE y LIKE '%tal%' OR x='real' ORDER BY b;
+  } {1 3}
+  do_execsql_test gencol1-2.$tn.110 {
+    CREATE INDEX t1w ON t1(w);
+    SELECT a FROM t1 WHERE w=10;
+  } {1}
+  do_execsql_test gencol1-2.$tn.120 {
+    CREATE INDEX t1x ON t1(x) WHERE w BETWEEN 20 AND 40;
+    SELECT a FROM t1 WHERE x='null' AND w BETWEEN 20 AND 40;
+  } {3}
+  do_execsql_test gencol1-2.$tn.121 {
+    SELECT a FROM t1 WHERE x='real';
+  } {1}
+  do_execsql_test gencol1-2.$tn.130 {
+    VACUUM;
+    PRAGMA integrity_check;
+  } {ok}
+  do_execsql_test gencol1-2.$tn.140 {
+    UPDATE t1 SET a=a+100 WHERE w<20;
+    SELECT a, w, '|' FROM t1 ORDER BY w;
+  } {3 30 | 101 1010 |}
+  do_execsql_test gencol1-2.$tn.150 {
+    INSERT INTO t1 VALUES(4,'jambalaya','Chef John'),(15,87719874135,0);
+    SELECT w, x, y, '|' FROM t1 ORDER BY w;
+  } {30 null ntalo | 40 text balaya | 150 integer {} | 1010 real {} |}
+}
+
 finish_test