Repository: hbase Updated Branches: refs/heads/master 5937202fd -> 7abaf22a1
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/7abaf22a Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/7abaf22a Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/7abaf22a Branch: refs/heads/master Commit: 7abaf22a12cc9e2655ff57ad46f66e2189fd52e2 Parents: 5937202 Author: Pankaj Kumar <pankaj...@huawei.com> Authored: Wed Apr 4 10:11:09 2018 +0530 Committer: Ashish Singhi <ashishsin...@apache.org> Committed: Wed Apr 4 10:11:09 2018 +0530 ---------------------------------------------------------------------- .../hadoop/hbase/rest/client/RemoteHTable.java | 9 +++++--- .../hbase/rest/client/TestRemoteTable.java | 22 ++++++++++++++++++++ 2 files changed, 28 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/7abaf22a/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 cc3efdd..29b48e1 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 @@ -115,13 +115,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(toURLEncodedBytes((byte[])o)); + sb.append(':'); + sb.append(toURLEncodedBytes((byte[]) o)); } else if (o instanceof KeyValue) { - sb.append(toURLEncodedBytes(CellUtil.cloneQualifier((KeyValue)o))); + if (((KeyValue) o).getQualifierLength() != 0) { + sb.append(':'); + sb.append(toURLEncodedBytes(CellUtil.cloneQualifier((KeyValue) o))); + } } else { throw new RuntimeException("object type not handled"); } http://git-wip-us.apache.org/repos/asf/hbase/blob/7abaf22a/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 5053d91..c6f5195 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 @@ -353,18 +353,27 @@ public class TestRemoteTable { Put put = new Put(ROW_3); put.addColumn(COLUMN_1, QUALIFIER_1, VALUE_1); put.addColumn(COLUMN_2, QUALIFIER_2, VALUE_2); + put.addColumn(COLUMN_3, QUALIFIER_1, VALUE_1); + put.addColumn(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); @@ -394,6 +403,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);