cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sylvain Lebresne (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (CASSANDRA-5723) DateType (timestamp type in CQL3) does not sort pre-'unix epoch' dates correctly
Date Mon, 08 Jul 2013 14:03:48 GMT

     [ https://issues.apache.org/jira/browse/CASSANDRA-5723?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Sylvain Lebresne updated CASSANDRA-5723:
----------------------------------------

    Attachment: 5723.txt

Attaching a patch with that new TimestampType. The patch is against 1.2 right now, but I'm
starting to wonder if 2.0 is not a more reasonable goal.

The basics of the patch is that the CQL3 timestamp type now default to that new type. For
the native protocol however, we make both DateType and TimestampType be returned as 'timestamp'.
Otherwise, if we were returning it as a custom type, this would likely break users since client
driver wouldn't recognize it anymore. Besides, the actual sorting of a type in a ResultSet
shouldn't matter for a CQL3 driver.

On the CQL-over-thrift side however, we return the full "thrift" comparator name, so in practice
we'd have to update cqlsh so it continues to work with dates, but the patch doesn't do it.

The patch let user switch between DateType and TimestampType, but log a warning when you do
so.
                
> DateType (timestamp type in CQL3) does not sort pre-'unix epoch' dates correctly
> --------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-5723
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-5723
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 1.2.3
>            Reporter: zhouhero
>             Fix For: 1.2.3
>
>         Attachments: 5723.txt
>
>
> - this bug can be confirmed by fellow:
> 1.create table like fellow:
> create table test2 (
> id varchar,
> c varchar,
> create_date timestamp,
> primary key(id)
> );
> create index idx_test2_c on test2 (c);
> create index idx_test2_create_date on test2 (create_date);
> 2.insert data like fellow;
> cqlsh:pgl> update test2 set create_date='1950-01-01', c='1' where id='111';
> cqlsh:pgl> update test2 set create_date='1917-01-01', c='1' where id='111';
> cqlsh:pgl> update test2 set create_date='2013-01-01', c='1' where id='111';
> 3.select data :
> cqlsh:pgl> select * from test2 where c='1' and create_date>'2011-01-01 12:00:01'
ALLOW FILTERING ;
> id | c | create_date
> -----+---+--------------------------
> 111 | 1 | 2012-12-31 15:00:00+0000
> 4. add data:
> update test2 set create_date='1917-05-01', c='1' where id='111';
> 5.select data:
> cqlsh:pgl> select * from test2 where c='1' and create_date>'2011-01-01 12:00:01'
ALLOW FILTERING ;
> id | c | create_date
> -----+---+--------------------------
> 111 | 1 | 1917-04-30 15:00:00+0000
> ↑
> the search result is not right!
> it should be fellow:
> id | c | create_date
> -----+---+--------------------------
> 111 | 1 | 2012-12-31 15:00:00+0000

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message