rocksdb-ruby 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a3516747ab80e3ed39c598b6c282790b75522da4
4
- data.tar.gz: 721735897c276efa3a67ad636139bec399987b2f
3
+ metadata.gz: 46f12f1cc2ae83812abc436dc6fdb65bdf6da63e
4
+ data.tar.gz: f992fc491b591ed135b0c058532d887516c30f87
5
5
  SHA512:
6
- metadata.gz: e0a62fffed025eaa9fe180029420bfb6ef5c77e74d735638c47875c147ee4c770e7ca73469a5d294b0ba2d1ac86f7f30b30c668383f57205b84b37955b187793
7
- data.tar.gz: 59924a67d6ae19f360fa038a57f3f69124b0f0f2bf84b2f710d7be3425154ed74c5d04d700ed6d875f35e504e041f7dd9ea98acdabd64cdb68d0171df5cce919
6
+ metadata.gz: c86f72482d414946e8811c3132f3619b6746bd6a91e3233a7e81aab6939fd6b21707db83fcdf845494035ace83b917539c261594120ef9e399f5b367981bdad5
7
+ data.tar.gz: 800ed46a8fb0fda34ccb8517abf8d200eb8d8b74d3658550d371fbf2f82638da03c564cdc9278cb9c909a013e16b97026152e939e48c44e073544aeb4c143a42
@@ -0,0 +1,22 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.4.0
4
+ script: bundle exec rake spec || ( cat ext/rocksdb/mkmf.log && /bin/false )
5
+
6
+ before_install:
7
+ - sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
8
+ - sudo apt-get update -qq
9
+ - sudo apt-get install gcc-6 g++-6 libsnappy-dev zlib1g-dev libbz2-dev -qq
10
+ - export CXX="g++-6" CC="gcc-6"
11
+ - sudo ln -s /usr/bin/gcc-6 /usr/local/bin/gcc
12
+ - sudo ln -s /usr/bin/g++-6 /usr/local/bin/g++
13
+ - gem install bundler
14
+
15
+ install:
16
+ - git clone https://github.com/facebook/rocksdb.git /tmp/rocksdb
17
+ - pushd /tmp/rocksdb
18
+ - make clean
19
+ - make shared_lib
20
+ - popd
21
+ - export ROCKSDB_RUBY_BUILD_PARAMS="--with-rocksdb-dir=/tmp/rocksdb --with-rocksdb-lib=/tmp/rocksdb"
22
+ - bundle install
@@ -1,4 +1,4 @@
1
- Copyright (c) 2013 Isamu Arimoto
1
+ Copyright (c) 2013-2016 Isamu Arimoto
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -1,3 +1,6 @@
1
+ [![Build Status](https://travis-ci.org/isamu/rocksdb-ruby.svg)](https://travis-ci.org/isamu/rocksdb-ruby)
2
+ [![Gem Version](https://badge.fury.io/rb/rocksdb-ruby.svg)](https://badge.fury.io/rb/rocksdb-ruby)
3
+
1
4
  # RocksDB
2
5
 
3
6
  The rocksdb is a persistent in-process key-value store.
data/Rakefile CHANGED
@@ -5,7 +5,7 @@ require "rspec/core/rake_task"
5
5
  RSpec::Core::RakeTask.new('spec')
6
6
  task :build do
7
7
  Dir.chdir('ext/rocksdb/') do
8
- output = `ruby extconf.rb`
8
+ output = `ruby extconf.rb #{ENV['ROCKSDB_RUBY_BUILD_PARAMS']}`
9
9
  raise output unless $? == 0
10
10
  output = `make`
11
11
  raise output unless $? == 0
@@ -62,7 +62,6 @@ extern "C" {
62
62
 
63
63
  void set_opt(rocksdb::Options* options, VALUE *v_options){
64
64
  set_opt_unit_val(&options->max_bytes_for_level_base, (char *) "max_bytes_for_level_base", v_options);
65
- set_opt_int_val(&options->max_grandparent_overlap_factor, (char *) "max_grandparent_overlap_factor", v_options);
66
65
  set_opt_unit_val(&options->delete_obsolete_files_period_micros, (char *) "delete_obsolete_files_period_micros", v_options);
67
66
  }
68
67
 
@@ -268,4 +267,26 @@ extern "C" {
268
267
  VALUE rocksdb_db_debug(VALUE self){
269
268
  return Qnil;
270
269
  }
270
+
271
+ VALUE rocksdb_db_compact(int argc, VALUE* argv, VALUE self) {
272
+ VALUE v_from, v_to;
273
+ rocksdb::Slice from, to;
274
+
275
+ rb_scan_args(argc, argv, "02", &v_from, &v_to);
276
+
277
+ if(!NIL_P(v_from)) {
278
+ Check_Type(v_from, T_STRING);
279
+ from = rocksdb::Slice((char*)RSTRING_PTR(v_from), RSTRING_LEN(v_from));
280
+ }
281
+
282
+ if(!NIL_P(v_to)) {
283
+ Check_Type(v_to, T_STRING);
284
+ to = rocksdb::Slice((char*)RSTRING_PTR(v_to), RSTRING_LEN(v_to));
285
+ }
286
+
287
+ rocksdb_pointer* db_pointer;
288
+ Data_Get_Struct(self, rocksdb_pointer, db_pointer);
289
+ rocksdb::Status status = db_pointer->db->CompactRange(rocksdb::CompactRangeOptions(), &from, &to);
290
+ return status.ok() ? Qtrue : Qfalse;
291
+ }
271
292
  }
@@ -18,6 +18,7 @@ extern "C" {
18
18
  VALUE rocksdb_db_each_index(VALUE self);
19
19
  VALUE rocksdb_db_each_with_index(VALUE self);
20
20
  VALUE rocksdb_db_reverse_each(VALUE self);
21
+ VALUE rocksdb_db_compact(int argc, VALUE* argv, VALUE self);
21
22
  void db_free(rocksdb_pointer* db_pointer);
22
23
  void set_opt(rocksdb::Options* opt, VALUE *v_options);
23
24
  void set_opt_unit_val(uint64_t* opt, char* name, VALUE *v_options);
@@ -30,6 +30,7 @@ extern "C" {
30
30
  rb_define_method(cRocksdb_db, "close", (METHOD)rocksdb_db_close, 0);
31
31
  rb_define_method(cRocksdb_db, "debug", (METHOD)rocksdb_db_debug, 0);
32
32
  rb_define_method(cRocksdb_db, "new_iterator", (METHOD)rocksdb_db_new_iterator, 0);
33
+ rb_define_method(cRocksdb_db, "compact", (METHOD)rocksdb_db_compact, -1);
33
34
 
34
35
  rb_define_method(cRocksdb_db, "iterator", (METHOD)rocksdb_db_each, 0);
35
36
  rb_define_method(cRocksdb_db, "each_index", (METHOD)rocksdb_db_each_index, 0);
@@ -1,5 +1,5 @@
1
1
  module Rocksdb
2
2
  module Ruby
3
- VERSION = "0.1.4"
3
+ VERSION = "0.1.5"
4
4
  end
5
5
  end
@@ -0,0 +1,40 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'spec_helper'
3
+ require "rocksdb"
4
+
5
+ describe RocksDB do
6
+ before do
7
+ @rocksdb = RocksDB::DB.new "/tmp/file"
8
+ end
9
+
10
+ it 'should get null contained data' do
11
+ @aaa = "aa\0aa"
12
+
13
+ @rocksdb.put("test:null", @aaa)
14
+ expect(@rocksdb.get("test:null")).to eq "aa\0aa"
15
+ end
16
+
17
+ it 'should get from null contained key' do
18
+ @key = "test:aa\0aa"
19
+ @rocksdb.put(@key, "aaa")
20
+ expect(@rocksdb.get(@key)).to eq "aaa"
21
+
22
+ @key = "test:aa"
23
+ expect(@rocksdb.get(@key)).to eq nil
24
+
25
+ end
26
+
27
+ it 'should get multi data' do
28
+ @rocksdb.put("test:nullmulti1\0a", "a\01")
29
+ @rocksdb.put("test:nullmulti2\0a", "b\02")
30
+ @rocksdb.put("test:nullmulti3\0a", "c\03")
31
+
32
+ expect(@rocksdb.multi_get(["test:nullmulti1\0a", "test:nullmulti2\0a", "test:nullmulti3\0a"])).to eq ["a\01", "b\02", "c\03"]
33
+ expect(@rocksdb.multi_get(["test:nullmulti1", "test:nullmulti2", "test:nullmulti3"])).to eq ["", "", ""]
34
+ end
35
+
36
+ after do
37
+ @rocksdb.close
38
+ end
39
+
40
+ end
@@ -115,6 +115,24 @@ describe RocksDB do
115
115
  expect(@rocksdb["test:hash"]).to eq "a"
116
116
 
117
117
  end
118
+
119
+ context 'compact' do
120
+ it 'works with no parameters' do
121
+ expect(@rocksdb.compact).to eq(true)
122
+ end
123
+
124
+ it 'works with one parameter' do
125
+ expect(@rocksdb.compact('a')).to eq(true)
126
+ end
127
+
128
+ it 'works with two parameters' do
129
+ expect(@rocksdb.compact('a', 'x')).to eq(true)
130
+ end
131
+
132
+ it 'works with nil as first parameter' do
133
+ expect(@rocksdb.compact(nil, 'x')).to eq(true)
134
+ end
135
+ end
118
136
 
119
137
  after do
120
138
  @rocksdb.close
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rocksdb-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Isamu Arimoto
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-08 00:00:00.000000000 Z
11
+ date: 2018-06-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -61,6 +61,7 @@ extensions:
61
61
  extra_rdoc_files: []
62
62
  files:
63
63
  - ".gitignore"
64
+ - ".travis.yml"
64
65
  - Gemfile
65
66
  - LICENSE.txt
66
67
  - README.md
@@ -80,6 +81,7 @@ files:
80
81
  - lib/rocksdb/ruby.rb
81
82
  - lib/rocksdb/ruby/version.rb
82
83
  - rocksdb-ruby.gemspec
84
+ - spec/db_null_spec.rb
83
85
  - spec/db_options_spec.rb
84
86
  - spec/db_readonly_spec.rb
85
87
  - spec/db_spec.rb
@@ -111,6 +113,7 @@ signing_key:
111
113
  specification_version: 4
112
114
  summary: A simple RocksDB library for Ruby
113
115
  test_files:
116
+ - spec/db_null_spec.rb
114
117
  - spec/db_options_spec.rb
115
118
  - spec/db_readonly_spec.rb
116
119
  - spec/db_spec.rb