eurydice 1.0.1-java → 1.0.2-java

Sign up to get free protection for your applications and to get access to all the features.
@@ -6,6 +6,7 @@ require_relative 'common'
6
6
  cluster = Eurydice.connect
7
7
  keyspace = cluster.keyspace('my_keyspace')
8
8
  column_family = keyspace.column_family('employees', :create => false)
9
+ column_family.drop! if column_family.exists?
9
10
  column_family.create!(:column_metadata => {'name' => {:validation_class => :utf8, :index_name => 'name_index', :index_type => :keys}})
10
11
  column_family.insert('employee:1', {'name' => 'Sam', 'role' => 'Developer'})
11
12
  column_family.insert('employee:2', {'name' => 'Phil', 'role' => 'Accountant'})
@@ -40,6 +41,18 @@ end
40
41
 
41
42
  puts '---'
42
43
 
44
+ column_family.insert('letters', ('a'..'z').to_a.zip(('A'..'Z').to_a))
45
+
46
+ # Load a page of columns
47
+ result = column_family.get('letters', :max_column_count => 10)
48
+ puts result.keys.join(', ')
49
+ # For the next page you need to tell Eurydice which the last key you saw was
50
+ result = column_family.get('letters', :from_column => result.keys.last, :max_column_count => 11)
51
+ # The last key is included in the next page (so we load one extra column, and shift off the first column)
52
+ puts result.keys[1..-1].join(', ')
53
+
54
+ puts '---'
55
+
43
56
  # Load only the value from a single column
44
57
  employee1_name = column_family.get_column('employee:1', 'name')
45
58
  puts "employee:1 => #{employee1_name}"
@@ -148,6 +148,8 @@ module Eurydice
148
148
 
149
149
  private
150
150
 
151
+ EMPTY_STRING = ''.freeze
152
+
151
153
  def get_single(row_key, options={})
152
154
  thrift_exception_handler do
153
155
  selector = @keyspace.create_selector
@@ -170,6 +172,10 @@ module Eurydice
170
172
  def create_column_predicate(options)
171
173
  max_column_count = options.fetch(:max_column_count, java.lang.Integer::MAX_VALUE)
172
174
  reversed = options.fetch(:reversed, false)
175
+ if options.key?(:from_column)
176
+ raise ArgumentError, %(You can set either :columns or :from_column, but not both) if options.key?(:columns)
177
+ options[:columns] = options[:from_column]..EMPTY_STRING
178
+ end
173
179
  case options[:columns]
174
180
  when Range
175
181
  ::Pelops::Selector.new_columns_predicate(to_pelops_bytes(options[:columns].begin), to_pelops_bytes(options[:columns].end), reversed, max_column_count)
@@ -2,5 +2,5 @@
2
2
 
3
3
 
4
4
  module Eurydice
5
- VERSION = '1.0.1'
5
+ VERSION = '1.0.2'
6
6
  end
@@ -258,6 +258,15 @@ module Eurydice
258
258
  @cf.get('ABC', :max_column_count => 10).should == Hash[('a'..'z').take(10).map { |a| [a, a.upcase] }]
259
259
  end
260
260
 
261
+ it 'loads a page of columns' do
262
+ @cf.insert('ABC', Hash[('a'..'z').map { |a| [a, a.upcase] }.shuffle])
263
+ @cf.get('ABC', :from_column => 'm', :max_column_count => 10).should == Hash[('m'..'z').take(10).map { |a| [a, a.upcase] }]
264
+ end
265
+
266
+ it 'raises an error if both :columns and :from_column are given' do
267
+ expect { @cf.get('ABC', :columns => 'a'..'z', :from_column => 'm') }.to raise_error(ArgumentError)
268
+ end
269
+
261
270
  it 'loads columns in reverse order with :reversed => true' do
262
271
  @cf.insert('ABC', Hash[('a'..'f').map { |a| [a, a.upcase] }.shuffle])
263
272
  @cf.get('ABC', :reversed => true).keys.should == ('a'..'f').to_a.reverse
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: eurydice
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 1.0.1
5
+ version: 1.0.2
6
6
  platform: java
7
7
  authors:
8
8
  - Theo Hultberg
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-11-01 00:00:00 Z
13
+ date: 2011-11-03 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: pelops-jars