]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Make sure the code generator knows to invoke row-value subroutines which
authordrh <>
Thu, 21 Apr 2022 14:48:40 +0000 (14:48 +0000)
committerdrh <>
Thu, 21 Apr 2022 14:48:40 +0000 (14:48 +0000)
running the right-join post-processing loop.

FossilOrigin-Name: fd328e52aee1dace12b1c2f44b6f7e9d15d8f77c8e9d9e3d85840a129a4b1808

manifest
manifest.uuid
src/wherecode.c
test/join8.test

index afac86bafafe9b49c295132f3ed49ac4432a96df..447c65a511e79d4444ab09ca892b5e1281d0d021 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Ensure\scorrect\sfg.isNestedFrom\svalues\seven\son\scrazy\sparses.
-D 2022-04-21T14:08:29.121
+C Make\ssure\sthe\scode\sgenerator\sknows\sto\sinvoke\srow-value\ssubroutines\swhich\nrunning\sthe\sright-join\spost-processing\sloop.
+D 2022-04-21T14:48:40.635
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -641,7 +641,7 @@ F src/wal.h c3aa7825bfa2fe0d85bef2db94655f99870a285778baa36307c0a16da32b226a
 F src/walker.c f890a3298418d7cba3b69b8803594fdc484ea241206a8dfa99db6dd36f8cbb3b
 F src/where.c 45102d682f6efd450d89c0c5f09b838be6d69c84c6105336730ee38d3b452fad
 F src/whereInt.h eecce79edc6f7005f91f35be6b18b7053f794e1b50e95bcd06a2d537fc176734
-F src/wherecode.c dcf622a9650638c80c86699d3fbd39526016ac36488f6db3878fcf530803f30d
+F src/wherecode.c 1bff158d8672524d0e9a398b01a8ed2d98fffb9ae38837a8335c7162500a1d8f
 F src/whereexpr.c 174d4ad5be165c610c907abb779ef4a97974d22b84e1ce7898d2d9f6947249e5
 F src/window.c 924e04fd6e0e113d4dba18b78d43fcb8e42b8ebffc8fc728da52cf3ab014cf3c
 F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2
@@ -1147,7 +1147,7 @@ F test/join4.test 1a352e4e267114444c29266ce79e941af5885916
 F test/join5.test c4df54e2e204d7f1417bfbdd21ca324b4b07415c647595cc47798eacfddc96d3
 F test/join6.test f809c025fa253f9e150c0e9afd4cef8813257bceeb6f46e04041228c9403cc2c
 F test/join7.test 8e72de4b45e5e930d18c305c7efe86015fb2552731e4e03ea226353036b0dab0
-F test/join8.test 6ed7eed8993e060e5e9d07f6bcadf1bb634742a03b9824afbcfa193adf7f9965
+F test/join8.test f9b4e3be35d8546e934ea9e18244d3a26d6e22c51dadef9d721db7cd25c606b5
 F test/join9.test 9056ddd3b0c0f4f9d658f4521038d9a37dc23ead8ca9a505d0b0db2b6a471e05
 F test/joinA.test 7eab225dc1c1ab258a5e62513a4ed7cabbd3db971d59d5d92f4fb6fa14c12f6a
 F test/joinB.test 1b2ba3fc8568b49411787fccbf540570c148e9b6a53a30f80691cb6268098ded
@@ -1950,8 +1950,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 cd8272fc2a34d1b245fd95208b9b601266ee7d2ff0f5ce52d03752f2c4e852a2
-R 8a87ff03f3b9042d5d80a515b01bbe71
+P e611e8e62c948d28cd3f28452d3096bab06998a685ed9434061cc2054f5cac32
+R 6eb9ce78903cb51667587564d90eaf9e
 U drh
-Z 4f221c243b1c9d53087ee3bfbfa41863
+Z b02c9deafbd857b68575d851608b8518
 # Remove this line to create a well-formed Fossil manifest.
index b5360486b6b1720d028092f76b452ad65bea5a0c..cd4b508973a057e5666396542cdaab1e835204f1 100644 (file)
@@ -1 +1 @@
-e611e8e62c948d28cd3f28452d3096bab06998a685ed9434061cc2054f5cac32
\ No newline at end of file
+fd328e52aee1dace12b1c2f44b6f7e9d15d8f77c8e9d9e3d85840a129a4b1808
\ No newline at end of file
index 9ba987ca6aede5ae1736962713248550bb6edb92..4f525a8fbf18935f7575095bc73c947e671894e0 100644 (file)
@@ -2843,6 +2843,8 @@ SQLITE_NOINLINE void sqlite3WhereRightJoinLoop(
   sFrom.nAlloc = 1;
   memcpy(&sFrom.a[0], pTabItem, sizeof(SrcItem));
   sFrom.a[0].fg.jointype = 0;
+  assert( pParse->withinRJSubrtn < 100 );
+  pParse->withinRJSubrtn++;
   pSubWInfo = sqlite3WhereBegin(pParse, &sFrom, pSubWhere, 0, 0, 0,
                                 WHERE_RIGHT_JOIN, 0);
   if( pSubWInfo ){
@@ -2875,4 +2877,6 @@ SQLITE_NOINLINE void sqlite3WhereRightJoinLoop(
   }
   sqlite3ExprDelete(pParse->db, pSubWhere);
   ExplainQueryPlanPop(pParse);
+  assert( pParse->withinRJSubrtn>0 );
+  pParse->withinRJSubrtn--;
 }
index 5ef85c4cf8f203e7a94fb49a75fe25158b2adce8..fada516492d6db69c19866aa508347eb43310c62 100644 (file)
@@ -126,5 +126,15 @@ do_execsql_test join8-3040 {
   SELECT * FROM t9 WHERE id<>128*h+64*g+32*f+16*e+8*d+4*c+2*b+a;
 } {}
 
+# 2022-04-21 dbsqlfuzz find
+#
+reset_db
+do_execsql_test join8-4000 {
+  CREATE TABLE t1(x INTEGER PRIMARY KEY, a, b);
+  INSERT INTO t1 VALUES(1,5555,4);
+  CREATE INDEX i1a ON t1(a);
+  CREATE INDEX i1b ON t1(b);
+  SELECT a FROM t1 NATURAL RIGHT JOIN t1 WHERE a=5555 OR (1,b)==(SELECT 2 IN (2,2),4);
+} {5555}
 
 finish_test