sessionm-cassandra 1.1.0 → 1.1.1
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.
- 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.
|