hbase-jruby 0.5.1-java → 0.6.0-java
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/CHANGELOG.md +14 -0
- data/README.md +22 -25
- data/lib/hbase-jruby/dependency.rb +1 -0
- data/lib/hbase-jruby/pom/pom.xml.erb +2 -2
- data/lib/hbase-jruby/scoped.rb +16 -13
- data/lib/hbase-jruby/table/batch_action.rb +0 -5
- data/lib/hbase-jruby/version.rb +1 -1
- data/test/test_hbase.rb +3 -0
- data/test/test_schema.rb +15 -22
- data/test/test_scoped.rb +1 -1
- data/test/test_table.rb +35 -53
- data/test/test_table_admin.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 156f951a80f9417d27674a2056eb3f71ed17329c
|
4
|
+
data.tar.gz: 5fa71d8f88ba39badc690da581f2ccc64a5ca7f3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7a21f92d008748eca8c1c333721939356092770a0425891fa1f575d5bac14a3c4b0570f843f0ea2ce31fdd5dc58b4b5b2576330446622e9046f5abcaa497989a
|
7
|
+
data.tar.gz: 4f6f2bf84a19fc129bd5d4263e87d3344a9199c60734a5b95d2d3ec476fe54c9433b573a7837767df3c826b47eb1e744fc65d61972f4ca5a2123269f8b7a86cb
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,20 @@
|
|
1
1
|
Changelog
|
2
2
|
=========
|
3
3
|
|
4
|
+
0.6.0
|
5
|
+
-----
|
6
|
+
|
7
|
+
0.6.0 includes a few backward-incompatible changes.
|
8
|
+
|
9
|
+
- Default number of versions for a scan or get is now changed to 1 to match Java API
|
10
|
+
- Make sure to set versions to `:all` if you're calling `to_H` or plural datatype methods
|
11
|
+
- `scoped.versions(:all).to_H`
|
12
|
+
- `scoped.versions(:all).strings('d:title')`
|
13
|
+
- Removed `HBase::Table::BatchAction#mutate` method
|
14
|
+
- RowMutation is not allowed in `HBase::Table#batch`
|
15
|
+
- https://issues.apache.org/jira/browse/HBASE-11421
|
16
|
+
- Added CDH5.1 dependency profile
|
17
|
+
|
4
18
|
0.5.1
|
5
19
|
-----
|
6
20
|
- Fixed `Table#aggregate` for HBase 0.98 or above
|
data/README.md
CHANGED
@@ -96,7 +96,7 @@ table.put 1,
|
|
96
96
|
price: BigDecimal('21.50'),
|
97
97
|
weight: 3.0,
|
98
98
|
in_print: true,
|
99
|
-
image: File.open('thumbnail.png', 'rb') { |f| f.read }.to_java_bytes,
|
99
|
+
image: File.open('thumbnail.png', 'rb') { | f | f.read }.to_java_bytes,
|
100
100
|
summary: 'A wide-ranging, comparative study of mythology and religion',
|
101
101
|
reviews: 52,
|
102
102
|
stars: 226,
|
@@ -123,7 +123,7 @@ table.range(0..100)
|
|
123
123
|
category: ['Comics', 'Fiction', /cult/i],
|
124
124
|
price: { lt: BigDecimal('30.00') },
|
125
125
|
summary: /myth/i)
|
126
|
-
.each do
|
126
|
+
.each do | book |
|
127
127
|
|
128
128
|
# Update columns
|
129
129
|
table.put book.rowkey, price: book[:price] + BigDecimal('1')
|
@@ -152,21 +152,22 @@ or by `require`ing relevant JAR files after launching JRuby.
|
|
152
152
|
Well, there's an easier way.
|
153
153
|
Call `HBase.resolve_dependency!` helper method passing one of the arguments listed below.
|
154
154
|
|
155
|
-
| Argument | Dependency | Default version | Required executable |
|
156
|
-
| ---------- | ------------------------ | --------------- | ------------------- |
|
157
|
-
| cdh5.
|
158
|
-
|
|
159
|
-
| cdh4.
|
160
|
-
| cdh4.
|
161
|
-
| cdh4.
|
162
|
-
| cdh4.
|
163
|
-
|
|
164
|
-
|
|
165
|
-
| 0.
|
166
|
-
| 0.
|
167
|
-
| 0.
|
168
|
-
|
|
169
|
-
|
|
155
|
+
| Argument | Dependency | Default version | Required executable |
|
156
|
+
| ---------- | ------------------------ | --------------- | ------------------- |
|
157
|
+
| cdh5.1[.*] | Cloudera CDH5.1 | cdh5.1.0 | mvn |
|
158
|
+
| cdh5.0[.*] | Cloudera CDH5.0 | cdh5.0.0 | mvn |
|
159
|
+
| cdh4.5[.*] | Cloudera CDH4.5 | cdh4.5.0 | mvn |
|
160
|
+
| cdh4.4[.*] | Cloudera CDH4.4 | cdh4.4.0 | mvn |
|
161
|
+
| cdh4.3[.*] | Cloudera CDH4.3 | cdh4.3.2 | mvn |
|
162
|
+
| cdh4.2[.*] | Cloudera CDH4.2 | cdh4.2.2 | mvn |
|
163
|
+
| cdh4.1[.*] | Cloudera CDH4.1 | cdh4.1.5 | mvn |
|
164
|
+
| cdh3[u*] | Cloudera CDH3 | cdh3u6 | mvn |
|
165
|
+
| 0.98[.*] | Apache HBase 0.98 | 0.98.0-hadoop2 | mvn |
|
166
|
+
| 0.96[.*] | Apache HBase 0.96 | 0.96.2-hadoop2 | mvn |
|
167
|
+
| 0.94[.*] | Apache HBase 0.94 | 0.94.18 | mvn |
|
168
|
+
| 0.92[.*] | Apache HBase 0.92 | 0.92.2 | mvn |
|
169
|
+
| *POM PATH* | Custom Maven POM file | - | mvn |
|
170
|
+
| `:local` | Local HBase installation | - | hbase |
|
170
171
|
|
171
172
|
(Default version is used when an argument prefix is given without specific patch version.
|
172
173
|
e.g. `cdh4.2` defaults to `cdh4.2.2`)
|
@@ -261,7 +262,7 @@ table.create! cf1: {},
|
|
261
262
|
| APPEND | Appends values to one or more columns within a single row |
|
262
263
|
| Checked PUT/DELETE | Atomically checks if the pre-exising data matches the expected value and puts or deletes data |
|
263
264
|
| MUTATE | Performs multiple mutations (PUTS and DELETES) atomically on a single row |
|
264
|
-
| Batch execution | Performs multiple actions (PUT, GET, DELETE, INCREMENT, APPEND
|
265
|
+
| Batch execution | Performs multiple actions (PUT, GET, DELETE, INCREMENT, APPEND) at once |
|
265
266
|
|
266
267
|
### Defining table schema for easier data access
|
267
268
|
|
@@ -348,7 +349,7 @@ year = book[:year]
|
|
348
349
|
hash = book.to_h
|
349
350
|
|
350
351
|
# Convert to Hash containing all versions of values indexed by their timestamps
|
351
|
-
all_hash =
|
352
|
+
all_hash = table.versions(:all).get('rowkey1').to_H
|
352
353
|
|
353
354
|
# Columns not defined in the schema are returned as Java byte arrays
|
354
355
|
# They need to be decoded manually
|
@@ -412,7 +413,7 @@ hash['cf2:10']
|
|
412
413
|
hash[[:cf2, 10]]
|
413
414
|
# byte[102, 111, 111, 98, 97, 114]@6f28bb44
|
414
415
|
|
415
|
-
hash_with_versions =
|
416
|
+
hash_with_versions = table.versions(:all).get(10000).to_H
|
416
417
|
# {
|
417
418
|
# :title => {1369019227766 => "Hello world"},
|
418
419
|
# [:cf2, HBase::ByteArray<0, 0, 0, 0, 0, 0, 0, 10>] =>
|
@@ -539,17 +540,13 @@ ret = table.batch do |b|
|
|
539
540
|
b.append rowkey3, 'cf1:b' => 'world'
|
540
541
|
b.delete rowkey3, 'cf2', 'cf3:z'
|
541
542
|
b.increment rowkey3, 'cf1:a' => 200, 'cf1:c' => 300
|
542
|
-
b.mutate(rowkey4) do |m|
|
543
|
-
m.put 'cf3:z' => 3.14
|
544
|
-
m.delete 'cf3:y', 'cf4'
|
545
|
-
end
|
546
543
|
end
|
547
544
|
```
|
548
545
|
|
549
546
|
`batch` method returns an Array of Hashes which contains the results of the
|
550
547
|
actions in the order they are specified in the block. Each Hash has `:type` entry
|
551
548
|
(:get, :put, :append, etc.) and `:result` entry. If the type of an action is
|
552
|
-
:put
|
549
|
+
:put or :delete, the `:result` will be given as a boolean. If it's an
|
553
550
|
:increment or :append, a plain Hash will be returned as the `:result`, just like
|
554
551
|
in [increment](https://github.com/junegunn/hbase-jruby#increment-atomic-increment-of-column-values)
|
555
552
|
and [append](https://github.com/junegunn/hbase-jruby#append) methods.
|
@@ -10,13 +10,13 @@
|
|
10
10
|
<name>hbase-jruby</name>
|
11
11
|
|
12
12
|
<profiles>
|
13
|
-
<%
|
13
|
+
<% { 'cdh5.0' => '0.96.1.1', 'cdh5.1' => '0.98.1' }.each do |cdh, hbase_version| %>
|
14
14
|
<profile>
|
15
15
|
<id><%= cdh %></id>
|
16
16
|
<properties>
|
17
17
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
18
18
|
<hadoop.version>2.3.0-<%= profiles[cdh] %></hadoop.version>
|
19
|
-
<hbase.version
|
19
|
+
<hbase.version><%= hbase_version %>-<%= profiles[cdh] %></hbase.version>
|
20
20
|
</properties>
|
21
21
|
<repositories>
|
22
22
|
<repository>
|
data/lib/hbase-jruby/scoped.rb
CHANGED
@@ -213,11 +213,13 @@ class Scoped
|
|
213
213
|
end
|
214
214
|
|
215
215
|
# Returns an HBase::Scoped object with the specified version number limit.
|
216
|
-
# If not set, all versions
|
217
|
-
# @param [Fixnum] vs Sets the maximum number of versions
|
216
|
+
# If not set or set to :all, all versions are fetched.
|
217
|
+
# @param [Fixnum|:all] vs Sets the maximum number of versions
|
218
218
|
# @return [HBase::Scoped] HBase::Scoped object with the version number limit
|
219
219
|
def versions vs
|
220
|
-
|
220
|
+
unless vs.is_a?(Fixnum) && vs > 0 || vs == :all
|
221
|
+
raise ArgumentError, "Invalid versions. Must be a positive integer or :all."
|
222
|
+
end
|
221
223
|
spawn :@versions, vs
|
222
224
|
end
|
223
225
|
|
@@ -350,11 +352,7 @@ private
|
|
350
352
|
|
351
353
|
def getify rowkey
|
352
354
|
Get.new(Util.to_bytes rowkey).tap { |get|
|
353
|
-
|
354
|
-
get.setMaxVersions @versions
|
355
|
-
else
|
356
|
-
get.setMaxVersions
|
357
|
-
end
|
355
|
+
set_max_versions get
|
358
356
|
|
359
357
|
filters = []
|
360
358
|
filters += process_projection!(get)
|
@@ -495,6 +493,15 @@ private
|
|
495
493
|
end
|
496
494
|
end
|
497
495
|
|
496
|
+
def set_max_versions obj
|
497
|
+
case @versions
|
498
|
+
when Fixnum
|
499
|
+
obj.setMaxVersions @versions
|
500
|
+
when :all
|
501
|
+
obj.setMaxVersions
|
502
|
+
end
|
503
|
+
end
|
504
|
+
|
498
505
|
def filtered_scan
|
499
506
|
Scan.new.tap { |scan|
|
500
507
|
# Range
|
@@ -534,11 +541,7 @@ private
|
|
534
541
|
end
|
535
542
|
|
536
543
|
# Versions
|
537
|
-
|
538
|
-
scan.setMaxVersions @versions
|
539
|
-
else
|
540
|
-
scan.setMaxVersions
|
541
|
-
end
|
544
|
+
set_max_versions scan
|
542
545
|
|
543
546
|
# Timerange / Timestamp
|
544
547
|
case @trange
|
@@ -44,11 +44,6 @@ class BatchAction
|
|
44
44
|
@actions << { :type => :increment, :action => @mutation.increment(*args) }
|
45
45
|
end
|
46
46
|
|
47
|
-
# @see HBase::Table#mutate
|
48
|
-
def mutate *args, &blk
|
49
|
-
@actions << { :type => :mutate, :action => @mutation.mutate(*args, &blk) }
|
50
|
-
end
|
51
|
-
|
52
47
|
[:get, :range, :project, :filter, :versions, :time_range, :at].each do |method|
|
53
48
|
define_method(method) do |*args|
|
54
49
|
BatchGetScoped.send(:new, @table.scoped, proc { |get|
|
data/lib/hbase-jruby/version.rb
CHANGED
data/test/test_hbase.rb
CHANGED
@@ -54,6 +54,9 @@ class TestHBase < TestHBaseJRubyBase
|
|
54
54
|
@hbase = connect
|
55
55
|
table = @hbase[TABLE]
|
56
56
|
assert_equal table.htable, Thread.current[:hbase_jruby][@hbase][TABLE]
|
57
|
+
|
58
|
+
# FIXME: Connection is closed, we have to update @table object
|
59
|
+
@table = @hbase.table(TABLE)
|
57
60
|
end
|
58
61
|
|
59
62
|
def test_admin
|
data/test/test_schema.rb
CHANGED
@@ -281,9 +281,18 @@ class TestSchema < TestHBaseJRubyBase
|
|
281
281
|
# Coprocessor
|
282
282
|
if @aggregation
|
283
283
|
table.enable_aggregation!
|
284
|
+
# Expected:
|
285
|
+
# 844 = reviews(52) + inc(1) + stars(226) + inc(2 + 3) +
|
286
|
+
# put-review(100) + put-stars(500)
|
284
287
|
table.put next_rowkey, :reviews => 100, :stars => 500
|
285
|
-
assert_equal data[:reviews] + 1 + data[:stars] +
|
288
|
+
assert_equal data[:reviews] + 1 + data[:stars] + 2 + 3 + 100 + 500,
|
286
289
|
table.project(:reviews, :stars).aggregate(:sum)
|
290
|
+
|
291
|
+
assert_equal data[:reviews] + 1 + data[:stars] + 2 + 3 + 100 + 500,
|
292
|
+
table.project(:reviews, :stars).versions(1).aggregate(:sum)
|
293
|
+
|
294
|
+
assert_equal data[:reviews] * 2 + 1 + data[:stars] * 3 + 2 * 2 + 3 + 100 + 500,
|
295
|
+
table.project(:reviews, :stars).versions(:all).aggregate(:sum)
|
287
296
|
#table.disable_aggregation!
|
288
297
|
end
|
289
298
|
|
@@ -332,9 +341,7 @@ class TestSchema < TestHBaseJRubyBase
|
|
332
341
|
assert_equal 'great', table.get(rk)[:comment4]
|
333
342
|
|
334
343
|
# Batch
|
335
|
-
#
|
336
|
-
# here to see if the version if 0.96 (no AggregationClient) or not
|
337
|
-
mutation_in_batch = @aggregation
|
344
|
+
# XXX: Mutation in batch is no more allowed in 0.98
|
338
345
|
ret = table.batch do |b|
|
339
346
|
b.put rk, :comment5 => 'gnarly'
|
340
347
|
b.delete rk, :comment4
|
@@ -346,26 +353,12 @@ class TestSchema < TestHBaseJRubyBase
|
|
346
353
|
b.append rk, :category => '/Etc'
|
347
354
|
b.get rk
|
348
355
|
|
349
|
-
|
350
|
-
|
351
|
-
m.put :comment6 => 'rad'
|
352
|
-
m.delete :image
|
353
|
-
end
|
354
|
-
else
|
355
|
-
table.mutate(rk) do |m|
|
356
|
-
m.put :comment6 => 'rad'
|
357
|
-
m.delete :image
|
358
|
-
end
|
359
|
-
end
|
356
|
+
b.put rk, :comment6 => 'rad'
|
357
|
+
b.delete rk, :image
|
360
358
|
end
|
361
359
|
|
362
|
-
|
363
|
-
|
364
|
-
assert_equal [true] * 3, ret.values_at(0, 1, 5).map { |r| r[:result] }
|
365
|
-
else
|
366
|
-
assert_equal 5, ret.length
|
367
|
-
assert_equal [true] * 2, ret.values_at(0, 1).map { |r| r[:result] }
|
368
|
-
end
|
360
|
+
assert_equal 7, ret.length
|
361
|
+
assert_equal [true] * 4, ret.values_at(0, 1, 5, 6).map { |r| r[:result] }
|
369
362
|
|
370
363
|
assert_equal data[:stars] + 5 + 100, ret[2][:result][:stars]
|
371
364
|
assert_equal data[:reviews] + 1 + 200, ret[2][:result][:reviews]
|
data/test/test_scoped.rb
CHANGED
@@ -240,7 +240,7 @@ class TestScoped < TestHBaseJRubyBase
|
|
240
240
|
insert.call
|
241
241
|
[@table, @table.scoped].each do |table|
|
242
242
|
# versions
|
243
|
-
assert table.all? { |result| result.to_H[%w[cf1 a]].length == 2 }
|
243
|
+
assert table.versions(:all).all? { |result| result.to_H[%w[cf1 a]].length == 2 }
|
244
244
|
assert table.versions(1).all? { |result| result.to_H[%w[cf1 a]].length == 1 }
|
245
245
|
end
|
246
246
|
end
|
data/test/test_table.rb
CHANGED
@@ -131,21 +131,21 @@ class TestTable < TestHBaseJRubyBase
|
|
131
131
|
# assert_equal [301, 401], @table.get(row1).int(['cf1:int', 'cf1:int2'])
|
132
132
|
|
133
133
|
# single-get-multi-ver
|
134
|
-
assert_equal [1, 2], @table.get(row1).fixnums('cf1:a').values
|
135
|
-
assert_equal %w[a b], @table.get(row1).strings('cf1:b').values
|
136
|
-
assert_equal %w[a b], @table.get(row1).raws('cf1:b').values.map { |v| String.from_java_bytes v }
|
137
|
-
assert_equal %w[a b], @table.get(row1).byte_arrays('cf1:b').values.map { |v| v.as :string }
|
138
|
-
assert_equal [3.14, 6.28], @table.get(row1).floats('cf1:c').values
|
139
|
-
assert_equal [true, false], @table.get(row1).booleans('cf1:d').values
|
140
|
-
assert_equal [:sym, :bol], @table.get(row1).symbols('cf1:f').values
|
134
|
+
assert_equal [1, 2], @table.versions(:all).get(row1).fixnums('cf1:a').values
|
135
|
+
assert_equal %w[a b], @table.versions(:all).get(row1).strings('cf1:b').values
|
136
|
+
assert_equal %w[a b], @table.versions(:all).get(row1).raws('cf1:b').values.map { |v| String.from_java_bytes v }
|
137
|
+
assert_equal %w[a b], @table.versions(:all).get(row1).byte_arrays('cf1:b').values.map { |v| v.as :string }
|
138
|
+
assert_equal [3.14, 6.28], @table.versions(:all).get(row1).floats('cf1:c').values
|
139
|
+
assert_equal [true, false], @table.versions(:all).get(row1).booleans('cf1:d').values
|
140
|
+
assert_equal [:sym, :bol], @table.versions(:all).get(row1).symbols('cf1:f').values
|
141
141
|
assert_equal [
|
142
142
|
BigDecimal.new("123.456"),
|
143
|
-
BigDecimal.new("456.123")], @table.get(row1).bigdecimals('cf1:g').values
|
144
|
-
assert_equal [101, 100], @table.get(row1).bytes('cf1:byte').values
|
145
|
-
assert_equal [201, 200], @table.get(row1).shorts('cf1:short').values
|
146
|
-
assert_equal [301, 300], @table.get(row1).ints('cf1:int').values
|
143
|
+
BigDecimal.new("456.123")], @table.versions(:all).get(row1).bigdecimals('cf1:g').values
|
144
|
+
assert_equal [101, 100], @table.versions(:all).get(row1).bytes('cf1:byte').values
|
145
|
+
assert_equal [201, 200], @table.versions(:all).get(row1).shorts('cf1:short').values
|
146
|
+
assert_equal [301, 300], @table.versions(:all).get(row1).ints('cf1:int').values
|
147
147
|
|
148
|
-
assert @table.get(row1).fixnums('cf1:a').keys.all? { |k| k.instance_of? Fixnum }
|
148
|
+
assert @table.versions(:all).get(row1).fixnums('cf1:a').keys.all? { |k| k.instance_of? Fixnum }
|
149
149
|
|
150
150
|
# single-get-multi-col-multi=ver (deprecated since 0.3)
|
151
151
|
# rets = @table.get(row1).strings(['cf1:str1', 'cf1:str2'])
|
@@ -196,10 +196,10 @@ class TestTable < TestHBaseJRubyBase
|
|
196
196
|
},
|
197
197
|
}
|
198
198
|
|
199
|
-
assert_equal [1270000000000, 'A3'], @table.get(rowkey).strings('cf1:a').first
|
200
|
-
assert_equal 'A2',
|
201
|
-
assert_equal [1250000000000, 'A1'], @table.get(rowkey).strings('cf1:a').to_a.last
|
202
|
-
assert_equal ['B1'],
|
199
|
+
assert_equal [1270000000000, 'A3'], @table.versions(:all).get(rowkey).strings('cf1:a').first
|
200
|
+
assert_equal 'A2', @table.versions(:all).get(rowkey).strings('cf1:a')[1260000000000]
|
201
|
+
assert_equal [1250000000000, 'A1'], @table.versions(:all).get(rowkey).strings('cf1:a').to_a.last
|
202
|
+
assert_equal ['B1'], @table.versions(:all).get(rowkey).strings('cf1:b').values
|
203
203
|
end
|
204
204
|
|
205
205
|
def test_increment
|
@@ -250,13 +250,13 @@ class TestTable < TestHBaseJRubyBase
|
|
250
250
|
@table.put(row1, 'cf2:d' => 5)
|
251
251
|
sleep 0.1
|
252
252
|
@table.put(row1, 'cf2:d' => 6)
|
253
|
-
versions = @table.get(row1).to_H[%w[cf2 d]].keys
|
253
|
+
versions = @table.versions(:all).get(row1).to_H[%w[cf2 d]].keys
|
254
254
|
assert versions[0] > versions[1]
|
255
255
|
assert versions[1] > versions[2]
|
256
256
|
|
257
257
|
# Deletes a version (Fixnum and Time as timestamps)
|
258
258
|
@table.delete(row1, 'cf2:d', versions[0], Time.at(versions[2] / 1000.0))
|
259
|
-
new_versions = @table.get(row1).to_H[%w[cf2 d]].keys
|
259
|
+
new_versions = @table.versions(:all).get(row1).to_H[%w[cf2 d]].keys
|
260
260
|
assert_equal new_versions, [versions[1]]
|
261
261
|
|
262
262
|
# Deletes a column
|
@@ -312,10 +312,10 @@ class TestTable < TestHBaseJRubyBase
|
|
312
312
|
|
313
313
|
assert_equal 3, @table.get(drow).to_h.keys.length
|
314
314
|
|
315
|
-
assert_equal 1, @table.get(drow).to_H['cf1:a'].length
|
316
|
-
assert_equal 2, @table.get(drow).to_H['cf1:b'].length
|
317
|
-
assert_equal 3000, @table.get(drow).to_H['cf1:a'].keys.first
|
318
|
-
assert_equal [6000, 4000], @table.get(drow).to_H['cf1:b'].keys
|
315
|
+
assert_equal 1, @table.versions(:all).get(drow).to_H['cf1:a'].length
|
316
|
+
assert_equal 2, @table.versions(:all).get(drow).to_H['cf1:b'].length
|
317
|
+
assert_equal 3000, @table.versions(:all).get(drow).to_H['cf1:a'].keys.first
|
318
|
+
assert_equal [6000, 4000], @table.versions(:all).get(drow).to_H['cf1:b'].keys
|
319
319
|
end
|
320
320
|
|
321
321
|
def test_delete_advanced_with_schema
|
@@ -354,10 +354,10 @@ class TestTable < TestHBaseJRubyBase
|
|
354
354
|
|
355
355
|
assert_equal 3, @table.get(drow).to_h.keys.length
|
356
356
|
|
357
|
-
assert_equal 1, @table.get(drow).to_H[:a].length
|
358
|
-
assert_equal 2, @table.get(drow).to_H[:b].length
|
359
|
-
assert_equal 3000, @table.get(drow).to_H[:a].keys.first
|
360
|
-
assert_equal [6000, 4000], @table.get(drow).to_H[:b].keys
|
357
|
+
assert_equal 1, @table.versions(:all).get(drow).to_H[:a].length
|
358
|
+
assert_equal 2, @table.versions(:all).get(drow).to_H[:b].length
|
359
|
+
assert_equal 3000, @table.versions(:all).get(drow).to_H[:a].keys.first
|
360
|
+
assert_equal [6000, 4000], @table.versions(:all).get(drow).to_H[:b].keys
|
361
361
|
end
|
362
362
|
|
363
363
|
def test_delete_row
|
@@ -438,7 +438,7 @@ class TestTable < TestHBaseJRubyBase
|
|
438
438
|
@table.put rk, a => 100, b => 200,
|
439
439
|
c => { ts => 300, (ts - 1000) => 400, (ts - 2000).to_i => 500 },
|
440
440
|
d => 1000
|
441
|
-
assert_equal 3, @table.get(rk).to_H[:c].length
|
441
|
+
assert_equal 3, @table.versions(:all).get(rk).to_H[:c].length
|
442
442
|
|
443
443
|
assert_equal false, @table.check(rk, a => 200).delete(b)
|
444
444
|
assert_equal 200, @table.get(rk)[b]
|
@@ -447,8 +447,8 @@ class TestTable < TestHBaseJRubyBase
|
|
447
447
|
assert_equal nil, @table.get(rk)[b]
|
448
448
|
|
449
449
|
assert_equal true, @table.check(rk, a => 100).delete(c, ts, (ts - 2000).to_i, 'cf2')
|
450
|
-
assert_equal 1, @table.get(rk).to_H[:c].length
|
451
|
-
assert_equal (ts - 1000).to_i, @table.get(rk).to_H[:c].keys.first / 1000
|
450
|
+
assert_equal 1, @table.versions(:all).get(rk).to_H[:c].length
|
451
|
+
assert_equal (ts - 1000).to_i, @table.versions(:all).get(rk).to_H[:c].keys.first / 1000
|
452
452
|
assert_equal nil, @table.get(rk)[d]
|
453
453
|
|
454
454
|
assert_equal true, @table.check(rk, a => 100).delete
|
@@ -521,8 +521,6 @@ class TestTable < TestHBaseJRubyBase
|
|
521
521
|
assert_equal true, ret[1][:result]
|
522
522
|
assert_equal true, ret[2][:result]
|
523
523
|
|
524
|
-
# FIXME: Mutation in batch hangs on 0.96
|
525
|
-
mutation_in_batch = @aggregation
|
526
524
|
ret = @table.batch { |b|
|
527
525
|
b.put rk3, 'cf1:c' => 5
|
528
526
|
b.delete rk1, 'cf1:a'
|
@@ -531,29 +529,13 @@ class TestTable < TestHBaseJRubyBase
|
|
531
529
|
b.get(rk1)
|
532
530
|
b.filter('cf1:a' => 0).get(rk1)
|
533
531
|
b.versions(1).project('cf2').get(rk1)
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
m.put 'cf2:e' => 'mundo'
|
538
|
-
m.delete 'cf1:b'
|
539
|
-
end
|
540
|
-
else
|
541
|
-
@table.mutate(rk3) do |m|
|
542
|
-
m.put 'cf2:d' => 'hola'
|
543
|
-
m.put 'cf2:e' => 'mundo'
|
544
|
-
m.delete 'cf1:b'
|
545
|
-
end
|
546
|
-
end
|
532
|
+
b.put rk3, 'cf2:d' => 'hola'
|
533
|
+
b.put rk3, 'cf2:e' => 'mundo'
|
534
|
+
b.delete rk3, 'cf1:b'
|
547
535
|
}
|
548
|
-
|
549
|
-
|
550
|
-
|
551
|
-
assert_equal [true, true, true], ret.values_at(0, 1, 7).map { |r| r[:result] }
|
552
|
-
else
|
553
|
-
assert_equal 7, ret.length
|
554
|
-
assert_equal [:put, :delete, :increment, :append, :get, :get, :get], ret.map { |r| r[:type] }
|
555
|
-
assert_equal [true, true], ret.values_at(0, 1).map { |r| r[:result] }
|
556
|
-
end
|
536
|
+
assert_equal [:put, :delete, :increment, :append, :get, :get, :get, :put, :put, :delete], ret.map { |r| r[:type] }
|
537
|
+
assert_equal [true, true], ret.values_at(0, 1).map { |r| r[:result] }
|
538
|
+
|
557
539
|
assert_equal 12, ret[2][:result]['cf1:a']
|
558
540
|
assert_equal 23, ret[2][:result]['cf1:b']
|
559
541
|
assert_equal 'hello world', ret[3][:result]['cf2:c'].to_s
|
data/test/test_table_admin.rb
CHANGED
@@ -143,7 +143,7 @@ class TestTableAdmin < TestHBaseJRubyBase
|
|
143
143
|
end
|
144
144
|
|
145
145
|
def test_add_coprocessor!
|
146
|
-
omit "AggregationClient
|
146
|
+
omit "AggregationClient not found" unless @aggregation
|
147
147
|
|
148
148
|
coproc = 'org.apache.hadoop.hbase.coprocessor.AggregateImplementation'
|
149
149
|
assert_false @table.has_coprocessor? coproc
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hbase-jruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Junegunn Choi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-07-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: test-unit
|