Improving test coverage for btree::cursor
[?]
Feb 1, 2021, 8:54 AM
PXF3R6SVXJXN2NMLMWNY5OFV5QYVE2VZTLGIZDZVK5ZVLFTVSSWQCDependencies
- [2]
ONES3V46reference counting works for put - [3]
OP6SVMODResetting history - [4]
FMN7X4J2Micro-improvements, now noticeably faster than std::collections::BTreeMap - [5]
WS4ZQM4RDebugging, tests, etc.
Change contents
- edit in sanakirja-core/src/btree/cursor.rs at line 86
debug!("self.pointer = {:?}", self.pointer); - edit in sanakirja-core/src/btree/cursor.rs at line 88
debug!("page = {:?}, rc = {:?}", current.page, txn.rc(page.offset)?); - edit in sanakirja-core/src/btree/cursor.rs at line 89
debug!("first_rc_level = {:?}", self.pointer); - edit in sanakirja-core/src/btree/cursor.rs at line 105
debug!("next_page = {:?}", next_page); - edit in sanakirja-core/src/btree/cursor.rs at line 107
debug!("p+ = {:?}", self.pointer); - edit in sanakirja-core/src/btree/cursor.rs at line 112
debug!("last p = {:?}", self.pointer); - edit in sanakirja-core/src/btree/cursor.rs at line 116
debug!("last_matching {:?}", last_matching_page); - edit in sanakirja-core/src/btree/cursor.rs at line 119
debug!("pointer {:?}", self.pointer); - replacement in sanakirja-core/src/btree/cursor.rs at line 156[3.68948]→[3.68948:69343](∅→∅),[3.69343]→[3.35301:35383](∅→∅),[3.35383]→[3.69416:69743](∅→∅),[3.69416]→[3.69416:69743](∅→∅),[3.69743]→[3.35384:35439](∅→∅),[3.35439]→[3.69804:70012](∅→∅),[3.69804]→[3.69804:70012](∅→∅),[3.70012]→[3.35440:35524](∅→∅),[3.35524]→[3.70087:70218](∅→∅),[3.70087]→[3.70087:70218](∅→∅),[3.70218]→[3.35525:35603](∅→∅),[3.35603]→[3.70287:70442](∅→∅),[3.70287]→[3.70287:70442](∅→∅)
if self.pointer == 0 {return Ok(None);} else {let current = unsafe { &mut *self.stack[self.pointer].as_mut_ptr() };if let Some(ref mut c) = current.cursor {// We're inside the page, and have already// processed the left child of the current page// cursor.if let Some((k, v, r)) = P::next(current.page.as_page(), c) {if r > 0 {self.pointer += 1;self.stack[self.pointer] = MaybeUninit::new(PageCursor {page: txn.load_page(r)?,cursor: None,})}return Ok(Some((& *k, & *v)));} else if self.pointer > 1 {self.pointer -= 1} else {return Ok(None);}} else {current.cursor = Some(P::first_cursor(current.page.as_page()));// First element of a page (not a binding).let cursor = current.cursor.as_ref().unwrap();let left = P::left_child(current.page.as_page(), cursor);debug!("left = {:?}", left);// Then visit the right child (if any), i.e. push.if left != 0 {let current = unsafe { &mut *self.stack[self.pointer].as_mut_ptr() };if let Some(ref mut c) = current.cursor {// We're inside the page, and have already// processed the left child of the current page// cursor.if let Some((k, v, r)) = P::next(current.page.as_page(), c) {if r > 0 { - replacement in sanakirja-core/src/btree/cursor.rs at line 165
page: txn.load_page(left)?,page: txn.load_page(r)?, - edit in sanakirja-core/src/btree/cursor.rs at line 169
return Ok(Some((& *k, & *v)));} else if self.pointer > 1 {self.pointer -= 1} else {return Ok(None);}} else {current.cursor = Some(P::first_cursor(current.page.as_page()));// First element of a page (not a binding).let cursor = current.cursor.as_ref().unwrap();let left = P::left_child(current.page.as_page(), cursor);// Then visit the right child (if any), i.e. push.if left != 0 {self.pointer += 1;self.stack[self.pointer] = MaybeUninit::new(PageCursor {page: txn.load_page(left)?,cursor: None,}) - replacement in sanakirja/src/environment/muttxn.rs at line 17
free: CowPage,pub(crate) free: CowPage,