func (db *DB) Open(name string, createIfMissing bool, maxOpenFiles int, writeBufSize int, cacheSize int64, compression int) error { db.opt = C.rocksdb_options_create() C.rocksdb_options_set_create_if_missing(db.opt, boolToUchar(createIfMissing)) C.rocksdb_options_set_write_buffer_size(db.opt, C.size_t(writeBufSize)) C.rocksdb_options_set_max_open_files(db.opt, C.int(maxOpenFiles)) C.rocksdb_options_set_compression(db.opt, C.int(compression)) var block_options = C.rocksdb_block_based_options_create() if cacheSize > 0 { db.cache = C.rocksdb_cache_create_lru(C.size_t(cacheSize)) C.rocksdb_block_based_options_set_block_cache(block_options, db.cache) } else { C.rocksdb_block_based_options_set_no_block_cache(block_options, 1) } db.fp = C.rocksdb_filterpolicy_create_bloom(10) C.rocksdb_block_based_options_set_filter_policy(block_options, db.fp) C.rocksdb_options_set_block_based_table_factory(db.opt, block_options) cname := C.CString(name) defer C.free(unsafe.Pointer(cname)) var errStr *C.char db.db = C.rocksdb_open(db.opt, cname, &errStr) if errStr != nil { defer C.free(unsafe.Pointer(errStr)) return errors.New(C.GoString(errStr)) } db.rOpt = C.rocksdb_readoptions_create() db.wOpt = C.rocksdb_writeoptions_create() return nil }
// createOptions sets the default options for creating, reading, and writing // from the db. destroyOptions should be called when the options aren't needed // anymore. func (r *RocksDB) createOptions() { // TODO(andybons): Set the cache size. r.opts = C.rocksdb_options_create() C.rocksdb_options_set_create_if_missing(r.opts, 1) r.wOpts = C.rocksdb_writeoptions_create() r.rOpts = C.rocksdb_readoptions_create() }
// createOptions sets the default options for creating, reading, and writing // from the db. destroyOptions should be called when the options aren't needed // anymore. func (r *RocksDB) createOptions() { // TODO(andybons): Set the cache size. r.opts = C.rocksdb_options_create() C.rocksdb_options_set_create_if_missing(r.opts, 1) // This enables us to use rocksdb_merge with counter semantics. // See rocksdb.{c,h} for the C implementation. r.mergeOperator = C.MakeMergeOperator() C.rocksdb_options_set_merge_operator(r.opts, r.mergeOperator) r.wOpts = C.rocksdb_writeoptions_create() r.rOpts = C.rocksdb_readoptions_create() }
// createOptions sets the default options for creating, reading, and writing // from the db. destroyOptions should be called when the options aren't needed // anymore. func (r *RocksDB) createOptions() { // TODO(andybons): Set the cache size. r.opts = C.rocksdb_options_create() C.rocksdb_options_set_create_if_missing(r.opts, 1) // This enables us to use rocksdb_merge with counter semantics. // See rocksdb.{c,h} for the C implementation. r.mergeOperator = C.make_merge_operator() C.rocksdb_options_set_merge_operator(r.opts, r.mergeOperator) // This enables garbage collection of transaction and response cache rows. r.compactionFilterFactory = C.make_gc_compaction_filter_factory(unsafe.Pointer(r)) C.rocksdb_options_set_compaction_filter_factory(r.opts, r.compactionFilterFactory) r.wOpts = C.rocksdb_writeoptions_create() r.rOpts = C.rocksdb_readoptions_create() }
// NewWriteOptions allocates a new WriteOptions object. func NewWriteOptions() *WriteOptions { opt := C.rocksdb_writeoptions_create() return &WriteOptions{opt} }
// NewDefaultWriteOptions creates a default WriteOptions object. func NewDefaultWriteOptions() *WriteOptions { return NewNativeWriteOptions(C.rocksdb_writeoptions_create()) }
// NewWriteOptions creates a default WriteOptions object. func NewWriteOptions() *WriteOptions { return newNativeWriteOptions(C.rocksdb_writeoptions_create()) }