rocksdb-ruby 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ext/rocksdb/rocksdb_db_rb.cc +18 -2
- data/ext/rocksdb/rocksdb_db_rb.h +2 -0
- data/ext/rocksdb/rocksdb_rb.cc +2 -0
- data/lib/rocksdb.rb +0 -2
- data/lib/rocksdb/ruby/version.rb +1 -1
- data/spec/db_readonly_spec.rb +4 -3
- data/spec/db_spec.rb +29 -8
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8aa1f09a9b495d585a390e2d9f9b507c7625fcd6
|
4
|
+
data.tar.gz: de210851e6bbe523cdf9b6e4daff413ea001a3b7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 422b1d95ea2f7e5b30eacf6f6a062732b42056dd7fe2c02772cdb26f5c431f841c0f4dd6900e3c129ad03561570f3e8ccd0501cccd791e216e2a65b98a08d961
|
7
|
+
data.tar.gz: 48e951f925ec08807209c40465fac01916eb80faa47a1707f81e4614f6880de0088ba192cc7cb679362de72e6bba5f5c6c39aa5b33c0a0e52617010eae10c0fa
|
@@ -50,7 +50,7 @@ extern "C" {
|
|
50
50
|
rocksdb_pointer* db_pointer;
|
51
51
|
Data_Get_Struct(self, rocksdb_pointer, db_pointer);
|
52
52
|
db_pointer->db = NULL;
|
53
|
-
|
53
|
+
db_pointer->readonly = true;
|
54
54
|
Data_Get_Struct(self, rocksdb_pointer, db_pointer);
|
55
55
|
|
56
56
|
return Qtrue;
|
@@ -317,7 +317,23 @@ extern "C" {
|
|
317
317
|
VALUE rocksdb_db_debug(VALUE self){
|
318
318
|
return Qnil;
|
319
319
|
}
|
320
|
-
|
320
|
+
VALUE rocksdb_db_is_readonly(VALUE self){
|
321
|
+
rocksdb_pointer* db_pointer;
|
322
|
+
Data_Get_Struct(self, rocksdb_pointer, db_pointer);
|
323
|
+
if (db_pointer->readonly) {
|
324
|
+
return Qtrue;
|
325
|
+
}
|
326
|
+
if (!db_pointer->readonly) {
|
327
|
+
return Qfalse;
|
328
|
+
}
|
329
|
+
return Qnil;
|
330
|
+
}
|
331
|
+
VALUE rocksdb_db_is_open(VALUE self){
|
332
|
+
rocksdb_pointer* db_pointer;
|
333
|
+
Data_Get_Struct(self, rocksdb_pointer, db_pointer);
|
334
|
+
return (db_pointer->db == NULL) ? Qfalse : Qtrue;
|
335
|
+
}
|
336
|
+
|
321
337
|
VALUE rocksdb_db_compact(int argc, VALUE* argv, VALUE self) {
|
322
338
|
VALUE v_from, v_to;
|
323
339
|
rocksdb::Slice from, to;
|
data/ext/rocksdb/rocksdb_db_rb.h
CHANGED
@@ -14,6 +14,8 @@ extern "C" {
|
|
14
14
|
VALUE rocksdb_db_exists(VALUE self, VALUE v_key);
|
15
15
|
VALUE rocksdb_db_close(VALUE self);
|
16
16
|
VALUE rocksdb_db_debug(VALUE self);
|
17
|
+
VALUE rocksdb_db_is_readonly(VALUE self);
|
18
|
+
VALUE rocksdb_db_is_open(VALUE self);
|
17
19
|
VALUE rocksdb_db_new_iterator(VALUE self);
|
18
20
|
VALUE rocksdb_db_each(VALUE self);
|
19
21
|
VALUE rocksdb_db_each_index(VALUE self);
|
data/ext/rocksdb/rocksdb_rb.cc
CHANGED
@@ -32,6 +32,8 @@ extern "C" {
|
|
32
32
|
rb_define_method(cRocksdb_db, "debug", (METHOD)rocksdb_db_debug, 0);
|
33
33
|
rb_define_method(cRocksdb_db, "new_iterator", (METHOD)rocksdb_db_new_iterator, 0);
|
34
34
|
rb_define_method(cRocksdb_db, "compact", (METHOD)rocksdb_db_compact, -1);
|
35
|
+
rb_define_method(cRocksdb_db, "is_readonly?", (METHOD)rocksdb_db_is_readonly, 0);
|
36
|
+
rb_define_method(cRocksdb_db, "is_open?", (METHOD)rocksdb_db_is_open, 0);
|
35
37
|
|
36
38
|
rb_define_method(cRocksdb_db, "iterator", (METHOD)rocksdb_db_each, 0);
|
37
39
|
rb_define_method(cRocksdb_db, "each_index", (METHOD)rocksdb_db_each_index, 0);
|
data/lib/rocksdb.rb
CHANGED
@@ -26,12 +26,10 @@ module RocksDB
|
|
26
26
|
def initialize *args
|
27
27
|
readonly = !!(args[1] && args[1][:readonly])
|
28
28
|
@key = args[0]
|
29
|
-
|
30
29
|
if !readonly and @@cache[@key]
|
31
30
|
__initialize2(*args)
|
32
31
|
raise DBError.new("error #{@key.to_s} alread open")
|
33
32
|
end
|
34
|
-
|
35
33
|
__initialize(*args)
|
36
34
|
unless readonly
|
37
35
|
@@cache[@key] = self
|
data/lib/rocksdb/ruby/version.rb
CHANGED
data/spec/db_readonly_spec.rb
CHANGED
@@ -7,15 +7,16 @@ describe RocksDB do
|
|
7
7
|
@rocksdb = RocksDB::DB.new "/tmp/file2"
|
8
8
|
@rocksdb.put("test:multi_db", "1")
|
9
9
|
@rocksdb.close
|
10
|
-
|
11
|
-
@rocksdb2 = RocksDB::DB.new
|
10
|
+
|
11
|
+
@rocksdb2 = RocksDB::DB.new("/tmp/file2", {:readonly => true})
|
12
12
|
end
|
13
13
|
|
14
14
|
it 'should get data' do
|
15
15
|
expect{@rocksdb2.put("test:multi_db", "10")}.to raise_error(RuntimeError)
|
16
16
|
expect{@rocksdb2.delete("test:multi_db")}.to raise_error(RuntimeError)
|
17
17
|
expect(@rocksdb2.get("test:multi_db")).to eq "1"
|
18
|
-
|
18
|
+
expect(@rocksdb2.is_readonly?).to eq true
|
19
|
+
|
19
20
|
batch = RocksDB::Batch.new
|
20
21
|
batch.delete("test:batch1")
|
21
22
|
batch.put("test:batch2", "b")
|
data/spec/db_spec.rb
CHANGED
@@ -4,11 +4,12 @@ require "rocksdb"
|
|
4
4
|
|
5
5
|
describe RocksDB do
|
6
6
|
before do
|
7
|
-
@rocksdb = RocksDB::DB.new
|
7
|
+
@rocksdb = RocksDB::DB.new("/tmp/file")
|
8
8
|
end
|
9
9
|
|
10
10
|
it 'should get data' do
|
11
11
|
@rocksdb.put("test:read", "1")
|
12
|
+
expect(@rocksdb.is_readonly?).to eq false
|
12
13
|
expect(@rocksdb.get("test:read")).to eq "1"
|
13
14
|
end
|
14
15
|
|
@@ -50,8 +51,7 @@ describe RocksDB do
|
|
50
51
|
end
|
51
52
|
|
52
53
|
it 'should use multiple db' do
|
53
|
-
@rocksdb2 = RocksDB::DB.new
|
54
|
-
|
54
|
+
@rocksdb2 = RocksDB::DB.new("/tmp/file2")
|
55
55
|
@rocksdb.put("test:multi_db", "1")
|
56
56
|
@rocksdb2.put("test:multi_db", "2")
|
57
57
|
|
@@ -120,34 +120,55 @@ describe RocksDB do
|
|
120
120
|
key = "test"
|
121
121
|
value = "1"
|
122
122
|
|
123
|
-
expect{RocksDB::DB.new
|
123
|
+
expect{RocksDB::DB.new("/tmp/file")}.to raise_error(RocksDB::DBError)
|
124
124
|
|
125
125
|
expect(@rocksdb.put("test:put", "1")).to be true
|
126
126
|
|
127
|
-
@rocksdb2 = RocksDB::DB.new
|
127
|
+
@rocksdb2 = RocksDB::DB.new("/tmp/file", {:readonly => true})
|
128
|
+
expect(@rocksdb2.is_readonly?).to eq true
|
128
129
|
expect(@rocksdb2.get("test:put")).to eq "1"
|
129
130
|
|
130
131
|
@rocksdb.close
|
131
|
-
|
132
|
+
|
133
|
+
expect(@rocksdb.is_open?).to eq false
|
134
|
+
|
135
|
+
@rocksdb = RocksDB::DB.new("/tmp/file")
|
136
|
+
expect(@rocksdb.is_readonly?).to eq false
|
137
|
+
expect(@rocksdb.is_open?).to eq true
|
132
138
|
expect(@rocksdb.put("test:put", "2")).to be true
|
133
139
|
|
134
|
-
@rocksdb3 = RocksDB::DB.new
|
140
|
+
@rocksdb3 = RocksDB::DB.new("/tmp/file", {:readonly => true})
|
141
|
+
expect(@rocksdb3.is_readonly?).to eq true
|
142
|
+
expect(@rocksdb3.is_open?).to eq true
|
135
143
|
expect(@rocksdb3.get("test:put")).to eq "2"
|
144
|
+
|
145
|
+
@rocksdb2.close
|
146
|
+
@rocksdb3.close
|
136
147
|
|
137
148
|
end
|
138
149
|
|
139
150
|
it 'singleton' do
|
140
151
|
@rocksdb2 = RocksDB::DB.get_instance("/tmp/file")
|
152
|
+
expect(@rocksdb2.is_readonly?).to eq false
|
153
|
+
expect(@rocksdb2.is_open?).to eq true
|
154
|
+
|
141
155
|
@rocksdb3 = RocksDB::DB.get_instance("/tmp/file")
|
156
|
+
expect(@rocksdb3.is_readonly?).to eq false
|
142
157
|
expect(@rocksdb).to eq (@rocksdb3)
|
143
158
|
expect(@rocksdb2).to eq (@rocksdb3)
|
144
159
|
|
145
160
|
@rocksdb4 = RocksDB::DB.get_instance("/tmp/file", {:readonly => true})
|
146
161
|
expect(@rocksdb2).not_to eq (@rocksdb4)
|
147
|
-
|
162
|
+
expect(@rocksdb4.is_readonly?).to eq true
|
163
|
+
expect(@rocksdb4.is_open?).to eq true
|
164
|
+
|
148
165
|
@rocksdb2.close
|
149
166
|
expect{@rocksdb2.get("test:put")}.to raise_error(RuntimeError)
|
167
|
+
expect(@rocksdb2.is_open?).to eq false
|
150
168
|
expect{@rocksdb3.get("test:put")}.to raise_error(RuntimeError)
|
169
|
+
expect(@rocksdb3.is_open?).to eq false
|
170
|
+
|
171
|
+
@rocksdb4.close
|
151
172
|
end
|
152
173
|
|
153
174
|
context 'compact' do
|