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 CHANGED
@@ -1,7 +1,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 8a9ab7395b368178388fd47a3dbc6a4c2098a932
4
- data.tar.gz: 22d79eaee512777ab8b19a607115b4b50543cdf2
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ZWU2YjgyNzljYzQ5YTY1ZTlhNGViYzc2ZDAyMzMxMDZlMzgyMzA2ZA==
5
+ data.tar.gz: !binary |-
6
+ YjI0MTlmNmJmNTgwNWM1NzQzNjJjZWRiMjRjMTFiOGJjZGQzNDdmOA==
5
7
  SHA512:
6
- metadata.gz: 987be0cd4fa949f6cfd83cadaf2da0d4c48271224a787c490cf9c9c154515c039ea1009eec71dbd4b67e6f725c39842e99c82d1dae49b8c719f92200a73d84f8
7
- data.tar.gz: e2b54edff3b53461101914989f31e7d313533770f85655c81b0f1e3ce461207c795c73f7c3efd051422522278cc3c9491b86c4f690ec629726ce4e70e377f153
8
+ metadata.gz: !binary |-
9
+ ZTc4OTFhNzVhZTg0MTBhNDY3ZDk4MzJkMDBkYjhhMTM5NmJjZWM1MGJlZTQz
10
+ NjI0ZGUxNDJmNjkyZGM2YWM4N2QzZTdmMjdmMWE1NjMxYmVkMmQ4NzYyMWNk
11
+ MDIyOGQ1ZmY4MDEyNjFiNGVhNDgzY2I4ZjEwYzNhNDVjYWRkYTM=
12
+ data.tar.gz: !binary |-
13
+ YmMxZjY2NmQ3NWFjM2U3YzI1Y2EyYjM1ODUxMTFiZWI0Mzk3MzFjYmRkOTQ4
14
+ MjVjYjg3YzRlN2UwZDJhYTNlMzJmODk5MWVhMmY5NmEwMGQ5OWU5MTQ4YzE4
15
+ N2RkNmY4YjlmMzU1MTQxYTk1MjE0ODlkNmYyMjQ1YTEwY2UzY2Q=
@@ -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
- multi_get(column_family, [key], *columns_and_options)[key]
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 super column
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
@@ -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 = if is_super(column_family)
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
- if is_super(column_family) and sub_column
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
- parent = CassandraThrift::ColumnParent.new(:column_family => column_family)
139
- predicate = CassandraThrift::SlicePredicate.
140
- new(:slice_range =>
141
- CassandraThrift::SliceRange.new(:start => start,
142
- :finish => finish,
143
- :count => count,
144
- :reversed => reversed))
145
- {}.tap do |result|
146
- client.get_slice(key, parent, predicate, consistency).each do |column|
147
- result[column.counter_super_column.name] = _columns_to_hash(column.counter_super_column.columns)
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
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "sessionm-cassandra"
5
- s.version = "1.1.0"
5
+ s.version = "1.1.1"
6
6
 
7
7
  s.authors = ["Evan Weaver, Ryan King", "Kris Lange"]
8
8
  s.date = "2012-09-26"
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.0
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
- - "--line-numbers"
167
- - "--inline-source"
168
- - "--title"
166
+ - --line-numbers
167
+ - --inline-source
168
+ - --title
169
169
  - Cassandra
170
- - "--main"
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.2.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.