Skip to content

Commit a8e7b34

Browse files
committed
fix: use HashMap for MemTable
1 parent 167006a commit a8e7b34

2 files changed

Lines changed: 13 additions & 8 deletions

File tree

src/db.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -312,10 +312,11 @@ impl Collection {
312312
let mut sources: Vec<SourceIterator> = Vec::new();
313313

314314
// 1. MemTable Iterator (Priority 0 - Highest)
315-
let mem_iter = self
316-
.memtable
317-
.documents
318-
.iter()
315+
// Must sort because MemTable now uses HashMap
316+
let mut mem_docs: Vec<_> = self.memtable.documents.iter().collect();
317+
mem_docs.sort_by_key(|(k, _)| *k);
318+
let mem_iter = mem_docs
319+
.into_iter()
319320
.map(|(k, v)| ExecutionResult::Value(k.clone(), v.clone()));
320321

321322
sources.push((Box::new(mem_iter) as Box<dyn Iterator<Item = ExecutionResult>>).peekable());

src/storage.rs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
use crate::Value;
22
use crate::jstable::JSTable;
33
use crate::schema::{Schema, SchemaExt, infer_schema};
4-
use std::collections::BTreeMap;
4+
use std::collections::{BTreeMap, HashMap};
55

66
pub struct MemTable {
7-
pub documents: BTreeMap<String, Value>,
7+
pub documents: HashMap<String, Value>,
88
schema: Schema,
99
}
1010

@@ -17,7 +17,7 @@ impl Default for MemTable {
1717
impl MemTable {
1818
pub fn new() -> Self {
1919
MemTable {
20-
documents: BTreeMap::new(),
20+
documents: HashMap::new(),
2121
schema: Schema::default(),
2222
}
2323
}
@@ -40,7 +40,11 @@ impl MemTable {
4040
.duration_since(std::time::UNIX_EPOCH)
4141
.unwrap()
4242
.as_millis() as u64;
43-
let jstable = JSTable::new(timestamp, collection, self.schema, self.documents);
43+
44+
// Sort documents by ID for JSTable
45+
let sorted_docs: BTreeMap<String, Value> = self.documents.into_iter().collect();
46+
47+
let jstable = JSTable::new(timestamp, collection, self.schema, sorted_docs);
4448
jstable.write(path, index_threshold)
4549
}
4650

0 commit comments

Comments
 (0)