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 +3 -0
- data/lib/cassandra/cassandra.rb +10 -3
- data/lib/cassandra/protocol.rb +11 -28
- metadata +20 -9
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"])
|
data/lib/cassandra/cassandra.rb
CHANGED
@@ -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
|
-
|
570
|
-
|
571
|
-
|
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
|
##
|
data/lib/cassandra/protocol.rb
CHANGED
@@ -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
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
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 =>
|
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
|
-
|
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 =>
|
49
|
+
predicate = CassandraThrift::SlicePredicate.new(:column_names => Array(column))
|
63
50
|
column_parent = CassandraThrift::ColumnParent.new(:column_family => column_family)
|
64
|
-
|
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.
|
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: &
|
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: *
|
36
|
+
version_requirements: *11716080
|
26
37
|
- !ruby/object:Gem::Dependency
|
27
38
|
name: json
|
28
|
-
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: *
|
47
|
+
version_requirements: *11715600
|
37
48
|
- !ruby/object:Gem::Dependency
|
38
49
|
name: rake
|
39
|
-
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: *
|
58
|
+
version_requirements: *11715120
|
48
59
|
- !ruby/object:Gem::Dependency
|
49
60
|
name: simple_uuid
|
50
|
-
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: *
|
69
|
+
version_requirements: *11714640
|
59
70
|
description: A Ruby client for the Cassandra distributed database.
|
60
71
|
email:
|
61
72
|
- contato@umanni.com
|