aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/fts5/test/fts5leftjoin.test49
-rw-r--r--manifest22
-rw-r--r--manifest.uuid2
-rw-r--r--src/whereexpr.c2
-rw-r--r--test/between.test12
5 files changed, 75 insertions, 12 deletions
diff --git a/ext/fts5/test/fts5leftjoin.test b/ext/fts5/test/fts5leftjoin.test
index 4ef6a8961..69a172bd4 100644
--- a/ext/fts5/test/fts5leftjoin.test
+++ b/ext/fts5/test/fts5leftjoin.test
@@ -40,4 +40,53 @@ do_execsql_test 1.2 {
SELECT * FROM t1 LEFT JOIN vt ON (vt MATCH 'abc')
} {1 abc 2 abc}
+
+do_execsql_test 1.3 {
+ DELETE FROM t1;
+ INSERT INTO t1 VALUES(14);
+}
+
+do_execsql_test 1.4 {
+ SELECT * FROM vt LEFT JOIN t1 ON vt.rowid = 1;
+} {
+ abc 14
+ xyz {}
+}
+
+#-------------------------------------------------------------------------
+reset_db
+do_execsql_test 2.0 {
+ CREATE VIRTUAL TABLE t0 USING fts5(a,b);
+ INSERT INTO t0(a,b)VALUES(1,0);
+ CREATE TABLE t1(x);
+}
+
+do_execsql_test 2.1 {
+ SELECT * FROM t0 LEFT JOIN t1;
+} {1 0 {}}
+
+breakpoint
+do_catchsql_test 2.2 {
+ SELECT * FROM t0 LEFT JOIN t1 ON t0.b MATCH '1';
+} {1 {no query solution}}
+
+do_execsql_test 2.3 {
+ SELECT * FROM t0 LEFT JOIN t1 ON +b MATCH '1';
+} {1 0 {}}
+
+#-------------------------------------------------------------------------
+reset_db
+
+do_execsql_test 3.0 {
+ CREATE VIRTUAL TABLE t0 USING fts5(c0, c1);
+ INSERT INTO t0(c0,c1) VALUES (1,0);
+}
+
+do_catchsql_test 3.1 {
+ SELECT * FROM t0
+ LEFT JOIN ( SELECT 0 AS col_0 )
+ ON ((((t0.c1 MATCH '1')AND(CASE WHEN t0.c0 THEN CAST(t0.c1 AS INTEGER) ELSE 1 END))));
+} {1 {no query solution}}
+
+
finish_test
diff --git a/manifest b/manifest
index e8a27b895..87abca403 100644
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C wasm:\sintroduce\sthe\ssqlite3.oo1.DB.wrapHandle()\sand\sStmt.wrapHandle()\sAPIs,\swhich\senable\sclients\sto\swrap\s(sqlite3*)\sresp.\s(sqlite3_stmt*)\spointers\sin\stheir\soo1\sAPI\scounterparts,\soptionally\swith\sor\swithout\staking\sover\sownership\sof\sthe\spointer.
-D 2025-07-11T19:52:36.729
+C Avoid\sevaluating\sspecial\svtab\soperators\s(e.g.\sMATCH)\sthat\sare\spart\sof\sON\sclauses\sattached\sto\sleft\sjoins\sfrom\sbeing\sevaluated\stoo\searly.\sPossible\sfix\sfor\s[forum:/forumpost/428ef7c468\s|\sforum\spost\s428ef7c468].
+D 2025-07-12T18:14:41.159
F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
@@ -201,7 +201,7 @@ F ext/fts5/test/fts5integrity.test c423ce16fd1ccadcac7fc22f794226b2bb00f5a187c0a
F ext/fts5/test/fts5integrity2.test 4c3636615c0201232c44a8105d5cb14fd5499fd0ee3014d7ffd7e83aac76ece8
F ext/fts5/test/fts5interrupt.test 20d04204d3e341b104c0c24a41596b6393a3a81eba1044c168db0e106f9ac92c
F ext/fts5/test/fts5lastrowid.test f36298a1fb9f988bde060a274a7ce638faa9c38a31400f8d2d27ea9373e0c4a1
-F ext/fts5/test/fts5leftjoin.test c0b4cafb9661379e576dc4405c0891d8fcc2782680740513c4d1fc114b43d4ad
+F ext/fts5/test/fts5leftjoin.test 1c14b51f4d1344a89e488160882f05a2246dd7e70c5cf077c8fb473e03c66338
F ext/fts5/test/fts5limits.test 8ab67cf5d311c124b6ceb0062d0297767176df4572d955fce79fa43004dff01c
F ext/fts5/test/fts5locale.test 83ba7ee12628b540d3098f39c39c1de0c0440eddff8f7512c8c698d0c4a3ae3c
F ext/fts5/test/fts5matchinfo.test bc9e74157773db7f00aec1e85587f1145956ebdf1672c136f0f04323b2752aa0
@@ -870,7 +870,7 @@ F src/walker.c d5006d6b005e4ea7302ad390957a8d41ed83faa177e412f89bc5600a7462a014
F src/where.c 6a9266dd1a559d48d8c7ca670a3e80143c7913153f7d1ceb0a4eca1087318951
F src/whereInt.h 8d94cb116c9e06205c3d5ac87af065fc044f8cf08bfdccd94b6ea1c1308e65da
F src/wherecode.c 2a2d2993fd98c46f525f71b3bfd330fde73d8613aa0ff3e20402dd1fc63470af
-F src/whereexpr.c 0a7fe115adad30def38aeab6ac1d35fb67782cee92a43df7448136240accd4dd
+F src/whereexpr.c 78c28a8da187816d5d82049f2e343fb39f4a8e30b5bf1bda9b96cecde40ca8bd
F src/window.c d01227141f622f24fbe36ca105fbe6ef023f9fd98f1ccd65da95f88886565db5
F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2
F test/affinity2.test 4d7a34d328e58ca2a2d78fd76c27614a41ca7ddf4312ded9c68c04f430b3b47d
@@ -964,7 +964,7 @@ F test/bestindexA.test e1b5def6b190797cacf008e6815ffb78fb30261999030d60a728d572e
F test/bestindexB.test 328b97b69cd1a20928d5997f9ecb04d2e00f1d18e19ab27f9e9adb44d7bc51ce
F test/bestindexC.test 95b4a527b1a5d07951d731604a6d4cf7e5a806b39cea0e7819d4c9667e11c3fc
F test/bestindexD.test 6a8f6f84990bcf17dfa59652a1f935beddb7afd96f8302830fbc86b0a13df3c3
-F test/between.test b9a65fb065391980119e8a781a7409d3fcf059d89968279c750e190a9a1d5263
+F test/between.test b301ef0d822a26b31235e10a3b7f1130be1565a7ba080e80a3a1ae3ba5a35ff7
F test/bigfile.test aa74f4e5db51c8e54a1d9de9fa65d01d1eb20b59
F test/bigfile2.test 1b489a3a39ae90c7f027b79110d6b4e1dbc71bfc
F test/bigmmap.test 6021e205487347c6d7e5a541aa472a4b8efc4e9f4a3799a823b61a8e6616105d
@@ -2212,9 +2212,11 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350
F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
F tool/warnings.sh 1ad0169b022b280bcaaf94a7fa231591be96b514230ab5c98fbf15cd7df842dd
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 3656acfaa3011321a6e17fb81e5bdedcfffeab6035f133ab89ae9589bf5bef72 53401b5435e30c4b47b6e203976b714d616246d734b5876a34f53f6388f872f8
-R 6e106d1cb56322541040e2b7c468c9ad
-T +closed 53401b5435e30c4b47b6e203976b714d616246d734b5876a34f53f6388f872f8 Closed\sby\sintegrate-merge.
-U stephan
-Z f91aebcbb3981855ba9f714a42d1af4f
+P e5d079549594ca44852773b8919894866394e47ad725dadc7f65242413a219d3
+R eb99b7ab5a76b7191a98fe93227d2428
+T *branch * vtab-leftjoin-fix
+T *sym-vtab-leftjoin-fix *
+T -sym-trunk *
+U dan
+Z c80dd1f4987fe05a4ba000eae17152fd
# Remove this line to create a well-formed Fossil manifest.
diff --git a/manifest.uuid b/manifest.uuid
index ac45e07d9..786e5c76d 100644
--- a/manifest.uuid
+++ b/manifest.uuid
@@ -1 +1 @@
-e5d079549594ca44852773b8919894866394e47ad725dadc7f65242413a219d3
+18ba07c152294a96d510a7851a0860f982ff1e0725afeebed9a343f550f6925a
diff --git a/src/whereexpr.c b/src/whereexpr.c
index e9fa4a143..0d17b0d75 100644
--- a/src/whereexpr.c
+++ b/src/whereexpr.c
@@ -1541,7 +1541,7 @@ static void exprAnalyze(
idxNew = whereClauseInsert(pWC, pNewExpr, TERM_VIRTUAL|TERM_DYNAMIC);
testcase( idxNew==0 );
pNewTerm = &pWC->a[idxNew];
- pNewTerm->prereqRight = prereqExpr;
+ pNewTerm->prereqRight = prereqExpr | extraRight;
pNewTerm->leftCursor = pLeft->iTable;
pNewTerm->u.x.leftColumn = pLeft->iColumn;
pNewTerm->eOperator = WO_AUX;
diff --git a/test/between.test b/test/between.test
index 16c3913d1..4f09f1afe 100644
--- a/test/between.test
+++ b/test/between.test
@@ -140,4 +140,16 @@ foreach {tn expr res} {
do_execsql_test between-2.1.$tn $sql $res
}
+#-------------------------------------------------------------------------
+reset_db
+do_execsql_test between-3.0 {
+ CREATE TABLE t1(x, y);
+ INSERT INTO t1 VALUES(4, 4);
+ CREATE TABLE t2(a, b);
+}
+
+do_execsql_test between-3.1 {
+ SELECT * FROM t1 LEFT JOIN t2 ON (x BETWEEN 1 AND 3);
+} {4 4 {} {}}
+
finish_test