@@ -936,6 +936,30 @@ cdef class ColumnFamilyOptions(object):
936
936
if ' max_dict_bytes' in value:
937
937
copts.max_dict_bytes = value[' max_dict_bytes' ]
938
938
939
+ property bottommost_compression_opts :
940
+ def __get__ (self ):
941
+ cdef dict ret_ob = {}
942
+
943
+ ret_ob[' window_bits' ] = self .copts.bottommost_compression_opts.window_bits
944
+ ret_ob[' level' ] = self .copts.bottommost_compression_opts.level
945
+ ret_ob[' strategy' ] = self .copts.bottommost_compression_opts.strategy
946
+ ret_ob[' max_dict_bytes' ] = self .copts.bottommost_compression_opts.max_dict_bytes
947
+
948
+ return ret_ob
949
+
950
+ def __set__ (self , dict value ):
951
+ cdef options.CompressionOptions* copts
952
+ copts = cython.address(self .copts.bottommost_compression_opts)
953
+ # CompressionOptions(int wbits, int _lev, int _strategy, int _max_dict_bytes)
954
+ if ' window_bits' in value:
955
+ copts.window_bits = value[' window_bits' ]
956
+ if ' level' in value:
957
+ copts.level = value[' level' ]
958
+ if ' strategy' in value:
959
+ copts.strategy = value[' strategy' ]
960
+ if ' max_dict_bytes' in value:
961
+ copts.max_dict_bytes = value[' max_dict_bytes' ]
962
+
939
963
property compaction_pri :
940
964
def __get__ (self ):
941
965
if self .copts.compaction_pri == options.kByCompensatedSize:
@@ -1005,6 +1029,53 @@ cdef class ColumnFamilyOptions(object):
1005
1029
else :
1006
1030
raise TypeError (" Unknown compression: %s " % value)
1007
1031
1032
+ property bottommost_compression :
1033
+ def __get__ (self ):
1034
+ if self .copts.bottommost_compression == options.kNoCompression:
1035
+ return CompressionType.no_compression
1036
+ elif self .copts.bottommost_compression == options.kSnappyCompression:
1037
+ return CompressionType.snappy_compression
1038
+ elif self .copts.bottommost_compression == options.kZlibCompression:
1039
+ return CompressionType.zlib_compression
1040
+ elif self .copts.bottommost_compression == options.kBZip2Compression:
1041
+ return CompressionType.bzip2_compression
1042
+ elif self .copts.bottommost_compression == options.kLZ4Compression:
1043
+ return CompressionType.lz4_compression
1044
+ elif self .copts.bottommost_compression == options.kLZ4HCCompression:
1045
+ return CompressionType.lz4hc_compression
1046
+ elif self .copts.bottommost_compression == options.kXpressCompression:
1047
+ return CompressionType.xpress_compression
1048
+ elif self .copts.bottommost_compression == options.kZSTD:
1049
+ return CompressionType.zstd_compression
1050
+ elif self .copts.bottommost_compression == options.kZSTDNotFinalCompression:
1051
+ return CompressionType.zstdnotfinal_compression
1052
+ elif self .copts.bottommost_compression == options.kDisableCompressionOption:
1053
+ return CompressionType.disable_compression
1054
+ else :
1055
+ raise Exception (" Unknonw type: %s " % self .opts.compression)
1056
+
1057
+ def __set__ (self , value ):
1058
+ if value == CompressionType.no_compression:
1059
+ self .copts.bottommost_compression = options.kNoCompression
1060
+ elif value == CompressionType.snappy_compression:
1061
+ self .copts.bottommost_compression = options.kSnappyCompression
1062
+ elif value == CompressionType.zlib_compression:
1063
+ self .copts.bottommost_compression = options.kZlibCompression
1064
+ elif value == CompressionType.bzip2_compression:
1065
+ self .copts.bottommost_compression = options.kBZip2Compression
1066
+ elif value == CompressionType.lz4_compression:
1067
+ self .copts.bottommost_compression = options.kLZ4Compression
1068
+ elif value == CompressionType.lz4hc_compression:
1069
+ self .copts.bottommost_compression = options.kLZ4HCCompression
1070
+ elif value == CompressionType.zstd_compression:
1071
+ self .copts.bottommost_compression = options.kZSTD
1072
+ elif value == CompressionType.zstdnotfinal_compression:
1073
+ self .copts.bottommost_compression = options.kZSTDNotFinalCompression
1074
+ elif value == CompressionType.disable_compression:
1075
+ self .copts.bottommost_compression = options.kDisableCompressionOption
1076
+ else :
1077
+ raise TypeError (" Unknown compression: %s " % value)
1078
+
1008
1079
property max_compaction_bytes :
1009
1080
def __get__ (self ):
1010
1081
return self .copts.max_compaction_bytes
@@ -1294,7 +1365,7 @@ cdef class Options(ColumnFamilyOptions):
1294
1365
def __dealloc__ (self ):
1295
1366
if not self .opts == NULL :
1296
1367
with nogil:
1297
- del self .copts
1368
+ self .copts = NULL
1298
1369
del self .opts
1299
1370
1300
1371
def __init__ (self , **kwargs ):
@@ -1758,7 +1829,7 @@ cdef class DB(object):
1758
1829
cdef ColumnFamilyOptions copts
1759
1830
cdef cpp_bool c_safe = safe
1760
1831
cdef Status st
1761
- if self .db ! = NULL :
1832
+ if not self .db = = NULL :
1762
1833
# We need stop backround compactions
1763
1834
with nogil:
1764
1835
db.CancelAllBackgroundWork(self .db, c_safe)
@@ -1769,11 +1840,12 @@ cdef class DB(object):
1769
1840
if copts:
1770
1841
copts.in_use = False
1771
1842
self .cf_options.clear()
1843
+ if self .opts is not None :
1844
+ self .opts.in_use = False
1845
+ self .opts = None
1772
1846
with nogil:
1773
1847
self .db.Close()
1774
1848
self .db = NULL
1775
- if self .opts is not None :
1776
- self .opts.in_use = False
1777
1849
1778
1850
def __dealloc__ (self ):
1779
1851
self .close()
0 commit comments