Repository: hbase
Updated Branches:
  refs/heads/branch-1 9ced0c936 -> 2eae8104d


HBASE-20231 Not able to delete column family from a row using RemoteHTable

Signed-off-by: Ashish Singhi <ashishsin...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/2eae8104
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/2eae8104
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/2eae8104

Branch: refs/heads/branch-1
Commit: 2eae8104d19cc8be1b69f4969623b9a9f15e2593
Parents: 9ced0c9
Author: Pankaj Kumar <pankaj...@huawei.com>
Authored: Wed Apr 4 10:16:11 2018 +0530
Committer: Ashish Singhi <ashishsin...@apache.org>
Committed: Wed Apr 4 10:16:11 2018 +0530

----------------------------------------------------------------------
 .../hadoop/hbase/rest/client/RemoteHTable.java  |  7 +++++--
 .../hbase/rest/client/TestRemoteTable.java      | 22 ++++++++++++++++++++
 2 files changed, 27 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/2eae8104/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/client/RemoteHTable.java
----------------------------------------------------------------------
diff --git 
a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/client/RemoteHTable.java
 
b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/client/RemoteHTable.java
index 463b232..fc6a90f 100644
--- 
a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/client/RemoteHTable.java
+++ 
b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/client/RemoteHTable.java
@@ -112,13 +112,16 @@ public class RemoteHTable implements Table {
           Iterator ii = quals.iterator();
           while (ii.hasNext()) {
             sb.append(toURLEncodedBytes((byte[])e.getKey()));
-            sb.append(':');
             Object o = ii.next();
             // Puts use byte[] but Deletes use KeyValue
             if (o instanceof byte[]) {
+              sb.append(':');
               sb.append(toURLEncodedBytes((byte[])o));
             } else if (o instanceof KeyValue) {
-              sb.append(toURLEncodedBytes(((KeyValue)o).getQualifier()));
+              if (((KeyValue) o).getQualifierLength() != 0) {
+                sb.append(':');
+                sb.append(toURLEncodedBytes(((KeyValue) o).getQualifier()));
+              }
             } else {
               throw new RuntimeException("object type not handled");
             }

http://git-wip-us.apache.org/repos/asf/hbase/blob/2eae8104/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/client/TestRemoteTable.java
----------------------------------------------------------------------
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/client/TestRemoteTable.java
 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/client/TestRemoteTable.java
index 342fc4e..28f3798 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/client/TestRemoteTable.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/client/TestRemoteTable.java
@@ -349,18 +349,27 @@ public class TestRemoteTable {
     Put put = new Put(ROW_3);
     put.add(COLUMN_1, QUALIFIER_1, VALUE_1);
     put.add(COLUMN_2, QUALIFIER_2, VALUE_2);
+    put.add(COLUMN_3, QUALIFIER_1, VALUE_1);
+    put.add(COLUMN_3, QUALIFIER_2, VALUE_2);
     remoteTable.put(put);
 
     Get get = new Get(ROW_3);
     get.addFamily(COLUMN_1);
     get.addFamily(COLUMN_2);
+    get.addFamily(COLUMN_3);
     Result result = remoteTable.get(get);
     byte[] value1 = result.getValue(COLUMN_1, QUALIFIER_1);
     byte[] value2 = result.getValue(COLUMN_2, QUALIFIER_2);
+    byte[] value3 = result.getValue(COLUMN_3, QUALIFIER_1);
+    byte[] value4 = result.getValue(COLUMN_3, QUALIFIER_2);
     assertNotNull(value1);
     assertTrue(Bytes.equals(VALUE_1, value1));
     assertNotNull(value2);
     assertTrue(Bytes.equals(VALUE_2, value2));
+    assertNotNull(value3);
+    assertTrue(Bytes.equals(VALUE_1, value3));
+    assertNotNull(value4);
+    assertTrue(Bytes.equals(VALUE_2, value4));
 
     Delete delete = new Delete(ROW_3);
     delete.addColumn(COLUMN_2, QUALIFIER_2);
@@ -390,6 +399,19 @@ public class TestRemoteTable {
     assertTrue(Bytes.equals(VALUE_1, value1));
     assertNull(value2);
 
+    // Delete column family from row
+    delete = new Delete(ROW_3);
+    delete.addFamily(COLUMN_3);
+    remoteTable.delete(delete);
+
+    get = new Get(ROW_3);
+    get.addFamily(COLUMN_3);
+    result = remoteTable.get(get);
+    value3 = result.getValue(COLUMN_3, QUALIFIER_1);
+    value4 = result.getValue(COLUMN_3, QUALIFIER_2);
+    assertNull(value3);
+    assertNull(value4);
+
     delete = new Delete(ROW_3);
     remoteTable.delete(delete);
 

Reply via email to