[ https://issues.apache.org/jira/browse/PHOENIX-6387?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Viraj Jasani updated PHOENIX-6387: ---------------------------------- Fix Version/s: (was: 5.1.3) > 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: 5.0.0, 4.15.0 > Reporter: Kadir OZDEMIR > Assignee: Tanuj Khurana > Priority: Major > Fix For: 4.17.0, 5.2.0 > > > 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)