cassandra-driver 3.0.0.rc.2-java → 3.0.2-java

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.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +51 -39
  3. data/lib/cassandra.rb +74 -32
  4. data/lib/cassandra/auth.rb +3 -1
  5. data/lib/cassandra/cluster.rb +14 -3
  6. data/lib/cassandra/cluster/client.rb +98 -62
  7. data/lib/cassandra/cluster/connector.rb +7 -9
  8. data/lib/cassandra/cluster/metadata.rb +1 -1
  9. data/lib/cassandra/cluster/options.rb +19 -7
  10. data/lib/cassandra/cluster/schema/cql_type_parser.rb +3 -0
  11. data/lib/cassandra/cluster/schema/fetchers.rb +1 -1
  12. data/lib/cassandra/custom_data.rb +51 -0
  13. data/lib/cassandra/driver.rb +23 -20
  14. data/lib/cassandra/execution/options.rb +1 -1
  15. data/lib/cassandra/index.rb +22 -8
  16. data/lib/cassandra/load_balancing/policies/dc_aware_round_robin.rb +19 -1
  17. data/lib/cassandra/load_balancing/policies/round_robin.rb +7 -0
  18. data/lib/cassandra/load_balancing/policies/token_aware.rb +7 -0
  19. data/lib/cassandra/load_balancing/policies/white_list.rb +7 -0
  20. data/lib/cassandra/protocol.rb +7 -0
  21. data/lib/cassandra/protocol/coder.rb +28 -8
  22. data/lib/cassandra/protocol/cql_byte_buffer.rb +21 -4
  23. data/lib/cassandra/protocol/cql_protocol_handler.rb +3 -2
  24. data/lib/cassandra/protocol/requests/batch_request.rb +1 -1
  25. data/lib/cassandra/protocol/requests/execute_request.rb +1 -1
  26. data/lib/cassandra/protocol/requests/query_request.rb +1 -1
  27. data/lib/cassandra/protocol/responses/raw_rows_result_response.rb +4 -2
  28. data/lib/cassandra/protocol/v1.rb +2 -1
  29. data/lib/cassandra/protocol/v3.rb +2 -1
  30. data/lib/cassandra/protocol/v4.rb +5 -3
  31. data/lib/cassandra/result.rb +2 -2
  32. data/lib/cassandra/session.rb +10 -15
  33. data/lib/cassandra/statement.rb +5 -0
  34. data/lib/cassandra/statements/batch.rb +6 -0
  35. data/lib/cassandra/statements/bound.rb +5 -0
  36. data/lib/cassandra/statements/prepared.rb +11 -2
  37. data/lib/cassandra/statements/simple.rb +5 -0
  38. data/lib/cassandra/statements/void.rb +5 -0
  39. data/lib/cassandra/table.rb +5 -5
  40. data/lib/cassandra/timestamp_generator.rb +37 -0
  41. data/lib/cassandra/timestamp_generator/simple.rb +38 -0
  42. data/lib/cassandra/timestamp_generator/ticking_on_duplicate.rb +58 -0
  43. data/lib/cassandra/tuple.rb +2 -2
  44. data/lib/cassandra/types.rb +2 -2
  45. data/lib/cassandra/util.rb +136 -2
  46. data/lib/cassandra/version.rb +1 -1
  47. data/lib/cassandra_murmur3.jar +0 -0
  48. metadata +8 -4
@@ -55,7 +55,7 @@ module Cassandra
55
55
  end
56
56
 
57
57
  def inspect
58
- "#<Cassandra::Tuple:0x#{object_id.to_s(16)} #{self}>"
58
+ "#<Cassandra::Tuple:0x#{object_id.to_s(16)} types=#{@types.inspect}, []=#{@values.inspect}>"
59
59
  end
60
60
  end
61
61
 
@@ -114,7 +114,7 @@ module Cassandra
114
114
 
115
115
  # @private
116
116
  def inspect
117
- "#<Cassandra::Tuple:0x#{object_id.to_s(16)} #{self}>"
117
+ "#<Cassandra::Tuple:0x#{object_id.to_s(16)} []=#{@values.inspect}>"
118
118
  end
119
119
 
120
120
  # @private
@@ -1389,8 +1389,8 @@ module Cassandra
1389
1389
  # @raise [ArgumentError] if the value is invalid
1390
1390
  # @return [void]
1391
1391
  def assert(value, message = nil, &block)
1392
- raise ::NotImplementedError,
1393
- "unable to assert a value for custom type: #{@name.inspect}"
1392
+ Util.assert_instance_of(CustomData, value, message, &block)
1393
+ Util.assert_equal(self, value.class.type, message, &block)
1394
1394
  end
1395
1395
 
1396
1396
  # @return [String] a cassandra representation of this type
@@ -162,8 +162,13 @@ module Cassandra
162
162
  end
163
163
 
164
164
  def escape_name(name)
165
- return name if name[LOWERCASE_REGEXP] == name
166
- DBL_QUOT + name + DBL_QUOT
165
+ # If name only contains lower-case chars and it's not a reserved word, return it
166
+ # as-is. Otherwise, quote.
167
+ return name if name[LOWERCASE_REGEXP] == name && !RESERVED_WORDS.include?(name)
168
+
169
+ # Replace double-quotes within name with two double-quotes (if any) and surround the whole
170
+ # thing with double-quotes
171
+ DBL_QUOT + name.gsub('"', '""') + DBL_QUOT
167
172
  end
168
173
 
169
174
  def guess_type(object)
@@ -191,6 +196,7 @@ module Cassandra
191
196
  Types.udt(object.keyspace, object.name, object.types)
192
197
  when UDT
193
198
  Types.udt('unknown', 'unknown', object.map {|k, v| [k, guess_type(v)]})
199
+ when Cassandra::CustomData then object.class.type
194
200
  else
195
201
  raise ::ArgumentError,
196
202
  "Unable to guess the type of the argument: #{object.inspect}"
@@ -327,5 +333,133 @@ module Cassandra
327
333
  PRN_OPN = '('.freeze
328
334
  # @private
329
335
  PRN_CLS = ')'.freeze
336
+ RESERVED_WORDS = Set.new(%w(
337
+ add
338
+ aggregate
339
+ all
340
+ allow
341
+ alter
342
+ and
343
+ apply
344
+ as
345
+ asc
346
+ ascii
347
+ authorize
348
+ batch
349
+ begin
350
+ bigint
351
+ blob
352
+ boolean
353
+ by
354
+ called
355
+ clustering
356
+ columnfamily
357
+ compact
358
+ contains
359
+ count
360
+ counter
361
+ create
362
+ custom
363
+ date
364
+ decimal
365
+ delete
366
+ desc
367
+ describe
368
+ distinct
369
+ double
370
+ drop
371
+ entries
372
+ execute
373
+ exists
374
+ filtering
375
+ finalfunc
376
+ float
377
+ from
378
+ frozen
379
+ full
380
+ function
381
+ functions
382
+ grant
383
+ if
384
+ in
385
+ index
386
+ inet
387
+ infinity
388
+ initcond
389
+ input
390
+ insert
391
+ int
392
+ into
393
+ is
394
+ json
395
+ key
396
+ keys
397
+ keyspace
398
+ keyspaces
399
+ language
400
+ limit
401
+ list
402
+ login
403
+ map
404
+ materialized
405
+ modify
406
+ nan
407
+ nologin
408
+ norecursive
409
+ nosuperuser
410
+ not
411
+ null
412
+ of
413
+ on
414
+ options
415
+ or
416
+ order
417
+ password
418
+ permission
419
+ permissions
420
+ primary
421
+ rename
422
+ replace
423
+ returns
424
+ revoke
425
+ role
426
+ roles
427
+ schema
428
+ select
429
+ set
430
+ sfunc
431
+ smallint
432
+ static
433
+ storage
434
+ stype
435
+ superuser
436
+ table
437
+ text
438
+ time
439
+ timestamp
440
+ timeuuid
441
+ tinyint
442
+ to
443
+ token
444
+ trigger
445
+ truncate
446
+ ttl
447
+ tuple
448
+ type
449
+ unlogged
450
+ update
451
+ use
452
+ user
453
+ users
454
+ using
455
+ uuid
456
+ values
457
+ varchar
458
+ varint
459
+ view
460
+ where
461
+ with
462
+ writetime
463
+ )).freeze
330
464
  end
331
465
  end
@@ -17,5 +17,5 @@
17
17
  #++
18
18
 
19
19
  module Cassandra
20
- VERSION = '3.0.0.rc.2'.freeze
20
+ VERSION = '3.0.2'.freeze
21
21
  end
Binary file
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.rc.2
4
+ version: 3.0.2
5
5
  platform: java
6
6
  authors:
7
7
  - Theo Hultberg
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-04-11 00:00:00.000000000 Z
13
+ date: 2016-06-27 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  requirement: !ruby/object:Gem::Requirement
@@ -104,6 +104,7 @@ files:
104
104
  - lib/cassandra/compression.rb
105
105
  - lib/cassandra/compression/compressors/lz4.rb
106
106
  - lib/cassandra/compression/compressors/snappy.rb
107
+ - lib/cassandra/custom_data.rb
107
108
  - lib/cassandra/driver.rb
108
109
  - lib/cassandra/errors.rb
109
110
  - lib/cassandra/execution/info.rb
@@ -190,6 +191,9 @@ files:
190
191
  - lib/cassandra/table.rb
191
192
  - lib/cassandra/time.rb
192
193
  - lib/cassandra/time_uuid.rb
194
+ - lib/cassandra/timestamp_generator.rb
195
+ - lib/cassandra/timestamp_generator/simple.rb
196
+ - lib/cassandra/timestamp_generator/ticking_on_duplicate.rb
193
197
  - lib/cassandra/tuple.rb
194
198
  - lib/cassandra/types.rb
195
199
  - lib/cassandra/udt.rb
@@ -219,9 +223,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
219
223
  version: 1.9.3
220
224
  required_rubygems_version: !ruby/object:Gem::Requirement
221
225
  requirements:
222
- - - ">"
226
+ - - ">="
223
227
  - !ruby/object:Gem::Version
224
- version: 1.3.1
228
+ version: '0'
225
229
  requirements: []
226
230
  rubyforge_project:
227
231
  rubygems_version: 2.4.8