cequel 0.5.5 → 0.5.6
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.
- data/lib/cequel/data_set.rb +6 -2
- data/lib/cequel/keyspace.rb +16 -0
- data/lib/cequel/model/persistence.rb +4 -0
- data/lib/cequel/version.rb +1 -1
- data/spec/examples/data_set_spec.rb +36 -0
- metadata +68 -68
data/lib/cequel/data_set.rb
CHANGED
@@ -294,6 +294,9 @@ module Cequel
|
|
294
294
|
# @option options [Time,Integer] :timestamp the timestamp associated with the column values
|
295
295
|
#
|
296
296
|
def generate_upsert_options(options)
|
297
|
+
if keyspace.default_consistency
|
298
|
+
options[:consistency] ||= keyspace.default_consistency
|
299
|
+
end
|
297
300
|
if options.empty?
|
298
301
|
''
|
299
302
|
else
|
@@ -331,8 +334,9 @@ module Cequel
|
|
331
334
|
end
|
332
335
|
|
333
336
|
def consistency_cql
|
334
|
-
|
335
|
-
|
337
|
+
consistency = @consistency || keyspace.default_consistency
|
338
|
+
if consistency
|
339
|
+
" USING CONSISTENCY #{consistency.upcase}"
|
336
340
|
else ''
|
337
341
|
end
|
338
342
|
end
|
data/lib/cequel/keyspace.rb
CHANGED
@@ -50,6 +50,22 @@ module Cequel
|
|
50
50
|
@slowlog_threshold
|
51
51
|
end
|
52
52
|
|
53
|
+
def with_consistency(consistency)
|
54
|
+
previous_consistency = default_consistency
|
55
|
+
Thread.current[consistency_key] = consistency
|
56
|
+
yield
|
57
|
+
ensure
|
58
|
+
Thread.current[consistency_key] = previous_consistency
|
59
|
+
end
|
60
|
+
|
61
|
+
def default_consistency
|
62
|
+
Thread.current[consistency_key]
|
63
|
+
end
|
64
|
+
|
65
|
+
def consistency_key
|
66
|
+
"Cequel::Keyspace[#{object_id}]#default_consistency"
|
67
|
+
end
|
68
|
+
|
53
69
|
def connection_pool
|
54
70
|
return @connection_pool if defined? @connection_pool
|
55
71
|
if @configuration[:pool]
|
@@ -49,6 +49,10 @@ module Cequel
|
|
49
49
|
Cequel::Model.keyspace
|
50
50
|
end
|
51
51
|
|
52
|
+
def with_consistency(consistency, &block)
|
53
|
+
keyspace.with_consistency(consistency, &block)
|
54
|
+
end
|
55
|
+
|
52
56
|
def _hydrate(row)
|
53
57
|
type_column_name = @_cequel.type_column.try(:name)
|
54
58
|
if type_column_name && row[type_column_name]
|
data/lib/cequel/version.rb
CHANGED
@@ -19,6 +19,15 @@ describe Cequel::DataSet do
|
|
19
19
|
)
|
20
20
|
end
|
21
21
|
|
22
|
+
it 'should respect with_consistency block' do
|
23
|
+
connection.should_receive(:execute).
|
24
|
+
with "INSERT INTO posts (?) VALUES (?) USING CONSISTENCY QUORUM", [:id, :title], [1, 'Fun times']
|
25
|
+
|
26
|
+
cequel.with_consistency(:quorum) do
|
27
|
+
cequel[:posts].insert(:id => 1, :title => 'Fun times')
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
22
31
|
it 'should include ttl argument' do
|
23
32
|
connection.should_receive(:execute).
|
24
33
|
with "INSERT INTO posts (?) VALUES (?) USING TTL 600", [:id, :title], [1, 'Fun times']
|
@@ -75,6 +84,15 @@ describe Cequel::DataSet do
|
|
75
84
|
)
|
76
85
|
end
|
77
86
|
|
87
|
+
it 'should respect default consistency' do
|
88
|
+
connection.should_receive(:execute).
|
89
|
+
with "UPDATE posts USING CONSISTENCY QUORUM SET ? = ?, ? = ?", :title, 'Fun times', :body, 'Fun'
|
90
|
+
|
91
|
+
cequel.with_consistency(:quorum) do
|
92
|
+
cequel[:posts].update(:title => 'Fun times', :body => 'Fun')
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
78
96
|
it 'should send update statement scoped to current row specifications' do
|
79
97
|
connection.should_receive(:execute).
|
80
98
|
with "UPDATE posts SET ? = ? WHERE ? = ?", :title, 'Fun', :id, 4
|
@@ -146,6 +164,15 @@ describe Cequel::DataSet do
|
|
146
164
|
)
|
147
165
|
end
|
148
166
|
|
167
|
+
it 'should respect default consistency' do
|
168
|
+
connection.should_receive(:execute).
|
169
|
+
with "DELETE ? FROM posts USING CONSISTENCY QUORUM", [:title, :body]
|
170
|
+
|
171
|
+
cequel.with_consistency(:quorum) do
|
172
|
+
cequel[:posts].delete(:title, :body)
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
149
176
|
it 'should send delete statement with scoped row specifications' do
|
150
177
|
connection.should_receive(:execute).
|
151
178
|
with "DELETE FROM posts WHERE ? = ?", :id, 4
|
@@ -310,6 +337,15 @@ describe Cequel::DataSet do
|
|
310
337
|
end
|
311
338
|
end
|
312
339
|
|
340
|
+
describe 'in with_consistency block' do
|
341
|
+
it 'should use default consistency' do
|
342
|
+
cequel.with_consistency(:quorum) do
|
343
|
+
cequel[:posts].cql.
|
344
|
+
should == ["SELECT * FROM posts USING CONSISTENCY QUORUM"]
|
345
|
+
end
|
346
|
+
end
|
347
|
+
end
|
348
|
+
|
313
349
|
describe '#limit' do
|
314
350
|
it 'should add LIMIT' do
|
315
351
|
cequel[:posts].limit(2).cql.
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cequel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2013-04-
|
14
|
+
date: 2013-04-29 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: activesupport
|
@@ -171,80 +171,80 @@ extensions: []
|
|
171
171
|
extra_rdoc_files: []
|
172
172
|
files:
|
173
173
|
- lib/cequel.rb
|
174
|
+
- lib/cequel/keyspace.rb
|
174
175
|
- lib/cequel/cql_row_specification.rb
|
175
|
-
- lib/cequel/statement.rb
|
176
176
|
- lib/cequel/model/inheritable.rb
|
177
|
-
- lib/cequel/model/remote_association.rb
|
178
177
|
- lib/cequel/model/counter.rb
|
179
|
-
- lib/cequel/model/naming.rb
|
180
|
-
- lib/cequel/model/readable_dictionary.rb
|
181
|
-
- lib/cequel/model/associations.rb
|
182
|
-
- lib/cequel/model/mass_assignment_security.rb
|
183
|
-
- lib/cequel/model/dictionary.rb
|
184
|
-
- lib/cequel/model/translation.rb
|
185
|
-
- lib/cequel/model/subclass_internals.rb
|
186
|
-
- lib/cequel/model/magic.rb
|
187
178
|
- lib/cequel/model/callbacks.rb
|
179
|
+
- lib/cequel/model/naming.rb
|
180
|
+
- lib/cequel/model/instance_internals.rb
|
188
181
|
- lib/cequel/model/dynamic.rb
|
189
|
-
- lib/cequel/model/
|
182
|
+
- lib/cequel/model/properties.rb
|
190
183
|
- lib/cequel/model/column.rb
|
191
|
-
- lib/cequel/model/
|
192
|
-
- lib/cequel/model/
|
184
|
+
- lib/cequel/model/observer.rb
|
185
|
+
- lib/cequel/model/mass_assignment_security.rb
|
186
|
+
- lib/cequel/model/associations.rb
|
193
187
|
- lib/cequel/model/persistence.rb
|
194
|
-
- lib/cequel/model/railtie.rb
|
195
|
-
- lib/cequel/model/properties.rb
|
196
188
|
- lib/cequel/model/scope.rb
|
189
|
+
- lib/cequel/model/magic.rb
|
190
|
+
- lib/cequel/model/readable_dictionary.rb
|
191
|
+
- lib/cequel/model/remote_association.rb
|
192
|
+
- lib/cequel/model/class_internals.rb
|
193
|
+
- lib/cequel/model/validations.rb
|
194
|
+
- lib/cequel/model/railtie.rb
|
195
|
+
- lib/cequel/model/translation.rb
|
197
196
|
- lib/cequel/model/scoped.rb
|
198
|
-
- lib/cequel/model/timestamps.rb
|
199
|
-
- lib/cequel/model/local_association.rb
|
200
197
|
- lib/cequel/model/dirty.rb
|
201
198
|
- lib/cequel/model/errors.rb
|
202
|
-
- lib/cequel/model/
|
203
|
-
- lib/cequel/
|
199
|
+
- lib/cequel/model/local_association.rb
|
200
|
+
- lib/cequel/model/dictionary.rb
|
201
|
+
- lib/cequel/model/subclass_internals.rb
|
202
|
+
- lib/cequel/model/timestamps.rb
|
203
|
+
- lib/cequel/model.rb
|
204
204
|
- lib/cequel/version.rb
|
205
205
|
- lib/cequel/data_set.rb
|
206
|
-
- lib/cequel/row_specification.rb
|
207
|
-
- lib/cequel/new_relic_instrumentation.rb
|
208
|
-
- lib/cequel/model.rb
|
209
206
|
- lib/cequel/batch.rb
|
207
|
+
- lib/cequel/new_relic_instrumentation.rb
|
208
|
+
- lib/cequel/statement.rb
|
210
209
|
- lib/cequel/errors.rb
|
211
|
-
-
|
212
|
-
- spec/examples/spec_helper.rb
|
213
|
-
- spec/examples/data_set_spec.rb
|
214
|
-
- spec/examples/keyspace_spec.rb
|
215
|
-
- spec/examples/model/naming_spec.rb
|
216
|
-
- spec/examples/model/properties_spec.rb
|
217
|
-
- spec/examples/model/observer_spec.rb
|
218
|
-
- spec/examples/model/mass_assignment_security_spec.rb
|
219
|
-
- spec/examples/model/dynamic_spec.rb
|
220
|
-
- spec/examples/model/dirty_spec.rb
|
221
|
-
- spec/examples/model/spec_helper.rb
|
222
|
-
- spec/examples/model/timestamps_spec.rb
|
223
|
-
- spec/examples/model/persistence_spec.rb
|
224
|
-
- spec/examples/model/magic_spec.rb
|
225
|
-
- spec/examples/model/counter_spec.rb
|
226
|
-
- spec/examples/model/callbacks_spec.rb
|
227
|
-
- spec/examples/model/inheritable_spec.rb
|
228
|
-
- spec/examples/model/scope_spec.rb
|
229
|
-
- spec/examples/model/dictionary_spec.rb
|
230
|
-
- spec/examples/model/serialization_spec.rb
|
231
|
-
- spec/examples/model/validations_spec.rb
|
232
|
-
- spec/examples/model/associations_spec.rb
|
233
|
-
- spec/examples/model/translation_spec.rb
|
210
|
+
- lib/cequel/row_specification.rb
|
234
211
|
- spec/models/post_observer.rb
|
235
|
-
- spec/models/blog_posts.rb
|
236
|
-
- spec/models/blog.rb
|
237
212
|
- spec/models/comment_counts.rb
|
238
|
-
- spec/models/
|
213
|
+
- spec/models/asset_observer.rb
|
239
214
|
- spec/models/photo.rb
|
240
|
-
- spec/models/asset.rb
|
241
215
|
- spec/models/post_comments.rb
|
242
216
|
- spec/models/comment.rb
|
243
|
-
- spec/models/
|
217
|
+
- spec/models/blog_posts.rb
|
218
|
+
- spec/models/blog.rb
|
219
|
+
- spec/models/asset.rb
|
220
|
+
- spec/models/post.rb
|
244
221
|
- spec/models/category.rb
|
245
222
|
- spec/support/helpers.rb
|
246
223
|
- spec/support/result_stub.rb
|
247
224
|
- spec/shared/readable_dictionary.rb
|
225
|
+
- spec/environment.rb
|
226
|
+
- spec/examples/model/dictionary_spec.rb
|
227
|
+
- spec/examples/model/observer_spec.rb
|
228
|
+
- spec/examples/model/dirty_spec.rb
|
229
|
+
- spec/examples/model/callbacks_spec.rb
|
230
|
+
- spec/examples/model/persistence_spec.rb
|
231
|
+
- spec/examples/model/serialization_spec.rb
|
232
|
+
- spec/examples/model/dynamic_spec.rb
|
233
|
+
- spec/examples/model/validations_spec.rb
|
234
|
+
- spec/examples/model/scope_spec.rb
|
235
|
+
- spec/examples/model/mass_assignment_security_spec.rb
|
236
|
+
- spec/examples/model/timestamps_spec.rb
|
237
|
+
- spec/examples/model/properties_spec.rb
|
238
|
+
- spec/examples/model/counter_spec.rb
|
239
|
+
- spec/examples/model/inheritable_spec.rb
|
240
|
+
- spec/examples/model/translation_spec.rb
|
241
|
+
- spec/examples/model/associations_spec.rb
|
242
|
+
- spec/examples/model/naming_spec.rb
|
243
|
+
- spec/examples/model/spec_helper.rb
|
244
|
+
- spec/examples/model/magic_spec.rb
|
245
|
+
- spec/examples/data_set_spec.rb
|
246
|
+
- spec/examples/keyspace_spec.rb
|
247
|
+
- spec/examples/spec_helper.rb
|
248
248
|
homepage: https://github.com/brewster/cequel
|
249
249
|
licenses:
|
250
250
|
- MIT
|
@@ -272,26 +272,26 @@ signing_key:
|
|
272
272
|
specification_version: 3
|
273
273
|
summary: Query abstraction layer and object-row mapper for Cassandra and CQL
|
274
274
|
test_files:
|
275
|
-
- spec/examples/
|
276
|
-
- spec/examples/data_set_spec.rb
|
277
|
-
- spec/examples/keyspace_spec.rb
|
278
|
-
- spec/examples/model/naming_spec.rb
|
279
|
-
- spec/examples/model/properties_spec.rb
|
275
|
+
- spec/examples/model/dictionary_spec.rb
|
280
276
|
- spec/examples/model/observer_spec.rb
|
281
|
-
- spec/examples/model/mass_assignment_security_spec.rb
|
282
|
-
- spec/examples/model/dynamic_spec.rb
|
283
277
|
- spec/examples/model/dirty_spec.rb
|
284
|
-
- spec/examples/model/spec_helper.rb
|
285
|
-
- spec/examples/model/timestamps_spec.rb
|
286
|
-
- spec/examples/model/persistence_spec.rb
|
287
|
-
- spec/examples/model/magic_spec.rb
|
288
|
-
- spec/examples/model/counter_spec.rb
|
289
278
|
- spec/examples/model/callbacks_spec.rb
|
290
|
-
- spec/examples/model/
|
291
|
-
- spec/examples/model/scope_spec.rb
|
292
|
-
- spec/examples/model/dictionary_spec.rb
|
279
|
+
- spec/examples/model/persistence_spec.rb
|
293
280
|
- spec/examples/model/serialization_spec.rb
|
281
|
+
- spec/examples/model/dynamic_spec.rb
|
294
282
|
- spec/examples/model/validations_spec.rb
|
295
|
-
- spec/examples/model/
|
283
|
+
- spec/examples/model/scope_spec.rb
|
284
|
+
- spec/examples/model/mass_assignment_security_spec.rb
|
285
|
+
- spec/examples/model/timestamps_spec.rb
|
286
|
+
- spec/examples/model/properties_spec.rb
|
287
|
+
- spec/examples/model/counter_spec.rb
|
288
|
+
- spec/examples/model/inheritable_spec.rb
|
296
289
|
- spec/examples/model/translation_spec.rb
|
290
|
+
- spec/examples/model/associations_spec.rb
|
291
|
+
- spec/examples/model/naming_spec.rb
|
292
|
+
- spec/examples/model/spec_helper.rb
|
293
|
+
- spec/examples/model/magic_spec.rb
|
294
|
+
- spec/examples/data_set_spec.rb
|
295
|
+
- spec/examples/keyspace_spec.rb
|
296
|
+
- spec/examples/spec_helper.rb
|
297
297
|
has_rdoc: false
|