Jaehui Lee created HBASE-29721:
----------------------------------

             Summary: Add validation for Mutations without column families
                 Key: HBASE-29721
                 URL: https://issues.apache.org/jira/browse/HBASE-29721
             Project: HBase
          Issue Type: Improvement
            Reporter: Jaehui Lee
            Assignee: Jaehui Lee


h2. Problem

When executing an Increment without column families via batch API, the client 
does not throw an error and the operation succeeds silently, resulting in no 
actual changes.
h2. Description

There are four classes that inherit from the Mutation class: Put, Increment, 
Append, and Delete.

These mutations can be executed through the following APIs:
 * Direct method calls (table.put(), table.increment(), table.append(), 
table.delete())
 * table.mutateRow()
 * bufferedMutator.mutate()
 * table.checkAndMutate()
 * table.batch()

The following table summarizes the behavior when each Mutation type lacks 
column families across different APIs:
||API \ Mutation||Put||Increment||Append||Delete||
|Direct method call|✗|✗|✗|✓|
|table.mutateRow()|✗|✓|✓|✓|
|bufferedMutator.mutate()|✗|✓|✓|✓|
|table.checkAndMutate()|✗|✓|✓|✓|
|table.batch()|✗|✓|✓|✓|

(✗ = fails/throws exception, ✓ = succeeds/allowed)

Delete operations are naturally allowed without column families because a 
Delete with only a row key means deleting the entire row.

Put operations are properly validated in all cases—they fail when column 
families are missing.

However, Increment and Append should also fail in all cases when column 
families are absent, but currently they only fail on direct method calls. They 
are incorrectly allowed through other APIs.
h2. Solution

Currently, only the validatePut() method exists to validate Put operations at 
the client level. This validation should be extended to all Mutation types 
except Delete.



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

Reply via email to