Viraj Jasani created PHOENIX-7434:
-------------------------------------

             Summary: Extend atomic support to single row delete with condition 
on non-pk columns
                 Key: PHOENIX-7434
                 URL: https://issues.apache.org/jira/browse/PHOENIX-7434
             Project: Phoenix
          Issue Type: New Feature
            Reporter: Viraj Jasani


PHOENIX-7411 introduces Atomic Delete support for the single row deletion. It 
returns result (row) back to the client (using new API) only if the given 
client initiated Delete operation deleted the row when the row was alive. In 
the context of atomicity, this means that the delete operation is already 
idempotent and will continue to be idempotent, however only the client that was 
able to successfully delete the row by taking lock on the live row (row without 
delete marker) is the only one that can return the old row result back.

PHOENIX-7411 support includes only single row if the WHERE clause contains only 
pk columns as single row point lookup plan. However, user can also add 
additional non-pk columns in the WHERE clause in addition to all pk columns, 
this also makes the Delete as single row delete only, but due to addition of 
non-pk columns, server side delete plan is used with auto-commit connections.

The sever side delete plans goes from DeleteCompiler initiating the Scan with 
attribute "_DeleteAgg" which allows UngroupedAggregateRegionObserver to execute 
Delete Mutations on the rows read by the UngroupedAggregateRegionScanner. This 
Mutation is used by IndexRegionObserver to perform the mutation at the server 
side.

Given that IndexRegionObserver already has the support for atomic single row 
delete as part of PHOENIX-7411, the proposal for this Jira is to introduce 
single row delete with condition on non-pk columns such that atomic delete 
returning the result can be used by UngroupedAggregateRegionObserver and then 
sent back to DeleteCompiler which can later on be consumed by the 
PhoenixStatement API similar to PHOENIX-7411.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to