From 05350ac88c1d5b7f12502df5ff86a46e36554a1f Mon Sep 17 00:00:00 2001 From: Oleksandr Anyshchenko Date: Sat, 5 Jan 2019 17:17:15 +0200 Subject: [PATCH] Added a clear method for WriteBatch --- src/db.rs | 8 ++++++++ tests/test_write_batch.rs | 27 +++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 tests/test_write_batch.rs diff --git a/src/db.rs b/src/db.rs index 809fa92..414b884 100644 --- a/src/db.rs +++ b/src/db.rs @@ -1223,6 +1223,14 @@ impl WriteBatch { Ok(()) } } + + /// Clear all updates buffered in this batch. + pub fn clear(&mut self) -> Result<(), Error> { + unsafe { + ffi::rocksdb_writebatch_clear(self.inner); + } + Ok(()) + } } impl Default for WriteBatch { diff --git a/tests/test_write_batch.rs b/tests/test_write_batch.rs new file mode 100644 index 0000000..cae5911 --- /dev/null +++ b/tests/test_write_batch.rs @@ -0,0 +1,27 @@ +// Copyright 2019 Tyler Neely +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +extern crate rocksdb; + +use rocksdb::WriteBatch; + +#[test] +fn test_write_batch_clear() { + let mut batch = WriteBatch::default(); + let _ = batch.put(b"1", b"2"); + assert_eq!(batch.len(), 1); + let _ = batch.clear(); + assert_eq!(batch.len(), 0); + assert!(batch.is_empty()); +}