cassandra-driver 3.0.0.beta.1 → 3.0.0.rc.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/README.md +90 -38
- data/ext/cassandra_murmur3/cassandra_murmur3.c +1 -1
- data/lib/cassandra.rb +327 -130
- data/lib/cassandra/address_resolution.rb +1 -1
- data/lib/cassandra/address_resolution/policies/ec2_multi_region.rb +1 -1
- data/lib/cassandra/address_resolution/policies/none.rb +1 -1
- data/lib/cassandra/aggregate.rb +21 -7
- data/lib/cassandra/argument.rb +2 -2
- data/lib/cassandra/auth.rb +4 -4
- data/lib/cassandra/auth/providers.rb +1 -1
- data/lib/cassandra/auth/providers/password.rb +9 -5
- data/lib/cassandra/cassandra_logger.rb +80 -0
- data/lib/cassandra/cluster.rb +38 -9
- data/lib/cassandra/cluster/client.rb +801 -205
- data/lib/cassandra/cluster/connection_pool.rb +2 -2
- data/lib/cassandra/cluster/connector.rb +74 -25
- data/lib/cassandra/cluster/control_connection.rb +217 -82
- data/lib/cassandra/cluster/failed_connection.rb +1 -1
- data/lib/cassandra/cluster/metadata.rb +12 -4
- data/lib/cassandra/cluster/options.rb +60 -11
- data/lib/cassandra/cluster/registry.rb +69 -16
- data/lib/cassandra/cluster/schema.rb +25 -7
- data/lib/cassandra/cluster/schema/cql_type_parser.rb +15 -10
- data/lib/cassandra/cluster/schema/fetchers.rb +263 -106
- data/lib/cassandra/cluster/schema/fqcn_type_parser.rb +41 -36
- data/lib/cassandra/cluster/schema/partitioners.rb +1 -1
- data/lib/cassandra/cluster/schema/partitioners/murmur3.rb +3 -3
- data/lib/cassandra/cluster/schema/partitioners/ordered.rb +1 -1
- data/lib/cassandra/cluster/schema/partitioners/random.rb +1 -1
- data/lib/cassandra/cluster/schema/replication_strategies.rb +1 -1
- data/lib/cassandra/cluster/schema/replication_strategies/network_topology.rb +19 -18
- data/lib/cassandra/cluster/schema/replication_strategies/none.rb +1 -1
- data/lib/cassandra/cluster/schema/replication_strategies/simple.rb +1 -1
- data/lib/cassandra/column.rb +3 -3
- data/lib/cassandra/compression.rb +1 -1
- data/lib/cassandra/compression/compressors/lz4.rb +4 -3
- data/lib/cassandra/compression/compressors/snappy.rb +4 -3
- data/lib/cassandra/driver.rb +103 -41
- data/lib/cassandra/errors.rb +265 -30
- data/lib/cassandra/execution/info.rb +16 -5
- data/lib/cassandra/execution/options.rb +99 -54
- data/lib/cassandra/execution/trace.rb +16 -9
- data/lib/cassandra/executors.rb +1 -1
- data/lib/cassandra/function.rb +19 -13
- data/lib/cassandra/function_collection.rb +85 -0
- data/lib/cassandra/future.rb +106 -48
- data/lib/cassandra/host.rb +10 -4
- data/lib/cassandra/keyspace.rb +90 -33
- data/lib/cassandra/listener.rb +1 -1
- data/lib/cassandra/load_balancing.rb +2 -2
- data/lib/cassandra/load_balancing/policies.rb +1 -1
- data/lib/cassandra/load_balancing/policies/dc_aware_round_robin.rb +18 -18
- data/lib/cassandra/load_balancing/policies/round_robin.rb +1 -1
- data/lib/cassandra/load_balancing/policies/token_aware.rb +15 -13
- data/lib/cassandra/load_balancing/policies/white_list.rb +11 -5
- data/lib/cassandra/null_logger.rb +27 -6
- data/lib/cassandra/protocol.rb +1 -1
- data/lib/cassandra/protocol/coder.rb +78 -39
- data/lib/cassandra/protocol/cql_byte_buffer.rb +50 -33
- data/lib/cassandra/protocol/cql_protocol_handler.rb +44 -45
- data/lib/cassandra/protocol/request.rb +2 -2
- data/lib/cassandra/protocol/requests/auth_response_request.rb +3 -3
- data/lib/cassandra/protocol/requests/batch_request.rb +16 -7
- data/lib/cassandra/protocol/requests/credentials_request.rb +3 -3
- data/lib/cassandra/protocol/requests/execute_request.rb +41 -20
- data/lib/cassandra/protocol/requests/options_request.rb +1 -1
- data/lib/cassandra/protocol/requests/prepare_request.rb +5 -5
- data/lib/cassandra/protocol/requests/query_request.rb +27 -22
- data/lib/cassandra/protocol/requests/register_request.rb +2 -2
- data/lib/cassandra/protocol/requests/startup_request.rb +6 -4
- data/lib/cassandra/protocol/requests/void_query_request.rb +1 -1
- data/lib/cassandra/protocol/response.rb +2 -2
- data/lib/cassandra/protocol/responses/already_exists_error_response.rb +12 -2
- data/lib/cassandra/protocol/responses/auth_challenge_response.rb +1 -1
- data/lib/cassandra/protocol/responses/auth_success_response.rb +1 -1
- data/lib/cassandra/protocol/responses/authenticate_response.rb +1 -1
- data/lib/cassandra/protocol/responses/error_response.rb +101 -13
- data/lib/cassandra/protocol/responses/event_response.rb +1 -1
- data/lib/cassandra/protocol/responses/function_failure_error_response.rb +13 -2
- data/lib/cassandra/protocol/responses/prepared_result_response.rb +11 -5
- data/lib/cassandra/protocol/responses/raw_rows_result_response.rb +14 -9
- data/lib/cassandra/protocol/responses/read_failure_error_response.rb +26 -4
- data/lib/cassandra/protocol/responses/read_timeout_error_response.rb +22 -3
- data/lib/cassandra/protocol/responses/ready_response.rb +3 -3
- data/lib/cassandra/protocol/responses/result_response.rb +4 -2
- data/lib/cassandra/protocol/responses/rows_result_response.rb +5 -3
- data/lib/cassandra/protocol/responses/schema_change_event_response.rb +5 -4
- data/lib/cassandra/protocol/responses/schema_change_result_response.rb +16 -9
- data/lib/cassandra/protocol/responses/set_keyspace_result_response.rb +2 -2
- data/lib/cassandra/protocol/responses/status_change_event_response.rb +2 -2
- data/lib/cassandra/protocol/responses/supported_response.rb +1 -1
- data/lib/cassandra/protocol/responses/topology_change_event_response.rb +1 -1
- data/lib/cassandra/protocol/responses/unavailable_error_response.rb +20 -3
- data/lib/cassandra/protocol/responses/unprepared_error_response.rb +11 -2
- data/lib/cassandra/protocol/responses/void_result_response.rb +1 -1
- data/lib/cassandra/protocol/responses/write_failure_error_response.rb +26 -4
- data/lib/cassandra/protocol/responses/write_timeout_error_response.rb +22 -3
- data/lib/cassandra/protocol/v1.rb +101 -36
- data/lib/cassandra/protocol/v3.rb +124 -51
- data/lib/cassandra/protocol/v4.rb +172 -68
- data/lib/cassandra/reconnection.rb +1 -1
- data/lib/cassandra/reconnection/policies.rb +1 -1
- data/lib/cassandra/reconnection/policies/constant.rb +2 -4
- data/lib/cassandra/reconnection/policies/exponential.rb +6 -6
- data/lib/cassandra/result.rb +53 -19
- data/lib/cassandra/retry.rb +8 -8
- data/lib/cassandra/retry/policies.rb +1 -1
- data/lib/cassandra/retry/policies/default.rb +1 -1
- data/lib/cassandra/retry/policies/downgrading_consistency.rb +7 -3
- data/lib/cassandra/retry/policies/fallthrough.rb +1 -1
- data/lib/cassandra/session.rb +22 -16
- data/lib/cassandra/statement.rb +1 -1
- data/lib/cassandra/statements.rb +1 -1
- data/lib/cassandra/statements/batch.rb +16 -10
- data/lib/cassandra/statements/bound.rb +10 -3
- data/lib/cassandra/statements/prepared.rb +59 -15
- data/lib/cassandra/statements/simple.rb +23 -10
- data/lib/cassandra/statements/void.rb +1 -1
- data/lib/cassandra/table.rb +79 -30
- data/lib/cassandra/time.rb +11 -6
- data/lib/cassandra/time_uuid.rb +7 -7
- data/lib/cassandra/tuple.rb +16 -8
- data/lib/cassandra/types.rb +20 -9
- data/lib/cassandra/udt.rb +32 -36
- data/lib/cassandra/util.rb +20 -13
- data/lib/cassandra/uuid.rb +22 -15
- data/lib/cassandra/uuid/generator.rb +7 -5
- data/lib/cassandra/version.rb +2 -2
- data/lib/datastax/cassandra.rb +1 -1
- metadata +5 -3
data/lib/cassandra/udt.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
#--
|
4
|
-
# Copyright 2013-
|
4
|
+
# Copyright 2013-2016 DataStax, Inc.
|
5
5
|
#
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
7
|
# you may not use this file except in compliance with the License.
|
@@ -38,7 +38,7 @@ module Cassandra
|
|
38
38
|
assign = !field.chomp!('=').nil?
|
39
39
|
|
40
40
|
return super if assign && args.empty?
|
41
|
-
return super unless @name_to_type.
|
41
|
+
return super unless @name_to_type.key?(field)
|
42
42
|
|
43
43
|
if assign
|
44
44
|
value = args.first
|
@@ -58,7 +58,7 @@ module Cassandra
|
|
58
58
|
field = method.to_s
|
59
59
|
field.chomp!('=')
|
60
60
|
|
61
|
-
return true if @name_to_type.
|
61
|
+
return true if @name_to_type.key?(field)
|
62
62
|
super
|
63
63
|
end
|
64
64
|
|
@@ -94,15 +94,15 @@ module Cassandra
|
|
94
94
|
when ::Integer
|
95
95
|
if field < 0 || field >= @fields.size
|
96
96
|
raise ::IndexError,
|
97
|
-
|
98
|
-
|
97
|
+
"field index #{field} is not present in UDT: " \
|
98
|
+
"#{Util.escape_name(@keyspace)}.#{Util.escape_name(@name)}"
|
99
99
|
end
|
100
100
|
@values[@fields[field][0]]
|
101
101
|
when ::String
|
102
|
-
unless @name_to_type.
|
102
|
+
unless @name_to_type.key?(field)
|
103
103
|
raise ::KeyError,
|
104
|
-
|
105
|
-
|
104
|
+
"field #{field} is not defined in UDT: " \
|
105
|
+
"#{Util.escape_name(@keyspace)}.#{Util.escape_name(@name)}"
|
106
106
|
end
|
107
107
|
@values[field]
|
108
108
|
else
|
@@ -127,16 +127,16 @@ module Cassandra
|
|
127
127
|
when ::Integer
|
128
128
|
if field < 0 || field >= @fields.size
|
129
129
|
raise ::IndexError,
|
130
|
-
|
131
|
-
|
130
|
+
"field index #{field} is not present in UDT: " \
|
131
|
+
"#{Util.escape_name(@keyspace)}.#{Util.escape_name(@name)}"
|
132
132
|
end
|
133
133
|
Util.assert_type(@fields[field][1], value)
|
134
134
|
@values[@fields[field][0]] = value
|
135
135
|
when ::String
|
136
|
-
unless @name_to_type.
|
136
|
+
unless @name_to_type.key?(field)
|
137
137
|
raise ::KeyError,
|
138
|
-
|
139
|
-
|
138
|
+
"field #{field} is not defined in UDT: " \
|
139
|
+
"#{Util.escape_name(@keyspace)}.#{Util.escape_name(@name)}"
|
140
140
|
end
|
141
141
|
Util.assert_type(@name_to_type[field], value)
|
142
142
|
@values[field] = value
|
@@ -165,14 +165,14 @@ module Cassandra
|
|
165
165
|
end
|
166
166
|
|
167
167
|
def inspect
|
168
|
-
"#<Cassandra::UDT:0x#{
|
168
|
+
"#<Cassandra::UDT:0x#{object_id.to_s(16)} #{self}>"
|
169
169
|
end
|
170
170
|
|
171
171
|
def eql?(other)
|
172
172
|
(other.is_a?(Strict) && @values.all? {|n, v| v == other[n]}) ||
|
173
|
-
|
173
|
+
(other.is_a?(UDT) && other == self)
|
174
174
|
end
|
175
|
-
alias
|
175
|
+
alias == eql?
|
176
176
|
end
|
177
177
|
|
178
178
|
include Enumerable
|
@@ -200,24 +200,24 @@ module Cassandra
|
|
200
200
|
values = Array(values.first) if values.one?
|
201
201
|
|
202
202
|
Util.assert_not_empty(values,
|
203
|
-
|
204
|
-
|
203
|
+
'user-defined type must contain at least one value'
|
204
|
+
)
|
205
205
|
|
206
206
|
if values.first.is_a?(::Array)
|
207
207
|
@values = values.map do |pair|
|
208
208
|
Util.assert(pair.size == 2,
|
209
|
-
|
210
|
-
|
211
|
-
|
209
|
+
'values of a user-defined type must be an Array of name and ' \
|
210
|
+
"value pairs, #{pair.inspect} given"
|
211
|
+
)
|
212
212
|
name, value = pair
|
213
213
|
|
214
214
|
[String(name), value]
|
215
215
|
end
|
216
216
|
else
|
217
|
-
Util.assert(
|
218
|
-
|
219
|
-
|
220
|
-
|
217
|
+
Util.assert(values.size.even?,
|
218
|
+
'values of a user-defined type must be an Array of alternating ' \
|
219
|
+
"names and values pairs, #{values.inspect} given"
|
220
|
+
)
|
221
221
|
@values = values.each_slice(2).map do |(name, value)|
|
222
222
|
[String(name), value]
|
223
223
|
end
|
@@ -321,9 +321,7 @@ module Cassandra
|
|
321
321
|
when ::String
|
322
322
|
index = @values.index {|(n, _)| field == n}
|
323
323
|
|
324
|
-
unless index
|
325
|
-
raise ::KeyError, "Unsupported field #{field.inspect}"
|
326
|
-
end
|
324
|
+
raise ::KeyError, "Unsupported field #{field.inspect}" unless index
|
327
325
|
|
328
326
|
@values[index][1]
|
329
327
|
else
|
@@ -348,7 +346,7 @@ module Cassandra
|
|
348
346
|
true
|
349
347
|
end
|
350
348
|
|
351
|
-
alias
|
349
|
+
alias include? has_field?
|
352
350
|
|
353
351
|
# Sets value of the field.
|
354
352
|
#
|
@@ -371,9 +369,7 @@ module Cassandra
|
|
371
369
|
when ::String
|
372
370
|
index = @values.index {|(n, _)| field == n}
|
373
371
|
|
374
|
-
unless index
|
375
|
-
raise ::KeyError, "Unsupported field #{field.inspect}"
|
376
|
-
end
|
372
|
+
raise ::KeyError, "Unsupported field #{field.inspect}" unless index
|
377
373
|
|
378
374
|
@values[index][1] = value
|
379
375
|
else
|
@@ -410,21 +406,21 @@ module Cassandra
|
|
410
406
|
|
411
407
|
# @private
|
412
408
|
def inspect
|
413
|
-
"#<Cassandra::UDT:0x#{
|
409
|
+
"#<Cassandra::UDT:0x#{object_id.to_s(16)} #{self}>"
|
414
410
|
end
|
415
411
|
|
416
412
|
# @private
|
417
413
|
def eql?(other)
|
418
414
|
other.is_a?(UDT) && @values.all? {|(n, v)| v == other[n]}
|
419
415
|
end
|
420
|
-
alias
|
416
|
+
alias == eql?
|
421
417
|
|
422
418
|
# @private
|
423
419
|
def hash
|
424
420
|
@values.inject(17) do |h, (n, v)|
|
425
421
|
h = 31 * h + n.hash
|
426
|
-
|
422
|
+
31 * h + v.hash
|
427
423
|
end
|
428
424
|
end
|
429
425
|
end
|
430
|
-
end
|
426
|
+
end
|
data/lib/cassandra/util.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
#--
|
4
|
-
# Copyright 2013-
|
4
|
+
# Copyright 2013-2016 DataStax, Inc.
|
5
5
|
#
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
7
|
# you may not use this file except in compliance with the License.
|
@@ -18,7 +18,9 @@
|
|
18
18
|
|
19
19
|
module Cassandra
|
20
20
|
# @private
|
21
|
-
module Util
|
21
|
+
module Util
|
22
|
+
module_function
|
23
|
+
|
22
24
|
def encode_hash(hash, io = StringIO.new)
|
23
25
|
first = true
|
24
26
|
|
@@ -111,7 +113,7 @@ module Cassandra
|
|
111
113
|
|
112
114
|
io.string
|
113
115
|
end
|
114
|
-
alias
|
116
|
+
alias encode encode_object
|
115
117
|
|
116
118
|
def encode_time(time, io = StringIO.new)
|
117
119
|
encode_string(time.to_s, io)
|
@@ -190,7 +192,8 @@ module Cassandra
|
|
190
192
|
when UDT
|
191
193
|
Types.udt('unknown', 'unknown', object.map {|k, v| [k, guess_type(v)]})
|
192
194
|
else
|
193
|
-
raise ::ArgumentError,
|
195
|
+
raise ::ArgumentError,
|
196
|
+
"Unable to guess the type of the argument: #{object.inspect}"
|
194
197
|
end
|
195
198
|
end
|
196
199
|
|
@@ -212,7 +215,8 @@ module Cassandra
|
|
212
215
|
def assert_instance_of_one_of(kinds, value, message = nil, &block)
|
213
216
|
unless kinds.any? {|kind| value.is_a?(kind)}
|
214
217
|
message = yield if block_given?
|
215
|
-
message ||= "value must be an instance of one of #{kinds.inspect},
|
218
|
+
message ||= "value must be an instance of one of #{kinds.inspect}, " \
|
219
|
+
"#{value.inspect} given"
|
216
220
|
|
217
221
|
raise ::ArgumentError, message
|
218
222
|
end
|
@@ -221,7 +225,8 @@ module Cassandra
|
|
221
225
|
def assert_responds_to(method, value, message = nil, &block)
|
222
226
|
unless value.respond_to?(method)
|
223
227
|
message = yield if block_given?
|
224
|
-
message ||= "value #{value.inspect} must respond to #{method.inspect},
|
228
|
+
message ||= "value #{value.inspect} must respond to #{method.inspect}, " \
|
229
|
+
"but doesn't"
|
225
230
|
|
226
231
|
raise ::ArgumentError, message
|
227
232
|
end
|
@@ -230,7 +235,8 @@ module Cassandra
|
|
230
235
|
def assert_responds_to_all(methods, value, message = nil, &block)
|
231
236
|
unless methods.all? {|method| value.respond_to?(method)}
|
232
237
|
message = yield if block_given?
|
233
|
-
message ||= "value #{value.inspect} must respond to all methods
|
238
|
+
message ||= "value #{value.inspect} must respond to all methods " \
|
239
|
+
"#{methods.inspect}, but doesn't"
|
234
240
|
|
235
241
|
raise ::ArgumentError, message
|
236
242
|
end
|
@@ -239,14 +245,14 @@ module Cassandra
|
|
239
245
|
def assert_not_empty(value, message = nil, &block)
|
240
246
|
if value.empty?
|
241
247
|
message = yield if block_given?
|
242
|
-
message ||=
|
248
|
+
message ||= 'value cannot be empty'
|
243
249
|
|
244
250
|
raise ::ArgumentError, message
|
245
251
|
end
|
246
252
|
end
|
247
253
|
|
248
254
|
def assert_file_exists(path, message = nil, &block)
|
249
|
-
unless ::File.
|
255
|
+
unless ::File.exist?(path)
|
250
256
|
message = yield if block_given?
|
251
257
|
message ||= "expected file at #{path.inspect} to exist, but it doesn't"
|
252
258
|
|
@@ -266,7 +272,8 @@ module Cassandra
|
|
266
272
|
def assert_size(size, value, message = nil, &block)
|
267
273
|
unless value.size == size
|
268
274
|
message = yield if block_given?
|
269
|
-
message ||= "value #{value.inspect} must have size equal to
|
275
|
+
message ||= "value #{value.inspect} must have size equal to " \
|
276
|
+
"#{size.inspect}, but doesn't"
|
270
277
|
|
271
278
|
raise ::ArgumentError, message
|
272
279
|
end
|
@@ -275,7 +282,7 @@ module Cassandra
|
|
275
282
|
def assert(condition, message = nil, &block)
|
276
283
|
unless condition
|
277
284
|
message = yield if block_given?
|
278
|
-
message ||=
|
285
|
+
message ||= 'assertion failed'
|
279
286
|
|
280
287
|
raise ::ArgumentError, message
|
281
288
|
end
|
@@ -311,11 +318,11 @@ module Cassandra
|
|
311
318
|
# @private
|
312
319
|
COLON = ': '.freeze
|
313
320
|
# @private
|
314
|
-
QUOT =
|
321
|
+
QUOT = "'".freeze
|
315
322
|
# @private
|
316
323
|
ESC_QUOT = "''".freeze
|
317
324
|
# @private
|
318
|
-
DBL_QUOT =
|
325
|
+
DBL_QUOT = '"'.freeze
|
319
326
|
# @private
|
320
327
|
PRN_OPN = '('.freeze
|
321
328
|
# @private
|
data/lib/cassandra/uuid.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
#--
|
4
|
-
# Copyright 2013-
|
4
|
+
# Copyright 2013-2016 DataStax, Inc.
|
5
5
|
#
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
7
|
# you may not use this file except in compliance with the License.
|
@@ -25,19 +25,20 @@ module Cassandra
|
|
25
25
|
# If you want to generate UUIDs see {Cassandra::Uuid::Generator}.
|
26
26
|
#
|
27
27
|
class Uuid
|
28
|
-
# Creates a new UUID either from a string (expected to be on the standard 8-4-4-4-12
|
28
|
+
# Creates a new UUID either from a string (expected to be on the standard 8-4-4-4-12
|
29
|
+
# form, or just 32 characters without hyphens), or from a 128 bit number.
|
29
30
|
#
|
30
31
|
# @param uuid [String] a 32 char uuid
|
31
32
|
#
|
32
33
|
# @raise [ArgumentError] if the string does not conform to the expected format
|
33
34
|
#
|
34
35
|
def initialize(uuid)
|
35
|
-
case uuid
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
36
|
+
@n = case uuid
|
37
|
+
when String
|
38
|
+
from_s(uuid)
|
39
|
+
else
|
40
|
+
uuid
|
41
|
+
end
|
41
42
|
end
|
42
43
|
|
43
44
|
# Returns a string representation of this UUID in the standard 8-4-4-4-12 form.
|
@@ -48,7 +49,7 @@ module Cassandra
|
|
48
49
|
s.insert(20, HYPHEN)
|
49
50
|
s.insert(16, HYPHEN)
|
50
51
|
s.insert(12, HYPHEN)
|
51
|
-
s.insert(
|
52
|
+
s.insert(8, HYPHEN)
|
52
53
|
s
|
53
54
|
end
|
54
55
|
end
|
@@ -69,13 +70,13 @@ module Cassandra
|
|
69
70
|
def value
|
70
71
|
@n
|
71
72
|
end
|
72
|
-
|
73
|
+
alias to_i value
|
73
74
|
|
74
75
|
# @private
|
75
76
|
def eql?(other)
|
76
|
-
other.respond_to?(:value) &&
|
77
|
+
other.respond_to?(:value) && value == other.value
|
77
78
|
end
|
78
|
-
|
79
|
+
alias == eql?
|
79
80
|
|
80
81
|
private
|
81
82
|
|
@@ -93,15 +94,21 @@ module Cassandra
|
|
93
94
|
# @private
|
94
95
|
def from_s(str)
|
95
96
|
str = str.gsub(HYPHEN, EMPTY_STRING)
|
96
|
-
|
97
|
-
|
97
|
+
unless str.length == 32
|
98
|
+
raise ::ArgumentError, "Expected 32 hexadecimal digits but got #{str.length}"
|
99
|
+
end
|
100
|
+
unless str =~ HEX_RE
|
101
|
+
raise ::ArgumentError, "invalid value for Integer(): \"#{str}\""
|
102
|
+
end
|
98
103
|
Integer(str, 16)
|
99
104
|
end
|
100
105
|
else
|
101
106
|
# @private
|
102
107
|
def from_s(str)
|
103
108
|
str = str.gsub(HYPHEN, EMPTY_STRING)
|
104
|
-
|
109
|
+
unless str.length == 32
|
110
|
+
raise ::ArgumentError, "Expected 32 hexadecimal digits but got #{str.length}"
|
111
|
+
end
|
105
112
|
Integer(str, 16)
|
106
113
|
end
|
107
114
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
#--
|
4
|
-
# Copyright 2013-
|
4
|
+
# Copyright 2013-2016 DataStax, Inc.
|
5
5
|
#
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
7
|
# you may not use this file except in compliance with the License.
|
@@ -44,8 +44,10 @@ module Cassandra
|
|
44
44
|
# @param [Object<#now>] clock used to generate timeuuid from current time
|
45
45
|
#
|
46
46
|
# @raise [ArgumentError] if clock doesn't respond to `now`
|
47
|
-
def initialize(node_id = (::SecureRandom.random_number(2**47) | 0x010000000000),
|
48
|
-
|
47
|
+
def initialize(node_id = (::SecureRandom.random_number(2**47) | 0x010000000000),
|
48
|
+
clock_id = ::SecureRandom.random_number(65536),
|
49
|
+
clock = ::Time)
|
50
|
+
raise ::ArgumentError, 'invalid clock' unless clock.respond_to?(:now)
|
49
51
|
|
50
52
|
@node_id = Integer(node_id)
|
51
53
|
@clock_id = Integer(clock_id)
|
@@ -150,8 +152,8 @@ module Cassandra
|
|
150
152
|
#
|
151
153
|
# @see Time.at
|
152
154
|
def at(*args)
|
153
|
-
raise ::ArgumentError,
|
154
|
-
raise ::ArgumentError,
|
155
|
+
raise ::ArgumentError, 'not enough arguments' if args.empty?
|
156
|
+
raise ::ArgumentError, 'too many arguments' if args.size > 3
|
155
157
|
|
156
158
|
if args.first.is_a?(::Time)
|
157
159
|
time = args.shift
|
data/lib/cassandra/version.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
#--
|
4
|
-
# Copyright 2013-
|
4
|
+
# Copyright 2013-2016 DataStax, Inc.
|
5
5
|
#
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
7
|
# you may not use this file except in compliance with the License.
|
@@ -17,5 +17,5 @@
|
|
17
17
|
#++
|
18
18
|
|
19
19
|
module Cassandra
|
20
|
-
VERSION = '3.0.0.
|
20
|
+
VERSION = '3.0.0.rc.1'.freeze
|
21
21
|
end
|
data/lib/datastax/cassandra.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cassandra-driver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.0.
|
4
|
+
version: 3.0.0.rc.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Theo Hultberg
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2016-02-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ione
|
@@ -77,6 +77,7 @@ files:
|
|
77
77
|
- lib/cassandra/auth.rb
|
78
78
|
- lib/cassandra/auth/providers.rb
|
79
79
|
- lib/cassandra/auth/providers/password.rb
|
80
|
+
- lib/cassandra/cassandra_logger.rb
|
80
81
|
- lib/cassandra/cluster.rb
|
81
82
|
- lib/cassandra/cluster/client.rb
|
82
83
|
- lib/cassandra/cluster/connection_pool.rb
|
@@ -109,6 +110,7 @@ files:
|
|
109
110
|
- lib/cassandra/execution/trace.rb
|
110
111
|
- lib/cassandra/executors.rb
|
111
112
|
- lib/cassandra/function.rb
|
113
|
+
- lib/cassandra/function_collection.rb
|
112
114
|
- lib/cassandra/future.rb
|
113
115
|
- lib/cassandra/host.rb
|
114
116
|
- lib/cassandra/keyspace.rb
|
@@ -218,7 +220,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
218
220
|
version: 1.3.1
|
219
221
|
requirements: []
|
220
222
|
rubyforge_project:
|
221
|
-
rubygems_version: 2.
|
223
|
+
rubygems_version: 2.5.0
|
222
224
|
signing_key:
|
223
225
|
specification_version: 4
|
224
226
|
summary: Datastax Ruby Driver for Apache Cassandra
|