[
https://issues.apache.org/jira/browse/PHOENIX-6387?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Viraj Jasani resolved PHOENIX-6387.
-----------------------------------
Resolution: Fixed
Thanks for the contribution [~tkhurana].
> 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)