Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
R
rust-rocksdb
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
fangzongwu
rust-rocksdb
Commits
968ba41e
Commit
968ba41e
authored
Mar 04, 2017
by
Jay
Committed by
zhangjinpeng1987
Mar 04, 2017
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
introduce savepoint (#21)
parent
9d9efd30
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
69 additions
and
23 deletions
+69
-23
c.cc
librocksdb_sys/crocksdb/c.cc
+8
-0
c.h
librocksdb_sys/crocksdb/rocksdb/c.h
+2
-0
lib.rs
librocksdb_sys/src/lib.rs
+2
-0
rocksdb.rs
src/rocksdb.rs
+56
-21
test_statistics.rs
test/test_statistics.rs
+1
-2
No files found.
librocksdb_sys/crocksdb/c.cc
View file @
968ba41e
...
...
@@ -1364,6 +1364,14 @@ const char* crocksdb_writebatch_data(crocksdb_writebatch_t* b, size_t* size) {
return
b
->
rep
.
Data
().
c_str
();
}
void
crocksdb_writebatch_set_save_point
(
crocksdb_writebatch_t
*
b
)
{
b
->
rep
.
SetSavePoint
();
}
void
crocksdb_writebatch_rollback_to_save_point
(
crocksdb_writebatch_t
*
b
,
char
**
errptr
)
{
SaveError
(
errptr
,
b
->
rep
.
RollbackToSavePoint
());
}
crocksdb_block_based_table_options_t
*
crocksdb_block_based_options_create
()
{
return
new
crocksdb_block_based_table_options_t
;
...
...
librocksdb_sys/crocksdb/rocksdb/c.h
View file @
968ba41e
...
...
@@ -469,6 +469,8 @@ extern C_ROCKSDB_LIBRARY_API void crocksdb_writebatch_iterate(
void
(
*
deleted
)(
void
*
,
const
char
*
k
,
size_t
klen
));
extern
C_ROCKSDB_LIBRARY_API
const
char
*
crocksdb_writebatch_data
(
crocksdb_writebatch_t
*
,
size_t
*
size
);
extern
C_ROCKSDB_LIBRARY_API
void
crocksdb_writebatch_set_save_point
(
crocksdb_writebatch_t
*
);
extern
C_ROCKSDB_LIBRARY_API
void
crocksdb_writebatch_rollback_to_save_point
(
crocksdb_writebatch_t
*
,
char
**
errptr
);
/* Block based table options */
...
...
librocksdb_sys/src/lib.rs
View file @
968ba41e
...
...
@@ -470,6 +470,8 @@ extern "C" {
k
:
*
const
u8
,
klen
:
size_t
));
pub
fn
crocksdb_writebatch_data
(
batch
:
*
mut
DBWriteBatch
,
size
:
*
mut
size_t
)
->
*
const
u8
;
pub
fn
crocksdb_writebatch_set_save_point
(
batch
:
*
mut
DBWriteBatch
);
pub
fn
crocksdb_writebatch_rollback_to_save_point
(
batch
:
*
mut
DBWriteBatch
,
err
:
*
mut
*
mut
c_char
);
// Comparator
pub
fn
crocksdb_options_set_comparator
(
options
:
*
mut
DBOptions
,
cb
:
*
mut
DBComparator
);
...
...
src/rocksdb.rs
View file @
968ba41e
...
...
@@ -1034,6 +1034,19 @@ impl WriteBatch {
crocksdb_ffi
::
crocksdb_writebatch_clear
(
self
.inner
);
}
}
pub
fn
set_save_point
(
&
mut
self
)
{
unsafe
{
crocksdb_ffi
::
crocksdb_writebatch_set_save_point
(
self
.inner
);
}
}
pub
fn
rollback_to_save_point
(
&
mut
self
)
->
Result
<
(),
String
>
{
unsafe
{
ffi_try!
(
crocksdb_writebatch_rollback_to_save_point
(
self
.inner
));
}
Ok
(())
}
}
impl
Drop
for
WriteBatch
{
...
...
@@ -1283,8 +1296,8 @@ mod test {
assert
!
(
db
.get
(
b
"k1"
)
.unwrap
()
.is_none
());
let
p
=
db
.write
(
batch
);
assert
!
(
p
.is_ok
());
let
r
:
Result
<
Option
<
DBVector
>
,
String
>
=
db
.get
(
b
"k1"
);
assert
!
(
r
.unwrap
()
.unwrap
()
.to_utf8
()
.unwrap
()
==
"v1111"
);
let
r
=
db
.get
(
b
"k1"
);
assert
_eq!
(
r
.unwrap
()
.unwrap
(),
b
"v1111"
);
// test delete
let
batch
=
WriteBatch
::
new
();
...
...
@@ -1301,6 +1314,28 @@ mod test {
assert
!
(
batch
.data_size
()
>
prev_size
);
batch
.clear
();
assert_eq!
(
batch
.data_size
(),
prev_size
);
// test save point
let
mut
batch
=
WriteBatch
::
new
();
batch
.put
(
b
"k10"
,
b
"v10"
)
.unwrap
();
batch
.set_save_point
();
batch
.put
(
b
"k11"
,
b
"v11"
)
.unwrap
();
batch
.set_save_point
();
batch
.put
(
b
"k12"
,
b
"v12"
)
.unwrap
();
batch
.set_save_point
();
batch
.put
(
b
"k13"
,
b
"v13"
)
.unwrap
();
batch
.rollback_to_save_point
()
.unwrap
();
batch
.rollback_to_save_point
()
.unwrap
();
let
p
=
db
.write
(
batch
);
assert
!
(
p
.is_ok
());
let
r
=
db
.get
(
b
"k10"
);
assert_eq!
(
r
.unwrap
()
.unwrap
(),
b
"v10"
);
let
r
=
db
.get
(
b
"k11"
);
assert_eq!
(
r
.unwrap
()
.unwrap
(),
b
"v11"
);
let
r
=
db
.get
(
b
"k12"
);
assert
!
(
r
.unwrap
()
.is_none
());
let
r
=
db
.get
(
b
"k13"
);
assert
!
(
r
.unwrap
()
.is_none
());
}
#[test]
...
...
@@ -1504,29 +1539,29 @@ mod test {
db
.continue_bg_work
();
h
.join
()
.unwrap
();
}
}
#[test]
fn
snapshot_test
()
{
let
path
=
"_rust_rocksdb_snapshottest"
;
{
let
db
=
DB
::
open_default
(
path
)
.unwrap
();
let
p
=
db
.put
(
b
"k1"
,
b
"v1111"
);
assert
!
(
p
.is_ok
());
#[test]
fn
snapshot_test
()
{
let
path
=
"_rust_rocksdb_snapshottest"
;
{
let
db
=
DB
::
open_default
(
path
)
.unwrap
();
let
p
=
db
.put
(
b
"k1"
,
b
"v1111"
);
assert
!
(
p
.is_ok
());
let
snap
=
db
.snapshot
();
let
mut
r
:
Result
<
Option
<
DBVector
>
,
String
>
=
snap
.get
(
b
"k1"
);
assert
!
(
r
.unwrap
()
.unwrap
()
.to_utf8
()
.unwrap
()
==
"v1111"
);
let
snap
=
db
.snapshot
();
let
mut
r
:
Result
<
Option
<
DBVector
>
,
String
>
=
snap
.get
(
b
"k1"
);
assert
!
(
r
.unwrap
()
.unwrap
()
.to_utf8
()
.unwrap
()
==
"v1111"
);
r
=
db
.get
(
b
"k1"
);
assert
!
(
r
.unwrap
()
.unwrap
()
.to_utf8
()
.unwrap
()
==
"v1111"
);
r
=
db
.get
(
b
"k1"
);
assert
!
(
r
.unwrap
()
.unwrap
()
.to_utf8
()
.unwrap
()
==
"v1111"
);
let
p
=
db
.put
(
b
"k2"
,
b
"v2222"
);
assert
!
(
p
.is_ok
());
let
p
=
db
.put
(
b
"k2"
,
b
"v2222"
);
assert
!
(
p
.is_ok
());
assert
!
(
db
.get
(
b
"k2"
)
.unwrap
()
.is_some
());
assert
!
(
snap
.get
(
b
"k2"
)
.unwrap
()
.is_none
());
assert
!
(
db
.get
(
b
"k2"
)
.unwrap
()
.is_some
());
assert
!
(
snap
.get
(
b
"k2"
)
.unwrap
()
.is_none
());
}
let
opts
=
Options
::
new
();
assert
!
(
DB
::
destroy
(
&
opts
,
path
)
.is_ok
());
}
let
opts
=
Options
::
new
();
assert
!
(
DB
::
destroy
(
&
opts
,
path
)
.is_ok
());
}
test/test_statistics.rs
View file @
968ba41e
...
...
@@ -12,8 +12,7 @@
// limitations under the License.
use
rocksdb
::
*
;
use
self
::
crocksdb_ffi
::{
DBStatisticsTickerType
as
TickerType
,
DBStatisticsHistogramType
as
HistogramType
};
use
rocksdb
::{
DBStatisticsTickerType
as
TickerType
,
DBStatisticsHistogramType
as
HistogramType
};
use
tempdir
::
TempDir
;
#[test]
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment