rocksdb-ruby 0.0.5 → 0.0.6
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 +42 -0
- data/ext/rocksdb/rocksdb_db_rb.h +3 -0
- data/ext/rocksdb/rocksdb_iterator_rb.cc +20 -0
- data/ext/rocksdb/rocksdb_iterator_rb.h +2 -0
- data/ext/rocksdb/rocksdb_rb.cc +5 -0
- data/lib/rocksdb/ruby/version.rb +1 -1
- data/spec/db_spec.rb +15 -11
- data/spec/iterator_spec.rb +39 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7004e4d2e482db223112f32242d96ac95903eca3
|
4
|
+
data.tar.gz: 8c4c17f150b89f4ac103e0cf25efa4248b662db3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c0fbfd343a345996ef5f399f3de46e4947a1d3d9133ad067ad54e3c77b6f599e77afd3655506ba48d0d6366066d9b2bc46e2d9a3f9f05aa11c6438cdb7b68f4c
|
7
|
+
data.tar.gz: e598affdc5c818af3e9ad5644000d68da9bea2bc079d19c2353b3dad4601f6e601c435a015a7760d56d2a7d88ee96491e671cdc6cef2ea2406a297f70b219a15
|
@@ -131,6 +131,48 @@ extern "C" {
|
|
131
131
|
return klass;
|
132
132
|
}
|
133
133
|
|
134
|
+
|
135
|
+
VALUE rocksdb_db_each(VALUE self){
|
136
|
+
rocksdb_pointer* db_pointer;
|
137
|
+
Data_Get_Struct(self, rocksdb_pointer, db_pointer);
|
138
|
+
rocksdb::Iterator* it = db_pointer->db->NewIterator(rocksdb::ReadOptions());
|
139
|
+
|
140
|
+
long i;
|
141
|
+
volatile VALUE ary = rb_ary_new();
|
142
|
+
|
143
|
+
i = 0;
|
144
|
+
for (it->SeekToFirst(); it->Valid(); it->Next()) {
|
145
|
+
VALUE v = rb_enc_str_new(it->value().data(), it->value().size(), rb_utf8_encoding());
|
146
|
+
rb_ary_store(ary, i, v);
|
147
|
+
rb_yield(RARRAY_PTR(ary)[i]);
|
148
|
+
i++;
|
149
|
+
}
|
150
|
+
delete it;
|
151
|
+
|
152
|
+
return ary;
|
153
|
+
}
|
154
|
+
|
155
|
+
VALUE rocksdb_db_reverse_each(VALUE self){
|
156
|
+
rocksdb_pointer* db_pointer;
|
157
|
+
Data_Get_Struct(self, rocksdb_pointer, db_pointer);
|
158
|
+
rocksdb::Iterator* it = db_pointer->db->NewIterator(rocksdb::ReadOptions());
|
159
|
+
|
160
|
+
long i;
|
161
|
+
volatile VALUE ary = rb_ary_new();
|
162
|
+
|
163
|
+
i = 0;
|
164
|
+
for (it->SeekToLast(); it->Valid(); it->Prev()) {
|
165
|
+
VALUE v = rb_enc_str_new(it->value().data(), it->value().size(), rb_utf8_encoding());
|
166
|
+
rb_ary_store(ary, i, v);
|
167
|
+
rb_yield(RARRAY_PTR(ary)[i]);
|
168
|
+
i++;
|
169
|
+
}
|
170
|
+
delete it;
|
171
|
+
|
172
|
+
return ary;
|
173
|
+
|
174
|
+
}
|
175
|
+
|
134
176
|
VALUE rocksdb_db_debug(VALUE self){
|
135
177
|
|
136
178
|
rocksdb_pointer* db_pointer;
|
data/ext/rocksdb/rocksdb_db_rb.h
CHANGED
@@ -13,5 +13,8 @@ extern "C" {
|
|
13
13
|
VALUE rocksdb_db_close(VALUE self);
|
14
14
|
VALUE rocksdb_db_debug(VALUE self);
|
15
15
|
VALUE rocksdb_db_new_iterator(VALUE self);
|
16
|
+
VALUE rocksdb_db_each(VALUE self);
|
17
|
+
VALUE rocksdb_db_each_index(VALUE self);
|
18
|
+
VALUE rocksdb_db_reverse_each(VALUE self);
|
16
19
|
|
17
20
|
}
|
@@ -13,6 +13,26 @@ extern "C" {
|
|
13
13
|
|
14
14
|
return Qnil;
|
15
15
|
}
|
16
|
+
|
17
|
+
VALUE rocksdb_iterator_seek_to_last(VALUE klass){
|
18
|
+
rocksdb_iterator_pointer* rocksdb_it;
|
19
|
+
Data_Get_Struct(klass, rocksdb_iterator_pointer , rocksdb_it);
|
20
|
+
rocksdb_it->it->SeekToLast();
|
21
|
+
|
22
|
+
return Qnil;
|
23
|
+
}
|
24
|
+
|
25
|
+
VALUE rocksdb_iterator_seek(VALUE klass, VALUE v_target){
|
26
|
+
Check_Type(v_target, T_STRING);
|
27
|
+
rocksdb::Slice target = rocksdb::Slice((char*)RSTRING_PTR(v_target));
|
28
|
+
|
29
|
+
rocksdb_iterator_pointer* rocksdb_it;
|
30
|
+
Data_Get_Struct(klass, rocksdb_iterator_pointer , rocksdb_it);
|
31
|
+
rocksdb_it->it->Seek(target);
|
32
|
+
|
33
|
+
return Qnil;
|
34
|
+
}
|
35
|
+
|
16
36
|
VALUE rocksdb_iterator_alloc(VALUE klass){
|
17
37
|
rocksdb_iterator_pointer* it = ALLOC(rocksdb_iterator_pointer);
|
18
38
|
return Data_Wrap_Struct(klass, 0, -1, it);
|
@@ -8,6 +8,8 @@ extern "C" {
|
|
8
8
|
typedef VALUE (*METHOD)(...);
|
9
9
|
|
10
10
|
VALUE rocksdb_iterator_seek_to_first(VALUE klass);
|
11
|
+
VALUE rocksdb_iterator_seek_to_last(VALUE klass);
|
12
|
+
VALUE rocksdb_iterator_seek(VALUE klass, VALUE v_target);
|
11
13
|
VALUE rocksdb_iterator_alloc(VALUE klass);
|
12
14
|
VALUE rocksdb_iterator_valid(VALUE klass);
|
13
15
|
VALUE rocksdb_iterator_key(VALUE klass);
|
data/ext/rocksdb/rocksdb_rb.cc
CHANGED
@@ -30,6 +30,9 @@ extern "C" {
|
|
30
30
|
rb_define_method(cRocksdb_db, "debug", (METHOD)rocksdb_db_debug, 0);
|
31
31
|
rb_define_method(cRocksdb_db, "new_iterator", (METHOD)rocksdb_db_new_iterator, 0);
|
32
32
|
|
33
|
+
rb_define_method(cRocksdb_db, "each", (METHOD)rocksdb_db_each, 0);
|
34
|
+
rb_define_method(cRocksdb_db, "reverse_each", (METHOD)rocksdb_db_reverse_each, 0);
|
35
|
+
|
33
36
|
cRocksdb_write_batch = rb_define_class_under(cRocksdb, "Batch", rb_cObject);
|
34
37
|
rb_define_alloc_func(cRocksdb_write_batch, batch_alloc);
|
35
38
|
rb_define_private_method(cRocksdb_write_batch, "initialize", (METHOD)rocksdb_write_batch_init, 0);
|
@@ -39,6 +42,8 @@ extern "C" {
|
|
39
42
|
cRocksdb_iterator = rb_define_class_under(cRocksdb, "Iterator", rb_cObject);
|
40
43
|
rb_define_alloc_func(cRocksdb_iterator, rocksdb_iterator_alloc);
|
41
44
|
rb_define_method(cRocksdb_iterator, "seek_to_first", (METHOD)rocksdb_iterator_seek_to_first, 0);
|
45
|
+
rb_define_method(cRocksdb_iterator, "seek_to_last", (METHOD)rocksdb_iterator_seek_to_last, 0);
|
46
|
+
rb_define_method(cRocksdb_iterator, "seek", (METHOD)rocksdb_iterator_seek, 1);
|
42
47
|
rb_define_method(cRocksdb_iterator, "valid", (METHOD)rocksdb_iterator_valid, 0);
|
43
48
|
rb_define_method(cRocksdb_iterator, "key", (METHOD)rocksdb_iterator_key, 0);
|
44
49
|
rb_define_method(cRocksdb_iterator, "value", (METHOD)rocksdb_iterator_value, 0);
|
data/lib/rocksdb/ruby/version.rb
CHANGED
data/spec/db_spec.rb
CHANGED
@@ -4,7 +4,7 @@ require "RocksDB"
|
|
4
4
|
|
5
5
|
describe RocksDB do
|
6
6
|
before do
|
7
|
-
@rocksdb = RocksDB::DB.new "/tmp/
|
7
|
+
@rocksdb = RocksDB::DB.new "/tmp/file"
|
8
8
|
end
|
9
9
|
|
10
10
|
it 'should get data' do
|
@@ -65,19 +65,23 @@ describe RocksDB do
|
|
65
65
|
expect(@rocksdb.get("test:japanese")).to eq "あいうえお"
|
66
66
|
end
|
67
67
|
|
68
|
-
it 'should use
|
69
|
-
|
68
|
+
it 'should use each' do
|
69
|
+
array = []
|
70
|
+
@rocksdb.each do |value|
|
71
|
+
expect(value).not_to be_empty
|
72
|
+
array << value
|
73
|
+
end
|
70
74
|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
expect(iterator.key).not_to be_empty
|
76
|
-
iterator.next
|
75
|
+
rev_array = []
|
76
|
+
@rocksdb.reverse_each do |value|
|
77
|
+
expect(value).not_to be_empty
|
78
|
+
rev_array << value
|
77
79
|
end
|
78
|
-
iterator.close
|
79
|
-
end
|
80
80
|
|
81
|
+
expect(array).to eq rev_array.reverse
|
82
|
+
|
83
|
+
end
|
84
|
+
|
81
85
|
after do
|
82
86
|
@rocksdb.close
|
83
87
|
end
|
@@ -0,0 +1,39 @@
|
|
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 use iterator' do
|
11
|
+
iterator = @rocksdb.new_iterator
|
12
|
+
|
13
|
+
iterator.seek_to_first
|
14
|
+
|
15
|
+
expect(iterator.valid).to be_true
|
16
|
+
while(iterator.valid)
|
17
|
+
expect(iterator.value).not_to be_empty
|
18
|
+
expect(iterator.key).not_to be_empty
|
19
|
+
iterator.next
|
20
|
+
end
|
21
|
+
iterator.close
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'should seek iterator' do
|
25
|
+
iterator = @rocksdb.new_iterator
|
26
|
+
|
27
|
+
iterator.seek("test:put")
|
28
|
+
|
29
|
+
iterator.valid
|
30
|
+
expect(iterator.value).to eq "2"
|
31
|
+
expect(iterator.key).to eq "test:put"
|
32
|
+
|
33
|
+
iterator.close
|
34
|
+
end
|
35
|
+
|
36
|
+
after do
|
37
|
+
@rocksdb.close
|
38
|
+
end
|
39
|
+
end
|
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.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Isamu Arimoto
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-11-
|
11
|
+
date: 2013-11-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -80,6 +80,7 @@ files:
|
|
80
80
|
- lib/rocksdb/ruby/version.rb
|
81
81
|
- rocksdb-ruby.gemspec
|
82
82
|
- spec/db_spec.rb
|
83
|
+
- spec/iterator_spec.rb
|
83
84
|
- spec/spec_helper.rb
|
84
85
|
homepage: https://github.com/isamu/rocksdb-ruby
|
85
86
|
licenses:
|
@@ -108,4 +109,5 @@ specification_version: 4
|
|
108
109
|
summary: A simple RocksDB library for Ruby
|
109
110
|
test_files:
|
110
111
|
- spec/db_spec.rb
|
112
|
+
- spec/iterator_spec.rb
|
111
113
|
- spec/spec_helper.rb
|