Author: jdcryans
Date: Wed Aug 25 18:58:43 2010
New Revision: 989296

URL: http://svn.apache.org/viewvc?rev=989296&view=rev
Log:
HBASE-2920  HTable.checkAndPut/Delete doesn't handle null values

Modified:
    hbase/trunk/CHANGES.txt
    hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
    
hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java

Modified: hbase/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/hbase/trunk/CHANGES.txt?rev=989296&r1=989295&r2=989296&view=diff
==============================================================================
--- hbase/trunk/CHANGES.txt (original)
+++ hbase/trunk/CHANGES.txt Wed Aug 25 18:58:43 2010
@@ -487,6 +487,7 @@ Release 0.21.0 - Unreleased
                code, ensure we log and rethrow as IOE
                (Karthik Ranganathan via Stack)
    HBASE-2915  Deadlock between HRegion.ICV and HRegion.close
+   HBASE-2920  HTable.checkAndPut/Delete doesn't handle null values
 
   IMPROVEMENTS
    HBASE-1760  Cleanup TODOs in HTable

Modified: 
hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
URL: 
http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java?rev=989296&r1=989295&r2=989296&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java 
(original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java 
Wed Aug 25 18:58:43 2010
@@ -1473,7 +1473,8 @@ public class HRegion implements HeapSize
         result = get(get);
 
         boolean matches = false;
-        if (result.size() == 0 && expectedValue.length == 0) {
+        if (result.size() == 0 &&
+            (expectedValue == null || expectedValue.length == 0)) {
           matches = true;
         } else if (result.size() == 1) {
           //Compare the expected value with the actual value

Modified: 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java
URL: 
http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java?rev=989296&r1=989295&r2=989296&view=diff
==============================================================================
--- 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java 
(original)
+++ 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java 
Wed Aug 25 18:58:43 2010
@@ -489,6 +489,14 @@ public class TestHRegion extends HBaseTe
     res = region.checkAndMutate(row1, fam1, qf1, emptyVal, delete, lockId,
         true);
     assertTrue(res);
+
+    //checkAndPut looking for a null value
+    put = new Put(row1);
+    put.add(fam1, qf1, val1);
+
+    res = region.checkAndMutate(row1, fam1, qf1, null, put, lockId, true);
+    assertTrue(res);
+    
   }
 
   public void testCheckAndMutate_WithWrongValue() throws IOException{


Reply via email to