Index: src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java =================================================================== --- src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java (revision 1241471) +++ src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java (working copy) @@ -593,12 +593,22 @@ //Setting up region String method = this.getName(); initHRegion(tableName, method, fam1); + + //Putting empty data in key + Put put = new Put(row1); + put.add(fam1, qf1, emptyVal); + + //checkAndPut with empty value + boolean res = region.checkAndMutate(row1, fam1, qf1, CompareOp.EQUAL, + new BinaryComparator(emptyVal), put, lockId, true); + assertTrue(res); + //Putting data in key - Put put = new Put(row1); + put = new Put(row1); put.add(fam1, qf1, val1); //checkAndPut with correct value - boolean res = region.checkAndMutate(row1, fam1, qf1, CompareOp.EQUAL, + res = region.checkAndMutate(row1, fam1, qf1, CompareOp.EQUAL, new BinaryComparator(emptyVal), put, lockId, true); assertTrue(res); Index: src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java (revision 1241559) +++ src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java (working copy) @@ -93,6 +93,7 @@ import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp; import org.apache.hadoop.hbase.filter.Filter; import org.apache.hadoop.hbase.filter.IncompatibleFilterException; +import org.apache.hadoop.hbase.filter.NullComparator; import org.apache.hadoop.hbase.filter.WritableByteArrayComparable; import org.apache.hadoop.hbase.io.HeapSize; import org.apache.hadoop.hbase.io.TimeRange; @@ -2275,6 +2276,9 @@ boolean matches = false; if (result.size() == 0 && valueIsNull) { matches = true; + } else if (result.size() > 0 && result.get(0).getValue().length == 0 && + valueIsNull) { + matches = true; } else if (result.size() == 1 && !valueIsNull) { KeyValue kv = result.get(0); int compareResult = comparator.compareTo(kv.getBuffer(),