cassilds 0.12.3 → 0.12.4

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.
data/cassilds.gemspec CHANGED
@@ -26,17 +26,20 @@ Gem::Specification.new do |s|
26
26
  s.specification_version = 3
27
27
 
28
28
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
29
+ s.add_runtime_dependency(%q<thrift>, [">= 0.7.0"])
29
30
  s.add_runtime_dependency(%q<thrift_client>, [">= 0.7.0"])
30
31
  s.add_runtime_dependency(%q<json>, [">= 0"])
31
32
  s.add_runtime_dependency(%q<rake>, [">= 0"])
32
33
  s.add_runtime_dependency(%q<simple_uuid>, [">= 0.2.0"])
33
34
  else
35
+ s.add_dependency(%q<thrift>, [">= 0.7.0"])
34
36
  s.add_dependency(%q<thrift_client>, [">= 0.7.0"])
35
37
  s.add_dependency(%q<json>, [">= 0"])
36
38
  s.add_dependency(%q<rake>, [">= 0"])
37
39
  s.add_dependency(%q<simple_uuid>, [">= 0.2.0"])
38
40
  end
39
41
  else
42
+ s.add_dependency(%q<thrift>, [">= 0.7.0"])
40
43
  s.add_dependency(%q<thrift_client>, [">= 0.7.0"])
41
44
  s.add_dependency(%q<json>, [">= 0"])
42
45
  s.add_dependency(%q<rake>, [">= 0"])
@@ -566,9 +566,16 @@ class Cassandra
566
566
  # * options - Valid options are:
567
567
  # * :consistency - Uses the default read consistency if none specified.
568
568
  #
569
- # FIXME Not real multi; needs to use a Column predicate
570
- def multi_get_columns(column_family, keys, *options)
571
- OrderedHash[*keys.map { |key| [key, get_columns(column_family, key, *options)] }._flatten_once]
569
+ def multi_get_columns(column_family, keys, *columns_and_options)
570
+ column_family, columns, sub_columns, options =
571
+ extract_and_validate_params(column_family, keys, columns_and_options, READ_DEFAULTS)
572
+
573
+ hash = _multiget(column_family, keys, columns, sub_columns,
574
+ nil, nil, nil, nil, options[:consistency])
575
+ # Restore order
576
+ ordered_hash = OrderedHash.new
577
+ keys.each { |key| ordered_hash[key] = hash[key] || (OrderedHash.new if is_super(column_family) and !sub_columns) }
578
+ ordered_hash
572
579
  end
573
580
 
574
581
  ##
@@ -26,24 +26,14 @@ class Cassandra
26
26
 
27
27
  # FIXME: Add support for start, stop, count
28
28
  def _get_columns(column_family, key, columns, sub_columns, consistency)
29
- result = if is_super(column_family)
30
- if sub_columns
31
- columns_to_hash(column_family, client.get_slice(key,
32
- CassandraThrift::ColumnParent.new(:column_family => column_family, :super_column => columns),
33
- CassandraThrift::SlicePredicate.new(:column_names => sub_columns),
34
- consistency))
35
- else
36
- columns_to_hash(column_family, client.get_slice(key,
37
- CassandraThrift::ColumnParent.new(:column_family => column_family),
38
- CassandraThrift::SlicePredicate.new(:column_names => columns),
39
- consistency))
40
- end
41
- else
42
- columns_to_hash(column_family, client.get_slice(key,
43
- CassandraThrift::ColumnParent.new(:column_family => column_family),
44
- CassandraThrift::SlicePredicate.new(:column_names => columns),
45
- consistency))
29
+ if is_super(column_family) and sub_columns
30
+ predicate = CassandraThrift::SlicePredicate.new(:column_names => sub_columns)
31
+ column_parent = CassandraThrift::ColumnParent.new(:column_family => column_family, :super_column => columns)
32
+ else # Standard and SuperColumns without sub_columns specified
33
+ predicate = CassandraThrift::SlicePredicate.new(:column_names => columns)
34
+ column_parent = CassandraThrift::ColumnParent.new(:column_family => column_family)
46
35
  end
36
+ result = columns_to_hash(column_family, client.get_slice(key, column_parent, predicate, consistency))
47
37
 
48
38
  klass = column_name_class(column_family)
49
39
  (sub_columns || columns).map { |name| result[klass.new(name)] }
@@ -52,20 +42,13 @@ class Cassandra
52
42
  def _multiget(column_family, keys, column, sub_column, start, finish, count, reversed, consistency)
53
43
  # Single values; count and range parameters have no effect
54
44
  if is_super(column_family) and sub_column
55
- predicate = CassandraThrift::SlicePredicate.new(:column_names => [sub_column])
45
+ predicate = CassandraThrift::SlicePredicate.new(:column_names => Array(sub_column))
56
46
  column_parent = CassandraThrift::ColumnParent.new(:column_family => column_family, :super_column => column)
57
- column_hash = multi_sub_columns_to_hash!(column_family, client.multiget_slice(keys, column_parent, predicate, consistency))
58
-
59
- klass = sub_column_name_class(column_family)
60
- keys.inject({}){|hash, key| hash[key] = column_hash[key][klass.new(sub_column)]; hash}
47
+ multi_sub_columns_to_hash!(column_family, client.multiget_slice(keys, column_parent, predicate, consistency))
61
48
  elsif !is_super(column_family) and column
62
- predicate = CassandraThrift::SlicePredicate.new(:column_names => [column])
49
+ predicate = CassandraThrift::SlicePredicate.new(:column_names => Array(column))
63
50
  column_parent = CassandraThrift::ColumnParent.new(:column_family => column_family)
64
- column_hash = multi_columns_to_hash!(column_family, client.multiget_slice(keys, column_parent, predicate, consistency))
65
-
66
- klass = column_name_class(column_family)
67
- keys.inject({}){|hash, key| hash[key] = column_hash[key][klass.new(column)]; hash}
68
-
51
+ multi_columns_to_hash!(column_family, client.multiget_slice(keys, column_parent, predicate, consistency))
69
52
  # Slices
70
53
  else
71
54
  predicate = CassandraThrift::SlicePredicate.new(:slice_range =>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cassilds
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.3
4
+ version: 0.12.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -12,9 +12,20 @@ bindir: bin
12
12
  cert_chain: []
13
13
  date: 2011-08-22 00:00:00.000000000Z
14
14
  dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: thrift
17
+ requirement: &11716560 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: 0.7.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: *11716560
15
26
  - !ruby/object:Gem::Dependency
16
27
  name: thrift_client
17
- requirement: &11137440 !ruby/object:Gem::Requirement
28
+ requirement: &11716080 !ruby/object:Gem::Requirement
18
29
  none: false
19
30
  requirements:
20
31
  - - ! '>='
@@ -22,10 +33,10 @@ dependencies:
22
33
  version: 0.7.0
23
34
  type: :runtime
24
35
  prerelease: false
25
- version_requirements: *11137440
36
+ version_requirements: *11716080
26
37
  - !ruby/object:Gem::Dependency
27
38
  name: json
28
- requirement: &11136380 !ruby/object:Gem::Requirement
39
+ requirement: &11715600 !ruby/object:Gem::Requirement
29
40
  none: false
30
41
  requirements:
31
42
  - - ! '>='
@@ -33,10 +44,10 @@ dependencies:
33
44
  version: '0'
34
45
  type: :runtime
35
46
  prerelease: false
36
- version_requirements: *11136380
47
+ version_requirements: *11715600
37
48
  - !ruby/object:Gem::Dependency
38
49
  name: rake
39
- requirement: &11123240 !ruby/object:Gem::Requirement
50
+ requirement: &11715120 !ruby/object:Gem::Requirement
40
51
  none: false
41
52
  requirements:
42
53
  - - ! '>='
@@ -44,10 +55,10 @@ dependencies:
44
55
  version: '0'
45
56
  type: :runtime
46
57
  prerelease: false
47
- version_requirements: *11123240
58
+ version_requirements: *11715120
48
59
  - !ruby/object:Gem::Dependency
49
60
  name: simple_uuid
50
- requirement: &11121160 !ruby/object:Gem::Requirement
61
+ requirement: &11714640 !ruby/object:Gem::Requirement
51
62
  none: false
52
63
  requirements:
53
64
  - - ! '>='
@@ -55,7 +66,7 @@ dependencies:
55
66
  version: 0.2.0
56
67
  type: :runtime
57
68
  prerelease: false
58
- version_requirements: *11121160
69
+ version_requirements: *11714640
59
70
  description: A Ruby client for the Cassandra distributed database.
60
71
  email:
61
72
  - contato@umanni.com