Change prefix_extractor to smart-pointer instead of raw

This commit is contained in:
hofmockel 2014-04-01 21:24:18 +02:00
parent 82b88db21b
commit 098f9578d6
4 changed files with 24 additions and 19 deletions

View file

@ -1,6 +1,14 @@
Changelog Changelog
********* *********
Upcoming Version
----------------
Target is to work with the next version of rocksdb.
* Fixed `issue 3 <https://github.com/stephan-hof/pyrocksdb/pull/3>`_.
Which fixed the change of prefix_extractor from raw-pointer to smart-pointer
Version 0.1 Version 0.1
----------- -----------

View file

@ -13,8 +13,6 @@ For more details consider https://github.com/facebook/rocksdb/blob/master/INSTAL
$ apt-get install libsnappy-dev zlib1g-dev libbz2-dev libgflags-dev $ apt-get install libsnappy-dev zlib1g-dev libbz2-dev libgflags-dev
$ git clone https://github.com/facebook/rocksdb.git $ git clone https://github.com/facebook/rocksdb.git
$ cd rocksdb $ cd rocksdb
$ # It is tested with this version
$ git checkout 2.7.fb
$ make librocksdb.so $ make librocksdb.so
If you do not want to call ``make install`` export the following enviroment If you do not want to call ``make install`` export the following enviroment
@ -34,4 +32,4 @@ Building pyrocksdb
$ cd pyrocks_test $ cd pyrocks_test
$ . bin/active $ . bin/active
$ pip install "Cython>=0.20" $ pip install "Cython>=0.20"
$ pip install git+git://github.com/stephan-hof/pyrocksdb.git@v0.1 $ pip install git+git://github.com/stephan-hof/pyrocksdb.git

View file

@ -462,34 +462,33 @@ LRUCache = PyLRUCache
### Here comes the stuff for SliceTransform ### Here comes the stuff for SliceTransform
@cython.internal @cython.internal
cdef class PySliceTransform(object): cdef class PySliceTransform(object):
cdef slice_transform.SliceTransformWrapper* transfomer cdef shared_ptr[slice_transform.SliceTransform] transfomer
cdef object ob cdef object ob
def __cinit__(self, object ob): def __cinit__(self, object ob):
self.transfomer = NULL
if not isinstance(ob, ISliceTransform): if not isinstance(ob, ISliceTransform):
raise TypeError("%s is not of type %s" % (ob, ISliceTransform)) raise TypeError("%s is not of type %s" % (ob, ISliceTransform))
self.ob = ob self.ob = ob
self.transfomer = new slice_transform.SliceTransformWrapper( self.transfomer.reset(
bytes_to_string(ob.name()), <slice_transform.SliceTransform*>
<void*>ob, new slice_transform.SliceTransformWrapper(
slice_transform_callback, bytes_to_string(ob.name()),
slice_in_domain_callback, <void*>ob,
slice_in_range_callback) slice_transform_callback,
slice_in_domain_callback,
def __dealloc__(self): slice_in_range_callback))
if not self.transfomer == NULL:
del self.transfomer
cdef object get_ob(self): cdef object get_ob(self):
return self.ob return self.ob
cdef slice_transform.SliceTransform* get_transformer(self): cdef shared_ptr[slice_transform.SliceTransform] get_transformer(self):
return <slice_transform.SliceTransform*> self.transfomer return self.transfomer
cdef set_info_log(self, shared_ptr[logger.Logger] info_log): cdef set_info_log(self, shared_ptr[logger.Logger] info_log):
self.transfomer.set_info_log(info_log) cdef slice_transform.SliceTransformWrapper* ptr
ptr = <slice_transform.SliceTransformWrapper*> self.transfomer.get()
ptr.set_info_log(info_log)
cdef Slice slice_transform_callback( cdef Slice slice_transform_callback(

View file

@ -45,7 +45,7 @@ cdef extern from "rocksdb/options.h" namespace "rocksdb":
CompressionType compression CompressionType compression
# TODO: compression_per_level # TODO: compression_per_level
# TODO: compression_opts # TODO: compression_opts
SliceTransform* prefix_extractor shared_ptr[SliceTransform] prefix_extractor
cpp_bool whole_key_filtering cpp_bool whole_key_filtering
int num_levels int num_levels
int level0_file_num_compaction_trigger int level0_file_num_compaction_trigger