Thx, that was the problem. When I think about it it makes sense that I should use update in this scenario and not insert.

cqlsh> create TABLE foo.bar ( key int, cluster int, col int, PRIMARY KEY (key, cluster)) ;
cqlsh> INSERT INTO foo.bar (key, cluster ) VALUES ( 1,1 );
cqlsh> SELECT * FROM foo.bar ;

 key | cluster | col
-----+---------+------
   1 |       1 | null

(1 rows)
cqlsh> UPDATE foo.bar USING TTL 10 SET col = 1 WHERE key = 1 AND cluster = 1;
cqlsh> SELECT * FROM foo.bar ;

 key | cluster | col
-----+---------+-----
   1 |       1 |   1

(1 rows)

<wait for TTL to expire>

cqlsh> SELECT * FROM foo.bar ;

 key | cluster | col
-----+---------+------
   1 |       1 | null

(1 rows)

/Tommy

On 2015-08-28 14:20, Jacques-Henri Berthemet wrote:
What if you use an update statement in the second query?

--
Jacques-Henri Berthemet

-----Original Message-----
From: Tommy Stendahl [mailto:tommy.stend...@ericsson.com]
Sent: vendredi 28 août 2015 13:34
To: user@cassandra.apache.org
Subject: Re: TTL question

Yes, I understand that but I think this gives a strange behaviour.
Having values only on the primary key columns are perfectly valid so why
should the primary key be deleted by the TTL on the non-key column.

/Tommy

On 2015-08-28 13:19, Marcin Pietraszek wrote:
Please look at primary key which you've defined. Second mutation has
exactly the same primary key - it overwrote row that you previously
had.

On Fri, Aug 28, 2015 at 1:14 PM, Tommy Stendahl
<tommy.stend...@ericsson.com> wrote:
Hi,

I did a small test using TTL but I didn't get the result I expected.

I did this in sqlsh:

cqlsh> create TABLE foo.bar ( key int, cluster int, col int, PRIMARY KEY
(key, cluster)) ;
cqlsh> INSERT INTO foo.bar (key, cluster ) VALUES ( 1,1 );
cqlsh> SELECT * FROM foo.bar ;

   key | cluster | col
-----+---------+------
     1 |       1 | null

(1 rows)
cqlsh> INSERT INTO foo.bar (key, cluster, col ) VALUES ( 1,1,1 ) USING TTL
10;
cqlsh> SELECT * FROM foo.bar ;

   key | cluster | col
-----+---------+-----
     1 |       1 |   1

(1 rows)

<wait for TTL to expire>

cqlsh> SELECT * FROM foo.bar ;

   key | cluster | col
-----+---------+-----

(0 rows)



Is this really correct?
I expected the result from the last select to be:

   key | cluster | col
-----+---------+------
     1 |       1 | null

(1 rows)


Regards,
Tommy



Reply via email to