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)