cassandra-driver 3.0.0.beta.1-java → 3.0.0-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.
- checksums.yaml +4 -4
 - data/README.md +106 -39
 - data/lib/cassandra.rb +396 -148
 - 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/attr_boolean.rb +33 -0
 - data/lib/cassandra/auth.rb +6 -5
 - data/lib/cassandra/auth/providers.rb +1 -1
 - data/lib/cassandra/auth/providers/password.rb +5 -13
 - data/lib/cassandra/cassandra_logger.rb +80 -0
 - data/lib/cassandra/cluster.rb +49 -9
 - data/lib/cassandra/cluster/client.rb +835 -209
 - data/lib/cassandra/cluster/connection_pool.rb +2 -2
 - data/lib/cassandra/cluster/connector.rb +86 -27
 - data/lib/cassandra/cluster/control_connection.rb +222 -95
 - data/lib/cassandra/cluster/failed_connection.rb +1 -1
 - data/lib/cassandra/cluster/metadata.rb +14 -8
 - data/lib/cassandra/cluster/options.rb +68 -22
 - data/lib/cassandra/cluster/registry.rb +81 -17
 - data/lib/cassandra/cluster/schema.rb +70 -8
 - data/lib/cassandra/cluster/schema/cql_type_parser.rb +15 -10
 - data/lib/cassandra/cluster/schema/fetchers.rb +601 -241
 - data/lib/cassandra/cluster/schema/fqcn_type_parser.rb +39 -38
 - data/lib/cassandra/cluster/schema/partitioners.rb +1 -1
 - data/lib/cassandra/cluster/schema/partitioners/murmur3.rb +6 -8
 - 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 +4 -23
 - data/lib/cassandra/column_container.rb +322 -0
 - data/lib/cassandra/compression.rb +1 -1
 - data/lib/cassandra/compression/compressors/lz4.rb +7 -8
 - data/lib/cassandra/compression/compressors/snappy.rb +4 -3
 - data/lib/cassandra/driver.rb +107 -46
 - data/lib/cassandra/errors.rb +303 -52
 - data/lib/cassandra/execution/info.rb +16 -5
 - data/lib/cassandra/execution/options.rb +102 -55
 - 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 +101 -49
 - data/lib/cassandra/host.rb +25 -5
 - data/lib/cassandra/index.rb +118 -0
 - data/lib/cassandra/keyspace.rb +169 -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 +39 -25
 - data/lib/cassandra/load_balancing/policies/round_robin.rb +8 -1
 - data/lib/cassandra/load_balancing/policies/token_aware.rb +22 -13
 - data/lib/cassandra/load_balancing/policies/white_list.rb +18 -5
 - data/lib/cassandra/materialized_view.rb +90 -0
 - data/lib/cassandra/null_logger.rb +27 -6
 - data/lib/cassandra/protocol.rb +1 -1
 - data/lib/cassandra/protocol/coder.rb +81 -42
 - data/lib/cassandra/protocol/cql_byte_buffer.rb +58 -44
 - data/lib/cassandra/protocol/cql_protocol_handler.rb +57 -54
 - data/lib/cassandra/protocol/request.rb +6 -7
 - data/lib/cassandra/protocol/requests/auth_response_request.rb +3 -3
 - data/lib/cassandra/protocol/requests/batch_request.rb +17 -8
 - data/lib/cassandra/protocol/requests/credentials_request.rb +3 -3
 - data/lib/cassandra/protocol/requests/execute_request.rb +39 -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 +28 -23
 - data/lib/cassandra/protocol/requests/register_request.rb +2 -2
 - data/lib/cassandra/protocol/requests/startup_request.rb +8 -8
 - data/lib/cassandra/protocol/requests/void_query_request.rb +1 -1
 - data/lib/cassandra/protocol/response.rb +3 -4
 - data/lib/cassandra/protocol/responses/already_exists_error_response.rb +12 -2
 - data/lib/cassandra/protocol/responses/auth_challenge_response.rb +4 -5
 - data/lib/cassandra/protocol/responses/auth_success_response.rb +4 -5
 - data/lib/cassandra/protocol/responses/authenticate_response.rb +4 -5
 - data/lib/cassandra/protocol/responses/error_response.rb +104 -17
 - data/lib/cassandra/protocol/responses/event_response.rb +3 -4
 - data/lib/cassandra/protocol/responses/function_failure_error_response.rb +13 -2
 - data/lib/cassandra/protocol/responses/prepared_result_response.rb +14 -9
 - 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 +6 -7
 - data/lib/cassandra/protocol/responses/result_response.rb +11 -10
 - data/lib/cassandra/protocol/responses/rows_result_response.rb +8 -7
 - data/lib/cassandra/protocol/responses/schema_change_event_response.rb +8 -8
 - data/lib/cassandra/protocol/responses/schema_change_result_response.rb +19 -13
 - data/lib/cassandra/protocol/responses/set_keyspace_result_response.rb +5 -6
 - data/lib/cassandra/protocol/responses/status_change_event_response.rb +5 -6
 - data/lib/cassandra/protocol/responses/supported_response.rb +4 -5
 - data/lib/cassandra/protocol/responses/topology_change_event_response.rb +4 -5
 - 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 +4 -5
 - 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 +98 -37
 - data/lib/cassandra/protocol/v3.rb +121 -50
 - 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 +55 -20
 - 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 +4 -2
 - data/lib/cassandra/retry/policies/fallthrough.rb +1 -1
 - data/lib/cassandra/session.rb +24 -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 +62 -18
 - data/lib/cassandra/statements/simple.rb +23 -10
 - data/lib/cassandra/statements/void.rb +1 -1
 - data/lib/cassandra/table.rb +53 -185
 - data/lib/cassandra/time.rb +11 -6
 - data/lib/cassandra/time_uuid.rb +12 -14
 - data/lib/cassandra/timestamp_generator.rb +37 -0
 - data/lib/cassandra/timestamp_generator/simple.rb +38 -0
 - data/lib/cassandra/timestamp_generator/ticking_on_duplicate.rb +58 -0
 - data/lib/cassandra/tuple.rb +4 -4
 - data/lib/cassandra/types.rb +109 -71
 - data/lib/cassandra/udt.rb +66 -50
 - data/lib/cassandra/util.rb +155 -15
 - data/lib/cassandra/uuid.rb +20 -21
 - data/lib/cassandra/uuid/generator.rb +7 -5
 - data/lib/cassandra/version.rb +2 -2
 - data/lib/cassandra_murmur3.jar +0 -0
 - data/lib/datastax/cassandra.rb +1 -1
 - metadata +27 -16
 
| 
         @@ -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.
         
     | 
| 
         @@ -28,17 +28,21 @@ 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 
     | 
    
         | 
| 
       34 
37 
     | 
    
         
             
                    # @param [Integer] min_size (64) Don't compress frames smaller than
         
     | 
| 
       35 
38 
     | 
    
         
             
                    #   this size (see {#compress?}).
         
     | 
| 
       36 
     | 
    
         
            -
                    def initialize(min_size=64)
         
     | 
| 
      
 39 
     | 
    
         
            +
                    def initialize(min_size = 64)
         
     | 
| 
       37 
40 
     | 
    
         
             
                      unless defined?(::LZ4::Raw)
         
     | 
| 
       38 
41 
     | 
    
         
             
                        begin
         
     | 
| 
       39 
42 
     | 
    
         
             
                          require 'lz4-ruby'
         
     | 
| 
       40 
43 
     | 
    
         
             
                        rescue LoadError => e
         
     | 
| 
       41 
     | 
    
         
            -
                          raise LoadError, % 
     | 
| 
      
 44 
     | 
    
         
            +
                          raise LoadError, %(LZ4 support requires the "lz4-ruby" gem: #{e.message}),
         
     | 
| 
      
 45 
     | 
    
         
            +
                                e.backtrace
         
     | 
| 
       42 
46 
     | 
    
         
             
                        end
         
     | 
| 
       43 
47 
     | 
    
         
             
                      end
         
     | 
| 
       44 
48 
     | 
    
         | 
| 
         @@ -63,11 +67,6 @@ module Cassandra 
     | 
|
| 
       63 
67 
     | 
    
         
             
                      decompressed_size, compressed_data = str.to_s.unpack(BUFFER_FORMAT)
         
     | 
| 
       64 
68 
     | 
    
         
             
                      ::LZ4::Raw.decompress(compressed_data, decompressed_size).first
         
     | 
| 
       65 
69 
     | 
    
         
             
                    end
         
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
       67 
     | 
    
         
            -
                    private
         
     | 
| 
       68 
     | 
    
         
            -
             
     | 
| 
       69 
     | 
    
         
            -
                    # @private
         
     | 
| 
       70 
     | 
    
         
            -
                    BUFFER_FORMAT = 'Na*'.freeze
         
     | 
| 
       71 
70 
     | 
    
         
             
                  end
         
     | 
| 
       72 
71 
     | 
    
         
             
                end
         
     | 
| 
       73 
72 
     | 
    
         
             
              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.
         
     | 
| 
         @@ -33,12 +33,13 @@ module Cassandra 
     | 
|
| 
       33 
33 
     | 
    
         | 
| 
       34 
34 
     | 
    
         
             
                    # @param [Integer] min_size (64) Don't compress frames smaller than
         
     | 
| 
       35 
35 
     | 
    
         
             
                    #   this size (see {#compress?}).
         
     | 
| 
       36 
     | 
    
         
            -
                    def initialize(min_size=64)
         
     | 
| 
      
 36 
     | 
    
         
            +
                    def initialize(min_size = 64)
         
     | 
| 
       37 
37 
     | 
    
         
             
                      unless defined?(::Snappy)
         
     | 
| 
       38 
38 
     | 
    
         
             
                        begin
         
     | 
| 
       39 
39 
     | 
    
         
             
                          require 'snappy'
         
     | 
| 
       40 
40 
     | 
    
         
             
                        rescue LoadError => e
         
     | 
| 
       41 
     | 
    
         
            -
                          raise LoadError, % 
     | 
| 
      
 41 
     | 
    
         
            +
                          raise LoadError, %(Snappy support requires the "snappy" gem: #{e.message}),
         
     | 
| 
      
 42 
     | 
    
         
            +
                                e.backtrace
         
     | 
| 
       42 
43 
     | 
    
         
             
                        end
         
     | 
| 
       43 
44 
     | 
    
         
             
                      end
         
     | 
| 
       44 
45 
     | 
    
         | 
    
        data/lib/cassandra/driver.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.
         
     | 
| 
         @@ -20,28 +20,33 @@ module Cassandra 
     | 
|
| 
       20 
20 
     | 
    
         
             
              # @private
         
     | 
| 
       21 
21 
     | 
    
         
             
              class Driver
         
     | 
| 
       22 
22 
     | 
    
         
             
                def self.let(name, &block)
         
     | 
| 
       23 
     | 
    
         
            -
                  define_method(name) 
     | 
| 
      
 23 
     | 
    
         
            +
                  define_method(name) do
         
     | 
| 
      
 24 
     | 
    
         
            +
                    @instances.key?(name) ?
         
     | 
| 
      
 25 
     | 
    
         
            +
                        @instances[name] :
         
     | 
| 
      
 26 
     | 
    
         
            +
                        @instances[name] = instance_eval(&block)
         
     | 
| 
      
 27 
     | 
    
         
            +
                  end
         
     | 
| 
       24 
28 
     | 
    
         
             
                  define_method(:"#{name}=") { |object| @instances[name] = object }
         
     | 
| 
       25 
29 
     | 
    
         
             
                end
         
     | 
| 
       26 
30 
     | 
    
         | 
| 
       27 
31 
     | 
    
         
             
                let(:io_reactor)       { Ione::Io::IoReactor.new }
         
     | 
| 
       28 
32 
     | 
    
         
             
                let(:cluster_registry) { Cluster::Registry.new(logger) }
         
     | 
| 
       29 
33 
     | 
    
         
             
                let(:cluster_schema)   { Cluster::Schema.new }
         
     | 
| 
       30 
     | 
    
         
            -
                let(:cluster_metadata)  
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
      
 34 
     | 
    
         
            +
                let(:cluster_metadata) do
         
     | 
| 
      
 35 
     | 
    
         
            +
                  Cluster::Metadata.new(
         
     | 
| 
      
 36 
     | 
    
         
            +
                    cluster_registry,
         
     | 
| 
      
 37 
     | 
    
         
            +
                    cluster_schema,
         
     | 
| 
      
 38 
     | 
    
         
            +
                    {
         
     | 
| 
      
 39 
     | 
    
         
            +
                      'org.apache.cassandra.dht.Murmur3Partitioner' => murmur3_partitioner,
         
     | 
| 
      
 40 
     | 
    
         
            +
                      'org.apache.cassandra.dht.ByteOrderedPartitioner' => ordered_partitioner,
         
     | 
| 
      
 41 
     | 
    
         
            +
                      'org.apache.cassandra.dht.RandomPartitioner' => random_partitioner
         
     | 
| 
      
 42 
     | 
    
         
            +
                    }.freeze,
         
     | 
| 
      
 43 
     | 
    
         
            +
                    {
         
     | 
| 
      
 44 
     | 
    
         
            +
                      'SimpleStrategy' => simple_replication_strategy,
         
     | 
| 
      
 45 
     | 
    
         
            +
                      'NetworkTopologyStrategy' => network_topology_replication_strategy
         
     | 
| 
      
 46 
     | 
    
         
            +
                    }.freeze,
         
     | 
| 
      
 47 
     | 
    
         
            +
                    no_replication_strategy
         
     | 
| 
      
 48 
     | 
    
         
            +
                  )
         
     | 
| 
      
 49 
     | 
    
         
            +
                end
         
     | 
| 
       45 
50 
     | 
    
         | 
| 
       46 
51 
     | 
    
         
             
                let(:executor)         { Executors::ThreadPool.new(thread_pool_size) }
         
     | 
| 
       47 
52 
     | 
    
         
             
                let(:futures_factory)  { Future::Factory.new(executor) }
         
     | 
| 
         @@ -49,34 +54,74 @@ module Cassandra 
     | 
|
| 
       49 
54 
     | 
    
         
             
                let(:schema_fqcn_type_parser) { Cluster::Schema::FQCNTypeParser.new }
         
     | 
| 
       50 
55 
     | 
    
         
             
                let(:schema_cql_type_parser)  { Cluster::Schema::CQLTypeParser.new }
         
     | 
| 
       51 
56 
     | 
    
         | 
| 
       52 
     | 
    
         
            -
                let(:simple_replication_strategy) 
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
                 
     | 
| 
      
 57 
     | 
    
         
            +
                let(:simple_replication_strategy) do
         
     | 
| 
      
 58 
     | 
    
         
            +
                  Cluster::Schema::ReplicationStrategies::Simple.new
         
     | 
| 
      
 59 
     | 
    
         
            +
                end
         
     | 
| 
      
 60 
     | 
    
         
            +
                let(:network_topology_replication_strategy) do
         
     | 
| 
      
 61 
     | 
    
         
            +
                  Cluster::Schema::ReplicationStrategies::NetworkTopology.new
         
     | 
| 
      
 62 
     | 
    
         
            +
                end
         
     | 
| 
      
 63 
     | 
    
         
            +
                let(:no_replication_strategy) do
         
     | 
| 
      
 64 
     | 
    
         
            +
                  Cluster::Schema::ReplicationStrategies::None.new
         
     | 
| 
      
 65 
     | 
    
         
            +
                end
         
     | 
| 
       55 
66 
     | 
    
         | 
| 
       56 
67 
     | 
    
         
             
                let(:murmur3_partitioner) { Cluster::Schema::Partitioners::Murmur3.new }
         
     | 
| 
       57 
68 
     | 
    
         
             
                let(:ordered_partitioner) { Cluster::Schema::Partitioners::Ordered.new }
         
     | 
| 
       58 
69 
     | 
    
         
             
                let(:random_partitioner)  { Cluster::Schema::Partitioners::Random.new }
         
     | 
| 
       59 
70 
     | 
    
         | 
| 
       60 
     | 
    
         
            -
                let(:connector)  
     | 
| 
      
 71 
     | 
    
         
            +
                let(:connector) do
         
     | 
| 
      
 72 
     | 
    
         
            +
                  Cluster::Connector.new(logger,
         
     | 
| 
      
 73 
     | 
    
         
            +
                                         io_reactor,
         
     | 
| 
      
 74 
     | 
    
         
            +
                                         cluster_registry,
         
     | 
| 
      
 75 
     | 
    
         
            +
                                         connection_options,
         
     | 
| 
      
 76 
     | 
    
         
            +
                                         execution_options)
         
     | 
| 
      
 77 
     | 
    
         
            +
                end
         
     | 
| 
       61 
78 
     | 
    
         | 
| 
       62 
79 
     | 
    
         
             
                let(:schema_fetcher) { create_schema_fetcher_picker }
         
     | 
| 
       63 
80 
     | 
    
         | 
| 
       64 
     | 
    
         
            -
                let(:control_connection)  
     | 
| 
      
 81 
     | 
    
         
            +
                let(:control_connection) do
         
     | 
| 
      
 82 
     | 
    
         
            +
                  Cluster::ControlConnection.new(logger,
         
     | 
| 
      
 83 
     | 
    
         
            +
                                                 io_reactor,
         
     | 
| 
      
 84 
     | 
    
         
            +
                                                 cluster_registry,
         
     | 
| 
      
 85 
     | 
    
         
            +
                                                 cluster_schema,
         
     | 
| 
      
 86 
     | 
    
         
            +
                                                 cluster_metadata,
         
     | 
| 
      
 87 
     | 
    
         
            +
                                                 load_balancing_policy,
         
     | 
| 
      
 88 
     | 
    
         
            +
                                                 reconnection_policy,
         
     | 
| 
      
 89 
     | 
    
         
            +
                                                 address_resolution_policy,
         
     | 
| 
      
 90 
     | 
    
         
            +
                                                 connector,
         
     | 
| 
      
 91 
     | 
    
         
            +
                                                 connection_options,
         
     | 
| 
      
 92 
     | 
    
         
            +
                                                 schema_fetcher)
         
     | 
| 
      
 93 
     | 
    
         
            +
                end
         
     | 
| 
       65 
94 
     | 
    
         | 
| 
       66 
     | 
    
         
            -
                let(:cluster)  
     | 
| 
      
 95 
     | 
    
         
            +
                let(:cluster) do
         
     | 
| 
      
 96 
     | 
    
         
            +
                  Cluster.new(logger,
         
     | 
| 
      
 97 
     | 
    
         
            +
                              io_reactor,
         
     | 
| 
      
 98 
     | 
    
         
            +
                              executor,
         
     | 
| 
      
 99 
     | 
    
         
            +
                              control_connection,
         
     | 
| 
      
 100 
     | 
    
         
            +
                              cluster_registry,
         
     | 
| 
      
 101 
     | 
    
         
            +
                              cluster_schema,
         
     | 
| 
      
 102 
     | 
    
         
            +
                              cluster_metadata,
         
     | 
| 
      
 103 
     | 
    
         
            +
                              execution_options,
         
     | 
| 
      
 104 
     | 
    
         
            +
                              connection_options,
         
     | 
| 
      
 105 
     | 
    
         
            +
                              load_balancing_policy,
         
     | 
| 
      
 106 
     | 
    
         
            +
                              reconnection_policy,
         
     | 
| 
      
 107 
     | 
    
         
            +
                              retry_policy,
         
     | 
| 
      
 108 
     | 
    
         
            +
                              address_resolution_policy,
         
     | 
| 
      
 109 
     | 
    
         
            +
                              connector,
         
     | 
| 
      
 110 
     | 
    
         
            +
                              futures_factory,
         
     | 
| 
      
 111 
     | 
    
         
            +
                              timestamp_generator)
         
     | 
| 
      
 112 
     | 
    
         
            +
                end
         
     | 
| 
       67 
113 
     | 
    
         | 
| 
       68 
114 
     | 
    
         
             
                let(:execution_options) do
         
     | 
| 
       69 
     | 
    
         
            -
                  Execution::Options.new( 
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
       74 
     | 
    
         
            -
                    :idempotent  => false
         
     | 
| 
       75 
     | 
    
         
            -
                  })
         
     | 
| 
      
 115 
     | 
    
         
            +
                  Execution::Options.new(consistency: consistency,
         
     | 
| 
      
 116 
     | 
    
         
            +
                                         trace: trace,
         
     | 
| 
      
 117 
     | 
    
         
            +
                                         page_size: page_size,
         
     | 
| 
      
 118 
     | 
    
         
            +
                                         timeout: timeout,
         
     | 
| 
      
 119 
     | 
    
         
            +
                                         idempotent: false)
         
     | 
| 
       76 
120 
     | 
    
         
             
                end
         
     | 
| 
       77 
121 
     | 
    
         | 
| 
       78 
122 
     | 
    
         
             
                let(:connection_options) do
         
     | 
| 
       79 
123 
     | 
    
         
             
                  Cluster::Options.new(
         
     | 
| 
      
 124 
     | 
    
         
            +
                    logger,
         
     | 
| 
       80 
125 
     | 
    
         
             
                    protocol_version,
         
     | 
| 
       81 
126 
     | 
    
         
             
                    credentials,
         
     | 
| 
       82 
127 
     | 
    
         
             
                    auth_provider,
         
     | 
| 
         @@ -91,22 +136,28 @@ module Cassandra 
     | 
|
| 
       91 
136 
     | 
    
         
             
                    synchronize_schema,
         
     | 
| 
       92 
137 
     | 
    
         
             
                    schema_refresh_delay,
         
     | 
| 
       93 
138 
     | 
    
         
             
                    schema_refresh_timeout,
         
     | 
| 
       94 
     | 
    
         
            -
                     
     | 
| 
       95 
     | 
    
         
            -
                     
     | 
| 
      
 139 
     | 
    
         
            +
                    nodelay,
         
     | 
| 
      
 140 
     | 
    
         
            +
                    requests_per_connection
         
     | 
| 
       96 
141 
     | 
    
         
             
                  )
         
     | 
| 
       97 
142 
     | 
    
         
             
                end
         
     | 
| 
       98 
143 
     | 
    
         | 
| 
       99 
144 
     | 
    
         
             
                let(:port)                      { 9042 }
         
     | 
| 
       100 
     | 
    
         
            -
                let(:protocol_version)          {  
     | 
| 
      
 145 
     | 
    
         
            +
                let(:protocol_version)          { nil }
         
     | 
| 
       101 
146 
     | 
    
         
             
                let(:connect_timeout)           { 10 }
         
     | 
| 
       102 
147 
     | 
    
         
             
                let(:ssl)                       { false }
         
     | 
| 
       103 
     | 
    
         
            -
                let(:logger)                    { NullLogger.new 
     | 
| 
      
 148 
     | 
    
         
            +
                let(:logger)                    { NullLogger.new }
         
     | 
| 
       104 
149 
     | 
    
         
             
                let(:compressor)                { nil }
         
     | 
| 
       105 
150 
     | 
    
         
             
                let(:credentials)               { nil }
         
     | 
| 
       106 
151 
     | 
    
         
             
                let(:auth_provider)             { nil }
         
     | 
| 
       107 
152 
     | 
    
         
             
                let(:datacenter)                { nil }
         
     | 
| 
       108 
     | 
    
         
            -
                let(:load_balancing_policy)      
     | 
| 
       109 
     | 
    
         
            -
             
     | 
| 
      
 153 
     | 
    
         
            +
                let(:load_balancing_policy)     do
         
     | 
| 
      
 154 
     | 
    
         
            +
                  LoadBalancing::Policies::TokenAware.new(
         
     | 
| 
      
 155 
     | 
    
         
            +
                    LoadBalancing::Policies::DCAwareRoundRobin.new(datacenter, 0),
         
     | 
| 
      
 156 
     | 
    
         
            +
                    shuffle_replicas)
         
     | 
| 
      
 157 
     | 
    
         
            +
                end
         
     | 
| 
      
 158 
     | 
    
         
            +
                let(:reconnection_policy) do
         
     | 
| 
      
 159 
     | 
    
         
            +
                  Reconnection::Policies::Exponential.new(0.5, 30, 2)
         
     | 
| 
      
 160 
     | 
    
         
            +
                end
         
     | 
| 
       110 
161 
     | 
    
         
             
                let(:retry_policy)              { Retry::Policies::Default.new }
         
     | 
| 
       111 
162 
     | 
    
         
             
                let(:address_resolution_policy) { AddressResolution::Policies::None.new }
         
     | 
| 
       112 
163 
     | 
    
         
             
                let(:consistency)               { :local_one }
         
     | 
| 
         @@ -114,17 +165,17 @@ module Cassandra 
     | 
|
| 
       114 
165 
     | 
    
         
             
                let(:page_size)                 { 10000 }
         
     | 
| 
       115 
166 
     | 
    
         
             
                let(:heartbeat_interval)        { 30 }
         
     | 
| 
       116 
167 
     | 
    
         
             
                let(:idle_timeout)              { 60 }
         
     | 
| 
       117 
     | 
    
         
            -
                let(:timeout)                   {  
     | 
| 
      
 168 
     | 
    
         
            +
                let(:timeout)                   { 12 }
         
     | 
| 
       118 
169 
     | 
    
         
             
                let(:synchronize_schema)        { true }
         
     | 
| 
       119 
170 
     | 
    
         
             
                let(:schema_refresh_delay)      { 1 }
         
     | 
| 
       120 
171 
     | 
    
         
             
                let(:schema_refresh_timeout)    { 10 }
         
     | 
| 
       121 
172 
     | 
    
         
             
                let(:thread_pool_size)          { 4 }
         
     | 
| 
       122 
173 
     | 
    
         
             
                let(:shuffle_replicas)          { true }
         
     | 
| 
       123 
     | 
    
         
            -
                let(:client_timestamps)         { false }
         
     | 
| 
       124 
174 
     | 
    
         
             
                let(:nodelay)                   { true }
         
     | 
| 
       125 
     | 
    
         
            -
             
     | 
| 
       126 
     | 
    
         
            -
                let(:connections_per_local_node)  {  
     | 
| 
       127 
     | 
    
         
            -
                let(:connections_per_remote_node) {  
     | 
| 
      
 175 
     | 
    
         
            +
                let(:timestamp_generator)       { nil }
         
     | 
| 
      
 176 
     | 
    
         
            +
                let(:connections_per_local_node)  { nil }
         
     | 
| 
      
 177 
     | 
    
         
            +
                let(:connections_per_remote_node) { nil }
         
     | 
| 
      
 178 
     | 
    
         
            +
                let(:requests_per_connection) { nil }
         
     | 
| 
       128 
179 
     | 
    
         | 
| 
       129 
180 
     | 
    
         
             
                let(:listeners) { [] }
         
     | 
| 
       130 
181 
     | 
    
         | 
| 
         @@ -166,11 +217,21 @@ module Cassandra 
     | 
|
| 
       166 
217 
     | 
    
         
             
                def create_schema_fetcher_picker
         
     | 
| 
       167 
218 
     | 
    
         
             
                  picker = Cluster::Schema::Fetchers::MultiVersion.new(cluster_registry)
         
     | 
| 
       168 
219 
     | 
    
         | 
| 
       169 
     | 
    
         
            -
                  picker.when('1.2')  
     | 
| 
       170 
     | 
    
         
            -
             
     | 
| 
       171 
     | 
    
         
            -
                   
     | 
| 
       172 
     | 
    
         
            -
                  picker.when('2. 
     | 
| 
       173 
     | 
    
         
            -
             
     | 
| 
      
 220 
     | 
    
         
            +
                  picker.when('1.2') do
         
     | 
| 
      
 221 
     | 
    
         
            +
                    Cluster::Schema::Fetchers::V1_2_x.new(schema_fqcn_type_parser, cluster_schema)
         
     | 
| 
      
 222 
     | 
    
         
            +
                  end
         
     | 
| 
      
 223 
     | 
    
         
            +
                  picker.when('2.0') do
         
     | 
| 
      
 224 
     | 
    
         
            +
                    Cluster::Schema::Fetchers::V2_0_x.new(schema_fqcn_type_parser, cluster_schema)
         
     | 
| 
      
 225 
     | 
    
         
            +
                  end
         
     | 
| 
      
 226 
     | 
    
         
            +
                  picker.when('2.1') do
         
     | 
| 
      
 227 
     | 
    
         
            +
                    Cluster::Schema::Fetchers::V2_1_x.new(schema_fqcn_type_parser, cluster_schema)
         
     | 
| 
      
 228 
     | 
    
         
            +
                  end
         
     | 
| 
      
 229 
     | 
    
         
            +
                  picker.when('2.2') do
         
     | 
| 
      
 230 
     | 
    
         
            +
                    Cluster::Schema::Fetchers::V2_2_x.new(schema_fqcn_type_parser, cluster_schema)
         
     | 
| 
      
 231 
     | 
    
         
            +
                  end
         
     | 
| 
      
 232 
     | 
    
         
            +
                  picker.when('3.') do
         
     | 
| 
      
 233 
     | 
    
         
            +
                    Cluster::Schema::Fetchers::V3_0_x.new(schema_cql_type_parser, cluster_schema)
         
     | 
| 
      
 234 
     | 
    
         
            +
                  end
         
     | 
| 
       174 
235 
     | 
    
         | 
| 
       175 
236 
     | 
    
         
             
                  picker
         
     | 
| 
       176 
237 
     | 
    
         
             
                end
         
     | 
    
        data/lib/cassandra/errors.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.
         
     | 
| 
         @@ -43,12 +43,21 @@ 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 
     | 
| 
      
 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 
     | 
    
         | 
| 
       50 
51 
     | 
    
         
             
                  # @private
         
     | 
| 
       51 
     | 
    
         
            -
                  def initialize(message, 
     | 
| 
      
 52 
     | 
    
         
            +
                  def initialize(message,
         
     | 
| 
      
 53 
     | 
    
         
            +
                                 payload,
         
     | 
| 
      
 54 
     | 
    
         
            +
                                 warnings,
         
     | 
| 
      
 55 
     | 
    
         
            +
                                 keyspace,
         
     | 
| 
      
 56 
     | 
    
         
            +
                                 statement,
         
     | 
| 
      
 57 
     | 
    
         
            +
                                 options,
         
     | 
| 
      
 58 
     | 
    
         
            +
                                 hosts,
         
     | 
| 
      
 59 
     | 
    
         
            +
                                 consistency,
         
     | 
| 
      
 60 
     | 
    
         
            +
                                 retries)
         
     | 
| 
       52 
61 
     | 
    
         
             
                    super(message)
         
     | 
| 
       53 
62 
     | 
    
         
             
                    @payload     = payload
         
     | 
| 
       54 
63 
     | 
    
         
             
                    @warnings    = warnings
         
     | 
| 
         @@ -63,7 +72,15 @@ module Cassandra 
     | 
|
| 
       63 
72 
     | 
    
         
             
                  # Query execution information, such as number of retries and all tried hosts, etc.
         
     | 
| 
       64 
73 
     | 
    
         
             
                  # @return [Cassandra::Execution::Info]
         
     | 
| 
       65 
74 
     | 
    
         
             
                  def execution_info
         
     | 
| 
       66 
     | 
    
         
            -
                    @info ||= Execution::Info.new(@payload, 
     | 
| 
      
 75 
     | 
    
         
            +
                    @info ||= Execution::Info.new(@payload,
         
     | 
| 
      
 76 
     | 
    
         
            +
                                                  @warnings,
         
     | 
| 
      
 77 
     | 
    
         
            +
                                                  @keyspace,
         
     | 
| 
      
 78 
     | 
    
         
            +
                                                  @statement,
         
     | 
| 
      
 79 
     | 
    
         
            +
                                                  @options,
         
     | 
| 
      
 80 
     | 
    
         
            +
                                                  @hosts,
         
     | 
| 
      
 81 
     | 
    
         
            +
                                                  @consistency,
         
     | 
| 
      
 82 
     | 
    
         
            +
                                                  @retries,
         
     | 
| 
      
 83 
     | 
    
         
            +
                                                  nil)
         
     | 
| 
       67 
84 
     | 
    
         
             
                  end
         
     | 
| 
       68 
85 
     | 
    
         
             
                end
         
     | 
| 
       69 
86 
     | 
    
         | 
| 
         @@ -97,7 +114,15 @@ module Cassandra 
     | 
|
| 
       97 
114 
     | 
    
         
             
                  include Error
         
     | 
| 
       98 
115 
     | 
    
         | 
| 
       99 
116 
     | 
    
         
             
                  # @private
         
     | 
| 
       100 
     | 
    
         
            -
                  def initialize(message, 
     | 
| 
      
 117 
     | 
    
         
            +
                  def initialize(message,
         
     | 
| 
      
 118 
     | 
    
         
            +
                                 payload,
         
     | 
| 
      
 119 
     | 
    
         
            +
                                 warnings,
         
     | 
| 
      
 120 
     | 
    
         
            +
                                 keyspace,
         
     | 
| 
      
 121 
     | 
    
         
            +
                                 statement,
         
     | 
| 
      
 122 
     | 
    
         
            +
                                 options,
         
     | 
| 
      
 123 
     | 
    
         
            +
                                 hosts,
         
     | 
| 
      
 124 
     | 
    
         
            +
                                 consistency,
         
     | 
| 
      
 125 
     | 
    
         
            +
                                 retries)
         
     | 
| 
       101 
126 
     | 
    
         
             
                    super(message)
         
     | 
| 
       102 
127 
     | 
    
         
             
                    @payload     = payload
         
     | 
| 
       103 
128 
     | 
    
         
             
                    @warnings    = warnings
         
     | 
| 
         @@ -112,7 +137,15 @@ module Cassandra 
     | 
|
| 
       112 
137 
     | 
    
         
             
                  # Query execution information, such as number of retries and all tried hosts, etc.
         
     | 
| 
       113 
138 
     | 
    
         
             
                  # @return [Cassandra::Execution::Info]
         
     | 
| 
       114 
139 
     | 
    
         
             
                  def execution_info
         
     | 
| 
       115 
     | 
    
         
            -
                    @info ||= Execution::Info.new(@payload, 
     | 
| 
      
 140 
     | 
    
         
            +
                    @info ||= Execution::Info.new(@payload,
         
     | 
| 
      
 141 
     | 
    
         
            +
                                                  @warnings,
         
     | 
| 
      
 142 
     | 
    
         
            +
                                                  @keyspace,
         
     | 
| 
      
 143 
     | 
    
         
            +
                                                  @statement,
         
     | 
| 
      
 144 
     | 
    
         
            +
                                                  @options,
         
     | 
| 
      
 145 
     | 
    
         
            +
                                                  @hosts,
         
     | 
| 
      
 146 
     | 
    
         
            +
                                                  @consistency,
         
     | 
| 
      
 147 
     | 
    
         
            +
                                                  @retries,
         
     | 
| 
      
 148 
     | 
    
         
            +
                                                  nil)
         
     | 
| 
       116 
149 
     | 
    
         
             
                  end
         
     | 
| 
       117 
150 
     | 
    
         
             
                end
         
     | 
| 
       118 
151 
     | 
    
         | 
| 
         @@ -123,7 +156,8 @@ module Cassandra 
     | 
|
| 
       123 
156 
     | 
    
         
             
                # @note This error can be handled by a {Cassandra::Retry::Policy} to
         
     | 
| 
       124 
157 
     | 
    
         
             
                #   determine the desired outcome.
         
     | 
| 
       125 
158 
     | 
    
         
             
                #
         
     | 
| 
       126 
     | 
    
         
            -
                # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L662-L672 Description 
     | 
| 
      
 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
         
     | 
| 
       127 
161 
     | 
    
         
             
                class UnavailableError < ::StandardError
         
     | 
| 
       128 
162 
     | 
    
         
             
                  include ExecutionError
         
     | 
| 
       129 
163 
     | 
    
         
             
                  # Consistency level that triggered the error.
         
     | 
| 
         @@ -140,8 +174,27 @@ module Cassandra 
     | 
|
| 
       140 
174 
     | 
    
         
             
                  attr_reader :alive
         
     | 
| 
       141 
175 
     | 
    
         | 
| 
       142 
176 
     | 
    
         
             
                  # @private
         
     | 
| 
       143 
     | 
    
         
            -
                  def initialize(message, 
     | 
| 
       144 
     | 
    
         
            -
             
     | 
| 
      
 177 
     | 
    
         
            +
                  def initialize(message,
         
     | 
| 
      
 178 
     | 
    
         
            +
                                 payload,
         
     | 
| 
      
 179 
     | 
    
         
            +
                                 warnings,
         
     | 
| 
      
 180 
     | 
    
         
            +
                                 keyspace,
         
     | 
| 
      
 181 
     | 
    
         
            +
                                 statement,
         
     | 
| 
      
 182 
     | 
    
         
            +
                                 options,
         
     | 
| 
      
 183 
     | 
    
         
            +
                                 hosts,
         
     | 
| 
      
 184 
     | 
    
         
            +
                                 r_consistency,
         
     | 
| 
      
 185 
     | 
    
         
            +
                                 retries,
         
     | 
| 
      
 186 
     | 
    
         
            +
                                 consistency,
         
     | 
| 
      
 187 
     | 
    
         
            +
                                 required,
         
     | 
| 
      
 188 
     | 
    
         
            +
                                 alive)
         
     | 
| 
      
 189 
     | 
    
         
            +
                    super(message,
         
     | 
| 
      
 190 
     | 
    
         
            +
                          payload,
         
     | 
| 
      
 191 
     | 
    
         
            +
                          warnings,
         
     | 
| 
      
 192 
     | 
    
         
            +
                          keyspace,
         
     | 
| 
      
 193 
     | 
    
         
            +
                          statement,
         
     | 
| 
      
 194 
     | 
    
         
            +
                          options,
         
     | 
| 
      
 195 
     | 
    
         
            +
                          hosts,
         
     | 
| 
      
 196 
     | 
    
         
            +
                          r_consistency,
         
     | 
| 
      
 197 
     | 
    
         
            +
                          retries)
         
     | 
| 
       145 
198 
     | 
    
         
             
                    @consistency = consistency
         
     | 
| 
       146 
199 
     | 
    
         
             
                    @required    = required
         
     | 
| 
       147 
200 
     | 
    
         
             
                    @alive       = alive
         
     | 
| 
         @@ -151,7 +204,8 @@ module Cassandra 
     | 
|
| 
       151 
204 
     | 
    
         
             
                # Raised when the request cannot be processed because the coordinator node
         
     | 
| 
       152 
205 
     | 
    
         
             
                # is overloaded
         
     | 
| 
       153 
206 
     | 
    
         
             
                #
         
     | 
| 
       154 
     | 
    
         
            -
                # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L673-L674 Description 
     | 
| 
      
 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
         
     | 
| 
       155 
209 
     | 
    
         
             
                class OverloadedError < ::StandardError
         
     | 
| 
       156 
210 
     | 
    
         
             
                  include ExecutionError, HostError
         
     | 
| 
       157 
211 
     | 
    
         
             
                end
         
     | 
| 
         @@ -159,21 +213,24 @@ module Cassandra 
     | 
|
| 
       159 
213 
     | 
    
         
             
                # Raise when the request was a read request but the coordinator node is
         
     | 
| 
       160 
214 
     | 
    
         
             
                # bootstrapping
         
     | 
| 
       161 
215 
     | 
    
         
             
                #
         
     | 
| 
       162 
     | 
    
         
            -
                # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L675-L676 Description 
     | 
| 
      
 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
         
     | 
| 
       163 
218 
     | 
    
         
             
                class IsBootstrappingError < ::StandardError
         
     | 
| 
       164 
219 
     | 
    
         
             
                  include ExecutionError, HostError
         
     | 
| 
       165 
220 
     | 
    
         
             
                end
         
     | 
| 
       166 
221 
     | 
    
         | 
| 
       167 
222 
     | 
    
         
             
                # Raised when truncation failed.
         
     | 
| 
       168 
223 
     | 
    
         
             
                #
         
     | 
| 
       169 
     | 
    
         
            -
                # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L677 Description of 
     | 
| 
      
 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
         
     | 
| 
       170 
226 
     | 
    
         
             
                class TruncateError < ::StandardError
         
     | 
| 
       171 
227 
     | 
    
         
             
                  include ExecutionError
         
     | 
| 
       172 
228 
     | 
    
         
             
                end
         
     | 
| 
       173 
229 
     | 
    
         | 
| 
       174 
230 
     | 
    
         
             
                # Raised when a write request timed out.
         
     | 
| 
       175 
231 
     | 
    
         
             
                #
         
     | 
| 
       176 
     | 
    
         
            -
                # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L678-L703 Description 
     | 
| 
      
 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
         
     | 
| 
       177 
234 
     | 
    
         
             
                class WriteTimeoutError < ::StandardError
         
     | 
| 
       178 
235 
     | 
    
         
             
                  include ExecutionError
         
     | 
| 
       179 
236 
     | 
    
         | 
| 
         @@ -191,8 +248,28 @@ module Cassandra 
     | 
|
| 
       191 
248 
     | 
    
         
             
                  attr_reader :received
         
     | 
| 
       192 
249 
     | 
    
         | 
| 
       193 
250 
     | 
    
         
             
                  # @private
         
     | 
| 
       194 
     | 
    
         
            -
                  def initialize(message, 
     | 
| 
       195 
     | 
    
         
            -
             
     | 
| 
      
 251 
     | 
    
         
            +
                  def initialize(message,
         
     | 
| 
      
 252 
     | 
    
         
            +
                                 payload,
         
     | 
| 
      
 253 
     | 
    
         
            +
                                 warnings,
         
     | 
| 
      
 254 
     | 
    
         
            +
                                 keyspace,
         
     | 
| 
      
 255 
     | 
    
         
            +
                                 statement,
         
     | 
| 
      
 256 
     | 
    
         
            +
                                 options,
         
     | 
| 
      
 257 
     | 
    
         
            +
                                 hosts,
         
     | 
| 
      
 258 
     | 
    
         
            +
                                 r_consistency,
         
     | 
| 
      
 259 
     | 
    
         
            +
                                 retries,
         
     | 
| 
      
 260 
     | 
    
         
            +
                                 type,
         
     | 
| 
      
 261 
     | 
    
         
            +
                                 consistency,
         
     | 
| 
      
 262 
     | 
    
         
            +
                                 required,
         
     | 
| 
      
 263 
     | 
    
         
            +
                                 received)
         
     | 
| 
      
 264 
     | 
    
         
            +
                    super(message,
         
     | 
| 
      
 265 
     | 
    
         
            +
                          payload,
         
     | 
| 
      
 266 
     | 
    
         
            +
                          warnings,
         
     | 
| 
      
 267 
     | 
    
         
            +
                          keyspace,
         
     | 
| 
      
 268 
     | 
    
         
            +
                          statement,
         
     | 
| 
      
 269 
     | 
    
         
            +
                          options,
         
     | 
| 
      
 270 
     | 
    
         
            +
                          hosts,
         
     | 
| 
      
 271 
     | 
    
         
            +
                          r_consistency,
         
     | 
| 
      
 272 
     | 
    
         
            +
                          retries)
         
     | 
| 
       196 
273 
     | 
    
         
             
                    @type        = type
         
     | 
| 
       197 
274 
     | 
    
         
             
                    @consistency = consistency
         
     | 
| 
       198 
275 
     | 
    
         
             
                    @required    = required
         
     | 
| 
         @@ -202,13 +279,16 @@ module Cassandra 
     | 
|
| 
       202 
279 
     | 
    
         | 
| 
       203 
280 
     | 
    
         
             
                # Raised when a read request timed out.
         
     | 
| 
       204 
281 
     | 
    
         
             
                #
         
     | 
| 
       205 
     | 
    
         
            -
                # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L704-L721 Description 
     | 
| 
      
 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
         
     | 
| 
       206 
284 
     | 
    
         
             
                class ReadTimeoutError < ::StandardError
         
     | 
| 
       207 
285 
     | 
    
         
             
                  include ExecutionError
         
     | 
| 
       208 
286 
     | 
    
         | 
| 
       209 
287 
     | 
    
         
             
                  # @return [Boolean] whether actual data (as opposed to data checksum) was
         
     | 
| 
       210 
288 
     | 
    
         
             
                  #   present in the received responses.
         
     | 
| 
       211 
289 
     | 
    
         
             
                  attr_reader :retrieved
         
     | 
| 
      
 290 
     | 
    
         
            +
                  alias retrieved? retrieved
         
     | 
| 
      
 291 
     | 
    
         
            +
             
     | 
| 
       212 
292 
     | 
    
         
             
                  # @return [Symbol] the original consistency level for the request, one of
         
     | 
| 
       213 
293 
     | 
    
         
             
                  #   {Cassandra::CONSISTENCIES}
         
     | 
| 
       214 
294 
     | 
    
         
             
                  attr_reader :consistency
         
     | 
| 
         @@ -220,22 +300,39 @@ module Cassandra 
     | 
|
| 
       220 
300 
     | 
    
         
             
                  attr_reader :received
         
     | 
| 
       221 
301 
     | 
    
         | 
| 
       222 
302 
     | 
    
         
             
                  # @private
         
     | 
| 
       223 
     | 
    
         
            -
                  def initialize(message, 
     | 
| 
       224 
     | 
    
         
            -
             
     | 
| 
      
 303 
     | 
    
         
            +
                  def initialize(message,
         
     | 
| 
      
 304 
     | 
    
         
            +
                                 payload,
         
     | 
| 
      
 305 
     | 
    
         
            +
                                 warnings,
         
     | 
| 
      
 306 
     | 
    
         
            +
                                 keyspace,
         
     | 
| 
      
 307 
     | 
    
         
            +
                                 statement,
         
     | 
| 
      
 308 
     | 
    
         
            +
                                 options,
         
     | 
| 
      
 309 
     | 
    
         
            +
                                 hosts,
         
     | 
| 
      
 310 
     | 
    
         
            +
                                 r_consistency,
         
     | 
| 
      
 311 
     | 
    
         
            +
                                 retries,
         
     | 
| 
      
 312 
     | 
    
         
            +
                                 retrieved,
         
     | 
| 
      
 313 
     | 
    
         
            +
                                 consistency,
         
     | 
| 
      
 314 
     | 
    
         
            +
                                 required,
         
     | 
| 
      
 315 
     | 
    
         
            +
                                 received)
         
     | 
| 
      
 316 
     | 
    
         
            +
                    super(message,
         
     | 
| 
      
 317 
     | 
    
         
            +
                          payload,
         
     | 
| 
      
 318 
     | 
    
         
            +
                          warnings,
         
     | 
| 
      
 319 
     | 
    
         
            +
                          keyspace,
         
     | 
| 
      
 320 
     | 
    
         
            +
                          statement,
         
     | 
| 
      
 321 
     | 
    
         
            +
                          options,
         
     | 
| 
      
 322 
     | 
    
         
            +
                          hosts,
         
     | 
| 
      
 323 
     | 
    
         
            +
                          r_consistency,
         
     | 
| 
      
 324 
     | 
    
         
            +
                          retries)
         
     | 
| 
       225 
325 
     | 
    
         
             
                    @retrieved   = retrieved
         
     | 
| 
       226 
326 
     | 
    
         
             
                    @consistency = consistency
         
     | 
| 
       227 
327 
     | 
    
         
             
                    @required    = required
         
     | 
| 
       228 
328 
     | 
    
         
             
                    @received    = received
         
     | 
| 
       229 
329 
     | 
    
         
             
                  end
         
     | 
| 
       230 
     | 
    
         
            -
             
     | 
| 
       231 
     | 
    
         
            -
                  def retrieved?
         
     | 
| 
       232 
     | 
    
         
            -
                    @retrieved
         
     | 
| 
       233 
     | 
    
         
            -
                  end
         
     | 
| 
       234 
330 
     | 
    
         
             
                end
         
     | 
| 
       235 
331 
     | 
    
         | 
| 
       236 
332 
     | 
    
         
             
                # Raised when a write request fails.
         
     | 
| 
       237 
333 
     | 
    
         
             
                #
         
     | 
| 
       238 
     | 
    
         
            -
                # @see https://github.com/apache/cassandra/blob/ 
     | 
| 
      
 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
         
     | 
| 
       239 
336 
     | 
    
         
             
                class WriteError < ::StandardError
         
     | 
| 
       240 
337 
     | 
    
         
             
                  include ExecutionError
         
     | 
| 
       241 
338 
     | 
    
         | 
| 
         @@ -253,8 +350,29 @@ module Cassandra 
     | 
|
| 
       253 
350 
     | 
    
         
             
                  attr_reader :failed
         
     | 
| 
       254 
351 
     | 
    
         | 
| 
       255 
352 
     | 
    
         
             
                  # @private
         
     | 
| 
       256 
     | 
    
         
            -
                  def initialize(message, 
     | 
| 
       257 
     | 
    
         
            -
             
     | 
| 
      
 353 
     | 
    
         
            +
                  def initialize(message,
         
     | 
| 
      
 354 
     | 
    
         
            +
                                 payload,
         
     | 
| 
      
 355 
     | 
    
         
            +
                                 warnings,
         
     | 
| 
      
 356 
     | 
    
         
            +
                                 keyspace,
         
     | 
| 
      
 357 
     | 
    
         
            +
                                 statement,
         
     | 
| 
      
 358 
     | 
    
         
            +
                                 options,
         
     | 
| 
      
 359 
     | 
    
         
            +
                                 hosts,
         
     | 
| 
      
 360 
     | 
    
         
            +
                                 r_consistency,
         
     | 
| 
      
 361 
     | 
    
         
            +
                                 retries,
         
     | 
| 
      
 362 
     | 
    
         
            +
                                 type,
         
     | 
| 
      
 363 
     | 
    
         
            +
                                 consistency,
         
     | 
| 
      
 364 
     | 
    
         
            +
                                 required,
         
     | 
| 
      
 365 
     | 
    
         
            +
                                 failed,
         
     | 
| 
      
 366 
     | 
    
         
            +
                                 received)
         
     | 
| 
      
 367 
     | 
    
         
            +
                    super(message,
         
     | 
| 
      
 368 
     | 
    
         
            +
                          payload,
         
     | 
| 
      
 369 
     | 
    
         
            +
                          warnings,
         
     | 
| 
      
 370 
     | 
    
         
            +
                          keyspace,
         
     | 
| 
      
 371 
     | 
    
         
            +
                          statement,
         
     | 
| 
      
 372 
     | 
    
         
            +
                          options,
         
     | 
| 
      
 373 
     | 
    
         
            +
                          hosts,
         
     | 
| 
      
 374 
     | 
    
         
            +
                          r_consistency,
         
     | 
| 
      
 375 
     | 
    
         
            +
                          retries)
         
     | 
| 
       258 
376 
     | 
    
         
             
                    @type        = type
         
     | 
| 
       259 
377 
     | 
    
         
             
                    @consistency = consistency
         
     | 
| 
       260 
378 
     | 
    
         
             
                    @required    = required
         
     | 
| 
         @@ -265,7 +383,8 @@ module Cassandra 
     | 
|
| 
       265 
383 
     | 
    
         | 
| 
       266 
384 
     | 
    
         
             
                # Raised when a read request fails.
         
     | 
| 
       267 
385 
     | 
    
         
             
                #
         
     | 
| 
       268 
     | 
    
         
            -
                # @see https://github.com/apache/cassandra/blob/ 
     | 
| 
      
 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
         
     | 
| 
       269 
388 
     | 
    
         
             
                class ReadError < ::StandardError
         
     | 
| 
       270 
389 
     | 
    
         
             
                  include ExecutionError
         
     | 
| 
       271 
390 
     | 
    
         | 
| 
         @@ -283,8 +402,29 @@ module Cassandra 
     | 
|
| 
       283 
402 
     | 
    
         
             
                  attr_reader :failed
         
     | 
| 
       284 
403 
     | 
    
         | 
| 
       285 
404 
     | 
    
         
             
                  # @private
         
     | 
| 
       286 
     | 
    
         
            -
                  def initialize(message, 
     | 
| 
       287 
     | 
    
         
            -
             
     | 
| 
      
 405 
     | 
    
         
            +
                  def initialize(message,
         
     | 
| 
      
 406 
     | 
    
         
            +
                                 payload,
         
     | 
| 
      
 407 
     | 
    
         
            +
                                 warnings,
         
     | 
| 
      
 408 
     | 
    
         
            +
                                 keyspace,
         
     | 
| 
      
 409 
     | 
    
         
            +
                                 statement,
         
     | 
| 
      
 410 
     | 
    
         
            +
                                 options,
         
     | 
| 
      
 411 
     | 
    
         
            +
                                 hosts,
         
     | 
| 
      
 412 
     | 
    
         
            +
                                 r_consistency,
         
     | 
| 
      
 413 
     | 
    
         
            +
                                 retries,
         
     | 
| 
      
 414 
     | 
    
         
            +
                                 retrieved,
         
     | 
| 
      
 415 
     | 
    
         
            +
                                 consistency,
         
     | 
| 
      
 416 
     | 
    
         
            +
                                 required,
         
     | 
| 
      
 417 
     | 
    
         
            +
                                 failed,
         
     | 
| 
      
 418 
     | 
    
         
            +
                                 received)
         
     | 
| 
      
 419 
     | 
    
         
            +
                    super(message,
         
     | 
| 
      
 420 
     | 
    
         
            +
                          payload,
         
     | 
| 
      
 421 
     | 
    
         
            +
                          warnings,
         
     | 
| 
      
 422 
     | 
    
         
            +
                          keyspace,
         
     | 
| 
      
 423 
     | 
    
         
            +
                          statement,
         
     | 
| 
      
 424 
     | 
    
         
            +
                          options,
         
     | 
| 
      
 425 
     | 
    
         
            +
                          hosts,
         
     | 
| 
      
 426 
     | 
    
         
            +
                          r_consistency,
         
     | 
| 
      
 427 
     | 
    
         
            +
                          retries)
         
     | 
| 
       288 
428 
     | 
    
         
             
                    @retrieved   = retrieved
         
     | 
| 
       289 
429 
     | 
    
         
             
                    @consistency = consistency
         
     | 
| 
       290 
430 
     | 
    
         
             
                    @required    = required
         
     | 
| 
         @@ -299,7 +439,8 @@ module Cassandra 
     | 
|
| 
       299 
439 
     | 
    
         | 
| 
       300 
440 
     | 
    
         
             
                # Raised when function execution fails.
         
     | 
| 
       301 
441 
     | 
    
         
             
                #
         
     | 
| 
       302 
     | 
    
         
            -
                # @see https://github.com/apache/cassandra/blob/ 
     | 
| 
      
 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
         
     | 
| 
       303 
444 
     | 
    
         
             
                class FunctionCallError < ::StandardError
         
     | 
| 
       304 
445 
     | 
    
         
             
                  include ExecutionError
         
     | 
| 
       305 
446 
     | 
    
         | 
| 
         @@ -311,8 +452,27 @@ module Cassandra 
     | 
|
| 
       311 
452 
     | 
    
         
             
                  attr_reader :signature
         
     | 
| 
       312 
453 
     | 
    
         | 
| 
       313 
454 
     | 
    
         
             
                  # @private
         
     | 
| 
       314 
     | 
    
         
            -
                  def initialize(message, 
     | 
| 
       315 
     | 
    
         
            -
             
     | 
| 
      
 455 
     | 
    
         
            +
                  def initialize(message,
         
     | 
| 
      
 456 
     | 
    
         
            +
                                 payload,
         
     | 
| 
      
 457 
     | 
    
         
            +
                                 warnings,
         
     | 
| 
      
 458 
     | 
    
         
            +
                                 r_keyspace,
         
     | 
| 
      
 459 
     | 
    
         
            +
                                 statement,
         
     | 
| 
      
 460 
     | 
    
         
            +
                                 options,
         
     | 
| 
      
 461 
     | 
    
         
            +
                                 hosts,
         
     | 
| 
      
 462 
     | 
    
         
            +
                                 consistency,
         
     | 
| 
      
 463 
     | 
    
         
            +
                                 retries,
         
     | 
| 
      
 464 
     | 
    
         
            +
                                 keyspace,
         
     | 
| 
      
 465 
     | 
    
         
            +
                                 name,
         
     | 
| 
      
 466 
     | 
    
         
            +
                                 signature)
         
     | 
| 
      
 467 
     | 
    
         
            +
                    super(message,
         
     | 
| 
      
 468 
     | 
    
         
            +
                          payload,
         
     | 
| 
      
 469 
     | 
    
         
            +
                          warnings,
         
     | 
| 
      
 470 
     | 
    
         
            +
                          r_keyspace,
         
     | 
| 
      
 471 
     | 
    
         
            +
                          statement,
         
     | 
| 
      
 472 
     | 
    
         
            +
                          options,
         
     | 
| 
      
 473 
     | 
    
         
            +
                          hosts,
         
     | 
| 
      
 474 
     | 
    
         
            +
                          consistency,
         
     | 
| 
      
 475 
     | 
    
         
            +
                          retries)
         
     | 
| 
       316 
476 
     | 
    
         
             
                    @keyspace  = keyspace
         
     | 
| 
       317 
477 
     | 
    
         
             
                    @name      = name
         
     | 
| 
       318 
478 
     | 
    
         
             
                    @signature = signature
         
     | 
| 
         @@ -327,10 +487,19 @@ module Cassandra 
     | 
|
| 
       327 
487 
     | 
    
         
             
                # Raised when some client message triggered a protocol violation (for
         
     | 
| 
       328 
488 
     | 
    
         
             
                # instance a QUERY message is sent before a STARTUP one has been sent)
         
     | 
| 
       329 
489 
     | 
    
         
             
                #
         
     | 
| 
       330 
     | 
    
         
            -
                # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L656-L658 Description 
     | 
| 
      
 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
         
     | 
| 
       331 
492 
     | 
    
         
             
                class ProtocolError < ClientError
         
     | 
| 
       332 
493 
     | 
    
         
             
                  # @private
         
     | 
| 
       333 
     | 
    
         
            -
                  def initialize(message, 
     | 
| 
      
 494 
     | 
    
         
            +
                  def initialize(message,
         
     | 
| 
      
 495 
     | 
    
         
            +
                                 payload,
         
     | 
| 
      
 496 
     | 
    
         
            +
                                 warnings,
         
     | 
| 
      
 497 
     | 
    
         
            +
                                 keyspace,
         
     | 
| 
      
 498 
     | 
    
         
            +
                                 statement,
         
     | 
| 
      
 499 
     | 
    
         
            +
                                 options,
         
     | 
| 
      
 500 
     | 
    
         
            +
                                 hosts,
         
     | 
| 
      
 501 
     | 
    
         
            +
                                 consistency,
         
     | 
| 
      
 502 
     | 
    
         
            +
                                 retries)
         
     | 
| 
       334 
503 
     | 
    
         
             
                    super(message)
         
     | 
| 
       335 
504 
     | 
    
         
             
                    @payload     = payload
         
     | 
| 
       336 
505 
     | 
    
         
             
                    @warnings    = warnings
         
     | 
| 
         @@ -345,16 +514,33 @@ module Cassandra 
     | 
|
| 
       345 
514 
     | 
    
         
             
                  # Query execution information, such as number of retries and all tried hosts, etc.
         
     | 
| 
       346 
515 
     | 
    
         
             
                  # @return [Cassandra::Execution::Info]
         
     | 
| 
       347 
516 
     | 
    
         
             
                  def execution_info
         
     | 
| 
       348 
     | 
    
         
            -
                    @info ||= Execution::Info.new(@payload, 
     | 
| 
      
 517 
     | 
    
         
            +
                    @info ||= Execution::Info.new(@payload,
         
     | 
| 
      
 518 
     | 
    
         
            +
                                                  @warnings,
         
     | 
| 
      
 519 
     | 
    
         
            +
                                                  @keyspace,
         
     | 
| 
      
 520 
     | 
    
         
            +
                                                  @statement,
         
     | 
| 
      
 521 
     | 
    
         
            +
                                                  @options,
         
     | 
| 
      
 522 
     | 
    
         
            +
                                                  @hosts,
         
     | 
| 
      
 523 
     | 
    
         
            +
                                                  @consistency,
         
     | 
| 
      
 524 
     | 
    
         
            +
                                                  @retries,
         
     | 
| 
      
 525 
     | 
    
         
            +
                                                  nil)
         
     | 
| 
       349 
526 
     | 
    
         
             
                  end
         
     | 
| 
       350 
527 
     | 
    
         
             
                end
         
     | 
| 
       351 
528 
     | 
    
         | 
| 
       352 
529 
     | 
    
         
             
                # Raised when cannot authenticate to Cassandra
         
     | 
| 
       353 
530 
     | 
    
         
             
                #
         
     | 
| 
       354 
     | 
    
         
            -
                # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L659-L660 Description 
     | 
| 
      
 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
         
     | 
| 
       355 
533 
     | 
    
         
             
                class AuthenticationError < ClientError
         
     | 
| 
       356 
534 
     | 
    
         
             
                  # @private
         
     | 
| 
       357 
     | 
    
         
            -
                  def initialize(message, 
     | 
| 
      
 535 
     | 
    
         
            +
                  def initialize(message,
         
     | 
| 
      
 536 
     | 
    
         
            +
                                 payload,
         
     | 
| 
      
 537 
     | 
    
         
            +
                                 warnings,
         
     | 
| 
      
 538 
     | 
    
         
            +
                                 keyspace,
         
     | 
| 
      
 539 
     | 
    
         
            +
                                 statement,
         
     | 
| 
      
 540 
     | 
    
         
            +
                                 options,
         
     | 
| 
      
 541 
     | 
    
         
            +
                                 hosts,
         
     | 
| 
      
 542 
     | 
    
         
            +
                                 consistency,
         
     | 
| 
      
 543 
     | 
    
         
            +
                                 retries)
         
     | 
| 
       358 
544 
     | 
    
         
             
                    super(message)
         
     | 
| 
       359 
545 
     | 
    
         
             
                    @payload     = payload
         
     | 
| 
       360 
546 
     | 
    
         
             
                    @warnings    = warnings
         
     | 
| 
         @@ -369,7 +555,15 @@ module Cassandra 
     | 
|
| 
       369 
555 
     | 
    
         
             
                  # Query execution information, such as number of retries and all tried hosts, etc.
         
     | 
| 
       370 
556 
     | 
    
         
             
                  # @return [Cassandra::Execution::Info]
         
     | 
| 
       371 
557 
     | 
    
         
             
                  def execution_info
         
     | 
| 
       372 
     | 
    
         
            -
                    @info ||= Execution::Info.new(@payload, 
     | 
| 
      
 558 
     | 
    
         
            +
                    @info ||= Execution::Info.new(@payload,
         
     | 
| 
      
 559 
     | 
    
         
            +
                                                  @warnings,
         
     | 
| 
      
 560 
     | 
    
         
            +
                                                  @keyspace,
         
     | 
| 
      
 561 
     | 
    
         
            +
                                                  @statement,
         
     | 
| 
      
 562 
     | 
    
         
            +
                                                  @options,
         
     | 
| 
      
 563 
     | 
    
         
            +
                                                  @hosts,
         
     | 
| 
      
 564 
     | 
    
         
            +
                                                  @consistency,
         
     | 
| 
      
 565 
     | 
    
         
            +
                                                  @retries,
         
     | 
| 
      
 566 
     | 
    
         
            +
                                                  nil)
         
     | 
| 
       373 
567 
     | 
    
         
             
                  end
         
     | 
| 
       374 
568 
     | 
    
         
             
                end
         
     | 
| 
       375 
569 
     | 
    
         | 
| 
         @@ -378,7 +572,15 @@ module Cassandra 
     | 
|
| 
       378 
572 
     | 
    
         
             
                  include Error
         
     | 
| 
       379 
573 
     | 
    
         | 
| 
       380 
574 
     | 
    
         
             
                  # @private
         
     | 
| 
       381 
     | 
    
         
            -
                  def initialize(message, 
     | 
| 
      
 575 
     | 
    
         
            +
                  def initialize(message,
         
     | 
| 
      
 576 
     | 
    
         
            +
                                 payload,
         
     | 
| 
      
 577 
     | 
    
         
            +
                                 warnings,
         
     | 
| 
      
 578 
     | 
    
         
            +
                                 keyspace,
         
     | 
| 
      
 579 
     | 
    
         
            +
                                 statement,
         
     | 
| 
      
 580 
     | 
    
         
            +
                                 options,
         
     | 
| 
      
 581 
     | 
    
         
            +
                                 hosts,
         
     | 
| 
      
 582 
     | 
    
         
            +
                                 consistency,
         
     | 
| 
      
 583 
     | 
    
         
            +
                                 retries)
         
     | 
| 
       382 
584 
     | 
    
         
             
                    super(message)
         
     | 
| 
       383 
585 
     | 
    
         
             
                    @payload     = payload
         
     | 
| 
       384 
586 
     | 
    
         
             
                    @warnings    = warnings
         
     | 
| 
         @@ -393,7 +595,15 @@ module Cassandra 
     | 
|
| 
       393 
595 
     | 
    
         
             
                  # Query execution information, such as number of retries and all tried hosts, etc.
         
     | 
| 
       394 
596 
     | 
    
         
             
                  # @return [Cassandra::Execution::Info]
         
     | 
| 
       395 
597 
     | 
    
         
             
                  def execution_info
         
     | 
| 
       396 
     | 
    
         
            -
                    @info ||= Execution::Info.new(@payload, 
     | 
| 
      
 598 
     | 
    
         
            +
                    @info ||= Execution::Info.new(@payload,
         
     | 
| 
      
 599 
     | 
    
         
            +
                                                  @warnings,
         
     | 
| 
      
 600 
     | 
    
         
            +
                                                  @keyspace,
         
     | 
| 
      
 601 
     | 
    
         
            +
                                                  @statement,
         
     | 
| 
      
 602 
     | 
    
         
            +
                                                  @options,
         
     | 
| 
      
 603 
     | 
    
         
            +
                                                  @hosts,
         
     | 
| 
      
 604 
     | 
    
         
            +
                                                  @consistency,
         
     | 
| 
      
 605 
     | 
    
         
            +
                                                  @retries,
         
     | 
| 
      
 606 
     | 
    
         
            +
                                                  nil)
         
     | 
| 
       397 
607 
     | 
    
         
             
                  end
         
     | 
| 
       398 
608 
     | 
    
         
             
                end
         
     | 
| 
       399 
609 
     | 
    
         | 
| 
         @@ -403,29 +613,49 @@ module Cassandra 
     | 
|
| 
       403 
613 
     | 
    
         
             
                # @note Seeing this error can be considered a Ruby Driver bug as it should
         
     | 
| 
       404 
614 
     | 
    
         
             
                #   handle automatic re-preparing internally.
         
     | 
| 
       405 
615 
     | 
    
         
             
                #
         
     | 
| 
       406 
     | 
    
         
            -
                # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L738-L741 Description 
     | 
| 
      
 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
         
     | 
| 
       407 
618 
     | 
    
         
             
                class UnpreparedError < ::StandardError
         
     | 
| 
       408 
619 
     | 
    
         
             
                  include ValidationError
         
     | 
| 
       409 
620 
     | 
    
         
             
                  # @return [String] prepared statement id that triggered the error
         
     | 
| 
       410 
621 
     | 
    
         
             
                  attr_reader :id
         
     | 
| 
       411 
622 
     | 
    
         | 
| 
       412 
623 
     | 
    
         
             
                  # @private
         
     | 
| 
       413 
     | 
    
         
            -
                  def initialize(message, 
     | 
| 
       414 
     | 
    
         
            -
             
     | 
| 
      
 624 
     | 
    
         
            +
                  def initialize(message,
         
     | 
| 
      
 625 
     | 
    
         
            +
                                 payload,
         
     | 
| 
      
 626 
     | 
    
         
            +
                                 warnings,
         
     | 
| 
      
 627 
     | 
    
         
            +
                                 keyspace,
         
     | 
| 
      
 628 
     | 
    
         
            +
                                 statement,
         
     | 
| 
      
 629 
     | 
    
         
            +
                                 options,
         
     | 
| 
      
 630 
     | 
    
         
            +
                                 hosts,
         
     | 
| 
      
 631 
     | 
    
         
            +
                                 consistency,
         
     | 
| 
      
 632 
     | 
    
         
            +
                                 retries,
         
     | 
| 
      
 633 
     | 
    
         
            +
                                 id)
         
     | 
| 
      
 634 
     | 
    
         
            +
                    super(message,
         
     | 
| 
      
 635 
     | 
    
         
            +
                          payload,
         
     | 
| 
      
 636 
     | 
    
         
            +
                          warnings,
         
     | 
| 
      
 637 
     | 
    
         
            +
                          keyspace,
         
     | 
| 
      
 638 
     | 
    
         
            +
                          statement,
         
     | 
| 
      
 639 
     | 
    
         
            +
                          options,
         
     | 
| 
      
 640 
     | 
    
         
            +
                          hosts,
         
     | 
| 
      
 641 
     | 
    
         
            +
                          consistency,
         
     | 
| 
      
 642 
     | 
    
         
            +
                          retries)
         
     | 
| 
       415 
643 
     | 
    
         
             
                    @id = id
         
     | 
| 
       416 
644 
     | 
    
         
             
                  end
         
     | 
| 
       417 
645 
     | 
    
         
             
                end
         
     | 
| 
       418 
646 
     | 
    
         | 
| 
       419 
647 
     | 
    
         
             
                # Raised when the submitted query has a syntax error.
         
     | 
| 
       420 
648 
     | 
    
         
             
                #
         
     | 
| 
       421 
     | 
    
         
            -
                # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L723 Description of 
     | 
| 
      
 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
         
     | 
| 
       422 
651 
     | 
    
         
             
                class SyntaxError < ::StandardError
         
     | 
| 
       423 
652 
     | 
    
         
             
                  include ValidationError
         
     | 
| 
       424 
653 
     | 
    
         
             
                end
         
     | 
| 
       425 
654 
     | 
    
         | 
| 
       426 
655 
     | 
    
         
             
                # Raised when the logged user doesn't have the right to perform the query.
         
     | 
| 
       427 
656 
     | 
    
         
             
                #
         
     | 
| 
       428 
     | 
    
         
            -
                # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L724-L725 Description 
     | 
| 
      
 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
         
     | 
| 
       429 
659 
     | 
    
         
             
                class UnauthorizedError < ::StandardError
         
     | 
| 
       430 
660 
     | 
    
         
             
                  include ValidationError
         
     | 
| 
       431 
661 
     | 
    
         
             
                end
         
     | 
| 
         @@ -438,7 +668,8 @@ module Cassandra 
     | 
|
| 
       438 
668 
     | 
    
         
             
                #   rescue Cassandra::Errors::InvalidError
         
     | 
| 
       439 
669 
     | 
    
         
             
                #   end
         
     | 
| 
       440 
670 
     | 
    
         
             
                #
         
     | 
| 
       441 
     | 
    
         
            -
                # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L726 Description 
     | 
| 
      
 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
         
     | 
| 
       442 
673 
     | 
    
         
             
                class InvalidError < ::StandardError
         
     | 
| 
       443 
674 
     | 
    
         
             
                  include ValidationError
         
     | 
| 
       444 
675 
     | 
    
         
             
                end
         
     | 
| 
         @@ -451,7 +682,8 @@ module Cassandra 
     | 
|
| 
       451 
682 
     | 
    
         
             
                #   rescue Cassandra::Errors::ConfigurationError
         
     | 
| 
       452 
683 
     | 
    
         
             
                #   end
         
     | 
| 
       453 
684 
     | 
    
         
             
                #
         
     | 
| 
       454 
     | 
    
         
            -
                # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L727 Description of 
     | 
| 
      
 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
         
     | 
| 
       455 
687 
     | 
    
         
             
                class ConfigurationError < ::StandardError
         
     | 
| 
       456 
688 
     | 
    
         
             
                  include ValidationError
         
     | 
| 
       457 
689 
     | 
    
         
             
                end
         
     | 
| 
         @@ -468,7 +700,8 @@ module Cassandra 
     | 
|
| 
       468 
700 
     | 
    
         
             
                #     p ['already exists', e.keyspace, e.table]
         
     | 
| 
       469 
701 
     | 
    
         
             
                #   end
         
     | 
| 
       470 
702 
     | 
    
         
             
                #
         
     | 
| 
       471 
     | 
    
         
            -
                # @see https://github.com/apache/cassandra/blob/cassandra-2.0.16/doc/native_protocol_v1.spec#L728-L737 Description 
     | 
| 
      
 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
         
     | 
| 
       472 
705 
     | 
    
         
             
                class AlreadyExistsError < ConfigurationError
         
     | 
| 
       473 
706 
     | 
    
         
             
                  # @return [String] keyspace
         
     | 
| 
       474 
707 
     | 
    
         
             
                  attr_reader :keyspace
         
     | 
| 
         @@ -477,8 +710,26 @@ module Cassandra 
     | 
|
| 
       477 
710 
     | 
    
         
             
                  attr_reader :table
         
     | 
| 
       478 
711 
     | 
    
         | 
| 
       479 
712 
     | 
    
         
             
                  # @private
         
     | 
| 
       480 
     | 
    
         
            -
                  def initialize(message, 
     | 
| 
       481 
     | 
    
         
            -
             
     | 
| 
      
 713 
     | 
    
         
            +
                  def initialize(message,
         
     | 
| 
      
 714 
     | 
    
         
            +
                                 payload,
         
     | 
| 
      
 715 
     | 
    
         
            +
                                 warnings,
         
     | 
| 
      
 716 
     | 
    
         
            +
                                 r_keyspace,
         
     | 
| 
      
 717 
     | 
    
         
            +
                                 statement,
         
     | 
| 
      
 718 
     | 
    
         
            +
                                 options,
         
     | 
| 
      
 719 
     | 
    
         
            +
                                 hosts,
         
     | 
| 
      
 720 
     | 
    
         
            +
                                 consistency,
         
     | 
| 
      
 721 
     | 
    
         
            +
                                 retries,
         
     | 
| 
      
 722 
     | 
    
         
            +
                                 keyspace,
         
     | 
| 
      
 723 
     | 
    
         
            +
                                 table)
         
     | 
| 
      
 724 
     | 
    
         
            +
                    super(message,
         
     | 
| 
      
 725 
     | 
    
         
            +
                          payload,
         
     | 
| 
      
 726 
     | 
    
         
            +
                          warnings,
         
     | 
| 
      
 727 
     | 
    
         
            +
                          r_keyspace,
         
     | 
| 
      
 728 
     | 
    
         
            +
                          statement,
         
     | 
| 
      
 729 
     | 
    
         
            +
                          options,
         
     | 
| 
      
 730 
     | 
    
         
            +
                          hosts,
         
     | 
| 
      
 731 
     | 
    
         
            +
                          consistency,
         
     | 
| 
      
 732 
     | 
    
         
            +
                          retries)
         
     | 
| 
       482 
733 
     | 
    
         
             
                    @keyspace = keyspace
         
     | 
| 
       483 
734 
     | 
    
         
             
                    @table    = table
         
     | 
| 
       484 
735 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -500,8 +751,8 @@ module Cassandra 
     | 
|
| 
       500 
751 
     | 
    
         
             
                  def initialize(errors = nil)
         
     | 
| 
       501 
752 
     | 
    
         
             
                    if errors
         
     | 
| 
       502 
753 
     | 
    
         
             
                      first   = true
         
     | 
| 
       503 
     | 
    
         
            -
                      message =  
     | 
| 
       504 
     | 
    
         
            -
                       
     | 
| 
      
 754 
     | 
    
         
            +
                      message = 'All attempted hosts failed'
         
     | 
| 
      
 755 
     | 
    
         
            +
                      errors.each do |(host, error)|
         
     | 
| 
       505 
756 
     | 
    
         
             
                        if first
         
     | 
| 
       506 
757 
     | 
    
         
             
                          first = false
         
     | 
| 
       507 
758 
     | 
    
         
             
                          message << ': '
         
     | 
| 
         @@ -511,7 +762,7 @@ module Cassandra 
     | 
|
| 
       511 
762 
     | 
    
         
             
                        message << "#{host.ip} (#{error.class.name}: #{error.message})"
         
     | 
| 
       512 
763 
     | 
    
         
             
                      end
         
     | 
| 
       513 
764 
     | 
    
         
             
                    else
         
     | 
| 
       514 
     | 
    
         
            -
                      message =  
     | 
| 
      
 765 
     | 
    
         
            +
                      message = 'All hosts down'
         
     | 
| 
       515 
766 
     | 
    
         
             
                    end
         
     | 
| 
       516 
767 
     | 
    
         | 
| 
       517 
768 
     | 
    
         
             
                    super(message)
         
     |