cassandra-driver 2.1.7-java → 3.0.0.beta.1-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +31 -53
  3. data/lib/cassandra.rb +22 -3
  4. data/lib/cassandra/aggregate.rb +109 -0
  5. data/lib/cassandra/argument.rb +51 -0
  6. data/lib/cassandra/auth/providers/password.rb +7 -4
  7. data/lib/cassandra/cluster.rb +14 -3
  8. data/lib/cassandra/cluster/client.rb +56 -34
  9. data/lib/cassandra/cluster/connector.rb +6 -6
  10. data/lib/cassandra/cluster/control_connection.rb +204 -251
  11. data/lib/cassandra/cluster/metadata.rb +2 -0
  12. data/lib/cassandra/cluster/schema.rb +131 -209
  13. data/lib/cassandra/cluster/schema/cql_type_parser.rb +104 -0
  14. data/lib/cassandra/cluster/schema/fetchers.rb +1174 -0
  15. data/lib/cassandra/cluster/schema/{type_parser.rb → fqcn_type_parser.rb} +7 -3
  16. data/lib/cassandra/column.rb +2 -2
  17. data/lib/cassandra/driver.rb +27 -9
  18. data/lib/cassandra/errors.rb +179 -25
  19. data/lib/cassandra/execution/info.rb +8 -1
  20. data/lib/cassandra/execution/options.rb +34 -0
  21. data/lib/cassandra/execution/trace.rb +42 -10
  22. data/lib/cassandra/function.rb +150 -0
  23. data/lib/cassandra/future.rb +66 -35
  24. data/lib/cassandra/host.rb +7 -4
  25. data/lib/cassandra/keyspace.rb +112 -13
  26. data/lib/cassandra/load_balancing.rb +1 -1
  27. data/lib/cassandra/protocol.rb +9 -3
  28. data/lib/cassandra/protocol/coder.rb +434 -155
  29. data/lib/cassandra/protocol/cql_byte_buffer.rb +43 -0
  30. data/lib/cassandra/protocol/cql_protocol_handler.rb +4 -1
  31. data/lib/cassandra/protocol/request.rb +4 -0
  32. data/lib/cassandra/protocol/requests/auth_response_request.rb +5 -1
  33. data/lib/cassandra/protocol/requests/batch_request.rb +7 -2
  34. data/lib/cassandra/protocol/requests/credentials_request.rb +5 -1
  35. data/lib/cassandra/protocol/requests/execute_request.rb +16 -10
  36. data/lib/cassandra/protocol/requests/prepare_request.rb +12 -3
  37. data/lib/cassandra/protocol/requests/query_request.rb +20 -11
  38. data/lib/cassandra/protocol/responses/already_exists_error_response.rb +4 -4
  39. data/lib/cassandra/protocol/responses/error_response.rb +14 -14
  40. data/lib/cassandra/protocol/responses/function_failure_error_response.rb +41 -0
  41. data/lib/cassandra/protocol/responses/prepared_result_response.rb +12 -9
  42. data/lib/cassandra/protocol/responses/raw_rows_result_response.rb +5 -3
  43. data/lib/cassandra/protocol/responses/read_failure_error_response.rb +43 -0
  44. data/lib/cassandra/protocol/responses/read_timeout_error_response.rb +4 -4
  45. data/lib/cassandra/protocol/responses/ready_response.rb +5 -1
  46. data/lib/cassandra/protocol/responses/result_response.rb +3 -3
  47. data/lib/cassandra/protocol/responses/rows_result_response.rb +2 -2
  48. data/lib/cassandra/protocol/responses/schema_change_event_response.rb +25 -24
  49. data/lib/cassandra/protocol/responses/schema_change_result_response.rb +20 -23
  50. data/lib/cassandra/protocol/responses/set_keyspace_result_response.rb +2 -2
  51. data/lib/cassandra/protocol/responses/unavailable_error_response.rb +4 -4
  52. data/lib/cassandra/protocol/responses/unprepared_error_response.rb +4 -4
  53. data/lib/cassandra/protocol/responses/write_failure_error_response.rb +45 -0
  54. data/lib/cassandra/protocol/responses/write_timeout_error_response.rb +4 -4
  55. data/lib/cassandra/protocol/v1.rb +38 -13
  56. data/lib/cassandra/protocol/v3.rb +34 -29
  57. data/lib/cassandra/protocol/v4.rb +334 -0
  58. data/lib/cassandra/result.rb +10 -9
  59. data/lib/cassandra/retry.rb +17 -3
  60. data/lib/cassandra/retry/policies/default.rb +9 -3
  61. data/lib/cassandra/session.rb +15 -7
  62. data/lib/cassandra/statement.rb +5 -0
  63. data/lib/cassandra/statements/batch.rb +36 -12
  64. data/lib/cassandra/statements/bound.rb +2 -1
  65. data/lib/cassandra/statements/prepared.rb +106 -35
  66. data/lib/cassandra/statements/simple.rb +4 -2
  67. data/lib/cassandra/table.rb +70 -105
  68. data/lib/cassandra/time.rb +98 -0
  69. data/lib/cassandra/time_uuid.rb +1 -1
  70. data/lib/cassandra/tuple.rb +7 -0
  71. data/lib/cassandra/types.rb +472 -272
  72. data/lib/cassandra/udt.rb +10 -0
  73. data/lib/cassandra/util.rb +32 -1
  74. data/lib/cassandra/uuid.rb +6 -1
  75. data/lib/cassandra/uuid/generator.rb +7 -7
  76. data/lib/cassandra/version.rb +1 -1
  77. data/lib/cassandra_murmur3.jar +0 -0
  78. data/lib/datastax/cassandra.rb +5 -2
  79. metadata +27 -17
@@ -19,7 +19,7 @@
19
19
  module Cassandra
20
20
  class Cluster
21
21
  class Schema
22
- class TypeParser
22
+ class FQCNTypeParser
23
23
  # @private
24
24
  Node = Struct.new(:parent, :name, :children)
25
25
  # @private
@@ -36,7 +36,7 @@ module Cassandra
36
36
  "org.apache.cassandra.db.marshal.FloatType" => :float,
37
37
  "org.apache.cassandra.db.marshal.InetAddressType" => :inet,
38
38
  "org.apache.cassandra.db.marshal.Int32Type" => :int,
39
- "org.apache.cassandra.db.marshal.UTF8Type" => :varchar,
39
+ "org.apache.cassandra.db.marshal.UTF8Type" => :text,
40
40
  "org.apache.cassandra.db.marshal.TimestampType" => :timestamp,
41
41
  "org.apache.cassandra.db.marshal.DateType" => :timestamp,
42
42
  "org.apache.cassandra.db.marshal.UUIDType" => :uuid,
@@ -46,7 +46,11 @@ module Cassandra
46
46
  "org.apache.cassandra.db.marshal.SetType" => :set,
47
47
  "org.apache.cassandra.db.marshal.ListType" => :list,
48
48
  "org.apache.cassandra.db.marshal.UserType" => :udt,
49
- "org.apache.cassandra.db.marshal.TupleType" => :tuple
49
+ "org.apache.cassandra.db.marshal.TupleType" => :tuple,
50
+ "org.apache.cassandra.db.marshal.ShortType" => :smallint,
51
+ "org.apache.cassandra.db.marshal.ByteType" => :tinyint,
52
+ "org.apache.cassandra.db.marshal.TimeType" => :time,
53
+ "org.apache.cassandra.db.marshal.SimpleDateType" => :date,
50
54
  }.freeze
51
55
 
52
56
  def parse(string)
@@ -65,12 +65,12 @@ module Cassandra
65
65
  @frozen
66
66
  end
67
67
 
68
- # @return [String] a CLI-friendly column representation
68
+ # @private
69
69
  def inspect
70
70
  "#<#{self.class.name}:0x#{self.object_id.to_s(16)} @name=#{@name} @type=#{@type}>"
71
71
  end
72
72
 
73
- # @return [Boolean] whether this column is equal to the other
73
+ # @private
74
74
  def eql?(other)
75
75
  other.is_a?(Column) &&
76
76
  @name == other.name &&
@@ -26,7 +26,7 @@ module Cassandra
26
26
 
27
27
  let(:io_reactor) { Ione::Io::IoReactor.new }
28
28
  let(:cluster_registry) { Cluster::Registry.new(logger) }
29
- let(:cluster_schema) { Cluster::Schema.new(schema_type_parser) }
29
+ let(:cluster_schema) { Cluster::Schema.new }
30
30
  let(:cluster_metadata) { Cluster::Metadata.new(
31
31
  cluster_registry,
32
32
  cluster_schema,
@@ -36,8 +36,8 @@ module Cassandra
36
36
  'org.apache.cassandra.dht.RandomPartitioner' => random_partitioner
37
37
  }.freeze,
38
38
  {
39
- 'org.apache.cassandra.locator.SimpleStrategy' => simple_replication_strategy,
40
- 'org.apache.cassandra.locator.NetworkTopologyStrategy' => network_topology_replication_strategy
39
+ 'SimpleStrategy' => simple_replication_strategy,
40
+ 'NetworkTopologyStrategy' => network_topology_replication_strategy
41
41
  }.freeze,
42
42
  no_replication_strategy
43
43
  )
@@ -46,7 +46,8 @@ module Cassandra
46
46
  let(:executor) { Executors::ThreadPool.new(thread_pool_size) }
47
47
  let(:futures_factory) { Future::Factory.new(executor) }
48
48
 
49
- let(:schema_type_parser) { Cluster::Schema::TypeParser.new }
49
+ let(:schema_fqcn_type_parser) { Cluster::Schema::FQCNTypeParser.new }
50
+ let(:schema_cql_type_parser) { Cluster::Schema::CQLTypeParser.new }
50
51
 
51
52
  let(:simple_replication_strategy) { Cluster::Schema::ReplicationStrategies::Simple.new }
52
53
  let(:network_topology_replication_strategy) { Cluster::Schema::ReplicationStrategies::NetworkTopology.new }
@@ -58,7 +59,9 @@ module Cassandra
58
59
 
59
60
  let(:connector) { Cluster::Connector.new(logger, io_reactor, cluster_registry, connection_options, execution_options) }
60
61
 
61
- let(:control_connection) { Cluster::ControlConnection.new(logger, io_reactor, cluster_registry, cluster_schema, cluster_metadata, load_balancing_policy, reconnection_policy, address_resolution_policy, connector, connection_options) }
62
+ let(:schema_fetcher) { create_schema_fetcher_picker }
63
+
64
+ let(:control_connection) { Cluster::ControlConnection.new(logger, io_reactor, cluster_registry, cluster_schema, cluster_metadata, load_balancing_policy, reconnection_policy, address_resolution_policy, connector, connection_options, schema_fetcher) }
62
65
 
63
66
  let(:cluster) { Cluster.new(logger, io_reactor, executor, control_connection, cluster_registry, cluster_schema, cluster_metadata, execution_options, connection_options, load_balancing_policy, reconnection_policy, retry_policy, address_resolution_policy, connector, futures_factory) }
64
67
 
@@ -67,7 +70,8 @@ module Cassandra
67
70
  :consistency => consistency,
68
71
  :trace => trace,
69
72
  :page_size => page_size,
70
- :timeout => timeout
73
+ :timeout => timeout,
74
+ :idempotent => false
71
75
  })
72
76
  end
73
77
 
@@ -93,7 +97,7 @@ module Cassandra
93
97
  end
94
98
 
95
99
  let(:port) { 9042 }
96
- let(:protocol_version) { 3 }
100
+ let(:protocol_version) { 4 }
97
101
  let(:connect_timeout) { 10 }
98
102
  let(:ssl) { false }
99
103
  let(:logger) { NullLogger.new }
@@ -105,7 +109,7 @@ module Cassandra
105
109
  let(:reconnection_policy) { Reconnection::Policies::Exponential.new(0.5, 30, 2) }
106
110
  let(:retry_policy) { Retry::Policies::Default.new }
107
111
  let(:address_resolution_policy) { AddressResolution::Policies::None.new }
108
- let(:consistency) { :one }
112
+ let(:consistency) { :local_one }
109
113
  let(:trace) { false }
110
114
  let(:page_size) { 10000 }
111
115
  let(:heartbeat_interval) { 30 }
@@ -117,7 +121,7 @@ module Cassandra
117
121
  let(:thread_pool_size) { 4 }
118
122
  let(:shuffle_replicas) { true }
119
123
  let(:client_timestamps) { false }
120
- let(:nodelay) { false }
124
+ let(:nodelay) { true }
121
125
 
122
126
  let(:connections_per_local_node) { 2 }
123
127
  let(:connections_per_remote_node) { 1 }
@@ -156,5 +160,19 @@ module Cassandra
156
160
 
157
161
  promise.future
158
162
  end
163
+
164
+ private
165
+
166
+ def create_schema_fetcher_picker
167
+ picker = Cluster::Schema::Fetchers::MultiVersion.new(cluster_registry)
168
+
169
+ picker.when('1.2') { Cluster::Schema::Fetchers::V1_2_x.new(schema_fqcn_type_parser, cluster_schema) }
170
+ picker.when('2.0') { Cluster::Schema::Fetchers::V2_0_x.new(schema_fqcn_type_parser, cluster_schema) }
171
+ picker.when('2.1') { Cluster::Schema::Fetchers::V2_1_x.new(schema_fqcn_type_parser, cluster_schema) }
172
+ picker.when('2.2') { Cluster::Schema::Fetchers::V2_2_x.new(schema_fqcn_type_parser, cluster_schema) }
173
+ picker.when('3.0') { Cluster::Schema::Fetchers::V3_0_x.new(schema_cql_type_parser, cluster_schema) }
174
+
175
+ picker
176
+ end
159
177
  end
160
178
  end
@@ -46,6 +46,25 @@ module Cassandra
46
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
47
47
  class ServerError < ::StandardError
48
48
  include Error, HostError
49
+
50
+ # @private
51
+ def initialize(message, payload, warnings, keyspace, statement, options, hosts, consistency, retries)
52
+ super(message)
53
+ @payload = payload
54
+ @warnings = warnings
55
+ @keyspace = keyspace
56
+ @statement = statement
57
+ @options = options
58
+ @hosts = hosts
59
+ @consistency = consistency
60
+ @retries = retries
61
+ end
62
+
63
+ # Query execution information, such as number of retries and all tried hosts, etc.
64
+ # @return [Cassandra::Execution::Info]
65
+ def execution_info
66
+ @info ||= Execution::Info.new(@payload, @warnings, @keyspace, @statement, @options, @hosts, @consistency, @retries, nil)
67
+ end
49
68
  end
50
69
 
51
70
  # Mixed into all internal driver errors.
@@ -70,21 +89,30 @@ module Cassandra
70
89
 
71
90
  # Raised when a timeout has occured.
72
91
  class TimeoutError < ::Timeout::Error
73
- include Error, HostError
92
+ include Error
74
93
  end
75
94
 
76
95
  # Mixed into all request execution errors.
77
96
  module ExecutionError
78
97
  include Error
79
98
 
80
- # @return [Cassandra::Statement] statement that triggered the error.
81
- attr_reader :statement
82
-
83
99
  # @private
84
- def initialize(message, statement)
100
+ def initialize(message, payload, warnings, keyspace, statement, options, hosts, consistency, retries)
85
101
  super(message)
102
+ @payload = payload
103
+ @warnings = warnings
104
+ @keyspace = keyspace
105
+ @statement = statement
106
+ @options = options
107
+ @hosts = hosts
108
+ @consistency = consistency
109
+ @retries = retries
110
+ end
86
111
 
87
- @statement = statement
112
+ # Query execution information, such as number of retries and all tried hosts, etc.
113
+ # @return [Cassandra::Execution::Info]
114
+ def execution_info
115
+ @info ||= Execution::Info.new(@payload, @warnings, @keyspace, @statement, @options, @hosts, @consistency, @retries, nil)
88
116
  end
89
117
  end
90
118
 
@@ -112,9 +140,8 @@ module Cassandra
112
140
  attr_reader :alive
113
141
 
114
142
  # @private
115
- def initialize(message, statement, consistency, required, alive)
116
- super(message, statement)
117
-
143
+ def initialize(message, payload, warnings, keyspace, statement, options, hosts, r_consistency, retries, consistency, required, alive)
144
+ super(message, payload, warnings, keyspace, statement, options, hosts, r_consistency, retries)
118
145
  @consistency = consistency
119
146
  @required = required
120
147
  @alive = alive
@@ -164,9 +191,8 @@ module Cassandra
164
191
  attr_reader :received
165
192
 
166
193
  # @private
167
- def initialize(message, statement, type, consistency, required, received)
168
- super(message, statement)
169
-
194
+ def initialize(message, payload, warnings, keyspace, statement, options, hosts, r_consistency, retries, type, consistency, required, received)
195
+ super(message, payload, warnings, keyspace, statement, options, hosts, r_consistency, retries)
170
196
  @type = type
171
197
  @consistency = consistency
172
198
  @required = required
@@ -194,12 +220,75 @@ module Cassandra
194
220
  attr_reader :received
195
221
 
196
222
  # @private
197
- def initialize(message, statement, retrieved, consistency, required, received)
198
- super(message, statement)
223
+ def initialize(message, payload, warnings, keyspace, statement, options, hosts, r_consistency, retries, retrieved, consistency, required, received)
224
+ super(message, payload, warnings, keyspace, statement, options, hosts, r_consistency, retries)
225
+ @retrieved = retrieved
226
+ @consistency = consistency
227
+ @required = required
228
+ @received = received
229
+ end
230
+
231
+ def retrieved?
232
+ @retrieved
233
+ end
234
+ end
235
+
236
+ # Raised when a write request fails.
237
+ #
238
+ # @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
239
+ class WriteError < ::StandardError
240
+ include ExecutionError
241
+
242
+ # @return [Symbol] the type of write request that timed out, one of
243
+ # {Cassandra::WRITE_TYPES}
244
+ attr_reader :type
245
+ # @return [Symbol] the original consistency level for the request, one of
246
+ # {Cassandra::CONSISTENCIES}
247
+ attr_reader :consistency
248
+ # @return [Integer] the number of acks required
249
+ attr_reader :required
250
+ # @return [Integer] the number of acks received
251
+ attr_reader :received
252
+ # @return [Integer] the number of writes failed
253
+ attr_reader :failed
254
+
255
+ # @private
256
+ def initialize(message, payload, warnings, keyspace, statement, options, hosts, r_consistency, retries, type, consistency, required, failed, received)
257
+ super(message, payload, warnings, keyspace, statement, options, hosts, r_consistency, retries)
258
+ @type = type
259
+ @consistency = consistency
260
+ @required = required
261
+ @failed = failed
262
+ @received = received
263
+ end
264
+ end
265
+
266
+ # Raised when a read request fails.
267
+ #
268
+ # @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
269
+ class ReadError < ::StandardError
270
+ include ExecutionError
199
271
 
272
+ # @return [Boolean] whether actual data (as opposed to data checksum) was
273
+ # present in the received responses.
274
+ attr_reader :retrieved
275
+ # @return [Symbol] the original consistency level for the request, one of
276
+ # {Cassandra::CONSISTENCIES}
277
+ attr_reader :consistency
278
+ # @return [Integer] the number of responses required
279
+ attr_reader :required
280
+ # @return [Integer] the number of responses received
281
+ attr_reader :received
282
+ # @return [Integer] the number of reads failed
283
+ attr_reader :failed
284
+
285
+ # @private
286
+ def initialize(message, payload, warnings, keyspace, statement, options, hosts, r_consistency, retries, retrieved, consistency, required, failed, received)
287
+ super(message, payload, warnings, keyspace, statement, options, hosts, r_consistency, retries)
200
288
  @retrieved = retrieved
201
289
  @consistency = consistency
202
290
  @required = required
291
+ @failed = failed
203
292
  @received = received
204
293
  end
205
294
 
@@ -208,6 +297,28 @@ module Cassandra
208
297
  end
209
298
  end
210
299
 
300
+ # Raised when function execution fails.
301
+ #
302
+ # @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
303
+ class FunctionCallError < ::StandardError
304
+ include ExecutionError
305
+
306
+ # @return [String] keyspace
307
+ attr_reader :keyspace
308
+ # @return [String] name
309
+ attr_reader :name
310
+ # @return [String] signature
311
+ attr_reader :signature
312
+
313
+ # @private
314
+ def initialize(message, payload, warnings, r_keyspace, statement, options, hosts, consistency, retries, keyspace, name, signature)
315
+ super(message, payload, warnings, r_keyspace, statement, options, hosts, consistency, retries)
316
+ @keyspace = keyspace
317
+ @name = name
318
+ @signature = signature
319
+ end
320
+ end
321
+
211
322
  # Client error represents bad driver state or mis-configuration
212
323
  class ClientError < ::StandardError
213
324
  include Error
@@ -218,26 +329,71 @@ module Cassandra
218
329
  #
219
330
  # @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
220
331
  class ProtocolError < ClientError
332
+ # @private
333
+ def initialize(message, payload, warnings, keyspace, statement, options, hosts, consistency, retries)
334
+ super(message)
335
+ @payload = payload
336
+ @warnings = warnings
337
+ @keyspace = keyspace
338
+ @statement = statement
339
+ @options = options
340
+ @hosts = hosts
341
+ @consistency = consistency
342
+ @retries = retries
343
+ end
344
+
345
+ # Query execution information, such as number of retries and all tried hosts, etc.
346
+ # @return [Cassandra::Execution::Info]
347
+ def execution_info
348
+ @info ||= Execution::Info.new(@payload, @warnings, @keyspace, @statement, @options, @hosts, @consistency, @retries, nil)
349
+ end
221
350
  end
222
351
 
223
352
  # Raised when cannot authenticate to Cassandra
224
353
  #
225
354
  # @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
226
355
  class AuthenticationError < ClientError
356
+ # @private
357
+ def initialize(message, payload, warnings, keyspace, statement, options, hosts, consistency, retries)
358
+ super(message)
359
+ @payload = payload
360
+ @warnings = warnings
361
+ @keyspace = keyspace
362
+ @statement = statement
363
+ @options = options
364
+ @hosts = hosts
365
+ @consistency = consistency
366
+ @retries = retries
367
+ end
368
+
369
+ # Query execution information, such as number of retries and all tried hosts, etc.
370
+ # @return [Cassandra::Execution::Info]
371
+ def execution_info
372
+ @info ||= Execution::Info.new(@payload, @warnings, @keyspace, @statement, @options, @hosts, @consistency, @retries, nil)
373
+ end
227
374
  end
228
375
 
229
376
  # Mixed into all request validation errors.
230
377
  module ValidationError
231
378
  include Error
232
379
 
233
- # @return [Cassandra::Statement] statement that triggered the error.
234
- attr_reader :statement
235
-
236
380
  # @private
237
- def initialize(message, statement)
381
+ def initialize(message, payload, warnings, keyspace, statement, options, hosts, consistency, retries)
238
382
  super(message)
383
+ @payload = payload
384
+ @warnings = warnings
385
+ @keyspace = keyspace
386
+ @statement = statement
387
+ @options = options
388
+ @hosts = hosts
389
+ @consistency = consistency
390
+ @retries = retries
391
+ end
239
392
 
240
- @statement = statement
393
+ # Query execution information, such as number of retries and all tried hosts, etc.
394
+ # @return [Cassandra::Execution::Info]
395
+ def execution_info
396
+ @info ||= Execution::Info.new(@payload, @warnings, @keyspace, @statement, @options, @hosts, @consistency, @retries, nil)
241
397
  end
242
398
  end
243
399
 
@@ -254,9 +410,8 @@ module Cassandra
254
410
  attr_reader :id
255
411
 
256
412
  # @private
257
- def initialize(message, statement, id)
258
- super(message, statement)
259
-
413
+ def initialize(message, payload, warnings, keyspace, statement, options, hosts, consistency, retries, id)
414
+ super(message, payload, warnings, keyspace, statement, options, hosts, consistency, retries)
260
415
  @id = id
261
416
  end
262
417
  end
@@ -322,9 +477,8 @@ module Cassandra
322
477
  attr_reader :table
323
478
 
324
479
  # @private
325
- def initialize(message, statement, keyspace, table)
326
- super(message, statement)
327
-
480
+ def initialize(message, payload, warnings, r_keyspace, statement, options, hosts, consistency, retries, keyspace, table)
481
+ super(message, payload, warnings, r_keyspace, statement, options, hosts, consistency, retries)
328
482
  @keyspace = keyspace
329
483
  @table = table
330
484
  end
@@ -19,6 +19,11 @@
19
19
  module Cassandra
20
20
  module Execution
21
21
  class Info
22
+ # @return [Hash<String, String>] a map of string keys and byte buffer
23
+ # values, containing custom payloads sent by custom query handlers
24
+ attr_reader :payload
25
+ # @return [Array<String>] a list of string warnings from the server
26
+ attr_reader :warnings
22
27
  # @return [String] keyspace used for the query
23
28
  attr_reader :keyspace
24
29
  # @return [Cassandra::Statement] original statement
@@ -37,7 +42,9 @@ module Cassandra
37
42
  attr_reader :trace
38
43
 
39
44
  # @private
40
- def initialize(keyspace, statement, options, hosts, consistency, retries, trace)
45
+ def initialize(payload, warnings, keyspace, statement, options, hosts, consistency, retries, trace)
46
+ @payload = payload
47
+ @warnings = warnings
41
48
  @keyspace = keyspace
42
49
  @statement = statement
43
50
  @options = options