Merge branch 'rocksdb5.15'

This commit is contained in:
Martin Boehm 2018-10-16 12:40:09 +02:00
commit 2802bbaeef
3 changed files with 16 additions and 3 deletions

2
Gopkg.lock generated
View File

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

View File

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

View File

@ -1,6 +1,12 @@
package db package db
// #include "rocksdb/c.h"
import "C"
import ( import (
"reflect"
"unsafe"
"github.com/tecbot/gorocksdb" "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 { 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.SetBlockSize(32 << 10) // 32kB
blockOpts.SetBlockCache(c) blockOpts.SetBlockCache(c)
if bloomBits > 0 { if bloomBits > 0 {
blockOpts.SetFilterPolicy(gorocksdb.NewBloomFilter(bloomBits)) blockOpts.SetFilterPolicy(gorocksdb.NewBloomFilter(bloomBits))
} }
C.rocksdb_block_based_options_set_format_version(cNativeBlockOpts, 3)
opts := gorocksdb.NewDefaultOptions() opts := gorocksdb.NewDefaultOptions()
opts.SetBlockBasedTableFactory(blockOpts) opts.SetBlockBasedTableFactory(blockOpts)
opts.SetCreateIfMissing(true) opts.SetCreateIfMissing(true)