[ 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)