eurydice 1.0.1-java → 1.0.2-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.
@@ -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