It is not (yet) possible to use functions in LWT predicates. LWT only supports = and != plus IF (NOT) EXISTS right now Le 11 mai 2016 16:50, "Bhuvan Rawal" <bhu1ra...@gmail.com> a écrit :
> Hi, > > I was working on maintaining counters in cassandra, I read that it is not > 100% accurate, I have tested them to be extremely accurate with 3.0.5 but > going by docs there may be slight in accuracy. > > Thinking about this I thought there may be 2 approaches to resolve this: > 1. Read the existing count and write the new count if table count is the > count earlier fetched using LWT transaction. > 2. Read the existing writetime(count) and write the new count if > writetime(count) is the writetime count earlier fetched using lightweight > transaction.- > > For me approach1 is working, but approach 2 doesnt. Please Find below the > same: > > superuser@cqlsh:test_keyspace> CREATE TABLE test_keyspace.test ( > ... part_k int, > ... clust_k text, > ... count int, > ... PRIMARY KEY (part_k, clust_k) > ... ); > superuser@cqlsh:test_keyspace> insert into test(part_k , clust_k , count ) > values (2390, 'Test Ck Value', 007); > superuser@cqlsh:test_keyspace> select * from test; > > part_k | clust_k | count > --------+---------------+------- > 2390 | Test Ck Value | 7 > > superuser@cqlsh:test_keyspace> update test set count=8 where part_k=2390 > and clust_k='Test Ck Value' if count=7; > # Works perfectly > > superuser@cqlsh:test_keyspace> select > writetime(count),part_k,clust_k,count > from test; > > writetime(count) | part_k | clust_k | count > ------------------+--------+---------------+------- > 1462974475292000 | 2390 | Test Ck Value | 8 > > # Now try to use the write time in LWT > superuser@cqlsh:test_keyspace> update test set count=8 where part_k=2390 > and clust_k='Test Ck Value' if writetime(count)=1462974475292000; > SyntaxException: <ErrorMessage code=2000 [Syntax error in CQL query] > message="line 1:82 no viable alternative at input '(' (... and > clust_k='Test Ck Value' if writetime[(]...)"> > > Best Regards, > Bhuvan Rawal >