This commit is contained in:
jussisaurio
2024-10-05 16:05:20 +03:00
parent ff236c7781
commit ed19f47762
2 changed files with 25 additions and 7 deletions

View File

@@ -328,7 +328,7 @@ impl BTreeCursor {
Ok(CursorResult::Ok((None, None)))
}
fn move_to_table_leaf(&mut self, rowid: u64, cmp: SeekOp) -> Result<CursorResult<()>> {
fn move_to_table_leaf(&mut self, key: u64, cmp: SeekOp) -> Result<CursorResult<()>> {
self.move_to_root();
loop {
@@ -362,8 +362,8 @@ impl BTreeCursor {
}) => {
mem_page.advance();
let comparison = match cmp {
SeekOp::GT => *_rowid > rowid,
SeekOp::GE => *_rowid >= rowid,
SeekOp::GT => key <= *_rowid,
SeekOp::GE => key < *_rowid,
};
if comparison {
let mem_page =
@@ -388,10 +388,10 @@ impl BTreeCursor {
}
if !found_cell {
let parent = mem_page.clone();
let parent = mem_page.parent.clone();
match page.rightmost_pointer() {
Some(right_most_pointer) => {
let mem_page = MemPage::new(Some(parent), right_most_pointer as usize, 0);
let mem_page = MemPage::new(parent, right_most_pointer as usize, 0);
self.page.replace(Some(Rc::new(mem_page)));
continue;
}
@@ -597,10 +597,10 @@ impl BTreeCursor {
}
if !found_cell {
let parent = mem_page.clone();
let parent = mem_page.parent.clone();
match page.rightmost_pointer() {
Some(right_most_pointer) => {
let mem_page = MemPage::new(Some(parent), right_most_pointer as usize, 0);
let mem_page = MemPage::new(parent, right_most_pointer as usize, 0);
self.page.replace(Some(Rc::new(mem_page)));
continue;
}

View File

@@ -268,3 +268,21 @@ do_execsql_test where-complex-parentheses {
select id, name from products where ((id = 5 and name = 'sweatshirt') or (id = 1 and name = 'hat')) and (name = 'sweatshirt' or name = 'hat') ORDER BY id;
} {1|hat
5|sweatshirt}
# regression test for primary key index behavior
do_execsql_test where_id_index_seek_test {
select id from users where id > 9995;
} {9996
9997
9998
9999
10000}
# regression test for secondary index (users.age) behavior
do_execsql_test where_id_index_seek_test {
select id,age from users where age >= 100 limit 5;
} {186|100
198|100
301|100
364|100
460|100}