Bump rocksdb to version 5.15.10 and use data format version 3

pull/76/head
Martin Boehm 2018-10-14 00:29:05 +02:00
parent f579b97502
commit d369242b48
3 changed files with 16 additions and 3 deletions

2
Gopkg.lock generated
View File

@ -167,7 +167,7 @@
branch = "master"
name = "github.com/tecbot/gorocksdb"
packages = ["."]
revision = "3e476152774442234f9a9f747386a48a1d82a515"
revision = "214b6b7bc0f06812ab5602fdc502a3e619916f38"
[[projects]]
branch = "master"

View File

@ -10,7 +10,7 @@ RUN apt-get update && \
apt-get clean
ENV GOLANG_VERSION=go1.10.linux-amd64
ENV ROCKSDB_VERSION=rocksdb-5.14.3
ENV ROCKSDB_VERSION=v5.15.10
ENV GOPATH=/go
ENV PATH=$PATH:$GOPATH/bin
ENV CGO_CFLAGS="-I/opt/rocksdb/include"

View File

@ -1,6 +1,12 @@
package db
// #include "rocksdb/c.h"
import "C"
import (
"reflect"
"unsafe"
"github.com/tecbot/gorocksdb"
)
@ -39,12 +45,19 @@ func boolToChar(b bool) C.uchar {
*/
func createAndSetDBOptions(bloomBits int, c *gorocksdb.Cache, maxOpenFiles int) *gorocksdb.Options {
blockOpts := gorocksdb.NewDefaultBlockBasedTableOptions()
// blockOpts := gorocksdb.NewDefaultBlockBasedTableOptions()
cNativeBlockOpts := C.rocksdb_block_based_options_create()
blockOpts := &gorocksdb.BlockBasedTableOptions{}
cBlockField := reflect.Indirect(reflect.ValueOf(blockOpts)).FieldByName("c")
cBlockPtr := (**C.rocksdb_block_based_table_options_t)(unsafe.Pointer(cBlockField.UnsafeAddr()))
*cBlockPtr = cNativeBlockOpts
blockOpts.SetBlockSize(32 << 10) // 32kB
blockOpts.SetBlockCache(c)
if bloomBits > 0 {
blockOpts.SetFilterPolicy(gorocksdb.NewBloomFilter(bloomBits))
}
C.rocksdb_block_based_options_set_format_version(cNativeBlockOpts, 3)
opts := gorocksdb.NewDefaultOptions()
opts.SetBlockBasedTableFactory(blockOpts)
opts.SetCreateIfMissing(true)