Description
Assuming you have a table with a UDT and the import CSV line looks like this:
ff92ee2f-2aa1-4008-bba7-5600112233b9,"{udt_field: 'N[24-26', other_field: '24', more_data: '}",,some,more,data,follows
cqlsh COPY FROM raises IndexError: tuple index out of range with a traceback like this:
File "/Users/snazy/devel/cassandra/trunk/bin/../pylib/cqlshlib/copyutil.py", line 2271, in make_prepared_batch_statement statement._statements_and_parameters = [(True, query.query_id, query.bind(r).values) for r in batch['rows']] File "/Users/snazy/devel/cassandra/trunk/bin/../lib/cassandra-driver-internal-only-3.0.0-6af642d.zip/cassandra-driver-3.0.0-6af642d/cassandra/query.py", line 411, in bind return BoundStatement(self).bind(values) File "/Users/snazy/devel/cassandra/trunk/bin/../lib/cassandra-driver-internal-only-3.0.0-6af642d.zip/cassandra-driver-3.0.0-6af642d/cassandra/query.py", line 531, in bind self.values.append(col_spec.type.serialize(value, proto_version)) File "/Users/snazy/devel/cassandra/trunk/bin/../lib/cassandra-driver-internal-only-3.0.0-6af642d.zip/cassandra-driver-3.0.0-6af642d/cassandra/cqltypes.py", line 686, in serialize return cls.serialize_safe(val, protocol_version) File "/Users/snazy/devel/cassandra/trunk/bin/../lib/cassandra-driver-internal-only-3.0.0-6af642d.zip/cassandra-driver-3.0.0-6af642d/cassandra/cqltypes.py", line 906, in serialize_safe item = val[i]
Reason is in ImportConversion._get_converter.split that accidentally recognizes square and curly brackets in quoted strings. Attached patch should fix this issue.