sessionm-cassandra_object 4.0.18 → 4.0.20

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,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f4f7695ab50cc8f809469eae9e85df59aa5e8167
4
- data.tar.gz: c366e423d4218302c58b9470fabdce04fbddc5e2
3
+ metadata.gz: 32924130490af3ac836dfc59d0c17814e0879928
4
+ data.tar.gz: 58f04eefe80bd07d77082945521c48acf43944c5
5
5
  SHA512:
6
- metadata.gz: 65b1137b9b00dfdcd4dabc4c1c6d4112b2d98b9a9cb039e11a11d5308c56cdd41007638b4b6210a1fdb42a649cacf50d2b3d57f05cefb48b17345038f83bdabd
7
- data.tar.gz: 828a23a774fe4d56a085c376dc7673910391ef8d6a441ea440f1f6319edab25200792714486eb801ba1f32a25cf61ab51279b1526a6918f0d862e45524aa23e1
6
+ metadata.gz: c382c6fd5f4c0f4f31c7954c76f1c015c19c4630e56346478d2a41a2667ea6e578164292e3da233166e15657ec610d09400175727d43a595997c60d545388732
7
+ data.tar.gz: 63d6cb50a2bf1951a02ffb3e80213c0faf35ed289998e473dcc7f6316aa216220f5181c0bc4dc53ada42b5c1a785f4b19c85339b347bed7d216c059d30758acc
@@ -41,11 +41,9 @@ module CassandraObject
41
41
  :port => 9042,
42
42
  :connect_timeout => config[:thrift].try(:[], :connect_timeout) || 10,
43
43
  :timeout => config[:thrift].try(:[], :timeout) || 10,
44
- :logger => (defined?(Rails) && Rails.logger) || Logger.new(STDOUT),
45
- :heartbeat_interval => nil,
46
- :idle_timeout => nil
44
+ :logger => config[:logger] || (defined?(Rails) && Rails.logger) || Logger.new(STDOUT)
47
45
  ).merge(
48
- :consistency => (config[:consistency] || {})[:write_default].try(:to_sym) || :one,
46
+ :consistency => (config[:consistency] || {})[:write_default].try(:to_sym) || :one
49
47
  )
50
48
  end
51
49
 
@@ -85,11 +83,10 @@ module CassandraObject
85
83
  async = opts.try(:[], :async)
86
84
 
87
85
  insert_into_options = ttl ? " USING TTL #{ttl}" : ''
88
- key = "textAsBlob('#{key}')"
89
86
 
90
87
  query = "BEGIN BATCH\n"
91
88
  query << values.map do |name, value|
92
- " INSERT INTO \"#{column_family}\" (#{KEY_FIELD}, #{NAME_FIELD}, #{VALUE_FIELD}) VALUES (#{key}, #{escape(name, name_type(column_family))}, #{escape(value, value_type(column_family))})#{insert_into_options}"
89
+ " INSERT INTO \"#{column_family}\" (#{KEY_FIELD}, #{NAME_FIELD}, #{VALUE_FIELD}) VALUES (#{escape(key, key_type(column_family))}, #{escape(name, name_type(column_family))}, #{escape(value, value_type(column_family))})#{insert_into_options}"
93
90
  end.join("\n")
94
91
  query << "\nAPPLY BATCH;"
95
92
 
@@ -102,13 +99,11 @@ module CassandraObject
102
99
 
103
100
  columns = columns_options.flatten.compact
104
101
 
105
- key = "textAsBlob('#{key}')"
106
-
107
102
  query =
108
103
  if columns.size == 1
109
- "SELECT #{VALUE_FIELD} FROM \"#{column_family}\" WHERE #{KEY_FIELD} = #{key} AND #{NAME_FIELD} = '#{columns.first}'"
104
+ "SELECT #{VALUE_FIELD} FROM \"#{column_family}\" WHERE #{KEY_FIELD} = #{escape(key, key_type(column_family))} AND #{NAME_FIELD} = #{escape(columns.first, name_type(column_family))}"
110
105
  else
111
- "SELECT #{NAME_FIELD}, #{VALUE_FIELD} FROM \"#{column_family}\" WHERE #{KEY_FIELD} = #{key}"
106
+ "SELECT #{NAME_FIELD}, #{VALUE_FIELD} FROM \"#{column_family}\" WHERE #{KEY_FIELD} = #{escape(key, key_type(column_family))}"
112
107
  end
113
108
 
114
109
  result = async ? self.execute_async(query, execute_options(opts)) : self.execute(query, execute_options(opts))
@@ -125,11 +120,9 @@ module CassandraObject
125
120
  def get_columns(column_family, key, columns, opts)
126
121
  async = opts.try(:[], :async)
127
122
 
128
- key = "textAsBlob('#{key}')"
129
-
130
- name_fields = columns.map { |c| "'#{c}'" }.join(', ')
123
+ name_fields = columns.map { |c| escape(c, name_type(column_family)) }.join(', ')
131
124
 
132
- query = "SELECT #{NAME_FIELD}, #{VALUE_FIELD} FROM \"#{column_family}\" WHERE #{NAME_FIELD} IN(#{name_fields}) AND #{KEY_FIELD} = #{key}"
125
+ query = "SELECT #{NAME_FIELD}, #{VALUE_FIELD} FROM \"#{column_family}\" WHERE #{NAME_FIELD} IN(#{name_fields}) AND #{KEY_FIELD} = #{escape(key, key_type(column_family))}"
133
126
 
134
127
  result = async ? self.execute_async(query, execute_options(opts)) : self.execute(query, execute_options(opts))
135
128
  return result if async
@@ -143,11 +136,9 @@ module CassandraObject
143
136
  def get_columns_as_hash(column_family, key, columns, opts)
144
137
  async = opts.try(:[], :async)
145
138
 
146
- key = "textAsBlob('#{key}')"
147
-
148
139
  name_fields = columns.map { |c| "'#{c}'" }.join(', ')
149
140
 
150
- query = "SELECT #{NAME_FIELD}, #{VALUE_FIELD} FROM \"#{column_family}\" WHERE #{NAME_FIELD} IN(#{name_fields}) AND #{KEY_FIELD} = #{key}"
141
+ query = "SELECT #{NAME_FIELD}, #{VALUE_FIELD} FROM \"#{column_family}\" WHERE #{NAME_FIELD} IN(#{name_fields}) AND #{KEY_FIELD} = #{escape(key, key_type(column_family))}"
151
142
 
152
143
  result = async ? self.execute_async(query, execute_options(opts)) : self.execute(query, execute_options(opts))
153
144
  return result if async
@@ -163,10 +154,9 @@ module CassandraObject
163
154
  def add(column_family, key, by, fields, opts=nil)
164
155
  async = opts.try(:[], :async)
165
156
  fields = [fields] unless fields.is_a?(Array)
166
- key = "textAsBlob('#{key}')"
167
157
 
168
158
  fields.each do |field|
169
- query = "UPDATE \"#{column_family}\" SET #{VALUE_FIELD} = #{VALUE_FIELD} + #{by} WHERE #{KEY_FIELD} = #{key} AND #{NAME_FIELD} = '#{field}';"
159
+ query = "UPDATE \"#{column_family}\" SET #{VALUE_FIELD} = #{VALUE_FIELD} + #{by} WHERE #{KEY_FIELD} = #{escape(key, key_type(column_family))} AND #{NAME_FIELD} = #{escape(field, name_type(column_family))};"
170
160
  async ? self.execute_async(query, execute_options(opts)) : self.execute(query, execute_options(opts))
171
161
  end
172
162
  end
@@ -174,13 +164,12 @@ module CassandraObject
174
164
  def remove(column_family, key, *args)
175
165
  opts = args.pop if args.last.is_a?(Hash)
176
166
  async = opts.try(:[], :async)
177
- key = "textAsBlob('#{key}')"
178
167
 
179
168
  query =
180
169
  if args.first.nil? || args.first.is_a?(Hash)
181
- "DELETE FROM \"#{column_family}\" WHERE #{KEY_FIELD} = #{key};"
170
+ "DELETE FROM \"#{column_family}\" WHERE #{KEY_FIELD} = #{escape(key, key_type(column_family))};"
182
171
  else
183
- "DELETE \"#{column_family}\" WHERE #{KEY_FIELD} = #{key} AND #{NAME_FIELD} = '#{args.first}';"
172
+ "DELETE \"#{column_family}\" WHERE #{KEY_FIELD} = #{escape(key, key_type(column_family))} AND #{NAME_FIELD} = #{escape(args.first, name_type(column_family))};"
184
173
  end
185
174
 
186
175
  async ? self.execute_async(query, execute_options(opts)) : self.execute(query, execute_options(opts))
@@ -195,7 +184,7 @@ module CassandraObject
195
184
 
196
185
  def multi_get(column_family, keys, *args)
197
186
  opts = args.pop if args.last.is_a?(Hash)
198
- keys = keys.map { |key| "textAsBlob('#{key}')" }.join(',')
187
+ keys = keys.map { |key| escape(key, key_type(column_family)) }.join(',')
199
188
  results = {}
200
189
  query = "SELECT * FROM \"#{column_family}\" WHERE #{KEY_FIELD} IN(#{keys})"
201
190
  self.execute(query, execute_options(opts)).each do |row|
@@ -208,9 +197,7 @@ module CassandraObject
208
197
  def get_slice(column_family, key, column, start, finish, count, reversed, consistency, opts={})
209
198
  opts[:consistency] = consistency
210
199
 
211
- key = "textAsBlob('#{key}')"
212
-
213
- query = "SELECT * FROM \"#{column_family}\" WHERE #{KEY_FIELD} = #{key}"
200
+ query = "SELECT * FROM \"#{column_family}\" WHERE #{KEY_FIELD} = #{escape(key, key_type(column_family))}"
214
201
  query << " AND #{NAME_FIELD} = #{escape(column, name_type(column_family))}" if column
215
202
  query << " AND #{NAME_FIELD} >= #{escape(start, name_type(column_family))}" unless start.empty?
216
203
  query << " AND #{NAME_FIELD} <= #{escape(finish, name_type(column_family))}" unless finish.empty?
@@ -291,6 +278,10 @@ CQL
291
278
  self.column_families[column_family.name.to_s] = column_family
292
279
  end
293
280
 
281
+ def key_type(column_family)
282
+ self.cluster.keyspace(keyspace).table(column_family).column(KEY_FIELD).type.kind
283
+ end
284
+
294
285
  def name_type(column_family)
295
286
  self.cluster.keyspace(keyspace).table(column_family).column(NAME_FIELD).type.kind
296
287
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'sessionm-cassandra_object'
5
- s.version = '4.0.18'
5
+ s.version = '4.0.20'
6
6
  s.description = 'Cassandra ActiveModel'
7
7
  s.summary = 'Cassandra ActiveModel'
8
8
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sessionm-cassandra_object
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.18
4
+ version: 4.0.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - Doug Youch
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-04-28 00:00:00.000000000 Z
12
+ date: 2017-03-10 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Cassandra ActiveModel
15
15
  email: doug@sessionm.com
@@ -151,7 +151,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
151
151
  version: '0'
152
152
  requirements: []
153
153
  rubyforge_project:
154
- rubygems_version: 2.4.6
154
+ rubygems_version: 2.4.8
155
155
  signing_key:
156
156
  specification_version: 4
157
157
  summary: Cassandra ActiveModel