java-driver icon indicating copy to clipboard operation
java-driver copied to clipboard

Double negation in counter updates with QueryBuilder

Open avelanarius opened this issue 2 years ago • 0 comments

Given such a query built with QueryBuilder:

QueryBuilder.update(KEYSPACE, TABLE)
            .decrement(COLUMN_SCORE, QueryBuilder.literal(beforeScore.score))
            .whereColumn(COLUMN_KEY).isEqualTo(QueryBuilder.literal(key.key))
            .whereColumn(COLUMN_MEMBER).isEqualTo(QueryBuilder.literal(member.member))
            .build()

if decrement value is negative (for example beforeScore.score equal to -13), the generated query will have double negation:

UPDATE tabletest.tablename SET score=score--13 WHERE key='key' AND member='member'

which is an invalid Scylla query. QueryBuilder should avoid generating such a query (it should change -(-13) to +13 in this case).

avelanarius avatar Jul 19 '23 11:07 avelanarius