Add support for duration type

Description

cassandra-driver 3.2.4 fails with the following exception when trying to connect to DSE 6.8:

Traceback (most recent call last):
33: from /home/mersault/.rvm/gems/ruby-2.5.1@countapp/gems/ione-1.2.4/lib/ione/io/io_reactor.rb:160:in `block in start'
32: from /home/mersault/.rvm/gems/ruby-2.5.1@countapp/gems/ione-1.2.4/lib/ione/io/io_reactor.rb:518:in `tick'
31: from /home/mersault/.rvm/gems/ruby-2.5.1@countapp/gems/ione-1.2.4/lib/ione/io/io_reactor.rb:518:in `each'
30: from /home/mersault/.rvm/gems/ruby-2.5.1@countapp/gems/ione-1.2.4/lib/ione/io/io_reactor.rb:518:in `block in tick'
29: from /home/mersault/.rvm/gems/ruby-2.5.1@countapp/gems/ione-1.2.4/lib/ione/io/base_connection.rb:174:in `read'
28: from /home/mersault/.rvm/gems/ruby-2.5.1@countapp/gems/cassandra-driver-3.2.4/lib/cassandra/protocol/cql_protocol_handler.rb:331:in `receive_data'
27: from /home/mersault/.rvm/gems/ruby-2.5.1@countapp/gems/cassandra-driver-3.2.4/lib/cassandra/protocol/v4.rb:78:in `<<'
26: from /home/mersault/.rvm/gems/ruby-2.5.1@countapp/gems/cassandra-driver-3.2.4/lib/cassandra/protocol/v4.rb:141:in `decode_body'
25: from /home/mersault/.rvm/gems/ruby-2.5.1@countapp/gems/cassandra-driver-3.2.4/lib/cassandra/protocol/v4.rb:220:in `actual_decode'
24: from /home/mersault/.rvm/gems/ruby-2.5.1@countapp/gems/cassandra-driver-3.2.4/lib/cassandra/protocol/cql_protocol_handler.rb:248:in `complete_request'
23: from /home/mersault/.rvm/gems/ruby-2.5.1@countapp/gems/cassandra-driver-3.2.4/lib/cassandra/protocol/cql_protocol_handler.rb:305:in `fulfill'
22: from /home/mersault/.rvm/gems/ruby-2.5.1@countapp/gems/ione-1.2.4/lib/ione/future.rb:30:in `fulfill'
21: from /home/mersault/.rvm/gems/ruby-2.5.1@countapp/gems/ione-1.2.4/lib/ione/future.rb:790:in `resolve'
20: from /home/mersault/.rvm/gems/ruby-2.5.1@countapp/gems/ione-1.2.4/lib/ione/future.rb:790:in `each'
19: from /home/mersault/.rvm/gems/ruby-2.5.1@countapp/gems/ione-1.2.4/lib/ione/future.rb:791:in `block in resolve'
18: from /home/mersault/.rvm/gems/ruby-2.5.1@countapp/gems/ione-1.2.4/lib/ione/future.rb:752:in `call_listener'
17: from /home/mersault/.rvm/gems/ruby-2.5.1@countapp/gems/ione-1.2.4/lib/ione/future.rb:391:in `block in map'
16: from /home/mersault/.rvm/gems/ruby-2.5.1@countapp/gems/ione-1.2.4/lib/ione/future.rb:790:in `resolve'
15: from /home/mersault/.rvm/gems/ruby-2.5.1@countapp/gems/ione-1.2.4/lib/ione/future.rb:790:in `each'
14: from /home/mersault/.rvm/gems/ruby-2.5.1@countapp/gems/ione-1.2.4/lib/ione/future.rb:791:in `block in resolve'
13: from /home/mersault/.rvm/gems/ruby-2.5.1@countapp/gems/ione-1.2.4/lib/ione/future.rb:752:in `call_listener'
12: from /home/mersault/.rvm/gems/ruby-2.5.1@countapp/gems/ione-1.2.4/lib/ione/future.rb:835:in `block (2 levels) in initialize'
11: from /home/mersault/.rvm/gems/ruby-2.5.1@countapp/gems/ione-1.2.4/lib/ione/future.rb:790:in `resolve'
10: from /home/mersault/.rvm/gems/ruby-2.5.1@countapp/gems/ione-1.2.4/lib/ione/future.rb:790:in `each'
9: from /home/mersault/.rvm/gems/ruby-2.5.1@countapp/gems/ione-1.2.4/lib/ione/future.rb:791:in `block in resolve'
8: from /home/mersault/.rvm/gems/ruby-2.5.1@countapp/gems/ione-1.2.4/lib/ione/future.rb:752:in `call_listener'
7: from /home/mersault/.rvm/gems/ruby-2.5.1@countapp/gems/ione-1.2.4/lib/ione/future.rb:391:in `block in map'
6: from /home/mersault/.rvm/gems/ruby-2.5.1@countapp/gems/cassandra-driver-3.2.4/lib/cassandra/cluster/schema/fetchers.rb:49:in `block in fetch'
5: from /home/mersault/.rvm/gems/ruby-2.5.1@countapp/gems/cassandra-driver-3.2.4/lib/cassandra/cluster/schema/fetchers.rb:49:in `map'
4: from /home/mersault/.rvm/gems/ruby-2.5.1@countapp/gems/cassandra-driver-3.2.4/lib/cassandra/cluster/schema/fetchers.rb:52:in `block (2 levels) in fetch'
3: from /home/mersault/.rvm/gems/ruby-2.5.1@countapp/gems/cassandra-driver-3.2.4/lib/cassandra/cluster/schema/fetchers.rb:1276:in `create_keyspace'
2: from /home/mersault/.rvm/gems/ruby-2.5.1@countapp/gems/cassandra-driver-3.2.4/lib/cassandra/cluster/schema/fetchers.rb:1238:in `create_types'
1: from /home/mersault/.rvm/gems/ruby-2.5.1@countapp/gems/cassandra-driver-3.2.4/lib/cassandra/cluster/schema/fetchers.rb:1238:in `loop'
/home/mersault/.rvm/gems/ruby-2.5.1@countapp/gems/cassandra-driver-3.2.4/lib/cassandra/cluster/schema/fetchers.rb:1264:in `block in create_types': Unable to resolve circular refe
rences among UDTs when parsing (RuntimeError)

Underlying problem here is the use of UDTs with the duration type in some of the built-in system schema (see "select * from system_schema.types"). The UDTs containing these types can't be properly resolved which ultimately leads to the (admittedly somewhat unclear) error message above.

Adding outright support for the duration type should allow the schema fetchers to complete normally.

Environment

None

Pull Requests

None

Assignee

Unassigned

Reporter

Bret McGuire

Labels

None

PM Priority

None

Reproduced in

None

External issue ID

None

Doc Impact

None

Reviewer

None

Pull Request

None

Size

None

Affects versions

Priority

Major
Configure