Babar Tareen created PHOENIX-2271:
-------------------------------------

             Summary: Upsert - CheckAndPut like functionality
                 Key: PHOENIX-2271
                 URL: https://issues.apache.org/jira/browse/PHOENIX-2271
             Project: Phoenix
          Issue Type: Improvement
            Reporter: Babar Tareen


The Upsert statement does not support HBase's checkAndPut api, thus making it 
difficult to conditionally update a row. Based on the comments from PHOENIX-6, 
I have implemented such functionality. The Upsert statement is modified to 
support compare clause, which allows us to pass in an expression. The 
expression is evaluated against the current record and Upsert is only performed 
when the expression evaluates to true. More details 
[here|https://github.com/babartareen/phoenix].

h4. Examples
Given that the FirstName is always set for the users, create a user record if 
one doesn't already exist.

{code:sql}
UPSERT INTO User (UserId, FirstName, LastName, Phone, Address, PIN) VALUES (1, 
'Alice', 'A', '123 456 7890', 'Some St. in a city', 1122) COMPARE FirstName IS 
NULL;
{code}

Update the phone number for UserId '1' if the FirstName is set. Given that the 
FirstName is always set for the users, this will only update the record if it 
already exists.

{code:sql}
UPSERT INTO User (UserId, Phone) VALUES (1, '987 654 3210') COMPARE FirstName 
IS NOT NULL;
{code}

Update the phone number if the first name for UserId '1' starts with 'Al' and 
last name is 'A'

{code:sql}
UPSERT INTO User (UserId, Phone) VALUES (1, '987 654 3210') COMPARE FirstName 
LIKE 'Al%' AND LastName = 'A';  
{code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to