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

Aleksey Yeschenko commented on CASSANDRA-6601:
----------------------------------------------

bq. In other words: had it been the case that writing null to a column was the 
same as deleting it I would not have thought this a bug.

It actually is the same. There is no such thing as 'null value', UPDATE SET foo 
= null is strictly equivalent to DELETE foo FROM, they'll produce the same cell 
tombstone.

> WRITETIME of a null value does not return a time
> ------------------------------------------------
>
>                 Key: CASSANDRA-6601
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-6601
>             Project: Cassandra
>          Issue Type: Bug
>         Environment: Cassandra 2.0.2
>            Reporter: Theo Hultberg
>
> When a cell's value is {{null}} the CQL {{WRITETIME}} function returns null. 
> I was expecting it to return a timestamp. Looking at the data in 
> {{cassandra-cli}} I can see that the cell has a timestamp.
> Here's a session showing the issue:
> {code}
> cqlsh> CREATE KEYSPACE writetime_test WITH replication = {'class': 
> 'SimpleStrategy','replication_factor': '1'};
> cqlsh> USE writetime_test;
> cqlsh:writetime_test> CREATE TABLE writetime_test_table (pk INT, ck INT, 
> value INT, PRIMARY KEY (pk, ck));
> cqlsh:writetime_test> INSERT INTO writetime_test_table (pk, ck, value) VALUES 
> (1, 2, null);
> cqlsh:writetime_test> SELECT WRITETIME(value) FROM writetime_test_table WHERE 
> pk = 1 AND ck = 2;
>  writetime(value)
> ------------------
>              null
> (1 rows)
> cqlsh:writetime_test> INSERT INTO writetime_test_table (pk, ck, value) VALUES 
> (2, 3, 4);
> cqlsh:writetime_test> SELECT WRITETIME(value) FROM writetime_test_table WHERE 
> pk = 2 AND ck = 3;
>  writetime(value)
> ------------------
>  1389967663822000
> (1 rows)
> cqlsh:writetime_test> SELECT WRITETIME(value) FROM writetime_test_table WHERE 
> pk = 3 AND ck = 4;
> (0 rows)
> {code}
> I first insert data where the cell value is {{null}}. When I query its 
> writetime I get a row back, but the timestamp is {{null}}.
> I then insert a row with a value, and get a timestamp in the query results, 
> as expected.
> Finally I query for the writetime of a cell that does not exist, and get no 
> rows back, just to show that there's a difference between calling 
> {{WRITETIME}} on {{null}} and on something that doesn't exist.
> Even though the value is {{null}} the cell exists and it has a timestamp. I 
> can clearly see the timestamp using {{cassandra-cli}}:
> {code}
> [default@unknown] use writetime_test;
> Authenticated to keyspace: writetime_test
> [default@writetime_test] list writetime_test_table;
> Using default limit of 100
> Using default cell limit of 100
> -------------------
> RowKey: 1
> => (name=2:, value=, timestamp=1389967959822000)
> -------------------
> RowKey: 2
> => (name=3:, value=, timestamp=1389967964749000)
> => (name=3:value, value=00000004, timestamp=1389967964749000)
> {code}
> The reason I want to get the {{WRITETIME}} of a {{null}} value is that I have 
> a table where I don't care about the value, I use the column keys as sorted 
> set. I still want to know when some of them were written though, but I can't 
> ask for the {{WRITETIME}} of something that is part of the primary key, so I 
> must use the (otherwise unused) value.
> A workaround is to write some dummy value in the cell, and that's probably 
> what I need to do, but this felt like it was a bug, it was at least not what 
> I expected.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to