]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Add extra test cases. No changes to code.
authordan <dan@noemail.net>
Sat, 18 Jan 2014 15:59:35 +0000 (15:59 +0000)
committerdan <dan@noemail.net>
Sat, 18 Jan 2014 15:59:35 +0000 (15:59 +0000)
FossilOrigin-Name: d38d485e581dab99a3ee6b348da8ddaf9b379ff2

manifest
manifest.uuid
test/with2.test
test/withM.test

index f3a6dea836d9ce4823800d5665ebf0fedbfe4d08..522f30a10dba7977a3c9bd42c28c15532fff42ab 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Add\sasserts()\sfor\sa\scouple\sof\sunreachable\sconditions.\s\sAdd\sthe\sMandelbrot\sSet\nquery\sas\sa\stest\scase.
-D 2014-01-18T15:22:53.229
+C Add\sextra\stest\scases.\sNo\schanges\sto\scode.
+D 2014-01-18T15:59:35.958
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 2ef13430cd359f7b361bb863504e227b25cc7f81
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -1092,8 +1092,8 @@ F test/win32heap.test ea19770974795cff26e11575e12d422dbd16893c
 F test/win32lock.test 7a6bd73a5dcdee39b5bb93e92395e1773a194361
 F test/win32longpath.test 169c75a3b2e43481f4a62122510210c67b08f26d
 F test/with1.test be21f7efdc08fe6ad182dc943d42704300f0fcdb
-F test/with2.test 5f7ea3453c998a6b9ed3456f251c80d94722f22a
-F test/withM.test 52448ce23e1c2ecba79d10e130ee49ce9f9a2a7a
+F test/with2.test 67a3347f2d78618db9434a248fb5003af8f04bc1
+F test/withM.test e97f2a8c506ab3ea9eab94e6f6072f6cc924c991
 F test/without_rowid1.test aaa26da19d543cd8d3d2d0e686dfa255556c15c8
 F test/without_rowid2.test af260339f79d13cb220288b67cd287fbcf81ad99
 F test/without_rowid3.test eac3d5c8a1924725b58503a368f2cbd24fd6c8a0
@@ -1151,7 +1151,7 @@ F tool/vdbe-compress.tcl 0cf56e9263a152b84da86e75a5c0cdcdb7a47891
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh d1a6de74685f360ab718efda6265994b99bbea01
 F tool/win/sqlite.vsix 030f3eeaf2cb811a3692ab9c14d021a75ce41fff
-P cccff8a0b427feb05cc8952a765b829e731394fd
-R 538a9377a8d02c8e21002b1bc024f5ac
-U drh
-Z 8baad4729759494d05074bc32769b912
+P 2ad4583c0cc7988f0dfe78fd0a2eb0fdb92d835a
+R 71fcd9d8c24b81a08237ce7106794f40
+U dan
+Z 1a2b2ad5eb21bdc784c4eae4f3f812b5
index 34f13530bfbdbb722682b76e00f723728e1059a4..e5d4cbf4df0f070a62a497ae6b7cdd292588f769 100644 (file)
@@ -1 +1 @@
-2ad4583c0cc7988f0dfe78fd0a2eb0fdb92d835a
\ No newline at end of file
+d38d485e581dab99a3ee6b348da8ddaf9b379ff2
\ No newline at end of file
index de199c2e4b422c57e2e42dfdb7b5119db8d21ba9..90a64a4755f1453a680f5de16926099fd3925511 100644 (file)
@@ -70,16 +70,32 @@ do_execsql_test 1.6 {
 } {3}
 
 do_execsql_test 1.7 {
+  WITH x2 AS (
+         WITH t3 AS (SELECT * FROM t4)
+         SELECT * FROM t3
+       )
+  SELECT * FROM x2;
+} {4}
+
+do_execsql_test 1.8 {
+  WITH x2 AS (
+         WITH t3 AS (SELECT * FROM t4)
+         SELECT * FROM main.t3
+       )
+  SELECT * FROM x2;
+} {3}
+
+do_execsql_test 1.9 {
   WITH x1 AS (SELECT * FROM t1)
   SELECT (SELECT sum(a) FROM x1), (SELECT max(a) FROM x1);
 } {3 2}
 
-do_execsql_test 1.8 {
+do_execsql_test 1.10 {
   WITH x1 AS (SELECT * FROM t1)
   SELECT (SELECT sum(a) FROM x1), (SELECT max(a) FROM x1), a FROM x1;
 } {3 2 1 3 2 2}
 
-do_execsql_test 1.9 {
+do_execsql_test 1.11 {
   WITH 
   i(x) AS ( 
     WITH 
@@ -90,6 +106,62 @@ do_execsql_test 1.9 {
   SELECT * FROM i;
 } {1 2}
 
+do_execsql_test 1.12 {
+  WITH r(i) AS (
+    VALUES('.')
+    UNION ALL
+    SELECT i || '.' FROM r, (
+      SELECT x FROM x INTERSECT SELECT y FROM y
+    ) WHERE length(i) < 10
+  ),
+  x(x) AS ( VALUES(1) UNION ALL VALUES(2) UNION ALL VALUES(3) ),
+  y(y) AS ( VALUES(2) UNION ALL VALUES(4) UNION ALL VALUES(6) )
+
+  SELECT * FROM r;
+} {. .. ... .... ..... ...... ....... ........ ......... ..........}
+
+do_execsql_test 1.13 {
+  WITH r(i) AS (
+    VALUES('.')
+    UNION ALL
+    SELECT i || '.' FROM r, ( SELECT x FROM x WHERE x=2 ) WHERE length(i) < 10
+  ),
+  x(x) AS ( VALUES(1) UNION ALL VALUES(2) UNION ALL VALUES(3) )
+
+  SELECT * FROM r ORDER BY length(i) DESC;
+} {.......... ......... ........ ....... ...... ..... .... ... .. .}
+
+do_execsql_test 1.14 {
+  WITH 
+  t4(x) AS ( 
+    VALUES(4)
+    UNION ALL 
+    SELECT x+1 FROM t4 WHERE x<10
+  )
+  SELECT * FROM t4;
+} {4 5 6 7 8 9 10}
+
+do_execsql_test 1.15 {
+  WITH 
+  t4(x) AS ( 
+    VALUES(4)
+    UNION ALL 
+    SELECT x+1 FROM main.t4 WHERE x<10
+  )
+  SELECT * FROM t4;
+} {4 5}
+
+do_catchsql_test 1.16 {
+  WITH 
+  t4(x) AS ( 
+    VALUES(4)
+    UNION ALL 
+    SELECT x+1 FROM t4, main.t4, t4 WHERE x<10
+  )
+  SELECT * FROM t4;
+} {1 {multiple references to recursive table: t4}}
+
+
 #---------------------------------------------------------------------------
 # Check that variables can be used in CTEs.
 #
@@ -210,5 +282,105 @@ do_xfer_test 5.8 0 {
  INSERT INTO t1 WITH x(a,b) AS ( SELECT * FROM t2 ) SELECT * FROM x
 }
 
+#---------------------------------------------------------------------------
+# Check that syntax (and other) errors in statements with WITH clauses
+# attached to them do not cause problems (e.g. memory leaks).
+#
+do_execsql_test 6.1 {
+  DROP TABLE IF EXISTS t1;
+  DROP TABLE IF EXISTS t2;
+  CREATE TABLE t1(a, b);
+  CREATE TABLE t2(a, b);
+}
+
+do_catchsql_test 6.2 {
+  WITH x AS (SELECT * FROM t1)
+  INSERT INTO t2 VALUES(1, 2,);
+} {1 {near ")": syntax error}}
+
+do_catchsql_test 6.3 {
+  WITH x AS (SELECT * FROM t1)
+  INSERT INTO t2 SELECT a, b, FROM t1;
+} {1 {near "FROM": syntax error}}
+
+do_catchsql_test 6.3 {
+  WITH x AS (SELECT * FROM t1)
+  INSERT INTO t2 SELECT a, b FROM abc;
+} {1 {no such table: abc}}
+
+do_catchsql_test 6.4 {
+  WITH x AS (SELECT * FROM t1)
+  INSERT INTO t2 SELECT a, b, FROM t1 a a a;
+} {1 {near "FROM": syntax error}}
+
+do_catchsql_test 6.5 {
+  WITH x AS (SELECT * FROM t1)
+  DELETE FROM t2 WHERE;
+} {1 {near ";": syntax error}}
+
+do_catchsql_test 6.6 { 
+  WITH x AS (SELECT * FROM t1) DELETE FROM t2 WHERE
+} {/1 {near .* syntax error}/}
+
+do_catchsql_test 6.7 { 
+  WITH x AS (SELECT * FROM t1) DELETE FROM t2 WHRE 1;
+} {/1 {near .* syntax error}/}
+
+do_catchsql_test 6.8 { 
+  WITH x AS (SELECT * FROM t1) UPDATE t2 SET a = 10, b = ;
+} {/1 {near .* syntax error}/}
+
+do_catchsql_test 6.9 { 
+  WITH x AS (SELECT * FROM t1) UPDATE t2 SET a = 10, b = 1 WHERE a===b;
+} {/1 {near .* syntax error}/}
+
+do_catchsql_test 6.10 {
+  WITH x(a,b) AS (
+    SELECT 1, 1
+    UNION ALL
+    SELECT a*b,a+b FROM x WHERE c=2
+  )
+  SELECT * FROM x
+} {1 {no such column: c}}
+
+#-------------------------------------------------------------------------
+# Recursive queries in IN(...) expressions.
+#
+do_execsql_test 7.1 {
+  CREATE TABLE t5(x INTEGER);
+  CREATE TABLE t6(y INTEGER);
+
+  WITH s(x) AS ( VALUES(7) UNION ALL SELECT x+7 FROM s WHERE x<49 )
+  INSERT INTO t5 
+  SELECT * FROM s;
+
+  INSERT INTO t6 
+  WITH s(x) AS ( VALUES(2) UNION ALL SELECT x+2 FROM s WHERE x<49 )
+  SELECT * FROM s;
+}
+
+do_execsql_test 7.2 {
+  SELECT * FROM t6 WHERE y IN (SELECT x FROM t5)
+} {14 28 42}
+
+do_execsql_test 7.3 {
+  WITH ss AS (SELECT x FROM t5)
+  SELECT * FROM t6 WHERE y IN (SELECT x FROM ss)
+} {14 28 42}
+
+do_execsql_test 7.4 {
+  WITH ss(x) AS ( VALUES(7) UNION ALL SELECT x+7 FROM ss WHERE x<49 )
+  SELECT * FROM t6 WHERE y IN (SELECT x FROM ss)
+} {14 28 42}
+
+do_execsql_test 7.5 {
+  SELECT * FROM t6 WHERE y IN (
+    WITH ss(x) AS ( VALUES(7) UNION ALL SELECT x+7 FROM ss WHERE x<49 )
+    SELECT x FROM ss
+  )
+} {14 28 42}
+
+
+
 finish_test
 
index 9bf7ceed3f7a200d6594cef396e34079873d5739..c1650d95767860a14b8dc215daeeade6aeec425c 100644 (file)
@@ -55,6 +55,22 @@ do_faultsim_test withM-1.2 -prep {
   db close
 }
 
+do_faultsim_test withM-1.3 -prep {
+  sqlite3 db test.db
+} -body {
+  execsql { 
+    WITH w1(a,b) AS ( 
+      SELECT 1, 1
+      UNION ALL
+      SELECT a+1, b + 2*a + 1 FROM w1
+    )
+    SELECT * FROM w1 LIMIT 5;
+  }
+} -test {
+  faultsim_test_result {0 {1 1 2 4 3 9 4 16 5 25}}
+  db close
+}
+
 finish_test