Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
P
Python Rocksdb
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Wiki
Code
Merge requests
0
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
public
Python Rocksdb
Commits
87a7ddfe
Commit
87a7ddfe
authored
10 years ago
by
hofmockel
Browse files
Options
Downloads
Patches
Plain Diff
Move filter_policy to block_based_table_factory.
parent
5550ed91
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
rocksdb/_rocksdb.pyx
+40
-44
40 additions, 44 deletions
rocksdb/_rocksdb.pyx
rocksdb/options.pxd
+0
-2
0 additions, 2 deletions
rocksdb/options.pxd
rocksdb/table_factory.pxd
+2
-0
2 additions, 0 deletions
rocksdb/table_factory.pxd
with
42 additions
and
46 deletions
rocksdb/_rocksdb.pyx
+
40
−
44
View file @
87a7ddfe
...
...
@@ -49,6 +49,8 @@ from interfaces import SliceTransform as ISliceTransform
import
traceback
import
errors
ctypedef
const
filter_policy
.
FilterPolicy
ConstFilterPolicy
cdef
extern
from
"
cpp/utils.hpp
"
namespace
"
py_rocks
"
:
cdef
const
Slice
*
vector_data
(
vector
[
Slice
]
&
)
...
...
@@ -202,41 +204,36 @@ cdef class PyFilterPolicy(object):
cdef
object
get_ob
(
self
):
return
None
cdef
const
filter_policy
.
FilterPolicy
*
get_policy
(
self
):
return
NULL
cdef
shared_ptr
[
Const
FilterPolicy
]
get_policy
(
self
):
return
shared_ptr
[
ConstFilterPolicy
]()
cdef
set_info_log
(
self
,
shared_ptr
[
logger
.
Logger
]
info_log
):
pass
@cython.internal
cdef
class
PyGenericFilterPolicy
(
PyFilterPolicy
):
cdef
filter_policy
.
FilterPolicyWrapper
*
policy
cdef
shared_ptr
[
filter_policy
.
FilterPolicyWrapper
]
policy
cdef
object
ob
def
__cinit__
(
self
,
object
ob
):
self
.
policy
=
NULL
if
not
isinstance
(
ob
,
IFilterPolicy
):
raise
TypeError
(
"
%s is not of type %s
"
%
(
ob
,
IFilterPolicy
))
self
.
ob
=
ob
self
.
policy
=
new
filter_policy
.
FilterPolicyWrapper
(
self
.
policy
.
reset
(
new
filter_policy
.
FilterPolicyWrapper
(
bytes_to_string
(
ob
.
name
()),
<
void
*>
ob
,
create_filter_callback
,
key_may_match_callback
)
def
__dealloc__
(
self
):
if
not
self
.
policy
==
NULL
:
del
self
.
policy
key_may_match_callback
))
cdef
object
get_ob
(
self
):
return
self
.
ob
cdef
const
filter_policy
.
FilterPolicy
*
get_policy
(
self
):
return
<
filter_policy
.
FilterPolicy
*>
self
.
policy
cdef
shared_ptr
[
Const
FilterPolicy
]
get_policy
(
self
):
return
<
shared_ptr
[
Const
FilterPolicy
]
>
(
self
.
policy
)
cdef
set_info_log
(
self
,
shared_ptr
[
logger
.
Logger
]
info_log
):
self
.
policy
.
set_info_log
(
info_log
)
self
.
policy
.
get
().
set_info_log
(
info_log
)
cdef
void
create_filter_callback
(
...
...
@@ -274,18 +271,13 @@ cdef cpp_bool key_may_match_callback(
@cython.internal
cdef
class
PyBloomFilterPolicy
(
PyFilterPolicy
):
cdef
const
filter_policy
.
FilterPolicy
*
policy
cdef
shared_ptr
[
Const
FilterPolicy
]
policy
def
__cinit__
(
self
,
int
bits_per_key
):
self
.
policy
=
NULL
self
.
policy
=
filter_policy
.
NewBloomFilterPolicy
(
bits_per_key
)
def
__dealloc__
(
self
):
if
not
self
.
policy
==
NULL
:
del
self
.
policy
self
.
policy
.
reset
(
filter_policy
.
NewBloomFilterPolicy
(
bits_per_key
))
def
name
(
self
):
return
PyBytes_FromString
(
self
.
policy
.
Name
())
return
PyBytes_FromString
(
self
.
policy
.
get
().
Name
())
def
create_filter
(
self
,
keys
):
cdef
string
dst
...
...
@@ -294,7 +286,7 @@ cdef class PyBloomFilterPolicy(PyFilterPolicy):
for
key
in
keys
:
c_keys
.
push_back
(
bytes_to_slice
(
key
))
self
.
policy
.
CreateFilter
(
self
.
policy
.
get
().
CreateFilter
(
vector_data
(
c_keys
),
c_keys
.
size
(),
cython
.
address
(
dst
))
...
...
@@ -302,14 +294,14 @@ cdef class PyBloomFilterPolicy(PyFilterPolicy):
return
string_to_bytes
(
dst
)
def
key_may_match
(
self
,
key
,
filter_
):
return
self
.
policy
.
KeyMayMatch
(
return
self
.
policy
.
get
().
KeyMayMatch
(
bytes_to_slice
(
key
),
bytes_to_slice
(
filter_
))
cdef
object
get_ob
(
self
):
return
self
cdef
const
filter_policy
.
FilterPolicy
*
get_policy
(
self
):
cdef
shared_ptr
[
Const
FilterPolicy
]
get_policy
(
self
):
return
self
.
policy
BloomFilterPolicy
=
PyBloomFilterPolicy
...
...
@@ -561,13 +553,19 @@ cdef class PyTableFactory(object):
cdef
shared_ptr
[
table_factory
.
TableFactory
]
get_table_factory
(
self
):
return
self
.
factory
cdef
set_info_log
(
self
,
shared_ptr
[
logger
.
Logger
]
info_log
):
pass
cdef
class
BlockBasedTableFactory
(
PyTableFactory
):
cdef
PyFilterPolicy
py_filter_policy
def
__init__
(
self
,
index_type
=
'
binary_search
'
,
py_bool
hash_index_allow_collision
=
True
,
checksum
=
'
crc32
'
,
PyCache
block_cache
=
None
,
PyCache
block_cache_compressed
=
None
,
filter_policy
=
None
,
no_block_cache
=
False
,
block_size
=
None
,
block_size_deviation
=
None
,
...
...
@@ -622,8 +620,24 @@ cdef class BlockBasedTableFactory(PyTableFactory):
if
block_cache_compressed
is
not
None
:
table_options
.
block_cache_compressed
=
block_cache_compressed
.
get_cache
()
# Set the filter_policy
self
.
py_filter_policy
=
None
if
filter_policy
is
not
None
:
if
isinstance
(
filter_policy
,
PyFilterPolicy
):
if
(
<
PyFilterPolicy
?
>
filter_policy
).
get_policy
().
get
()
==
NULL
:
raise
Exception
(
"
Cannot set filter policy: %s
"
%
filter_policy
)
self
.
py_filter_policy
=
filter_policy
else
:
self
.
py_filter_policy
=
PyGenericFilterPolicy
(
filter_policy
)
table_options
.
filter_policy
=
self
.
py_filter_policy
.
get_policy
()
self
.
factory
.
reset
(
table_factory
.
NewBlockBasedTableFactory
(
table_options
))
cdef
set_info_log
(
self
,
shared_ptr
[
logger
.
Logger
]
info_log
):
if
self
.
py_filter_policy
is
not
None
:
self
.
py_filter_policy
.
set_info_log
(
info_log
)
cdef
class
PlainTableFactory
(
PyTableFactory
):
def
__init__
(
self
,
...
...
@@ -701,7 +715,6 @@ cdef class Options(object):
cdef
options
.
Options
*
opts
cdef
PyComparator
py_comparator
cdef
PyMergeOperator
py_merge_operator
cdef
PyFilterPolicy
py_filter_policy
cdef
PySliceTransform
py_prefix_extractor
cdef
PyTableFactory
py_table_factory
cdef
PyMemtableFactory
py_memtable_factory
...
...
@@ -721,7 +734,6 @@ cdef class Options(object):
def
__init__
(
self
,
**
kwargs
):
self
.
py_comparator
=
BytewiseComparator
()
self
.
py_merge_operator
=
None
self
.
py_filter_policy
=
None
self
.
py_prefix_extractor
=
None
self
.
py_table_factory
=
None
self
.
py_memtable_factory
=
None
...
...
@@ -1196,22 +1208,6 @@ cdef class Options(object):
self
.
py_merge_operator
=
PyMergeOperator
(
value
)
self
.
opts
.
merge_operator
=
self
.
py_merge_operator
.
get_operator
()
property
filter_policy
:
def
__get__
(
self
):
if
self
.
py_filter_policy
is
None
:
return
None
return
self
.
py_filter_policy
.
get_ob
()
def
__set__
(
self
,
value
):
if
isinstance
(
value
,
PyFilterPolicy
):
if
(
<
PyFilterPolicy
?
>
value
).
get_policy
()
==
NULL
:
raise
Exception
(
"
Cannot set filter policy: %s
"
%
value
)
self
.
py_filter_policy
=
value
else
:
self
.
py_filter_policy
=
PyGenericFilterPolicy
(
value
)
self
.
opts
.
filter_policy
=
self
.
py_filter_policy
.
get_policy
()
property
prefix_extractor
:
def
__get__
(
self
):
if
self
.
py_prefix_extractor
is
None
:
...
...
@@ -1297,8 +1293,8 @@ cdef class DB(object):
if
opts
.
py_comparator
is
not
None
:
opts
.
py_comparator
.
set_info_log
(
info_log
)
if
opts
.
py_
filter_polic
y
is
not
None
:
opts
.
py_
filter_polic
y
.
set_info_log
(
info_log
)
if
opts
.
py_
table_factor
y
is
not
None
:
opts
.
py_
table_factor
y
.
set_info_log
(
info_log
)
if
opts
.
prefix_extractor
is
not
None
:
opts
.
py_prefix_extractor
.
set_info_log
(
info_log
)
...
...
This diff is collapsed.
Click to expand it.
rocksdb/options.pxd
+
0
−
2
View file @
87a7ddfe
...
...
@@ -5,7 +5,6 @@ from libc.stdint cimport uint64_t
from
std_memory
cimport
shared_ptr
from
comparator
cimport
Comparator
from
merge_operator
cimport
MergeOperator
from
filter_policy
cimport
FilterPolicy
from
logger
cimport
Logger
from
slice_
cimport
Slice
from
snapshot
cimport
Snapshot
...
...
@@ -32,7 +31,6 @@ cdef extern from "rocksdb/options.h" namespace "rocksdb":
cdef
cppclass
Options
:
const
Comparator
*
comparator
shared_ptr
[
MergeOperator
]
merge_operator
const
FilterPolicy
*
filter_policy
# TODO: compaction_filter
# TODO: compaction_filter_factory
cpp_bool
create_if_missing
...
...
This diff is collapsed.
Click to expand it.
rocksdb/table_factory.pxd
+
2
−
0
View file @
87a7ddfe
...
...
@@ -3,6 +3,7 @@ from libcpp cimport bool as cpp_bool
from
std_memory
cimport
shared_ptr
from
cache
cimport
Cache
from
filter_policy
cimport
FilterPolicy
cdef
extern
from
"
rocksdb/table.h
"
namespace
"
rocksdb
"
:
cdef
cppclass
TableFactory
:
...
...
@@ -28,6 +29,7 @@ cdef extern from "rocksdb/table.h" namespace "rocksdb":
cpp_bool
whole_key_filtering
shared_ptr
[
Cache
]
block_cache
shared_ptr
[
Cache
]
block_cache_compressed
shared_ptr
[
FilterPolicy
]
filter_policy
cdef
TableFactory
*
NewBlockBasedTableFactory
(
const
BlockBasedTableOptions
&
)
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment