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 +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
|