David Capwell created CASSANDRA-17857:
-----------------------------------------

             Summary: 4.1's upsert with adder support is not consistent with 
numbers and strings
                 Key: CASSANDRA-17857
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-17857
             Project: Cassandra
          Issue Type: Bug
          Components: CQL/Semantics, Feature/Lightweight Transactions
            Reporter: David Capwell
            Assignee: David Capwell


In 4.1 UPDATE name = name + offset support got extended to numbers and strings 
(not just counters) but the behavior isn’t consistent

Number: throws a error due to Int32Type.add(null, 42) failing
String: returns the non-null updated values

What Postgres does is keeps the value null

{code}
postgres=# create table x (pk int PRIMARY KEY, a int, b text);
CREATE TABLE
postgres=# insert into x (pk, a, b) values(0, null, null);
INSERT 0 1
postgres=# UPDATE x SET a = a + 1 WHERE pk = 0;
UPDATE 1
postgres=# select * from x;
 pk | a | b
----+---+---
  0 |   |
(1 row)
postgres=# UPDATE x SET b = b + 'one' WHERE pk = 0;
ERROR:  operator does not exist: text + unknown
LINE 1: UPDATE x SET b = b + 'one' WHERE pk = 0;
                           ^
HINT:  No operator matches the given name and argument types. You might need to 
add explicit type casts.
postgres=# UPDATE x SET b = b + CAST('one' as text) WHERE pk = 0;
ERROR:  operator does not exist: text + text
LINE 1: UPDATE x SET b = b + CAST('one' as text) WHERE pk = 0;
                           ^
HINT:  No operator matches the given name and argument types. You might need to 
add explicit type casts.
{code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to