Kadir OZDEMIR created PHOENIX-6387:
--------------------------------------

             Summary: Conditional updates on tables with indexes
                 Key: PHOENIX-6387
                 URL: https://issues.apache.org/jira/browse/PHOENIX-6387
             Project: Phoenix
          Issue Type: Improvement
    Affects Versions: 4.15.0, 5.0.0
            Reporter: Kadir OZDEMIR


For a row update done by using the UPSERT VALUES statement, the exact values of 
the columns to be updated are specified within the UPSERT statement. Regardless 
of whether a given row exists or not, after the update, we know what the 
content will be for these columns. However, this is not the case when the ON 
DUPLICATE KEY clause is added the UPSERT VALUES statement. This clause makes 
the update conditional and the end result is determined based on the conditions 
stated within the clause and the current state of the row at the time the 
update is done. Also, this clause makes the UPSERT VALUES statement atomic.

Conditional updates are supported for the tables without indexes currently. The 
current design leverages an HBase atomic operation and cannot be expanded to 
support tables with indexes since the design requires holding (HBase level) row 
locks while doing index table updates over RPCs. This results in cluster wide 
deadlocks. This jira is to redesign conditional updates using Phoenix level row 
locks instead of using HBase level row locks to also support tables with 
indexes by leveraging the design of PHOENIX-6160 which simplifies the 
concurrent mutation handling on tables with indexes.




--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to