Tanuj Khurana created PHOENIX-6714:
--------------------------------------

             Summary: Return update status from Conditional Upserts
                 Key: PHOENIX-6714
                 URL: https://issues.apache.org/jira/browse/PHOENIX-6714
             Project: Phoenix
          Issue Type: Improvement
            Reporter: Tanuj Khurana
            Assignee: Tanuj Khurana


{code:java}
0: jdbc:phoenix:localhost> upsert into T1 values ('cd', 123);
1 row affected (0.005 seconds)
0: jdbc:phoenix:localhost> upsert into T1 values ('cd', 123) on duplicate key 
ignore;
1 row affected (0.008 seconds){code}
Even when the row already exists, we return “1” row updated.
{code:java}
0: jdbc:phoenix:localhost> upsert into T1 values ('cd', 123) on duplicate key 
update
val=val;
1 row affected (0.01 seconds) {code}
In this case, the value of column ‘val’ does not change so we could return “0“ 
to denote that fact. I mentioned ”could“ because as per the current 
implementation even though from the application perspective the value of the 
column is the same, from HBase perspective we are doing another PUT mutation 
which adds another version to the underlying cell and updates the cell 
timestamp. We also update the timestamp of the empty cell. So, technically this 
is an update from HBase perspective.

Referring MYSQL which has similar conditional update constructs, its 
documentation says: “ With ON DUPLICATE KEY UPDATE, the affected-rows value per 
row is 1 if the row is inserted as a new row, 2 if an existing row is updated, 
and 0 if an existing row is set to its current values.”



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

Reply via email to