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
88e55e94
Unverified
Commit
88e55e94
authored
Nov 09, 2020
by
qupeng
Committed by
GitHub
Nov 09, 2020
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add range for compaction filter context (#560)
parent
c7c76b31
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
52 additions
and
0 deletions
+52
-0
c.cc
librocksdb_sys/crocksdb/c.cc
+13
-0
c.h
librocksdb_sys/crocksdb/crocksdb/c.h
+8
-0
lib.rs
librocksdb_sys/src/lib.rs
+9
-0
compaction_filter.rs
src/compaction_filter.rs
+22
-0
No files found.
librocksdb_sys/crocksdb/c.cc
View file @
88e55e94
...
@@ -3297,6 +3297,19 @@ unsigned char crocksdb_compactionfiltercontext_is_bottommost_level(
...
@@ -3297,6 +3297,19 @@ unsigned char crocksdb_compactionfiltercontext_is_bottommost_level(
return
context
->
rep
.
is_bottommost_level
;
return
context
->
rep
.
is_bottommost_level
;
}
}
void
crocksdb_compactionfiltercontext_file_numbers
(
crocksdb_compactionfiltercontext_t
*
context
,
const
uint64_t
**
buffer
,
size_t
*
len
)
{
*
buffer
=
context
->
rep
.
file_numbers
.
data
();
*
len
=
context
->
rep
.
file_numbers
.
size
();
}
crocksdb_table_properties_t
*
crocksdb_compactionfiltercontext_table_properties
(
crocksdb_compactionfiltercontext_t
*
context
,
size_t
offset
)
{
return
(
crocksdb_table_properties_t
*
)
context
->
rep
.
table_properties
[
offset
]
.
get
();
}
crocksdb_compactionfilterfactory_t
*
crocksdb_compactionfilterfactory_create
(
crocksdb_compactionfilterfactory_t
*
crocksdb_compactionfilterfactory_create
(
void
*
state
,
void
(
*
destructor
)(
void
*
),
void
*
state
,
void
(
*
destructor
)(
void
*
),
crocksdb_compactionfilter_t
*
(
*
create_compaction_filter
)(
crocksdb_compactionfilter_t
*
(
*
create_compaction_filter
)(
...
...
librocksdb_sys/crocksdb/crocksdb/c.h
View file @
88e55e94
...
@@ -1341,6 +1341,14 @@ extern C_ROCKSDB_LIBRARY_API unsigned char
...
@@ -1341,6 +1341,14 @@ extern C_ROCKSDB_LIBRARY_API unsigned char
crocksdb_compactionfiltercontext_is_bottommost_level
(
crocksdb_compactionfiltercontext_is_bottommost_level
(
crocksdb_compactionfiltercontext_t
*
context
);
crocksdb_compactionfiltercontext_t
*
context
);
extern
C_ROCKSDB_LIBRARY_API
void
crocksdb_compactionfiltercontext_file_numbers
(
crocksdb_compactionfiltercontext_t
*
context
,
const
uint64_t
**
buffer
,
size_t
*
len
);
extern
C_ROCKSDB_LIBRARY_API
crocksdb_table_properties_t
*
crocksdb_compactionfiltercontext_table_properties
(
crocksdb_compactionfiltercontext_t
*
context
,
size_t
offset
);
/* Compaction Filter Factory */
/* Compaction Filter Factory */
extern
C_ROCKSDB_LIBRARY_API
crocksdb_compactionfilterfactory_t
*
extern
C_ROCKSDB_LIBRARY_API
crocksdb_compactionfilterfactory_t
*
...
...
librocksdb_sys/src/lib.rs
View file @
88e55e94
...
@@ -1531,6 +1531,15 @@ extern "C" {
...
@@ -1531,6 +1531,15 @@ extern "C" {
pub
fn
crocksdb_compactionfiltercontext_is_bottommost_level
(
pub
fn
crocksdb_compactionfiltercontext_is_bottommost_level
(
context
:
*
const
DBCompactionFilterContext
,
context
:
*
const
DBCompactionFilterContext
,
)
->
bool
;
)
->
bool
;
pub
fn
crocksdb_compactionfiltercontext_file_numbers
(
context
:
*
const
DBCompactionFilterContext
,
buffer
:
*
mut
*
const
u64
,
len
:
*
mut
usize
,
);
pub
fn
crocksdb_compactionfiltercontext_table_properties
(
context
:
*
const
DBCompactionFilterContext
,
offset
:
usize
,
)
->
*
const
DBTableProperties
;
// Compaction filter factory
// Compaction filter factory
pub
fn
crocksdb_compactionfilterfactory_create
(
pub
fn
crocksdb_compactionfilterfactory_create
(
...
...
src/compaction_filter.rs
View file @
88e55e94
use
std
::
ffi
::
CString
;
use
std
::
ffi
::
CString
;
use
std
::{
mem
,
ptr
,
slice
};
use
std
::{
mem
,
ptr
,
slice
};
use
crate
::
table_properties
::
TableProperties
;
pub
use
crocksdb_ffi
::
DBCompactionFilter
;
pub
use
crocksdb_ffi
::
DBCompactionFilter
;
use
crocksdb_ffi
::{
self
,
DBCompactionFilterContext
,
DBCompactionFilterFactory
};
use
crocksdb_ffi
::{
self
,
DBCompactionFilterContext
,
DBCompactionFilterFactory
};
use
libc
::{
c_char
,
c_int
,
c_void
,
malloc
,
memcpy
,
size_t
};
use
libc
::{
c_char
,
c_int
,
c_void
,
malloc
,
memcpy
,
size_t
};
...
@@ -132,6 +133,27 @@ impl CompactionFilterContext {
...
@@ -132,6 +133,27 @@ impl CompactionFilterContext {
let
ctx
=
&
self
.
0
as
*
const
DBCompactionFilterContext
;
let
ctx
=
&
self
.
0
as
*
const
DBCompactionFilterContext
;
unsafe
{
crocksdb_ffi
::
crocksdb_compactionfiltercontext_is_bottommost_level
(
ctx
)
}
unsafe
{
crocksdb_ffi
::
crocksdb_compactionfiltercontext_is_bottommost_level
(
ctx
)
}
}
}
pub
fn
file_numbers
(
&
self
)
->
&
[
u64
]
{
let
ctx
=
&
self
.
0
as
*
const
DBCompactionFilterContext
;
let
(
mut
buffer
,
mut
len
):
(
*
const
u64
,
usize
)
=
(
ptr
::
null_mut
(),
0
);
unsafe
{
crocksdb_ffi
::
crocksdb_compactionfiltercontext_file_numbers
(
ctx
,
&
mut
buffer
as
*
mut
*
const
u64
,
&
mut
len
as
*
mut
usize
,
);
slice
::
from_raw_parts
(
buffer
,
len
)
}
}
pub
fn
table_properties
(
&
self
,
offset
:
usize
)
->
&
TableProperties
{
let
ctx
=
&
self
.
0
as
*
const
DBCompactionFilterContext
;
unsafe
{
let
raw
=
crocksdb_ffi
::
crocksdb_compactionfiltercontext_table_properties
(
ctx
,
offset
);
TableProperties
::
from_ptr
(
raw
)
}
}
}
}
pub
trait
CompactionFilterFactory
{
pub
trait
CompactionFilterFactory
{
...
...
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