[ 
https://issues.apache.org/jira/browse/HBASE-4999?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andrew Purtell resolved HBASE-4999.
-----------------------------------
    Resolution: Incomplete

> Constraints - Enhance checkAndPut to do atomic arbitrary constraint checks
> --------------------------------------------------------------------------
>
>                 Key: HBASE-4999
>                 URL: https://issues.apache.org/jira/browse/HBASE-4999
>             Project: HBase
>          Issue Type: Improvement
>          Components: Client, Coprocessors
>            Reporter: Suraj Varma
>              Labels: CAS, checkAndPut, constraints
>
> Related work: HBASE-4605
> It would be great if checkAndPut (CAS) can be enhanced to not just use a 
> value comparison as a gating factor for the put, but rather have the 
> capability of doing arbitrary constraint checks on the column value (where 
> the current comparinator approach is a subset of possible constraints that 
> can be checked). Commonly used constraints (like comparisons) can be provided 
> out of the box and we should have the ability to accept custom constraints 
> set by the client for the checkAndPut call. 
> One use-case would be the ability to implement something like the below in 
> HBase.
> Pseudo sql: 
> update table-name
> set column-name = new-value
> where (column-value - new-value) > threshold-value
> ... where the mutation would go through only if the specified constraint in 
> the where clause is true.
> Current options include using a co-processor to do 
> preCheckAndPut/postCheckAndPut constraint checks - but this is not atomic. 
> i.e. the row lock needs to be released by the co-processor before the real 
> checkAndPut call, thus not meeting the atomic requirement. 
> Everything above is still meant to be at row level (so, no cross-row 
> constraint checking is implied here).
> And ideal end result would be that an HBase client would be able to specify a 
> set of constraints on multiple column qualifiers as part of the checkAndPut 
> call. The call goes through if all the constraints are satisfied or doesn't 
> if any of the constraints fail. And the above checkAndPut should be 
> atomically executed (just like current checkAndPut semantics).



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

Reply via email to