mirror of https://github.com/vacp2p/pmtree.git
chore: fix the bug in batch_insertions
This commit is contained in:
parent
f7e19730f8
commit
516c46d5f8
12
src/tree.rs
12
src/tree.rs
|
@ -2,7 +2,6 @@ use crate::*;
|
||||||
|
|
||||||
use std::cmp::{max, min};
|
use std::cmp::{max, min};
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::marker::PhantomData;
|
|
||||||
use std::sync::{Arc, RwLock};
|
use std::sync::{Arc, RwLock};
|
||||||
|
|
||||||
// db[DEPTH_KEY] = depth
|
// db[DEPTH_KEY] = depth
|
||||||
|
@ -29,7 +28,6 @@ where
|
||||||
H: Hasher,
|
H: Hasher,
|
||||||
{
|
{
|
||||||
db: D,
|
db: D,
|
||||||
h: PhantomData<H>,
|
|
||||||
depth: usize,
|
depth: usize,
|
||||||
next_index: usize,
|
next_index: usize,
|
||||||
cache: Vec<H::Fr>,
|
cache: Vec<H::Fr>,
|
||||||
|
@ -79,7 +77,6 @@ where
|
||||||
|
|
||||||
Ok(Self {
|
Ok(Self {
|
||||||
db,
|
db,
|
||||||
h: PhantomData,
|
|
||||||
depth,
|
depth,
|
||||||
next_index,
|
next_index,
|
||||||
cache,
|
cache,
|
||||||
|
@ -111,7 +108,6 @@ where
|
||||||
|
|
||||||
Ok(Self {
|
Ok(Self {
|
||||||
db,
|
db,
|
||||||
h: PhantomData,
|
|
||||||
depth,
|
depth,
|
||||||
next_index,
|
next_index,
|
||||||
cache,
|
cache,
|
||||||
|
@ -211,6 +207,12 @@ where
|
||||||
subtree.insert(root_key, self.root);
|
subtree.insert(root_key, self.root);
|
||||||
self.fill_nodes(root_key, self.next_index, end, &mut subtree)?;
|
self.fill_nodes(root_key, self.next_index, end, &mut subtree)?;
|
||||||
|
|
||||||
|
////// TODO! Refactor later
|
||||||
|
for i in self.next_index..end {
|
||||||
|
subtree.insert(Key(self.depth, i), leaves[i - self.next_index]);
|
||||||
|
}
|
||||||
|
//////
|
||||||
|
|
||||||
let subtree = Arc::new(RwLock::new(subtree));
|
let subtree = Arc::new(RwLock::new(subtree));
|
||||||
|
|
||||||
let root_val = rayon::ThreadPoolBuilder::new()
|
let root_val = rayon::ThreadPoolBuilder::new()
|
||||||
|
@ -282,7 +284,7 @@ where
|
||||||
let left_child = Key(key.0 + 1, key.1 * 2);
|
let left_child = Key(key.0 + 1, key.1 * 2);
|
||||||
let right_child = Key(key.0 + 1, key.1 * 2 + 1);
|
let right_child = Key(key.0 + 1, key.1 * 2 + 1);
|
||||||
|
|
||||||
if key.0 == depth || subtree.read().unwrap().contains_key(&left_child) {
|
if key.0 == depth || !subtree.read().unwrap().contains_key(&left_child) {
|
||||||
return *subtree.read().unwrap().get(&key).unwrap();
|
return *subtree.read().unwrap().get(&key).unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -117,5 +117,10 @@ fn batch_insertions() -> Result<()> {
|
||||||
|
|
||||||
mt.batch_insert(&leaves)?;
|
mt.batch_insert(&leaves)?;
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
mt.root(),
|
||||||
|
hex!("a9bb8c3f1f12e9aa903a50c47f314b57610a3ab32f2d463293f58836def38d36")
|
||||||
|
);
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue