sessionm-cassandra 1.1.0 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +13 -5
- data/lib/cassandra/cassandra.rb +43 -4
- data/lib/cassandra/protocol.rb +55 -17
- data/sessionm-cassandra.gemspec +1 -1
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
ZWU2YjgyNzljYzQ5YTY1ZTlhNGViYzc2ZDAyMzMxMDZlMzgyMzA2ZA==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
YjI0MTlmNmJmNTgwNWM1NzQzNjJjZWRiMjRjMTFiOGJjZGQzNDdmOA==
|
5
7
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
ZTc4OTFhNzVhZTg0MTBhNDY3ZDk4MzJkMDBkYjhhMTM5NmJjZWM1MGJlZTQz
|
10
|
+
NjI0ZGUxNDJmNjkyZGM2YWM4N2QzZTdmMjdmMWE1NjMxYmVkMmQ4NzYyMWNk
|
11
|
+
MDIyOGQ1ZmY4MDEyNjFiNGVhNDgzY2I4ZjEwYzNhNDVjYWRkYTM=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
YmMxZjY2NmQ3NWFjM2U3YzI1Y2EyYjM1ODUxMTFiZWI0Mzk3MzFjYmRkOTQ4
|
14
|
+
MjVjYjg3YzRlN2UwZDJhYTNlMzJmODk5MWVhMmY5NmEwMGQ5OWU5MTQ4YzE4
|
15
|
+
N2RkNmY4YjlmMzU1MTQxYTk1MjE0ODlkNmYyMjQ1YTEwY2UzY2Q=
|
data/lib/cassandra/cassandra.rb
CHANGED
@@ -557,6 +557,25 @@ class Cassandra
|
|
557
557
|
_get_columns(column_family, key, columns, sub_columns, options[:consistency])
|
558
558
|
end
|
559
559
|
|
560
|
+
##
|
561
|
+
# Return a hash of column value pairs for the path you request.
|
562
|
+
#
|
563
|
+
# * column_family - The column_family that you are inserting into.
|
564
|
+
# * key - The row key to insert.
|
565
|
+
# * columns - Either a single super_column or a list of columns.
|
566
|
+
# * sub_columns - The list of sub_columns to select.
|
567
|
+
# * options - Valid options are:
|
568
|
+
# * :consistency - Uses the default read consistency if none specified.
|
569
|
+
#
|
570
|
+
def get_columns_as_hash(column_family, key, columns, options=nil)
|
571
|
+
consistency = options ? (options[:consistency] || READ_DEFAULTS[:consistency]) : READ_DEFAULTS[:consistency]
|
572
|
+
if column_family.is_a?(CassandraThrift::ColumnParent)
|
573
|
+
_get_columns_as_hash(column_family, key, columns, nil, consistency)
|
574
|
+
else
|
575
|
+
_get_columns_as_hash(column_family, key, columns, nil, consistency)
|
576
|
+
end
|
577
|
+
end
|
578
|
+
|
560
579
|
##
|
561
580
|
# Multi-key version of Cassandra#get_columns. Please note that this
|
562
581
|
# queries the server for each key passed in.
|
@@ -594,7 +613,27 @@ class Cassandra
|
|
594
613
|
# * :consistency - Uses the default read consistency if none specified.
|
595
614
|
#
|
596
615
|
def get(column_family, key, *columns_and_options)
|
597
|
-
|
616
|
+
if column_family.is_a?(CassandraThrift::ColumnParent)
|
617
|
+
column = columns_and_options.first
|
618
|
+
consistency = columns_and_options.last.is_a?(Hash) ? (columns_and_options.last[:consistency] || READ_DEFAULTS[:consistency]) : READ_DEFAULTS[:consistency]
|
619
|
+
|
620
|
+
get_slice(column_family, key, column, nil, nil, nil, nil, consistency)
|
621
|
+
else
|
622
|
+
column_family, column, sub_column, options =
|
623
|
+
extract_and_validate_params(column_family, key, columns_and_options, READ_DEFAULTS)
|
624
|
+
|
625
|
+
if column
|
626
|
+
get_value column_family, key, column, options[:consistency]
|
627
|
+
else
|
628
|
+
get_slice(column_family, key, column, options[:start], options[:finish], options[:count], options[:reversed], options[:consistency])
|
629
|
+
end
|
630
|
+
end
|
631
|
+
end
|
632
|
+
|
633
|
+
##
|
634
|
+
# Returns the value of the column
|
635
|
+
def get_value(column_family, key, column, consistency)
|
636
|
+
_get(column_family, key, column, consistency)
|
598
637
|
end
|
599
638
|
|
600
639
|
##
|
@@ -1005,9 +1044,9 @@ class Cassandra
|
|
1005
1044
|
key_slices.inject(OrderedHash.new) {|h, key_slice| h[key_slice.key] = key_slice.columns; h }
|
1006
1045
|
end
|
1007
1046
|
|
1008
|
-
# Selecting a slice of a
|
1009
|
-
def get_slice(column_family, key, start, finish, count, reversed, consistency)
|
1010
|
-
_get_slice(column_family, key, start, finish, count, reversed, consistency)
|
1047
|
+
# Selecting a slice of a column
|
1048
|
+
def get_slice(column_family, key, column, start, finish, count, reversed, consistency)
|
1049
|
+
_get_slice(column_family, key, column, start, finish, count, reversed, consistency)
|
1011
1050
|
end
|
1012
1051
|
|
1013
1052
|
protected
|
data/lib/cassandra/protocol.rb
CHANGED
@@ -26,7 +26,26 @@ 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 =
|
29
|
+
result = _get_columns_as_hash(column_family, key, columns, sub_columns, consistency)
|
30
|
+
klass = column_name_class(column_family)
|
31
|
+
(sub_columns || columns).map { |name| result[klass.new(name)] }
|
32
|
+
end
|
33
|
+
|
34
|
+
def _get_columns_as_hash(column_family, key, columns, sub_columns, consistency)
|
35
|
+
if column_family.is_a?(CassandraThrift::ColumnParent)
|
36
|
+
client.get_slice(key,
|
37
|
+
column_family,
|
38
|
+
columns,
|
39
|
+
consistency)
|
40
|
+
.inject(OrderedHash.new) do |hsh, row|
|
41
|
+
if column = row.column
|
42
|
+
hsh.send :[]=, column.name, column.value, column.timestamp
|
43
|
+
elsif column = row.counter_column
|
44
|
+
hsh.send :[]=, column.name, column.value, 0
|
45
|
+
end
|
46
|
+
hsh
|
47
|
+
end
|
48
|
+
elsif is_super(column_family)
|
30
49
|
if sub_columns
|
31
50
|
columns_to_hash(column_family, client.get_slice(key,
|
32
51
|
CassandraThrift::ColumnParent.new(:column_family => column_family, :super_column => columns),
|
@@ -44,11 +63,8 @@ class Cassandra
|
|
44
63
|
CassandraThrift::SlicePredicate.new(:column_names => columns),
|
45
64
|
consistency))
|
46
65
|
end
|
47
|
-
|
48
|
-
klass = column_name_class(column_family)
|
49
|
-
(sub_columns || columns).map { |name| result[klass.new(name)] }
|
50
66
|
end
|
51
|
-
|
67
|
+
|
52
68
|
def _multi_get_columns(column_family, keys, columns, sub_columns, consistency)
|
53
69
|
result = if is_super(column_family) and sub_columns
|
54
70
|
predicate = CassandraThrift::SlicePredicate.new(:column_names => sub_columns)
|
@@ -67,8 +83,10 @@ class Cassandra
|
|
67
83
|
end
|
68
84
|
|
69
85
|
def _multiget(column_family, keys, column, sub_column, count, start, finish, reversed, consistency)
|
86
|
+
if column_family.is_a?(CassandraThrift::ColumnParent)
|
87
|
+
multi_columns_to_hash!(column_family.column_family, client.multiget_slice(keys, column_family, column, consistency))
|
70
88
|
# Single values; count and range parameters have no effect
|
71
|
-
|
89
|
+
elsif is_super(column_family) and sub_column
|
72
90
|
predicate = CassandraThrift::SlicePredicate.new(:column_names => [sub_column])
|
73
91
|
column_parent = CassandraThrift::ColumnParent.new(:column_family => column_family, :super_column => column)
|
74
92
|
column_hash = multi_sub_columns_to_hash!(column_family, client.multiget_slice(keys, column_parent, predicate, consistency))
|
@@ -134,19 +152,39 @@ class Cassandra
|
|
134
152
|
client.get_indexed_slices(column_parent, index_clause, predicate, consistency)
|
135
153
|
end
|
136
154
|
|
137
|
-
def _get_slice(column_family, key, start, finish, count, reversed, consistency)
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
155
|
+
def _get_slice(column_family, key, column, start, finish, count, reversed, consistency)
|
156
|
+
if column_family.is_a?(CassandraThrift::ColumnParent)
|
157
|
+
parent = column_family
|
158
|
+
predicate = column
|
159
|
+
else
|
160
|
+
parent = CassandraThrift::ColumnParent.new(:column_family => column_family)
|
161
|
+
predicate = if column
|
162
|
+
CassandraThrift::SlicePredicate.new(:column_names => [column])
|
163
|
+
else
|
164
|
+
CassandraThrift::SlicePredicate.
|
165
|
+
new(:slice_range =>
|
166
|
+
CassandraThrift::SliceRange.new(:start => start,
|
167
|
+
:finish => finish,
|
168
|
+
:count => count,
|
169
|
+
:reversed => reversed))
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
OrderedHash.new.tap do |result|
|
174
|
+
client.get_slice(key, parent, predicate, consistency).each do |row|
|
175
|
+
if column = row.column
|
176
|
+
result.send :[]=, column.name, column.value, column.timestamp
|
177
|
+
elsif column = row.counter_column
|
178
|
+
result.send :[]=, column.name, column.value, 0
|
179
|
+
end
|
148
180
|
end
|
149
181
|
end
|
150
182
|
end
|
183
|
+
|
184
|
+
def _get(column_family, key, column, consistency)
|
185
|
+
column_path = CassandraThrift::ColumnPath.new(:column_family => column_family, :column => column)
|
186
|
+
result = client.get(key, column_path, consistency)
|
187
|
+
(result.column || result.counter_column).value
|
188
|
+
end
|
151
189
|
end
|
152
190
|
end
|
data/sessionm-cassandra.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sessionm-cassandra
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Evan Weaver, Ryan King
|
@@ -163,28 +163,28 @@ licenses: []
|
|
163
163
|
metadata: {}
|
164
164
|
post_install_message:
|
165
165
|
rdoc_options:
|
166
|
-
-
|
167
|
-
-
|
168
|
-
-
|
166
|
+
- --line-numbers
|
167
|
+
- --inline-source
|
168
|
+
- --title
|
169
169
|
- Cassandra
|
170
|
-
-
|
170
|
+
- --main
|
171
171
|
- README.md
|
172
172
|
require_paths:
|
173
173
|
- lib
|
174
174
|
- ext
|
175
175
|
required_ruby_version: !ruby/object:Gem::Requirement
|
176
176
|
requirements:
|
177
|
-
- -
|
177
|
+
- - ! '>='
|
178
178
|
- !ruby/object:Gem::Version
|
179
179
|
version: '0'
|
180
180
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
181
181
|
requirements:
|
182
|
-
- -
|
182
|
+
- - ! '>='
|
183
183
|
- !ruby/object:Gem::Version
|
184
184
|
version: '0'
|
185
185
|
requirements: []
|
186
186
|
rubyforge_project: cassandra
|
187
|
-
rubygems_version: 2.
|
187
|
+
rubygems_version: 2.4.6
|
188
188
|
signing_key:
|
189
189
|
specification_version: 4
|
190
190
|
summary: A Ruby client for the Cassandra distributed database.
|