mirror of
https://github.com/aljazceru/turso.git
synced 2026-02-05 16:24:23 +01:00
fix
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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}
|
||||
|
||||
Reference in New Issue
Block a user