mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-14 00:31:07 +00:00
Allow empty values in the storage (#6364)
* Allow empty values in the storage * Bump trie-bench * Bump trie-bench
This commit is contained in:
@@ -16,7 +16,7 @@ targets = ["x86_64-unknown-linux-gnu"]
|
||||
log = "0.4.8"
|
||||
parking_lot = "0.10.0"
|
||||
hash-db = "0.15.2"
|
||||
trie-db = "0.20.1"
|
||||
trie-db = "0.21.0"
|
||||
trie-root = "0.16.0"
|
||||
sp-trie = { version = "2.0.0-rc3", path = "../trie" }
|
||||
sp-core = { version = "2.0.0-rc3", path = "../core" }
|
||||
|
||||
@@ -1306,4 +1306,40 @@ mod tests {
|
||||
}
|
||||
assert!(!duplicate);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn set_storage_empty_allowed() {
|
||||
let initial: BTreeMap<_, _> = map![
|
||||
b"aaa".to_vec() => b"0".to_vec(),
|
||||
b"bbb".to_vec() => b"".to_vec()
|
||||
];
|
||||
let mut state = InMemoryBackend::<BlakeTwo256>::from(initial);
|
||||
let backend = state.as_trie_backend().unwrap();
|
||||
|
||||
let mut overlay = OverlayedChanges::default();
|
||||
overlay.set_storage(b"ccc".to_vec(), Some(b"".to_vec()));
|
||||
assert_eq!(overlay.storage(b"ccc"), Some(Some(&[][..])));
|
||||
overlay.commit_prospective();
|
||||
assert_eq!(overlay.storage(b"ccc"), Some(Some(&[][..])));
|
||||
assert_eq!(overlay.storage(b"bbb"), None);
|
||||
|
||||
{
|
||||
let mut offchain_overlay = Default::default();
|
||||
let mut cache = StorageTransactionCache::default();
|
||||
let mut ext = Ext::new(
|
||||
&mut overlay,
|
||||
&mut offchain_overlay,
|
||||
&mut cache,
|
||||
backend,
|
||||
changes_trie::disabled_state::<_, u64>(),
|
||||
None,
|
||||
);
|
||||
assert_eq!(ext.storage(b"bbb"), Some(vec![]));
|
||||
assert_eq!(ext.storage(b"ccc"), Some(vec![]));
|
||||
ext.clear_storage(b"ccc");
|
||||
assert_eq!(ext.storage(b"ccc"), None);
|
||||
}
|
||||
overlay.commit_prospective();
|
||||
assert_eq!(overlay.storage(b"ccc"), Some(None));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -242,7 +242,7 @@ impl<H, N> sp_externalities::ExtensionStore for TestExternalities<H, N> where
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use sp_core::traits::Externalities;
|
||||
use sp_core::{H256, traits::Externalities};
|
||||
use sp_runtime::traits::BlakeTwo256;
|
||||
use hex_literal::hex;
|
||||
|
||||
@@ -253,8 +253,8 @@ mod tests {
|
||||
ext.set_storage(b"doe".to_vec(), b"reindeer".to_vec());
|
||||
ext.set_storage(b"dog".to_vec(), b"puppy".to_vec());
|
||||
ext.set_storage(b"dogglesworth".to_vec(), b"cat".to_vec());
|
||||
const ROOT: [u8; 32] = hex!("555d4777b52e9196e3f6373c556cc661e79cd463f881ab9e921e70fc30144bf4");
|
||||
assert_eq!(&ext.storage_root()[..], &ROOT);
|
||||
let root = H256::from(hex!("2a340d3dfd52f5992c6b117e9e45f479e6da5afffafeb26ab619cf137a95aeb8"));
|
||||
assert_eq!(H256::from_slice(ext.storage_root().as_slice()), root);
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
@@ -20,13 +20,13 @@ harness = false
|
||||
codec = { package = "parity-scale-codec", version = "1.3.0", default-features = false }
|
||||
sp-std = { version = "2.0.0-rc3", default-features = false, path = "../std" }
|
||||
hash-db = { version = "0.15.2", default-features = false }
|
||||
trie-db = { version = "0.20.1", default-features = false }
|
||||
trie-db = { version = "0.21.0", default-features = false }
|
||||
trie-root = { version = "0.16.0", default-features = false }
|
||||
memory-db = { version = "0.20.0", default-features = false }
|
||||
memory-db = { version = "0.21.0", default-features = false }
|
||||
sp-core = { version = "2.0.0-rc3", default-features = false, path = "../core" }
|
||||
|
||||
[dev-dependencies]
|
||||
trie-bench = "0.21.0"
|
||||
trie-bench = "0.22.0"
|
||||
trie-standardmap = "0.15.2"
|
||||
criterion = "0.2.11"
|
||||
hex-literal = "0.2.1"
|
||||
|
||||
@@ -51,6 +51,7 @@ pub struct Layout<H>(sp_std::marker::PhantomData<H>);
|
||||
|
||||
impl<H: Hasher> TrieLayout for Layout<H> {
|
||||
const USE_EXTENSION: bool = false;
|
||||
const ALLOW_EMPTY: bool = true;
|
||||
type Hash = H;
|
||||
type Codec = NodeCodec<Self::Hash>;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user