cassandra-driver 2.0.1-java → 2.1.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.
Files changed (117) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +18 -9
  3. data/lib/cassandra.rb +5 -1
  4. data/lib/cassandra/address_resolution.rb +1 -1
  5. data/lib/cassandra/address_resolution/policies/ec2_multi_region.rb +1 -1
  6. data/lib/cassandra/address_resolution/policies/none.rb +1 -1
  7. data/lib/cassandra/auth.rb +1 -1
  8. data/lib/cassandra/auth/providers.rb +1 -1
  9. data/lib/cassandra/auth/providers/password.rb +1 -1
  10. data/lib/cassandra/cluster.rb +1 -1
  11. data/lib/cassandra/cluster/client.rb +33 -13
  12. data/lib/cassandra/cluster/connection_pool.rb +1 -1
  13. data/lib/cassandra/cluster/connector.rb +1 -36
  14. data/lib/cassandra/cluster/control_connection.rb +85 -9
  15. data/lib/cassandra/cluster/failed_connection.rb +1 -1
  16. data/lib/cassandra/cluster/metadata.rb +1 -1
  17. data/lib/cassandra/cluster/options.rb +15 -4
  18. data/lib/cassandra/cluster/registry.rb +1 -1
  19. data/lib/cassandra/cluster/schema.rb +76 -16
  20. data/lib/cassandra/cluster/schema/partitioners.rb +1 -1
  21. data/lib/cassandra/cluster/schema/partitioners/murmur3.rb +1 -1
  22. data/lib/cassandra/cluster/schema/partitioners/ordered.rb +1 -1
  23. data/lib/cassandra/cluster/schema/partitioners/random.rb +1 -1
  24. data/lib/cassandra/cluster/schema/replication_strategies.rb +1 -1
  25. data/lib/cassandra/cluster/schema/replication_strategies/network_topology.rb +1 -1
  26. data/lib/cassandra/cluster/schema/replication_strategies/none.rb +1 -1
  27. data/lib/cassandra/cluster/schema/replication_strategies/simple.rb +1 -1
  28. data/lib/cassandra/cluster/schema/type_parser.rb +35 -8
  29. data/lib/cassandra/column.rb +10 -14
  30. data/lib/cassandra/compression.rb +1 -1
  31. data/lib/cassandra/compression/compressors/lz4.rb +1 -1
  32. data/lib/cassandra/compression/compressors/snappy.rb +1 -1
  33. data/lib/cassandra/driver.rb +2 -2
  34. data/lib/cassandra/errors.rb +1 -1
  35. data/lib/cassandra/execution/info.rb +1 -1
  36. data/lib/cassandra/execution/options.rb +3 -2
  37. data/lib/cassandra/execution/trace.rb +1 -1
  38. data/lib/cassandra/executors.rb +1 -1
  39. data/lib/cassandra/future.rb +1 -1
  40. data/lib/cassandra/host.rb +1 -1
  41. data/lib/cassandra/keyspace.rb +55 -5
  42. data/lib/cassandra/listener.rb +1 -1
  43. data/lib/cassandra/load_balancing.rb +1 -1
  44. data/lib/cassandra/load_balancing/policies.rb +1 -1
  45. data/lib/cassandra/load_balancing/policies/dc_aware_round_robin.rb +1 -1
  46. data/lib/cassandra/load_balancing/policies/round_robin.rb +1 -1
  47. data/lib/cassandra/load_balancing/policies/token_aware.rb +1 -1
  48. data/lib/cassandra/load_balancing/policies/white_list.rb +1 -1
  49. data/lib/cassandra/null_logger.rb +1 -1
  50. data/lib/cassandra/protocol.rb +6 -1
  51. data/lib/cassandra/protocol/coder.rb +319 -84
  52. data/lib/cassandra/protocol/cql_byte_buffer.rb +1 -1
  53. data/lib/cassandra/protocol/cql_protocol_handler.rb +24 -10
  54. data/lib/cassandra/protocol/request.rb +1 -1
  55. data/lib/cassandra/protocol/requests/auth_response_request.rb +1 -1
  56. data/lib/cassandra/protocol/requests/batch_request.rb +1 -1
  57. data/lib/cassandra/protocol/requests/credentials_request.rb +1 -1
  58. data/lib/cassandra/protocol/requests/execute_request.rb +1 -1
  59. data/lib/cassandra/protocol/requests/options_request.rb +1 -1
  60. data/lib/cassandra/protocol/requests/prepare_request.rb +1 -1
  61. data/lib/cassandra/protocol/requests/query_request.rb +5 -3
  62. data/lib/cassandra/protocol/requests/register_request.rb +1 -1
  63. data/lib/cassandra/protocol/requests/startup_request.rb +1 -1
  64. data/lib/cassandra/protocol/requests/void_query_request.rb +1 -1
  65. data/lib/cassandra/protocol/response.rb +1 -1
  66. data/lib/cassandra/protocol/responses/already_exists_error_response.rb +1 -1
  67. data/lib/cassandra/protocol/responses/auth_challenge_response.rb +1 -1
  68. data/lib/cassandra/protocol/responses/auth_success_response.rb +1 -1
  69. data/lib/cassandra/protocol/responses/authenticate_response.rb +1 -1
  70. data/lib/cassandra/protocol/responses/error_response.rb +1 -1
  71. data/lib/cassandra/protocol/responses/event_response.rb +1 -1
  72. data/lib/cassandra/protocol/responses/prepared_result_response.rb +1 -1
  73. data/lib/cassandra/protocol/responses/raw_rows_result_response.rb +9 -2
  74. data/lib/cassandra/protocol/responses/read_timeout_error_response.rb +1 -1
  75. data/lib/cassandra/protocol/responses/ready_response.rb +1 -1
  76. data/lib/cassandra/protocol/responses/result_response.rb +1 -1
  77. data/lib/cassandra/protocol/responses/rows_result_response.rb +1 -1
  78. data/lib/cassandra/protocol/responses/schema_change_event_response.rb +21 -6
  79. data/lib/cassandra/protocol/responses/schema_change_result_response.rb +18 -8
  80. data/lib/cassandra/protocol/responses/set_keyspace_result_response.rb +1 -1
  81. data/lib/cassandra/protocol/responses/status_change_event_response.rb +1 -1
  82. data/lib/cassandra/protocol/responses/supported_response.rb +1 -1
  83. data/lib/cassandra/protocol/responses/topology_change_event_response.rb +1 -1
  84. data/lib/cassandra/protocol/responses/unavailable_error_response.rb +1 -1
  85. data/lib/cassandra/protocol/responses/unprepared_error_response.rb +1 -1
  86. data/lib/cassandra/protocol/responses/void_result_response.rb +1 -1
  87. data/lib/cassandra/protocol/responses/write_timeout_error_response.rb +1 -1
  88. data/lib/cassandra/protocol/v1.rb +4 -2
  89. data/lib/cassandra/protocol/v3.rb +280 -0
  90. data/lib/cassandra/reconnection.rb +1 -1
  91. data/lib/cassandra/reconnection/policies.rb +1 -1
  92. data/lib/cassandra/reconnection/policies/constant.rb +1 -1
  93. data/lib/cassandra/reconnection/policies/exponential.rb +1 -1
  94. data/lib/cassandra/result.rb +1 -1
  95. data/lib/cassandra/retry.rb +1 -1
  96. data/lib/cassandra/retry/policies.rb +1 -1
  97. data/lib/cassandra/retry/policies/default.rb +1 -1
  98. data/lib/cassandra/retry/policies/downgrading_consistency.rb +1 -1
  99. data/lib/cassandra/retry/policies/fallthrough.rb +1 -1
  100. data/lib/cassandra/session.rb +14 -80
  101. data/lib/cassandra/statement.rb +1 -1
  102. data/lib/cassandra/statements.rb +1 -1
  103. data/lib/cassandra/statements/batch.rb +10 -25
  104. data/lib/cassandra/statements/bound.rb +1 -1
  105. data/lib/cassandra/statements/prepared.rb +24 -31
  106. data/lib/cassandra/statements/simple.rb +22 -66
  107. data/lib/cassandra/statements/void.rb +1 -1
  108. data/lib/cassandra/table.rb +36 -5
  109. data/lib/cassandra/time_uuid.rb +1 -1
  110. data/lib/cassandra/tuple.rb +124 -0
  111. data/lib/cassandra/types.rb +1406 -0
  112. data/lib/cassandra/udt.rb +420 -0
  113. data/lib/cassandra/util.rb +42 -64
  114. data/lib/cassandra/uuid.rb +1 -1
  115. data/lib/cassandra/uuid/generator.rb +1 -1
  116. data/lib/cassandra/version.rb +2 -2
  117. metadata +38 -34
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  #--
4
- # Copyright 2013-2014 DataStax, Inc.
4
+ # Copyright 2013-2015 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.
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  #--
4
- # Copyright 2013-2014 DataStax, Inc.
4
+ # Copyright 2013-2015 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.
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  #--
4
- # Copyright 2013-2014 DataStax, Inc.
4
+ # Copyright 2013-2015 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.
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  #--
4
- # Copyright 2013-2014 DataStax, Inc.
4
+ # Copyright 2013-2015 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.
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  #--
4
- # Copyright 2013-2014 DataStax, Inc.
4
+ # Copyright 2013-2015 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.
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  #--
4
- # Copyright 2013-2014 DataStax, Inc.
4
+ # Copyright 2013-2015 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.
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  #--
4
- # Copyright 2013-2014 DataStax, Inc.
4
+ # Copyright 2013-2015 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.
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  #--
4
- # Copyright 2013-2014 DataStax, Inc.
4
+ # Copyright 2013-2015 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.
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  #--
4
- # Copyright 2013-2014 DataStax, Inc.
4
+ # Copyright 2013-2015 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,7 +43,7 @@ module Cassandra
43
43
  buffer
44
44
  end
45
45
 
46
- def write_parameters(buffer, params, types)
46
+ def write_parameters(buffer, params, types, names = EMPTY_LIST)
47
47
  Coder.write_values_v1(buffer, params, types)
48
48
  end
49
49
  end
@@ -156,6 +156,8 @@ module Cassandra
156
156
  end
157
157
  end
158
158
 
159
+ private
160
+
159
161
  CODE_ERROR = 0x00
160
162
  CODE_READY = 0x02
161
163
  CODE_AUTHENTICATE = 0x03
@@ -0,0 +1,280 @@
1
+ # encoding: utf-8
2
+
3
+ #--
4
+ # Copyright 2013-2015 DataStax, Inc.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #++
18
+
19
+ module Cassandra
20
+ module Protocol
21
+ module V3
22
+ class Encoder
23
+ HEADER_FORMAT = 'c2ncN'.freeze
24
+
25
+ def initialize(compressor = nil, protocol_version = 3)
26
+ @compressor = compressor
27
+ @protocol_version = protocol_version
28
+ end
29
+
30
+ def encode(buffer, request, stream_id)
31
+ flags = request.trace? ? 2 : 0
32
+ body = request.write(CqlByteBuffer.new, @protocol_version, self)
33
+
34
+ if @compressor && request.compressable? && @compressor.compress?(body)
35
+ flags |= 1
36
+ body = @compressor.compress(body)
37
+ end
38
+
39
+ header = [@protocol_version, flags, stream_id, request.opcode, body.bytesize]
40
+ buffer << header.pack(HEADER_FORMAT)
41
+ buffer << body
42
+
43
+ buffer
44
+ end
45
+
46
+ def write_parameters(buffer, params, types, names = EMPTY_LIST)
47
+ Coder.write_values_v3(buffer, params, types, names)
48
+ end
49
+ end
50
+
51
+ class Decoder
52
+ def initialize(handler, compressor = nil)
53
+ @handler = handler
54
+ @compressor = compressor
55
+ @state = :initial
56
+ @header = nil
57
+ @version = nil
58
+ @code = nil
59
+ @length = nil
60
+ @buffer = CqlByteBuffer.new
61
+ end
62
+
63
+ def <<(data)
64
+ @buffer << data
65
+
66
+ __send__(:"decode_#{@state}", @buffer)
67
+ end
68
+
69
+ private
70
+
71
+ READY = ReadyResponse.new
72
+
73
+ def decode_initial(buffer)
74
+ return if buffer.length < 9
75
+
76
+ frame_header = buffer.read_int
77
+ protocol_version = (frame_header >> 24) & 0x7f
78
+
79
+ if protocol_version < 3
80
+ stream_id = (frame_header >> 8) & 0xff
81
+ stream_id = (stream_id & 0x7f) - (stream_id & 0x80)
82
+
83
+ @handler.complete_request(stream_id, ErrorResponse.new(0x000A, "Invalid or unsupported protocol version"))
84
+
85
+ return
86
+ end
87
+
88
+ @header = frame_header
89
+ @code = buffer.read_byte
90
+ @length = buffer.read_int
91
+ @state = :body
92
+
93
+ decode_body(buffer)
94
+ end
95
+
96
+ def decode_header(buffer)
97
+ buffer_length = buffer.length
98
+
99
+ while buffer_length >= 9
100
+ frame_header = buffer.read_int
101
+ frame_code = buffer.read_byte
102
+ frame_length = buffer.read_int
103
+
104
+ if (buffer_length - 9) < frame_length
105
+ @header = frame_header
106
+ @code = frame_code
107
+ @length = frame_length
108
+ @state = :body
109
+
110
+ return
111
+ end
112
+
113
+ actual_decode(buffer, frame_header, frame_length, frame_code)
114
+ buffer_length = buffer.length
115
+ end
116
+
117
+ nil
118
+ end
119
+
120
+ def decode_body(buffer)
121
+ frame_header = @header
122
+ frame_code = @code
123
+ frame_length = @length
124
+ buffer_length = buffer.length
125
+
126
+ until buffer_length < frame_length
127
+ actual_decode(buffer, frame_header, frame_length, frame_code)
128
+ buffer_length = buffer.length
129
+
130
+ if buffer_length < 9
131
+ @header = nil
132
+ @code = nil
133
+ @length = nil
134
+ @state = :header
135
+
136
+ return
137
+ end
138
+
139
+ frame_header = buffer.read_int
140
+ frame_code = buffer.read_byte
141
+ frame_length = buffer.read_int
142
+ buffer_length -= 8
143
+ end
144
+
145
+ @header = frame_header
146
+ @code = frame_code
147
+ @length = frame_length
148
+
149
+ nil
150
+ end
151
+
152
+ def actual_decode(buffer, fields, size, code)
153
+ protocol_version = (fields >> 24) & 0x7f
154
+ compression = (fields >> 16) & 0x01
155
+ tracing = (fields >> 16) & 0x02
156
+ stream_id = fields & 0xffff
157
+ stream_id = (stream_id & 0x7fff) - (stream_id & 0x8000)
158
+ opcode = code & 0xff
159
+
160
+ if compression == 1
161
+ if @compressor
162
+ buffer = CqlByteBuffer.new(@compressor.decompress(buffer.read(size)))
163
+ size = buffer.size
164
+ else
165
+ raise Errors::DecodingError, 'Compressed frame received, but no compressor configured'
166
+ end
167
+ end
168
+
169
+ if tracing == 2
170
+ trace_id = buffer.read_uuid
171
+ size -= 16
172
+ else
173
+ trace_id = nil
174
+ end
175
+
176
+ extra_length = buffer.length - size
177
+ response = decode_response(opcode, protocol_version, buffer, size, trace_id)
178
+
179
+ if buffer.length > extra_length
180
+ buffer.discard(buffer.length - extra_length)
181
+ end
182
+
183
+ if stream_id == -1
184
+ @handler.notify_event_listeners(response)
185
+ else
186
+ @handler.complete_request(stream_id, response)
187
+ end
188
+ end
189
+
190
+ def decode_response(opcode, protocol_version, buffer, size, trace_id)
191
+ case opcode
192
+ when 0x00 # ERROR
193
+ code = buffer.read_int
194
+ message = buffer.read_string
195
+
196
+ case code
197
+ when 0x1000 then UnavailableErrorResponse.new(code, message, buffer.read_consistency, buffer.read_int, buffer.read_int)
198
+ when 0x1100 then WriteTimeoutErrorResponse.new(code, message, buffer.read_consistency, buffer.read_int, buffer.read_int, buffer.read_string)
199
+ when 0x1200 then ReadTimeoutErrorResponse.new(code, message, buffer.read_consistency, buffer.read_int, buffer.read_int, (buffer.read_byte != 0))
200
+ when 0x2400 then AlreadyExistsErrorResponse.new(code, message, buffer.read_string, buffer.read_string)
201
+ when 0x2500 then UnpreparedErrorResponse.new(code, message, buffer.read_short_bytes)
202
+ else
203
+ ErrorResponse.new(code, message)
204
+ end
205
+ when 0x02 # READY
206
+ READY
207
+ when 0x03 # AUTHENTICATE
208
+ AuthenticateResponse.new(buffer.read_string)
209
+ when 0x06 # SUPPORTED
210
+ SupportedResponse.new(buffer.read_string_multimap)
211
+ when 0x08 # RESULT
212
+ result_type = buffer.read_int
213
+ case result_type
214
+ when 0x0001 # Void
215
+ VoidResultResponse.new(trace_id)
216
+ when 0x0002 # Rows
217
+ original_buffer_length = buffer.length
218
+ column_specs, paging_state = Coder.read_metadata_v3(buffer)
219
+
220
+ if column_specs.nil?
221
+ consumed_bytes = original_buffer_length - buffer.length
222
+ remaining_bytes = CqlByteBuffer.new(buffer.read(size - consumed_bytes - 4))
223
+ RawRowsResultResponse.new(protocol_version, remaining_bytes, paging_state, trace_id)
224
+ else
225
+ RowsResultResponse.new(Coder.read_values_v3(buffer, column_specs), column_specs, paging_state, trace_id)
226
+ end
227
+ when 0x0003 # SetKeyspace
228
+ SetKeyspaceResultResponse.new(buffer.read_string, trace_id)
229
+ when 0x0004 # Prepared
230
+ id = buffer.read_short_bytes
231
+ params_metadata = Coder.read_metadata_v3(buffer).first
232
+ result_metadata = nil
233
+ result_metadata = Coder.read_metadata_v3(buffer).first if protocol_version > 1
234
+
235
+ PreparedResultResponse.new(id, params_metadata, result_metadata, trace_id)
236
+ when 0x0005 # SchemaChange
237
+ change = buffer.read_string
238
+ target = buffer.read_string
239
+ keyspace = buffer.read_string
240
+
241
+ if target == 'KEYSPACE'
242
+ SchemaChangeResultResponse.new(change, keyspace, nil, trace_id, target)
243
+ else
244
+ SchemaChangeResultResponse.new(change, keyspace, buffer.read_string, trace_id, target)
245
+ end
246
+ else
247
+ raise Errors::DecodingError, "Unsupported result type: #{result_type.inspect}"
248
+ end
249
+ when 0x0C # EVENT
250
+ event_type = buffer.read_string
251
+ case event_type
252
+ when 'SCHEMA_CHANGE'
253
+ change = buffer.read_string
254
+ target = buffer.read_string
255
+ keyspace = buffer.read_string
256
+
257
+ if target == 'KEYSPACE'
258
+ SchemaChangeEventResponse.new(change, keyspace, nil, target)
259
+ else
260
+ SchemaChangeEventResponse.new(change, keyspace, buffer.read_string, target)
261
+ end
262
+ when 'STATUS_CHANGE'
263
+ StatusChangeEventResponse.new(buffer.read_string, *buffer.read_inet)
264
+ when 'TOPOLOGY_CHANGE'
265
+ TopologyChangeEventResponse.new(buffer.read_string, *buffer.read_inet)
266
+ else
267
+ raise Errors::DecodingError, "Unsupported event type: #{event_type.inspect}"
268
+ end
269
+ when 0x0E # AUTH_CHALLENGE
270
+ AuthChallengeResponse.new(buffer.read_bytes)
271
+ when 0x10 # AUTH_SUCCESS
272
+ AuthSuccessResponse.new(buffer.read_bytes)
273
+ else
274
+ raise Errors::DecodingError, "Unsupported response opcode: #{opcode.inspect}"
275
+ end
276
+ end
277
+ end
278
+ end
279
+ end
280
+ end
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  #--
4
- # Copyright 2013-2014 DataStax, Inc.
4
+ # Copyright 2013-2015 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.
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  #--
4
- # Copyright 2013-2014 DataStax, Inc.
4
+ # Copyright 2013-2015 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.
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  #--
4
- # Copyright 2013-2014 DataStax, Inc.
4
+ # Copyright 2013-2015 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.
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  #--
4
- # Copyright 2013-2014 DataStax, Inc.
4
+ # Copyright 2013-2015 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.
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  #--
4
- # Copyright 2013-2014 DataStax, Inc.
4
+ # Copyright 2013-2015 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.
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  #--
4
- # Copyright 2013-2014 DataStax, Inc.
4
+ # Copyright 2013-2015 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.
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  #--
4
- # Copyright 2013-2014 DataStax, Inc.
4
+ # Copyright 2013-2015 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.