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 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