]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Record the three known big issues with the current RIGHT JOIN design in
authordrh <>
Thu, 14 Apr 2022 20:43:22 +0000 (20:43 +0000)
committerdrh <>
Thu, 14 Apr 2022 20:43:22 +0000 (20:43 +0000)
the join8 test module, with tests that deliberately fail in order to remind
us to fix the issues.

FossilOrigin-Name: 2c4ee723f4d0591d09776adfb82246bfa89153ab390b8b3f1878d1cdc43d68c8

manifest
manifest.uuid
test/join8.test

index 7681e2c0af57d60fe97a9988253be4e218d79480..5a00ef8c0605a75d68a33c06c2a54b5e8e8b998c 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Another\sinstance\sof\sindenting\sa\ssubroutine.
-D 2022-04-14T19:05:17.456
+C Record\sthe\sthree\sknown\sbig\sissues\swith\sthe\scurrent\sRIGHT\sJOIN\sdesign\sin\nthe\sjoin8\stest\smodule,\swith\stests\sthat\sdeliberately\sfail\sin\sorder\sto\sremind\nus\sto\sfix\sthe\sissues.
+D 2022-04-14T20:43:22.638
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -1147,7 +1147,7 @@ F test/join4.test 1a352e4e267114444c29266ce79e941af5885916
 F test/join5.test c4df54e2e204d7f1417bfbdd21ca324b4b07415c647595cc47798eacfddc96d3
 F test/join6.test f809c025fa253f9e150c0e9afd4cef8813257bceeb6f46e04041228c9403cc2c
 F test/join7.test e5c9b1b729d7e1d0b4195e99833e0ff0cf2d88e7fdd32b49af1044f4c76f72d9
-F test/join8.test 72248c33b44f8fc8614c739eff176fd8e18ffab04896b9ce6fd7933854dd7d25
+F test/join8.test 9731b16dbb4309a980ba4adcb4ec31277626230300f819296ffc753c564b2011
 F test/journal1.test c7b768041b7f494471531e17abc2f4f5ebf9e5096984f43ed17c4eb80ba34497
 F test/journal2.test 9dac6b4ba0ca79c3b21446bbae993a462c2397c4
 F test/journal3.test 7c3cf23ffc77db06601c1fcfc9743de8441cb77db9d1aa931863d94f5ffa140e
@@ -1947,8 +1947,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 647211e044a5856ceb6bf3e7b78e650fe7d81f8b7bf34568b99b346405ba520c
-R 2197645c7a941ac2357190e97207d106
+P 73f4036b04798660b30e540cbab69420078df9fb62a6a39944e078c36272f905
+R 2147cfd4b343bafdc07bef52bfee2ef0
 U drh
-Z e29940f759984b818be8f8538ce00e8e
+Z 5c1d0d9c07677bde5075ec99ede43a74
 # Remove this line to create a well-formed Fossil manifest.
index fdb88c42dae336e024b43b5ed8d62ebbd3bfb8db..7a8d3db95fe25de4b357518ea3e334cea07227e0 100644 (file)
@@ -1 +1 @@
-73f4036b04798660b30e540cbab69420078df9fb62a6a39944e078c36272f905
\ No newline at end of file
+2c4ee723f4d0591d09776adfb82246bfa89153ab390b8b3f1878d1cdc43d68c8
\ No newline at end of file
index 0854d97292d7e69f5573353dee7393aaea2c0694..bd80c96ded8c0b71d629a400db363bcf81db555f 100644 (file)
@@ -21,4 +21,61 @@ do_execsql_test join8-10 {
   CREATE INDEX t2x ON t2(x);
   SELECT avg(DISTINCT b) FROM (SELECT * FROM t2 LEFT RIGHT JOIN t1 ON c);
 } {NULL}
+
+# Pending issue #1:
+# Row-value initialization subroutines must be called from with the
+# RIGHT JOIN body subroutine before the first use of any register containing
+# the results of that subroutine.  This seems dodgy.  Test case:
+#
+# CREATE TABLE t1(a INTEGER PRIMARY KEY AUTOINCREMENT,b,c,d,e,f,g,h,j,k,l,m,n,o,p,q,r,s);
+# CREATE INDEX t1x1 ON t1(g+h,j,k);
+# CREATE INDEX t1x2 ON t1(b);
+# INSERT INTO t1 DEFAULT VALUES;
+# SELECT a FROM (SELECT a FROM (SELECT a FROM (SELECT a FROM t1 NATURAL LEFT JOIN t1 WHERE (b, 2 ) IS ( SELECT 2 IN(2,2),2)) NATURAL LEFT FULL JOIN t1 WHERE ( rowid , 1 )<=(CASE 5 WHEN 619 THEN 841 ELSE 3374391096 END,0) ORDER BY a ASC) NATURAL LEFT JOIN t1 WHERE (b, 2 ) IS ( SELECT 3 IN(3,3),3)) NATURAL LEFT FULL JOIN t1 WHERE ( rowid , 1 )<=(CASE 5 WHEN 619 THEN 841 ELSE 3374391096 END,0) ORDER BY a ASC;
+#
+do_test join8-issue-1 {set rc "Issue-1 'row-value subroutine' unresolved"} {}
+
+# Pending issue #2:
+# Jump to addrHalt inside the RIGHT JOIN body subroutine bypasses the
+# OP_Return, resulting in a subroutine loop.  Test case:
+#
+# CREATE TABLE t1(a int, b int, c int);
+# INSERT INTO t1 VALUES(1,2,3),(4,5,6);
+# CREATE TABLE t2(d int, e int);
+# INSERT INTO t2 VALUES(3,333),(4,444);
+# CREATE TABLE t3(f int, g int);
+# PRAGMA automatic_index=off;
+# .eqp trace
+# SELECT * FROM t1 RIGHT JOIN t2 ON c=d JOIN t3 ON f=e;
+#
+do_test join8-issue-2 {set rc "Issue-2 'jump to addrHalt' unresolved"} {}
+
+# Pending issue #3:
+# USING does not work with RIGHT JOIN.
+# Test case:
+#
+# CREATE TABLE t4(id INTEGER PRIMARY KEY, x TEXT);
+# CREATE TABLE t5(id INTEGER PRIMARY KEY, y TEXT);
+# CREATE TABLE t6(id INTEGER PRIMARY KEY, z INT);
+# 
+# INSERT INTO t4(id,x) VALUES(2,'alice'),(4,'bob'),(6,'cindy'),(8,'dave');
+# INSERT INTO t5(id,y) VALUES(1,'red'),(2,'orange'),(3,'yellow'),(4,'green'),
+#                            (5,'blue');
+# INSERT INTO t6(id,z) VALUES(3,333),(4,444),(5,555),(0,1000),(9,999);
+# 
+# .mode box
+# SELECT *, t4.id, t5.id, t6.id
+#   FROM t4 NATURAL LEFT JOIN t5 NATURAL LEFT JOIN t6
+#  ORDER BY coalesce(t4.id,t5.id,t6.id);
+# 
+# SELECT *, t4.id, t5.id, t6.id
+#   FROM t4 NATURAL RIGHT JOIN t5 NATURAL RIGHT JOIN t6
+#  ORDER BY coalesce(t4.id,t5.id,t6.id);
+# 
+# SELECT *, t4.id, t5.id, t6.id
+#   FROM t4 NATURAL FULL JOIN t5 NATURAL FULL JOIN t6
+#  ORDER BY coalesce(t4.id,t5.id,t6.id);
+#
+do_test join8-issue-3 {set rc "Issue-3 'USING' unresolved"} {}
+
 finish_test