rocksdb-ruby 0.0.5 → 0.0.6

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: 9d4a29a50778a83f758f3ce02bf456fad90700d6
4
- data.tar.gz: c38fef9d063b4efc8a3bc198c99bcfc94b5ec165
3
+ metadata.gz: 7004e4d2e482db223112f32242d96ac95903eca3
4
+ data.tar.gz: 8c4c17f150b89f4ac103e0cf25efa4248b662db3
5
5
  SHA512:
6
- metadata.gz: e34957be12c20bde777b651a3fbc78745a115ffc7e6b11cdf6a8589dd4646aefb9518e618b8e143428cdaf7092b0a2c8cc3e1cabed2ab2dd5193d11c1dd74380
7
- data.tar.gz: 31881bfefa0ee01bf24f640f7c280cce52b2a4246e65fff61d179fc1438b62588a9619395ece4d4cbc1ef5df2521ef64aebaaac47a7d609285dc7c579c054993
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;
@@ -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);
@@ -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);
@@ -1,5 +1,5 @@
1
1
  module Rocksdb
2
2
  module Ruby
3
- VERSION = "0.0.5"
3
+ VERSION = "0.0.6"
4
4
  end
5
5
  end
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/file3"
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 iterator' do
69
- iterator = @rocksdb.new_iterator
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
- iterator.seek_to_first
72
-
73
- while(iterator.valid)
74
- expect(iterator.value).not_to be_empty
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.5
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-29 00:00:00.000000000 Z
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