From b68282dbc3ab0b672f8c5f14f90978ea253b6f73 Mon Sep 17 00:00:00 2001 From: bronku Date: Sun, 14 Dec 2025 00:39:29 +0100 Subject: [PATCH] all --- src/btree.rs | 29 +++++++++++++++++++++++++++++ src/main.rs | 5 +++++ 2 files changed, 34 insertions(+) diff --git a/src/btree.rs b/src/btree.rs index f096ab7..ab41c77 100644 --- a/src/btree.rs +++ b/src/btree.rs @@ -226,6 +226,35 @@ where } } } + + pub fn dump_records(&mut self) { + let mut loc = self.leftmost_leaf(); + + while let Some(Node::Leaf(leaf)) = self.storage.read_node(loc) { + for record in &leaf.values { + println!("{:?}", record); + } + + match leaf.next { + Some(next) => loc = next, + None => break, + } + } + } + + fn leftmost_leaf(&mut self) -> usize { + let mut loc = self.header.root; + + loop { + match self.storage.read_node(loc) { + Some(Node::Internal(internal)) => { + loc = internal.children[0]; + } + Some(Node::Leaf(_)) => return loc, + _ => panic!("Corrupt tree"), + } + } + } } #[cfg(test)] diff --git a/src/main.rs b/src/main.rs index 7b7b04b..a61a7f5 100644 --- a/src/main.rs +++ b/src/main.rs @@ -51,6 +51,11 @@ fn repl(tree: &mut BPlusTree) { continue; } + if input == "all" { + tree.dump_records(); + continue; + } + match handle_command(tree, input) { Ok(()) => {} Err(err) => println!("Error: {}", err),