is there a way to either make TTL dynamic  (using ?)

Not at this time. There is https://issues.apache.org/jira/browse/CASSANDRA-4450 open for that, but that's not done yet.
 
tell the engine not to cache the Prepared statement. I am using the new CQL Java Driver.

In that case, just don't use a prepared statement. Use a normal, non prepared query. Yes, normal statements will be slightly slower, but if you really have to update a column while preserving its TTL, as said above you will have to do a read followed by a write, so the whole thing won't be excessively efficient and hence I doubt not using prepared statements will be the blocking part performance wise.

--
Sylvain

 


Shahryar


On Fri, Apr 26, 2013 at 11:42 AM, Sylvain Lebresne <sylvain@datastax.com> wrote:
This is indeed intended. That behavior is largely dictated by how the storage engine works, and the fact that an update does no read internally in particular.

Yet, what I do not know is whether this behavior can be changed somehow to let the initial TTL,

There's nothing like that supported, no. You have to read the value first to get his TTL and then insert whatever update you want with the TTL you've just fetch. And since we don't have a good way to do it much more efficiently than server side, we prefer not doing it. That way the performance impact is very explicit.

--
Sylvain 

 

Alain


2013/4/26 Shahryar Sedghi <shsedghi@gmail.com>
Apparently when I update a column using CQL that already has a TTL, it resets the TTL to null, so if there was already a TTL for all columns that I inserted part of a composite column set, this specific column that I updated will not expire while the others are are getting expired. Is it how it is expected to work or it is a bug?

Thanks in advance

Shahryar







--
"Life is what happens while you are making other plans." ~ John Lennon