Mercurial > lbo > hg > leveldb-rs
changeset 514:3c8a8285f0cb
Update crc and snappy dependencies
author | Lewin Bormann <lbo@spheniscida.de> |
---|---|
date | Wed, 19 Feb 2020 16:23:38 +0100 |
parents | 4af7baa18cf0 |
children | 4c54943d52e3 |
files | Cargo.toml src/table_block.rs src/table_builder.rs src/table_reader.rs |
diffstat | 4 files changed, 16 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/Cargo.toml Wed Feb 19 16:04:34 2020 +0100 +++ b/Cargo.toml Wed Feb 19 16:23:38 2020 +0100 @@ -11,11 +11,11 @@ publish = true [dependencies] -crc = "1.8" +crc = "1.0" integer-encoding = "1.0" libc = "0.2" rand = "0.7" -snap = "0.2" +snap = "1.0" errno = "0.2" [dev-dependencies]
--- a/src/table_block.rs Wed Feb 19 16:04:34 2020 +0100 +++ b/src/table_block.rs Wed Feb 19 16:23:38 2020 +0100 @@ -10,7 +10,8 @@ use crc::crc32::{self, Hasher32}; use integer_encoding::FixedInt; -use snap::Decoder; +use snap::read::FrameDecoder; +use std::io::Read; /// Reads the data for the specified block handle from a file. fn read_bytes(f: &dyn RandomAccess, location: &BlockHandle) -> Result<Vec<u8>> { @@ -75,7 +76,8 @@ match ctype { CompressionType::CompressionNone => Ok(Block::new(opt, buf)), CompressionType::CompressionSnappy => { - let decoded = Decoder::new().decompress_vec(&buf)?; + let mut decoded = vec![]; + FrameDecoder::new(buf.as_slice()).read_to_end(&mut decoded)?; Ok(Block::new(opt, decoded)) } }
--- a/src/table_builder.rs Wed Feb 19 16:04:34 2020 +0100 +++ b/src/table_builder.rs Wed Feb 19 16:23:38 2020 +0100 @@ -16,7 +16,7 @@ use crc::crc32; use crc::Hasher32; use integer_encoding::FixedIntWriter; -use snap::Encoder; +use snap::write::FrameEncoder; pub const FOOTER_LENGTH: usize = 40; pub const FULL_FOOTER_LENGTH: usize = FOOTER_LENGTH + 8; @@ -202,8 +202,12 @@ fn write_block(&mut self, block: BlockContents, ctype: CompressionType) -> Result<BlockHandle> { let mut data = block; if ctype == CompressionType::CompressionSnappy { - let mut encoder = Encoder::new(); - data = encoder.compress_vec(&data)?; + let mut encoded = vec![]; + { + let mut encoder = FrameEncoder::new(&mut encoded); + encoder.write(&data)?; + } + data = encoded; } let mut digest = crc32::Digest::new(crc32::CASTAGNOLI); @@ -322,7 +326,7 @@ assert!(b.filter_block.is_some()); let actual = b.finish().unwrap(); - assert_eq!(223, actual); + assert_eq!(275, actual); } #[test]
--- a/src/table_reader.rs Wed Feb 19 16:04:34 2020 +0100 +++ b/src/table_reader.rs Wed Feb 19 16:23:38 2020 +0100 @@ -445,7 +445,7 @@ let table = Table::new_raw(opt, wrap_buffer(src), size).unwrap(); let mut iter = table.iter(); - let expected_offsets = vec![0, 0, 0, 44, 44, 44, 89]; + let expected_offsets = vec![0, 0, 0, 60, 60, 60, 122]; let mut i = 0; for (k, _) in LdbIteratorIter::wrap(&mut iter) { assert_eq!(expected_offsets[i], table.approx_offset_of(&k)); @@ -453,7 +453,7 @@ } // Key-past-last returns offset of metaindex block. - assert_eq!(137, table.approx_offset_of("{aa".as_bytes())); + assert_eq!(186, table.approx_offset_of("{aa".as_bytes())); } #[test]