diff options
-rw-r--r-- | src/db_options.rs | 25 | ||||
-rw-r--r-- | tests/test_rocksdb_options.rs | 22 |
2 files changed, 47 insertions, 0 deletions
diff --git a/src/db_options.rs b/src/db_options.rs index 360e6bf..dbf51dd 100644 --- a/src/db_options.rs +++ b/src/db_options.rs @@ -1065,6 +1065,31 @@ impl Options { } } + /// Sets the compression algorithm that will be used for compressing WAL. + /// + /// At present, only ZSTD compression is supported! + /// + /// Default: `DBCompressionType::None` + /// + /// # Examples + /// + /// ``` + /// use rocksdb::{Options, DBCompressionType}; + /// + /// let mut opts = Options::default(); + /// opts.set_wal_compression_type(DBCompressionType::Zstd); + /// // Or None to disable it + /// opts.set_wal_compression_type(DBCompressionType::None); + /// ``` + pub fn set_wal_compression_type(&mut self, t: DBCompressionType) { + match t { + DBCompressionType::None | DBCompressionType::Zstd => unsafe { + ffi::rocksdb_options_set_wal_compression(self.inner, t as c_int); + }, + other => unimplemented!("{:?} is not supported for WAL compression", other), + } + } + /// Sets the bottom-most compression algorithm that will be used for /// compressing blocks at the bottom-most level. /// diff --git a/tests/test_rocksdb_options.rs b/tests/test_rocksdb_options.rs index 7810c80..29017a5 100644 --- a/tests/test_rocksdb_options.rs +++ b/tests/test_rocksdb_options.rs @@ -171,6 +171,28 @@ fn set_compression_options_zstd_max_train_bytes() { } } +#[test] +fn set_wal_compression_zstd() { + let path = DBPath::new("_set_wal_compression_zstd"); + { + let mut opts = Options::default(); + opts.create_if_missing(true); + opts.set_wal_compression_type(DBCompressionType::None); + opts.set_wal_compression_type(DBCompressionType::Zstd); + let _db = DB::open(&opts, &path).unwrap(); + } +} + +#[test] +#[should_panic(expected = "Lz4 is not supported for WAL compression")] +fn set_wal_compression_unsupported() { + { + let mut opts = Options::default(); + opts.create_if_missing(true); + opts.set_wal_compression_type(DBCompressionType::Lz4); + } +} + fn test_compression_type(ty: DBCompressionType) { let path = DBPath::new("_test_compression_type"); |