]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
New test cases for recursive CTEs with multiple recursive terms. cte-enhancement
authordrh <drh@noemail.net>
Mon, 19 Oct 2020 01:44:43 +0000 (01:44 +0000)
committerdrh <drh@noemail.net>
Mon, 19 Oct 2020 01:44:43 +0000 (01:44 +0000)
FossilOrigin-Name: cd5182bd6f5969ba0812275f471224908296960358013327cebbe0c52b820f04

manifest
manifest.uuid
test/with5.test

index 383daa906ec24ea7f652401d4b902f7d8ea208e4..97c7236c249a772a0023f97b3d7a44a3fda5e5fd 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Allow\smultiple\srecursive\sterms\sin\sthe\scompound\sSELECT\sof\sa\srecursive\sCTE.\nThis\sfacilitates\swriting\sa\squery\sto\sfind\sfind\sthe\sconnected\scomponents\sof\nan\sundirected\sgraph.
-D 2020-10-19T01:23:48.028
+C New\stest\scases\sfor\srecursive\sCTEs\swith\smultiple\srecursive\sterms.
+D 2020-10-19T01:44:43.359
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -1765,7 +1765,7 @@ F test/with1.test 780be387f01e290e768bdfd1827280f9e37ba37223eb4736aba386864fac5a
 F test/with2.test e0030e2f0267a910d6c0e4f46f2dfe941c1cc0d4f659ba69b3597728e7e8f1ab
 F test/with3.test a261f0ea225c4af0ce6447f1157bb603959b2a665f14a03951c2883d2ef1c0f0
 F test/with4.test 257be66c0c67fee1defbbac0f685c3465e2cad037f21ce65f23f86084f198205
-F test/with5.test 9bbf9823dace99ba8fd853ac0961c8f2e4a6df93a2b6846328b7d411a8540699
+F test/with5.test 6248213c41fab36290b5b73aa3f937309dfba337004d9d8434c3fabc8c7d4be8
 F test/withM.test 693b61765f2b387b5e3e24a4536e2e82de15ff64
 F test/without_rowid1.test e4034c0849ccc2e8bb749c69f15bd69bb9fcf8fe77e8d17ce02369604242fe83
 F test/without_rowid2.test af260339f79d13cb220288b67cd287fbcf81ad99
@@ -1883,10 +1883,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 d6fac8a1d3efeb2c4f03dae437b5b314765c93770a70603803a8039291dbcabb
-R 8cbf46bb87a6f92c4e833b5518759227
-T *branch * cte-enhancement
-T *sym-cte-enhancement *
-T -sym-trunk *
+P 5481fa8c79c34f434e99ab633ff3d0942a309a74fb0cf38e3d3617b51d5d21dd
+R cc1b5ef6b23650be291ff908be8e5bec
 U drh
-Z c8e202423f476b36d763c0220ea16f8f
+Z aa6b2a08977c7f837672db1a2a88d629
index d4b492871a7000c0a01931ac3374481b2832c5c4..f6c9501e12b81cd4dc93636362e3e7f2e702ae1d 100644 (file)
@@ -1 +1 @@
-5481fa8c79c34f434e99ab633ff3d0942a309a74fb0cf38e3d3617b51d5d21dd
\ No newline at end of file
+cd5182bd6f5969ba0812275f471224908296960358013327cebbe0c52b820f04
\ No newline at end of file
index 77fc75af8d9585e632de572e27c83edc1b483863..430c5f2de3f00793c0e83dd9ed867205e008dc16 100644 (file)
@@ -93,4 +93,102 @@ do_execsql_test 114 {
   SELECT x FROM closure ORDER BY x;
 } {1 2 3 4 5 6 7 8 9 11 200 300 400}
 
+do_catchsql_test 120 {
+  WITH RECURSIVE closure(x) AS (
+     VALUES(1),(200),(300),(400)
+     UNION ALL
+     VALUES(2)
+     UNION ALL
+     SELECT bb FROM closure, link WHERE link.aa=closure.x
+     UNION
+     SELECT aa FROM link, closure WHERE link.bb=closure.x
+  )
+  SELECT x FROM closure ORDER BY x;
+} {1 {circular reference: closure}}
+do_catchsql_test 121 {
+  WITH RECURSIVE closure(x) AS (
+     VALUES(1),(200),(300),(400)
+     UNION ALL
+     VALUES(2)
+     UNION
+     SELECT bb FROM closure, link WHERE link.aa=closure.x
+     UNION ALL
+     SELECT aa FROM link, closure WHERE link.bb=closure.x
+  )
+  SELECT x FROM closure ORDER BY x;
+} {1 {circular reference: closure}}
+
+do_execsql_test 130 {
+  WITH RECURSIVE closure(x) AS (
+    SELECT 1 AS x
+    UNION
+    SELECT aa FROM link JOIN closure ON bb=x
+    UNION
+    SELECT bb FROM link JOIN closure on aa=x
+    ORDER BY x LIMIT 4
+  )
+  SELECT * FROM closure;
+} {1 3 5 7}
+do_execsql_test 131 {
+  WITH RECURSIVE closure(x) AS (
+    SELECT 1 AS x
+    UNION ALL
+    SELECT 2
+    UNION
+    SELECT aa FROM link JOIN closure ON bb=x
+    UNION
+    SELECT bb FROM link JOIN closure on aa=x
+    ORDER BY x LIMIT 4
+  )
+  SELECT * FROM closure;
+} {1 2 3 4}
+
+do_execsql_test 200 {
+  CREATE TABLE linkA(aa1,aa2);
+  INSERT INTO linkA(aa1,aa2) VALUES(1,3),(5,7),(9,11);
+  CREATE TABLE linkB(bb1,bb2);
+  INSERT INTO linkB(bb1,bb2) VALUES(7,9),(11,13),(3,5);
+  CREATE TABLE linkC(cc1,cc2);
+  INSERT INTO linkC(cc1,cc2) VALUES(1,2),(2,4),(6,8);
+  CREATE TABLE linkD(dd1,dd2);
+  INSERT INTO linkD(dd1,dd2) VALUES(4,6),(100,110);
+} {}
+do_execsql_test 210 {
+  WITH RECURSIVE closure(x) AS (
+    VALUES(1)
+    UNION ALL
+    SELECT aa2 FROM linkA JOIN closure ON x=aa1
+    UNION ALL
+    SELECT bb2 FROM linkB JOIN closure ON x=bb1
+    UNION ALL
+    SELECT cc2 FROM linkC JOIN closure ON x=cc1
+    UNION ALL
+    SELECT dd2 FROM linkD JOIN closure ON x=dd1
+  )
+  SELECT x FROM closure ORDER BY +x;
+} {1 2 3 4 5 6 7 8 9 11 13}
+do_execsql_test 220 {
+  CREATE TABLE linkA_ipk(aa1 INTEGER PRIMARY KEY,aa2);
+  INSERT INTO linkA_ipk(aa1,aa2) SELECT aa1, aa2 FROM linkA;
+  CREATE TABLE linkB_ipk(bb1 INTEGER PRIMARY KEY,bb2);
+  INSERT INTO linkB_ipk(bb1,bb2) SELECT bb1, bb2 FROM linkB;
+  CREATE TABLE linkC_ipk(cc1 INTEGER PRIMARY KEY,cc2);
+  INSERT INTO linkC_ipk(cc1,cc2) SELECT cc1, cc2 FROM linkC;
+  CREATE TABLE linkD_ipk(dd1 INTEGER PRIMARY KEY,dd2);
+  INSERT INTO linkD_ipk(dd1,dd2) SELECT dd1, dd2 FROM linkD;
+  WITH RECURSIVE closure(x) AS (
+    VALUES(1)
+    UNION ALL
+    SELECT aa2 FROM linkA_ipk JOIN closure ON x=aa1
+    UNION ALL
+    SELECT bb2 FROM linkB_ipk JOIN closure ON x=bb1
+    UNION ALL
+    SELECT cc2 FROM linkC_ipk JOIN closure ON x=cc1
+    UNION ALL
+    SELECT dd2 FROM linkD_ipk JOIN closure ON x=dd1
+  )
+  SELECT x FROM closure ORDER BY +x;
+} {1 2 3 4 5 6 7 8 9 11 13}
+
+
 finish_test