Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id E5F72200CE0 for ; Thu, 27 Jul 2017 01:39:20 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id E46C7169CA2; Wed, 26 Jul 2017 23:39:20 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 12B6D169CA3 for ; Thu, 27 Jul 2017 01:39:19 +0200 (CEST) Received: (qmail 45179 invoked by uid 500); 26 Jul 2017 23:39:19 -0000 Mailing-List: contact commits-help@hbase.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@hbase.apache.org Delivered-To: mailing list commits@hbase.apache.org Received: (qmail 45159 invoked by uid 99); 26 Jul 2017 23:39:19 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 26 Jul 2017 23:39:19 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id A53D7E973B; Wed, 26 Jul 2017 23:39:18 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: busbey@apache.org To: commits@hbase.apache.org Date: Wed, 26 Jul 2017 23:39:19 -0000 Message-Id: <724fc061cf8747dca4f02722c8434a4d@git.apache.org> In-Reply-To: References: X-Mailer: ASF-Git Admin Mailer Subject: [2/3] hbase git commit: HBASE-18402 Thrift2 should support DeleteFamilyVersion type archived-at: Wed, 26 Jul 2017 23:39:21 -0000 HBASE-18402 Thrift2 should support DeleteFamilyVersion type Signed-off-by: tedyu Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/311ca34a Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/311ca34a Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/311ca34a Branch: refs/heads/branch-2 Commit: 311ca34aec53147f1d62b70679321573830614e1 Parents: b7045d4 Author: huzheng Authored: Wed Jul 19 18:00:11 2017 +0800 Committer: Sean Busbey Committed: Wed Jul 26 15:49:17 2017 -0700 ---------------------------------------------------------------------- .../hadoop/hbase/thrift2/ThriftUtilities.java | 47 ++++++---- .../hbase/thrift2/generated/TDeleteType.java | 8 +- .../apache/hadoop/hbase/thrift2/hbase.thrift | 4 +- .../thrift2/TestThriftHBaseServiceHandler.java | 91 +++++++++++++++++++- 4 files changed, 129 insertions(+), 21 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/311ca34a/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift2/ThriftUtilities.java ---------------------------------------------------------------------- diff --git a/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift2/ThriftUtilities.java b/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift2/ThriftUtilities.java index 3807bec..f318f8e 100644 --- a/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift2/ThriftUtilities.java +++ b/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift2/ThriftUtilities.java @@ -268,27 +268,40 @@ public class ThriftUtilities { if (in.isSetColumns()) { out = new Delete(in.getRow()); for (TColumn column : in.getColumns()) { - if (column.isSetQualifier()) { - if (column.isSetTimestamp()) { - if (in.isSetDeleteType() && - in.getDeleteType().equals(TDeleteType.DELETE_COLUMNS)) - out.addColumns(column.getFamily(), column.getQualifier(), column.getTimestamp()); - else + if (in.isSetDeleteType()) { + switch (in.getDeleteType()) { + case DELETE_COLUMN: + if (column.isSetTimestamp()) { out.addColumn(column.getFamily(), column.getQualifier(), column.getTimestamp()); - } else { - if (in.isSetDeleteType() && - in.getDeleteType().equals(TDeleteType.DELETE_COLUMNS)) - out.addColumns(column.getFamily(), column.getQualifier()); - else + } else { out.addColumn(column.getFamily(), column.getQualifier()); + } + break; + case DELETE_COLUMNS: + if (column.isSetTimestamp()) { + out.addColumns(column.getFamily(), column.getQualifier(), column.getTimestamp()); + } else { + out.addColumns(column.getFamily(), column.getQualifier()); + } + break; + case DELETE_FAMILY: + if (column.isSetTimestamp()) { + out.addFamily(column.getFamily(), column.getTimestamp()); + } else { + out.addFamily(column.getFamily()); + } + break; + case DELETE_FAMILY_VERSION: + if (column.isSetTimestamp()) { + out.addFamilyVersion(column.getFamily(), column.getTimestamp()); + } else { + throw new IllegalArgumentException( + "Timestamp is required for TDelete with DeleteFamilyVersion type"); + } + break; } - } else { - if (column.isSetTimestamp()) { - out.addFamily(column.getFamily(), column.getTimestamp()); - } else { - out.addFamily(column.getFamily()); - } + throw new IllegalArgumentException("DeleteType is required for TDelete"); } } } else { http://git-wip-us.apache.org/repos/asf/hbase/blob/311ca34a/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift2/generated/TDeleteType.java ---------------------------------------------------------------------- diff --git a/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift2/generated/TDeleteType.java b/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift2/generated/TDeleteType.java index 5d47508..8c9aa39 100644 --- a/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift2/generated/TDeleteType.java +++ b/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift2/generated/TDeleteType.java @@ -18,7 +18,9 @@ import org.apache.thrift.TEnum; */ public enum TDeleteType implements org.apache.thrift.TEnum { DELETE_COLUMN(0), - DELETE_COLUMNS(1); + DELETE_COLUMNS(1), + DELETE_FAMILY(2), + DELETE_FAMILY_VERSION(3); private final int value; @@ -43,6 +45,10 @@ public enum TDeleteType implements org.apache.thrift.TEnum { return DELETE_COLUMN; case 1: return DELETE_COLUMNS; + case 2: + return DELETE_FAMILY; + case 3: + return DELETE_FAMILY_VERSION; default: return null; } http://git-wip-us.apache.org/repos/asf/hbase/blob/311ca34a/hbase-thrift/src/main/resources/org/apache/hadoop/hbase/thrift2/hbase.thrift ---------------------------------------------------------------------- diff --git a/hbase-thrift/src/main/resources/org/apache/hadoop/hbase/thrift2/hbase.thrift b/hbase-thrift/src/main/resources/org/apache/hadoop/hbase/thrift2/hbase.thrift index e2e5b29..8c5ef59 100644 --- a/hbase-thrift/src/main/resources/org/apache/hadoop/hbase/thrift2/hbase.thrift +++ b/hbase-thrift/src/main/resources/org/apache/hadoop/hbase/thrift2/hbase.thrift @@ -75,7 +75,9 @@ struct TResult { */ enum TDeleteType { DELETE_COLUMN = 0, - DELETE_COLUMNS = 1 + DELETE_COLUMNS = 1, + DELETE_FAMILY = 2, + DELETE_FAMILY_VERSION = 3 } /** http://git-wip-us.apache.org/repos/asf/hbase/blob/311ca34a/hbase-thrift/src/test/java/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.java ---------------------------------------------------------------------- diff --git a/hbase-thrift/src/test/java/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.java b/hbase-thrift/src/test/java/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.java index 3f5c388..7a35d29 100644 --- a/hbase-thrift/src/test/java/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.java +++ b/hbase-thrift/src/test/java/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.java @@ -31,8 +31,11 @@ import org.apache.hadoop.hbase.HColumnDescriptor; import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.Admin; +import org.apache.hadoop.hbase.client.Connection; +import org.apache.hadoop.hbase.client.ConnectionFactory; import org.apache.hadoop.hbase.client.Get; import org.apache.hadoop.hbase.client.Put; +import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.client.Increment; import org.apache.hadoop.hbase.client.Delete; @@ -75,10 +78,8 @@ import org.junit.Before; import org.junit.BeforeClass; import org.junit.Rule; import org.junit.Test; -import org.junit.Rule; import org.junit.rules.TestName; import org.junit.experimental.categories.Category; -import org.junit.rules.TestName; import java.io.IOException; import java.io.InterruptedIOException; @@ -441,6 +442,92 @@ public class TestThriftHBaseServiceHandler { } @Test + public void testDeleteFamily() throws Exception { + ThriftHBaseServiceHandler handler = createHandler(); + byte[] rowName = "testDeleteFamily".getBytes(); + ByteBuffer table = wrap(tableAname); + + long timestamp1 = System.currentTimeMillis() - 10; + long timestamp2 = System.currentTimeMillis(); + + List columnValues = new ArrayList(); + TColumnValue columnValueA = + new TColumnValue(wrap(familyAname), wrap(qualifierAname), wrap(valueAname)); + columnValueA.setTimestamp(timestamp1); + columnValues.add(columnValueA); + TPut put = new TPut(wrap(rowName), columnValues); + + put.setColumnValues(columnValues); + + handler.put(table, put); + columnValueA.setTimestamp(timestamp2); + handler.put(table, put); + + TGet get = new TGet(wrap(rowName)); + get.setMaxVersions(2); + TResult result = handler.get(table, get); + assertEquals(2, result.getColumnValuesSize()); + + TDelete delete = new TDelete(wrap(rowName)); + List deleteColumns = new ArrayList(); + TColumn deleteColumn = new TColumn(wrap(familyAname)); + deleteColumns.add(deleteColumn); + delete.setColumns(deleteColumns); + delete.setDeleteType(TDeleteType.DELETE_FAMILY); + + handler.deleteSingle(table, delete); + + get = new TGet(wrap(rowName)); + result = handler.get(table, get); + assertArrayEquals(null, result.getRow()); + assertEquals(0, result.getColumnValuesSize()); + } + + @Test + public void testDeleteFamilyVersion() throws Exception { + ThriftHBaseServiceHandler handler = createHandler(); + byte[] rowName = "testDeleteFamilyVersion".getBytes(); + ByteBuffer table = wrap(tableAname); + + long timestamp1 = System.currentTimeMillis() - 10; + long timestamp2 = System.currentTimeMillis(); + + List columnValues = new ArrayList(); + TColumnValue columnValueA = + new TColumnValue(wrap(familyAname), wrap(qualifierAname), wrap(valueAname)); + columnValueA.setTimestamp(timestamp1); + columnValues.add(columnValueA); + TPut put = new TPut(wrap(rowName), columnValues); + + put.setColumnValues(columnValues); + + handler.put(table, put); + columnValueA.setTimestamp(timestamp2); + handler.put(table, put); + + TGet get = new TGet(wrap(rowName)); + get.setMaxVersions(2); + TResult result = handler.get(table, get); + assertEquals(2, result.getColumnValuesSize()); + + TDelete delete = new TDelete(wrap(rowName)); + List deleteColumns = new ArrayList(); + TColumn deleteColumn = new TColumn(wrap(familyAname)); + deleteColumn.setTimestamp(timestamp1); + deleteColumns.add(deleteColumn); + delete.setColumns(deleteColumns); + delete.setDeleteType(TDeleteType.DELETE_FAMILY_VERSION); + + handler.deleteSingle(table, delete); + + get = new TGet(wrap(rowName)); + result = handler.get(table, get); + assertArrayEquals(rowName, result.getRow()); + assertEquals(1, result.getColumnValuesSize()); + assertEquals(timestamp2, result.getColumnValues().get(0).getTimestamp()); + } + + @Test public void testIncrement() throws Exception { ThriftHBaseServiceHandler handler = createHandler(); byte[] rowName = "testIncrement".getBytes();