cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Akhil Mehra (JIRA)" <>
Subject [jira] [Created] (CASSANDRA-13549) Cqlsh throws and error when querying a duration data type
Date Tue, 23 May 2017 23:01:04 GMT
Akhil Mehra created CASSANDRA-13549:

             Summary: Cqlsh throws and error when querying a duration data type
                 Key: CASSANDRA-13549
             Project: Cassandra
          Issue Type: Bug
          Components: CQL
         Environment: Cassandra 3.10 dev environment running on a MacOS Sierra
            Reporter: Akhil Mehra

h3. Overview

Querying duration related data from the cqlsh prompt results in an error.

Consider the following create table and insert statement.
{code:title=Table and insert statement with duration data type|borderStyle=solid}
CREATE TABLE duration_test (
  primary_key text,
  col20 duration,
  PRIMARY KEY (primary_key)
INSERT INTO duration_test (primary_key, col20) VALUES ('primary_key_example', 1y5mo89h4m48s);

On executing a select query on col20 in cqlsh I get an error "Failed to format value '"\x00\xfe\x02GS\xfc\xa5\xc0\x00'
: 'ascii' codec can't decode byte 0xfe in position 2: ordinal not in range(128)"
{code:title=Duration Query|borderStyle=solid}
Select  col20 from duration_test;

h3. Investigation

On investigating this further I found that the current python Cassandra driver used found
in lib/ does not seem to support duration
data type. This was added in Jan this year

So I downloaded the latest driver release
I embedded the latest driver into
This fixed the driver related issue but there was still a formatting issue. 

I then went on to modify the format_value_duration methos in the pylib/cqlshlib/
Diff posted below

 def format_value_duration(val, colormap, **_):
-    buf = six.iterbytes(val)
-    months = decode_vint(buf)
-    days = decode_vint(buf)
-    nanoseconds = decode_vint(buf)
-    return format_python_formatted_type(duration_as_str(months, days, nanoseconds), colormap,
+    return format_python_formatted_type(duration_as_str(val.months, val.days, val.nanoseconds),
colormap, 'duration')

This resulted in fixing the issue and duration types are now correctly displayed.

Happy to fix the issue if I can get some guidance on:
# If this is a valid issue. Tried searching JIRA but did not find anything reported. 
# If my assumptions are correct i.e. this is actually a bug
# how to package the new driver into the source code. 

This message was sent by Atlassian JIRA

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message