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

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +6 -1
  3. data/lib/cassandra.rb +74 -55
  4. data/lib/cassandra/attr_boolean.rb +33 -0
  5. data/lib/cassandra/auth.rb +2 -1
  6. data/lib/cassandra/auth/providers/password.rb +4 -16
  7. data/lib/cassandra/cluster/connector.rb +14 -4
  8. data/lib/cassandra/cluster/control_connection.rb +59 -67
  9. data/lib/cassandra/cluster/metadata.rb +1 -3
  10. data/lib/cassandra/cluster/options.rb +9 -10
  11. data/lib/cassandra/cluster/registry.rb +16 -5
  12. data/lib/cassandra/cluster/schema.rb +45 -1
  13. data/lib/cassandra/cluster/schema/fetchers.rb +475 -272
  14. data/lib/cassandra/cluster/schema/fqcn_type_parser.rb +2 -6
  15. data/lib/cassandra/cluster/schema/partitioners/murmur3.rb +5 -7
  16. data/lib/cassandra/column.rb +1 -20
  17. data/lib/cassandra/column_container.rb +322 -0
  18. data/lib/cassandra/compression/compressors/lz4.rb +3 -5
  19. data/lib/cassandra/driver.rb +1 -1
  20. data/lib/cassandra/errors.rb +38 -22
  21. data/lib/cassandra/execution/options.rb +4 -2
  22. data/lib/cassandra/future.rb +3 -9
  23. data/lib/cassandra/host.rb +16 -2
  24. data/lib/cassandra/index.rb +104 -0
  25. data/lib/cassandra/keyspace.rb +88 -9
  26. data/lib/cassandra/load_balancing/policies/dc_aware_round_robin.rb +6 -10
  27. data/lib/cassandra/materialized_view.rb +90 -0
  28. data/lib/cassandra/protocol/coder.rb +3 -3
  29. data/lib/cassandra/protocol/cql_byte_buffer.rb +12 -11
  30. data/lib/cassandra/protocol/cql_protocol_handler.rb +12 -8
  31. data/lib/cassandra/protocol/request.rb +4 -5
  32. data/lib/cassandra/protocol/requests/execute_request.rb +3 -5
  33. data/lib/cassandra/protocol/requests/query_request.rb +1 -1
  34. data/lib/cassandra/protocol/requests/startup_request.rb +6 -8
  35. data/lib/cassandra/protocol/response.rb +1 -2
  36. data/lib/cassandra/protocol/responses/auth_challenge_response.rb +3 -4
  37. data/lib/cassandra/protocol/responses/auth_success_response.rb +3 -4
  38. data/lib/cassandra/protocol/responses/authenticate_response.rb +3 -4
  39. data/lib/cassandra/protocol/responses/error_response.rb +3 -4
  40. data/lib/cassandra/protocol/responses/event_response.rb +2 -3
  41. data/lib/cassandra/protocol/responses/prepared_result_response.rb +3 -4
  42. data/lib/cassandra/protocol/responses/ready_response.rb +3 -4
  43. data/lib/cassandra/protocol/responses/result_response.rb +7 -8
  44. data/lib/cassandra/protocol/responses/rows_result_response.rb +3 -4
  45. data/lib/cassandra/protocol/responses/schema_change_event_response.rb +3 -4
  46. data/lib/cassandra/protocol/responses/schema_change_result_response.rb +3 -4
  47. data/lib/cassandra/protocol/responses/set_keyspace_result_response.rb +3 -4
  48. data/lib/cassandra/protocol/responses/status_change_event_response.rb +3 -4
  49. data/lib/cassandra/protocol/responses/supported_response.rb +3 -4
  50. data/lib/cassandra/protocol/responses/topology_change_event_response.rb +3 -4
  51. data/lib/cassandra/protocol/responses/void_result_response.rb +3 -4
  52. data/lib/cassandra/protocol/v1.rb +1 -5
  53. data/lib/cassandra/protocol/v3.rb +1 -3
  54. data/lib/cassandra/result.rb +2 -1
  55. data/lib/cassandra/retry/policies/downgrading_consistency.rb +1 -3
  56. data/lib/cassandra/statements/prepared.rb +3 -3
  57. data/lib/cassandra/table.rb +39 -220
  58. data/lib/cassandra/time_uuid.rb +5 -7
  59. data/lib/cassandra/tuple.rb +4 -12
  60. data/lib/cassandra/types.rb +92 -65
  61. data/lib/cassandra/udt.rb +34 -14
  62. data/lib/cassandra/uuid.rb +10 -18
  63. data/lib/cassandra/version.rb +1 -1
  64. data/lib/cassandra_murmur3.jar +0 -0
  65. metadata +8 -2
@@ -109,9 +109,7 @@ module Cassandra
109
109
  end
110
110
 
111
111
  def lookup_type(node)
112
- if node.name == 'org.apache.cassandra.db.marshal.FrozenType'
113
- return lookup_type(node.children.first)
114
- end
112
+ return lookup_type(node.children.first) if node.name == 'org.apache.cassandra.db.marshal.FrozenType'
115
113
 
116
114
  type = @@types.fetch(node.name) do
117
115
  return Cassandra::Types.custom(dump_node(node))
@@ -169,9 +167,7 @@ module Cassandra
169
167
 
170
168
  def dump_node(node)
171
169
  str = node.name
172
- unless node.children.empty?
173
- str << '(' + node.children.map { |n| dump_node(n) }.join(',') + ')'
174
- end
170
+ str << '(' + node.children.map { |n| dump_node(n) }.join(',') + ')' unless node.children.empty?
175
171
  str
176
172
  end
177
173
  end
@@ -23,6 +23,11 @@ module Cassandra
23
23
  module Partitioners
24
24
  # @private
25
25
  class Murmur3
26
+ # @private
27
+ LONG_MIN = -2**63
28
+ # @private
29
+ LONG_MAX = 2**63 - 1
30
+
26
31
  def create_token(partition_key)
27
32
  token = Cassandra::Murmur3.hash(partition_key)
28
33
  token = LONG_MAX if token == LONG_MIN
@@ -33,13 +38,6 @@ module Cassandra
33
38
  def parse_token(token_string)
34
39
  token_string.to_i
35
40
  end
36
-
37
- private
38
-
39
- # @private
40
- LONG_MIN = -2**63
41
- # @private
42
- LONG_MAX = 2**63 - 1
43
41
  end
44
42
  end
45
43
  end
@@ -21,36 +21,18 @@ module Cassandra
21
21
  # @see Cassandra::Table#each_column
22
22
  # @see Cassandra::Table#column
23
23
  class Column
24
- # @private
25
- class Index
26
- # @return [String] index name
27
- attr_reader :name
28
- # @return [String] custom index class name
29
- attr_reader :custom_class_name
30
-
31
- # @private
32
- def initialize(name, custom_class_name = nil)
33
- @name = name
34
- @custom_class_name = custom_class_name
35
- end
36
- end
37
-
38
24
  # @return [String] column name
39
25
  attr_reader :name
40
26
  # @return [Cassandra::Type] column type
41
27
  attr_reader :type
42
28
  # @return [Symbol] column order (`:asc` or `:desc`)
43
29
  attr_reader :order
44
- # @private
45
- # @return [Cassandra::Column::Index, nil] column index
46
- attr_reader :index
47
30
 
48
31
  # @private
49
- def initialize(name, type, order, index = nil, is_static = false, is_frozen = false)
32
+ def initialize(name, type, order, is_static = false, is_frozen = false)
50
33
  @name = name
51
34
  @type = type
52
35
  @order = order
53
- @index = index
54
36
  @static = is_static
55
37
  @frozen = is_frozen
56
38
  end
@@ -76,7 +58,6 @@ module Cassandra
76
58
  @name == other.name &&
77
59
  @type == other.type &&
78
60
  @order == other.order &&
79
- @index == other.index &&
80
61
  @static == other.static? &&
81
62
  @frozen == other.frozen?
82
63
  end
@@ -0,0 +1,322 @@
1
+ # encoding: utf-8
2
+
3
+ #--
4
+ # Copyright 2013-2016 DataStax, Inc.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #++
18
+
19
+ module Cassandra
20
+ # This class contains all the logic needed for manipulating columns of an object.
21
+ class ColumnContainer
22
+ # Encapsulates all of the configuration options of a column-container.
23
+ class Options
24
+ # @return [String] the comment attribute of this column-container.
25
+ attr_reader :comment
26
+ # @return [Float] the chance with which a read repair is triggered for this column-container.
27
+ attr_reader :read_repair_chance
28
+ # @return [Float] the cluster local read repair chance for this column-container.
29
+ attr_reader :local_read_repair_chance
30
+ # @return [Integer] the tombstone garbage collection grace time in seconds for this column-container.
31
+ attr_reader :gc_grace_seconds
32
+ # @return [Hash] the caching options for this column-container.
33
+ attr_reader :caching
34
+ # @return [Float] the false positive chance for the Bloom filter of this column-container.
35
+ attr_reader :bloom_filter_fp_chance
36
+ # @return [Integer] how often (in milliseconds) to flush the memtable of this column-container.
37
+ attr_reader :memtable_flush_period_in_ms
38
+ # @return [Integer] the default TTL for this column-container.
39
+ attr_reader :default_time_to_live
40
+ # Return the speculative retry setting of this column-container, which determines how much
41
+ # response delay the coordinator node will tolerate from the chosen replica before
42
+ # retrying the request on other replicas. This setting can be expressed as a fixed
43
+ # delay in ms (e.g. 10ms) or as a percentile indicating "when the response time has
44
+ # exceeded the Nth percentile of read response times for this object" (e.g. 99percentile).
45
+ # @return [String] the speculative retry setting of this column-container.
46
+ attr_reader :speculative_retry
47
+ # Return the index interval of this column-container; Cassandra will hold `1/index_interval` of row keys in
48
+ # memory.
49
+ # @return [Integer] the index interval of this column-container. May be nil, indicating a default value of 128.
50
+ attr_reader :index_interval
51
+ # @return [Hash] compression settings
52
+ attr_reader :compression
53
+ # When compression is enabled, this option defines the probability
54
+ # with which checksums for compressed blocks are checked during reads.
55
+ # @return [Float] the probability of checking checksums on compressed blocks.
56
+ attr_reader :crc_check_chance
57
+ # @return [Hash] the extension options of this column-container.
58
+ attr_reader :extensions
59
+
60
+ # @return [ColumnContainer::Compaction] the compaction strategy of this column-container.
61
+ attr_reader :compaction_strategy
62
+
63
+ # @private
64
+ # rubocop:disable Metrics/ParameterLists
65
+ def initialize(comment,
66
+ read_repair_chance,
67
+ local_read_repair_chance,
68
+ gc_grace_seconds,
69
+ caching,
70
+ bloom_filter_fp_chance,
71
+ populate_io_cache_on_flush,
72
+ memtable_flush_period_in_ms,
73
+ default_time_to_live,
74
+ speculative_retry,
75
+ index_interval,
76
+ replicate_on_write,
77
+ min_index_interval,
78
+ max_index_interval,
79
+ compaction_strategy,
80
+ compression,
81
+ compact_storage,
82
+ crc_check_chance,
83
+ extensions)
84
+ @comment = comment
85
+ @read_repair_chance = read_repair_chance
86
+ @local_read_repair_chance = local_read_repair_chance
87
+ @gc_grace_seconds = gc_grace_seconds
88
+ @caching = caching
89
+ @bloom_filter_fp_chance = bloom_filter_fp_chance
90
+ @populate_io_cache_on_flush = populate_io_cache_on_flush
91
+ @memtable_flush_period_in_ms = memtable_flush_period_in_ms
92
+ @default_time_to_live = default_time_to_live
93
+ @speculative_retry = speculative_retry
94
+ @index_interval = index_interval
95
+ @replicate_on_write = replicate_on_write
96
+ @min_index_interval = min_index_interval
97
+ @max_index_interval = max_index_interval
98
+ @compaction_strategy = compaction_strategy
99
+ @compression = compression
100
+ @compact_storage = compact_storage
101
+ @crc_check_chance = crc_check_chance
102
+ @extensions = extensions
103
+ end
104
+
105
+ # Return whether to replicate counter updates to other replicas. It is *strongly* recommended
106
+ # that this setting be `true`. Otherwise, counter updates are only written to one replica
107
+ # and fault tolerance is sacrificed.
108
+ # @return [Boolean] whether to replicate counter updates to other replicas.
109
+ def replicate_on_write?
110
+ @replicate_on_write
111
+ end
112
+
113
+ # @return [Boolean] whether to populate the I/O cache on flush of this
114
+ # column-container. May be nil, indicating a default value of `false`.
115
+ def populate_io_cache_on_flush?
116
+ @populate_io_cache_on_flush
117
+ end
118
+
119
+ # @return [Boolean] whether this column-container uses compact storage.
120
+ def compact_storage?
121
+ @compact_storage
122
+ end
123
+
124
+ # @private
125
+ def to_cql
126
+ options = []
127
+
128
+ options << 'COMPACT STORAGE' if @compact_storage
129
+ unless @bloom_filter_fp_chance.nil?
130
+ options << "bloom_filter_fp_chance = #{Util.encode_object(@bloom_filter_fp_chance)}"
131
+ end
132
+ options << "caching = #{Util.encode_object(@caching)}" unless @caching.nil?
133
+ options << "comment = #{Util.encode_object(@comment)}" unless @comment.nil?
134
+ options << "compaction = #{@compaction_strategy.to_cql}" unless @compaction_strategy.nil?
135
+ options << "compression = #{Util.encode_object(@compression)}" unless @compression.nil?
136
+ options << "crc_check_chance = #{Util.encode_object(@crc_check_chance)}" unless @crc_check_chance.nil?
137
+ unless @local_read_repair_chance.nil?
138
+ options << "dclocal_read_repair_chance = #{Util.encode_object(@local_read_repair_chance)}"
139
+ end
140
+ unless @default_time_to_live.nil?
141
+ options << "default_time_to_live = #{Util.encode_object(@default_time_to_live)}"
142
+ end
143
+ options << "gc_grace_seconds = #{Util.encode_object(@gc_grace_seconds)}" unless @gc_grace_seconds.nil?
144
+ options << "index_interval = #{Util.encode_object(@index_interval)}" unless @index_interval.nil?
145
+ options << "max_index_interval = #{Util.encode_object(@max_index_interval)}" unless @max_index_interval.nil?
146
+ unless @memtable_flush_period_in_ms.nil?
147
+ options << "memtable_flush_period_in_ms = #{Util.encode_object(@memtable_flush_period_in_ms)}"
148
+ end
149
+ options << "min_index_interval = #{Util.encode_object(@min_index_interval)}" unless @min_index_interval.nil?
150
+ unless @populate_io_cache_on_flush.nil?
151
+ options << "populate_io_cache_on_flush = '#{@populate_io_cache_on_flush}'"
152
+ end
153
+ options << "read_repair_chance = #{Util.encode_object(@read_repair_chance)}" unless @read_repair_chance.nil?
154
+ options << "replicate_on_write = '#{@replicate_on_write}'" unless @replicate_on_write.nil?
155
+ options << "speculative_retry = #{Util.encode_object(@speculative_retry)}" unless @speculative_retry.nil?
156
+
157
+ options.join("\nAND ")
158
+ end
159
+
160
+ # @private
161
+ def eql?(other)
162
+ other.is_a?(Options) &&
163
+ @comment == other.comment &&
164
+ @read_repair_chance == other.read_repair_chance &&
165
+ @local_read_repair_chance == other.local_read_repair_chance &&
166
+ @gc_grace_seconds == other.gc_grace_seconds &&
167
+ @caching == other.caching &&
168
+ @bloom_filter_fp_chance == other.bloom_filter_fp_chance &&
169
+ @populate_io_cache_on_flush == other.populate_io_cache_on_flush? &&
170
+ @memtable_flush_period_in_ms == other.memtable_flush_period_in_ms &&
171
+ @default_time_to_live == other.default_time_to_live &&
172
+ @speculative_retry == other.speculative_retry &&
173
+ @index_interval == other.index_interval &&
174
+ @replicate_on_write == other.replicate_on_write? &&
175
+ @compaction_strategy == other.compaction_strategy &&
176
+ @compression == other.compression &&
177
+ @compact_storage == other.compact_storage? &&
178
+ @crc_check_chance == other.crc_check_chance &&
179
+ @extensions == other.extensions
180
+ end
181
+ alias == eql?
182
+ end
183
+
184
+ # Encapsulates the compaction strategy of a column-container.
185
+ class Compaction
186
+ # @return [String] the name of the Cassandra class that performs compaction.
187
+ attr_reader :class_name
188
+ # @return [Hash] compaction strategy options
189
+ attr_reader :options
190
+
191
+ # @private
192
+ def initialize(class_name, options)
193
+ @class_name = class_name
194
+ @options = options
195
+ end
196
+
197
+ # @private
198
+ def to_cql
199
+ compaction = {'class' => @class_name}
200
+ compaction.merge!(@options)
201
+
202
+ Util.encode_hash(compaction)
203
+ end
204
+
205
+ # @private
206
+ def eql?(other)
207
+ other.is_a?(Compaction) &&
208
+ @class_name == other.class_name &&
209
+ @options == other.options
210
+ end
211
+ alias == eql?
212
+ end
213
+
214
+ # @return [String] name of this column-container
215
+ attr_reader :name
216
+ # @return [Cassandra::Uuid] the id of this object in Cassandra.
217
+ attr_reader :id
218
+ # @return [Cassandra::Keyspace] the keyspace that this column-container belongs to.
219
+ attr_reader :keyspace
220
+ # @return [ColumnContainer::Options] collection of configuration options of this column-container.
221
+ attr_reader :options
222
+ # @return [Array<Cassandra::Column>] ordered list of column-names that make up the partition-key.
223
+ attr_reader :partition_key
224
+ # @return [Array<Cassandra::Column>] ordered list of column-names that make up the clustering-columns.
225
+ attr_reader :clustering_columns
226
+ # @return [Array<Cassandra::Column>] primary key of this column-container. It's the combination of
227
+ # `partition_key` and `clustering_columns`.
228
+ # @note This composition produces a flat list, so it will not be possible for the caller to distinguish
229
+ # partition-key columns from clustering-columns.
230
+ attr_reader :primary_key
231
+
232
+ # @private
233
+ def initialize(keyspace,
234
+ name,
235
+ partition_key,
236
+ clustering_columns,
237
+ other_columns,
238
+ options,
239
+ id)
240
+ @keyspace = keyspace
241
+ @name = name.freeze
242
+ @partition_key = partition_key.freeze
243
+ @clustering_columns = clustering_columns.freeze
244
+ @options = options
245
+ @id = id
246
+
247
+ # Make one array of all the columns, ordered with partition key, clustering
248
+ # columns, then other columns. Make a hash as well, to support random access
249
+ # to column metadata for a given column name. Save off the primary key (which
250
+ # is partition-key + clustering-columns) while we're at it.
251
+
252
+ @primary_key = @partition_key.dup.concat(@clustering_columns).freeze
253
+ @columns = @primary_key.dup.concat(other_columns).freeze
254
+ @columns_hash = @columns.each_with_object({}) do |col, h|
255
+ h[col.name] = col
256
+ end
257
+ end
258
+
259
+ # @param name [String] column name
260
+ # @return [Boolean] whether this column-container has a given column
261
+ def has_column?(name)
262
+ @columns_hash.key?(name)
263
+ end
264
+
265
+ # @param name [String] column name
266
+ # @return [Cassandra::Column, nil] a column or nil
267
+ def column(name)
268
+ @columns_hash[name]
269
+ end
270
+
271
+ # Yield or enumerate each column defined in this column-container
272
+ # @overload each_column
273
+ # @yieldparam column [Cassandra::Column] current column
274
+ # @return [Cassandra::ColumnContainer] self
275
+ # @overload each_column
276
+ # @return [Array<Cassandra::Column>] a list of columns
277
+ def each_column(&block)
278
+ if block_given?
279
+ @columns.each(&block)
280
+ self
281
+ else
282
+ @columns
283
+ end
284
+ end
285
+ alias columns each_column
286
+
287
+ # @private
288
+ # keyspace attribute may be nil because when this object was constructed, we didn't have
289
+ # its keyspace constructed yet. So allow updating @keyspace if it's nil, thus
290
+ # allowing fetchers to create keyspace, table/view, and hook them together without
291
+ # worrying about chickens and eggs.
292
+ # NOTE: Ignore the set request if the @keyspace is already set.
293
+ # rubocop:disable Style/AccessorMethodName
294
+ def set_keyspace(keyspace)
295
+ @keyspace = keyspace unless @keyspace
296
+ end
297
+
298
+ # @private
299
+ def inspect
300
+ "#<#{self.class.name}:0x#{object_id.to_s(16)} " \
301
+ "@keyspace=#{@keyspace.name} @name=#{@name}>"
302
+ end
303
+
304
+ # @private
305
+ def eql?(other)
306
+ other.is_a?(ColumnContainer) &&
307
+ @keyspace == other.keyspace &&
308
+ @name == other.name &&
309
+ @partition_key == other.partition_key &&
310
+ @clustering_columns == other.clustering_columns &&
311
+ @columns == other.raw_columns &&
312
+ @options == other.options
313
+ end
314
+ alias == eql?
315
+
316
+ # @private
317
+ def raw_columns
318
+ @columns
319
+ end
320
+ protected :raw_columns
321
+ end
322
+ end
@@ -28,6 +28,9 @@ module Cassandra
28
28
  # :lz4` option when calling {Cassandra.cluster} and one will be created
29
29
  # automatically for you.
30
30
  class Lz4 < Compressor
31
+ # @private
32
+ BUFFER_FORMAT = 'Na*'.freeze
33
+
31
34
  # @return [String] `'lz4'`
32
35
  attr_reader :algorithm
33
36
 
@@ -64,11 +67,6 @@ module Cassandra
64
67
  decompressed_size, compressed_data = str.to_s.unpack(BUFFER_FORMAT)
65
68
  ::LZ4::Raw.decompress(compressed_data, decompressed_size).first
66
69
  end
67
-
68
- private
69
-
70
- # @private
71
- BUFFER_FORMAT = 'Na*'.freeze
72
70
  end
73
71
  end
74
72
  end
@@ -142,7 +142,7 @@ module Cassandra
142
142
  end
143
143
 
144
144
  let(:port) { 9042 }
145
- let(:protocol_version) { 4 }
145
+ let(:protocol_version) { nil }
146
146
  let(:connect_timeout) { 10 }
147
147
  let(:ssl) { false }
148
148
  let(:logger) { NullLogger.new }
@@ -43,7 +43,8 @@ module Cassandra
43
43
  # Raised when something unexpected happened. This indicates a server-side
44
44
  # bug.
45
45
  #
46
- # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L654-L655 Description of Server Error in Apache Cassandra native protocol spec v1
46
+ # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L654-L655 Description
47
+ # of Server Error in Apache Cassandra native protocol spec v1
47
48
  class ServerError < ::StandardError
48
49
  include Error, HostError
49
50
 
@@ -155,7 +156,8 @@ module Cassandra
155
156
  # @note This error can be handled by a {Cassandra::Retry::Policy} to
156
157
  # determine the desired outcome.
157
158
  #
158
- # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L662-L672 Description of Unavailable Error in Apache Cassandra native protocol spec v1
159
+ # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L662-L672 Description
160
+ # of Unavailable Error in Apache Cassandra native protocol spec v1
159
161
  class UnavailableError < ::StandardError
160
162
  include ExecutionError
161
163
  # Consistency level that triggered the error.
@@ -202,7 +204,8 @@ module Cassandra
202
204
  # Raised when the request cannot be processed because the coordinator node
203
205
  # is overloaded
204
206
  #
205
- # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L673-L674 Description of Overloaded Error in Apache Cassandra native protocol spec v1
207
+ # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L673-L674 Description
208
+ # of Overloaded Error in Apache Cassandra native protocol spec v1
206
209
  class OverloadedError < ::StandardError
207
210
  include ExecutionError, HostError
208
211
  end
@@ -210,21 +213,24 @@ module Cassandra
210
213
  # Raise when the request was a read request but the coordinator node is
211
214
  # bootstrapping
212
215
  #
213
- # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L675-L676 Description of Is Bootstrapping Error in Apache Cassandra native protocol spec v1
216
+ # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L675-L676 Description
217
+ # of Is Bootstrapping Error in Apache Cassandra native protocol spec v1
214
218
  class IsBootstrappingError < ::StandardError
215
219
  include ExecutionError, HostError
216
220
  end
217
221
 
218
222
  # Raised when truncation failed.
219
223
  #
220
- # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L677 Description of Truncate Error in Apache Cassandra native protocol spec v1
224
+ # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L677 Description of
225
+ # Truncate Error in Apache Cassandra native protocol spec v1
221
226
  class TruncateError < ::StandardError
222
227
  include ExecutionError
223
228
  end
224
229
 
225
230
  # Raised when a write request timed out.
226
231
  #
227
- # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L678-L703 Description of Write Timeout Error in Apache Cassandra native protocol spec v1
232
+ # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L678-L703 Description
233
+ # of Write Timeout Error in Apache Cassandra native protocol spec v1
228
234
  class WriteTimeoutError < ::StandardError
229
235
  include ExecutionError
230
236
 
@@ -273,13 +279,16 @@ module Cassandra
273
279
 
274
280
  # Raised when a read request timed out.
275
281
  #
276
- # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L704-L721 Description of Read Timeout Error in Apache Cassandra native protocol spec v1
282
+ # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L704-L721 Description
283
+ # of Read Timeout Error in Apache Cassandra native protocol spec v1
277
284
  class ReadTimeoutError < ::StandardError
278
285
  include ExecutionError
279
286
 
280
287
  # @return [Boolean] whether actual data (as opposed to data checksum) was
281
288
  # present in the received responses.
282
289
  attr_reader :retrieved
290
+ alias retrieved? retrieved
291
+
283
292
  # @return [Symbol] the original consistency level for the request, one of
284
293
  # {Cassandra::CONSISTENCIES}
285
294
  attr_reader :consistency
@@ -318,15 +327,12 @@ module Cassandra
318
327
  @required = required
319
328
  @received = received
320
329
  end
321
-
322
- def retrieved?
323
- @retrieved
324
- end
325
330
  end
326
331
 
327
332
  # Raised when a write request fails.
328
333
  #
329
- # @see https://github.com/apache/cassandra/blob/33f1edcce97779c971d4f78712a9a8bf014ffbbc/doc/native_protocol_v4.spec#L1111-L1138 Description of Write Failure Error in Apache Cassandra native protocol spec v4
334
+ # @see https://github.com/apache/cassandra/blob/cassandra-3.4/doc/native_protocol_v4.spec#L1106-L1134 Description
335
+ # of Write Failure Error in Apache Cassandra native protocol spec v4
330
336
  class WriteError < ::StandardError
331
337
  include ExecutionError
332
338
 
@@ -377,7 +383,8 @@ module Cassandra
377
383
 
378
384
  # Raised when a read request fails.
379
385
  #
380
- # @see https://github.com/apache/cassandra/blob/33f1edcce97779c971d4f78712a9a8bf014ffbbc/doc/native_protocol_v4.spec#L1089-L1103 Description of Read Failure Error in Apache Cassandra native protocol spec v4
386
+ # @see https://github.com/apache/cassandra/blob/cassandra-3.4/doc/native_protocol_v4.spec#L1084-L1098 Description
387
+ # of Read Failure Error in Apache Cassandra native protocol spec v4
381
388
  class ReadError < ::StandardError
382
389
  include ExecutionError
383
390
 
@@ -432,7 +439,8 @@ module Cassandra
432
439
 
433
440
  # Raised when function execution fails.
434
441
  #
435
- # @see https://github.com/apache/cassandra/blob/33f1edcce97779c971d4f78712a9a8bf014ffbbc/doc/native_protocol_v4.spec#L1104-L1110 Description of Function Failure Error in Apache Cassandra native protocol spec v4
442
+ # @see https://github.com/apache/cassandra/blob/cassandra-3.4/doc/native_protocol_v4.spec#L1099-L1105 Description
443
+ # of Function Failure Error in Apache Cassandra native protocol spec v4
436
444
  class FunctionCallError < ::StandardError
437
445
  include ExecutionError
438
446
 
@@ -479,7 +487,8 @@ module Cassandra
479
487
  # Raised when some client message triggered a protocol violation (for
480
488
  # instance a QUERY message is sent before a STARTUP one has been sent)
481
489
  #
482
- # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L656-L658 Description of Protocol Error in Apache Cassandra native protocol spec v1
490
+ # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L656-L658 Description
491
+ # of Protocol Error in Apache Cassandra native protocol spec v1
483
492
  class ProtocolError < ClientError
484
493
  # @private
485
494
  def initialize(message,
@@ -519,7 +528,8 @@ module Cassandra
519
528
 
520
529
  # Raised when cannot authenticate to Cassandra
521
530
  #
522
- # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L659-L660 Description of Bad Credentials Error in Apache Cassandra native protocol spec v1
531
+ # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L659-L660 Description
532
+ # of Bad Credentials Error in Apache Cassandra native protocol spec v1
523
533
  class AuthenticationError < ClientError
524
534
  # @private
525
535
  def initialize(message,
@@ -603,7 +613,8 @@ module Cassandra
603
613
  # @note Seeing this error can be considered a Ruby Driver bug as it should
604
614
  # handle automatic re-preparing internally.
605
615
  #
606
- # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L738-L741 Description of Unprepared Error in Apache Cassandra native protocol spec v1
616
+ # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L738-L741 Description
617
+ # of Unprepared Error in Apache Cassandra native protocol spec v1
607
618
  class UnpreparedError < ::StandardError
608
619
  include ValidationError
609
620
  # @return [String] prepared statement id that triggered the error
@@ -635,14 +646,16 @@ module Cassandra
635
646
 
636
647
  # Raised when the submitted query has a syntax error.
637
648
  #
638
- # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L723 Description of Syntax Error in Apache Cassandra native protocol spec v1
649
+ # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L723 Description of
650
+ # Syntax Error in Apache Cassandra native protocol spec v1
639
651
  class SyntaxError < ::StandardError
640
652
  include ValidationError
641
653
  end
642
654
 
643
655
  # Raised when the logged user doesn't have the right to perform the query.
644
656
  #
645
- # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L724-L725 Description of Unauthorized Error in Apache Cassandra native protocol spec v1
657
+ # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L724-L725 Description
658
+ # of Unauthorized Error in Apache Cassandra native protocol spec v1
646
659
  class UnauthorizedError < ::StandardError
647
660
  include ValidationError
648
661
  end
@@ -655,7 +668,8 @@ module Cassandra
655
668
  # rescue Cassandra::Errors::InvalidError
656
669
  # end
657
670
  #
658
- # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L726 Description of Invalid Error in Apache Cassandra native protocol spec v1
671
+ # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L726 Description
672
+ # of Invalid Error in Apache Cassandra native protocol spec v1
659
673
  class InvalidError < ::StandardError
660
674
  include ValidationError
661
675
  end
@@ -668,7 +682,8 @@ module Cassandra
668
682
  # rescue Cassandra::Errors::ConfigurationError
669
683
  # end
670
684
  #
671
- # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L727 Description of Config Error in Apache Cassandra native protocol spec v1
685
+ # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L727 Description of
686
+ # Config Error in Apache Cassandra native protocol spec v1
672
687
  class ConfigurationError < ::StandardError
673
688
  include ValidationError
674
689
  end
@@ -685,7 +700,8 @@ module Cassandra
685
700
  # p ['already exists', e.keyspace, e.table]
686
701
  # end
687
702
  #
688
- # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L728-L737 Description of Already Exists Error in Apache Cassandra native protocol spec v1
703
+ # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L728-L737 Description
704
+ # of Already Exists Error in Apache Cassandra native protocol spec v1
689
705
  class AlreadyExistsError < ConfigurationError
690
706
  # @return [String] keyspace
691
707
  attr_reader :keyspace