[ 
https://issues.apache.org/jira/browse/CASSANDRA-4003?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13224519#comment-13224519
 ] 

Jonathan Ellis commented on CASSANDRA-4003:
-------------------------------------------

It looks like the core of the fix is this:

{noformat}
+    def get_nametype(self, cursor, num):
+        """
+        Determine the Cassandra type of a column name from the current row of
+        query results on the given cursor. The column in question is given by
+        its zero-based ordinal number within the row.
+
+        Pretty big hack, but necessary to differentiate some things like ascii
+        vs. blob hex. Probably this should be available from the driver
+        somehow, instead.
+        """
+
+        row = cursor.result[cursor.rs_idx - 1]
+        col = row.columns[num]
+        schema = cursor.decoder.schema
+        return schema.name_types.get(col.name, schema.default_name_type)
{noformat}

Can you elaborate as to what's going on?
                
> cqlsh still failing to handle decode errors in some column names
> ----------------------------------------------------------------
>
>                 Key: CASSANDRA-4003
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-4003
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Tools
>    Affects Versions: 1.0.8
>            Reporter: paul cannon
>            Assignee: paul cannon
>            Priority: Minor
>              Labels: cqlsh
>             Fix For: 1.0.9
>
>
> Columns which are expected to be text, but which are not valid utf8, cause 
> cqlsh to display an error and not show any output:
> {noformat}
> cqlsh:ks> CREATE COLUMNFAMILY test (a text PRIMARY KEY) WITH comparator = 
> timestamp;
> cqlsh:ks> INSERT INTO test (a, '2012-03-05') VALUES ('val1', 'val2');
> cqlsh:ks> ASSUME test NAMES ARE text;
> cqlsh:ks> select * from test;
> 'utf8' codec can't decode byte 0xe1 in position 4: invalid continuation byte
> {noformat}
> the traceback with cqlsh --debug:
> {noformat}
> Traceback (most recent call last):
>   File "bin/cqlsh", line 581, in onecmd
>     self.handle_statement(st)
>   File "bin/cqlsh", line 606, in handle_statement
>     return custom_handler(parsed)
>   File "bin/cqlsh", line 663, in do_select
>     self.perform_statement_as_tokens(parsed.matched, decoder=decoder)
>   File "bin/cqlsh", line 666, in perform_statement_as_tokens
>     return self.perform_statement(cqlhandling.cql_detokenize(tokens), 
> decoder=decoder)
>   File "bin/cqlsh", line 693, in perform_statement
>     self.print_result(self.cursor)
>   File "bin/cqlsh", line 728, in print_result
>     self.print_static_result(cursor)
>   File "bin/cqlsh", line 742, in print_static_result
>     formatted_names = map(self.myformat_colname, colnames)
>   File "bin/cqlsh", line 413, in myformat_colname
>     wcwidth.wcswidth(name.decode(self.output_codec.name)))
>   File "/usr/local/Cellar/python/2.7.2/lib/python2.7/encodings/utf_8.py", 
> line 16, in decode
>     return codecs.utf_8_decode(input, errors, True)
> UnicodeDecodeError: 'utf8' codec can't decode byte 0xe1 in position 4: 
> invalid continuation byte
> {noformat}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to