cassilds 0.12.3 → 0.12.4

Sign up to get free protection for your applications and to get access to all the features.
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