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)