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)