[
https://issues.apache.org/jira/browse/HBASE-15260?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15145416#comment-15145416
]
Enis Soztutar commented on HBASE-15260:
---------------------------------------
We should differentiate in checkAndXX between byte[0] and null as the value to
check I think. Having a column value of byte[0] is different than not having
the cell. However the confusion arises because KV treats null value and byte[0]
as the same thing. ie {{Put.addColumn(cf, q, null)}} is the same thing as
{{Put.addColumn(cf, q, new byte[0])}}.
> Should we check zero length value in checkAndMutate when null is passes as
> expected value?
> ------------------------------------------------------------------------------------------
>
> Key: HBASE-15260
> URL: https://issues.apache.org/jira/browse/HBASE-15260
> Project: HBase
> Issue Type: Bug
> Reporter: Ankit Singhal
>
> Should we check zero length value in checkAndMutate when null is passes as
> expected value?
> If yes, then I think we should update the documentation for checkAndPut with
> the same as sometimes column are used for marker with empty byte array.
> {code}
> If the passed value is null, the check
> * is for the lack of column (ie: non-existance)
> boolean checkAndPut(byte[] row, byte[] family, byte[] qualifier,
> byte[] value, Put put) throws IOException;
> {code}
> otherwise , we should remove this check.
> {code}
> HRegion.class
> @Override
> public boolean checkAndMutate(byte [] row, byte [] family, byte []
> qualifier,
> CompareOp compareOp, ByteArrayComparable comparator, Mutation w,
> boolean writeToWAL)
> throws IOException{
> ...
> else if (result.size() > 0 && result.get(0).getValueLength() == 0 &&
> valueIsNull) {
> matches = true;
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)