diff --git a/core/storage/btree.rs b/core/storage/btree.rs index 3204bce3b..49f4c06ef 100644 --- a/core/storage/btree.rs +++ b/core/storage/btree.rs @@ -4321,6 +4321,9 @@ impl BTreeCursor { return Ok(IOResult::Done(None)); } } + if self.get_null_flag() { + return Ok(IOResult::Done(None)); + } if self.has_record.get() { let page = self.stack.top(); let page = page.get(); diff --git a/testing/join.test b/testing/join.test index db25128ec..853ccc875 100755 --- a/testing/join.test +++ b/testing/join.test @@ -302,3 +302,12 @@ do_execsql_test left-join-backwards-iteration { } {12|Alan| 11|Travis|accessories 10|Daniel|coat} + +# regression test for issue 2794: not nulling out rowid properly when left join does not match +do_execsql_test_on_specific_db {:memory:} min-null-regression-test { + create table t (x integer primary key, y); + create table u (x integer primary key, y); + insert into t values (1,1),(2,2); + insert into u values (1,1),(3,3); + select count(u.x) from t left join u using(y); +} {1} \ No newline at end of file