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