From edc36b3f9019c2ed4a70df0248c5c8d1556980b3 Mon Sep 17 00:00:00 2001 From: tedyu Date: Tue, 25 Jul 2017 17:40:06 -0700 Subject: [PATCH] HBASE-18402 Thrift2 should support DeleteFamilyVersion - revert due to missing JIRA number --- .../hadoop/hbase/thrift2/ThriftUtilities.java | 47 ++++------ .../hbase/thrift2/generated/TDeleteType.java | 8 +- .../apache/hadoop/hbase/thrift2/hbase.thrift | 4 +- .../TestThriftHBaseServiceHandler.java | 91 +------------------ 4 files changed, 21 insertions(+), 129 deletions(-) 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 f318f8e6be6..3807becaef0 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,40 +268,27 @@ public class ThriftUtilities { if (in.isSetColumns()) { out = new Delete(in.getRow()); for (TColumn column : in.getColumns()) { - if (in.isSetDeleteType()) { - switch (in.getDeleteType()) { - case DELETE_COLUMN: - if (column.isSetTimestamp()) { - out.addColumn(column.getFamily(), column.getQualifier(), column.getTimestamp()); - } else { - out.addColumn(column.getFamily(), column.getQualifier()); - } - break; - case DELETE_COLUMNS: - if (column.isSetTimestamp()) { + if (column.isSetQualifier()) { + if (column.isSetTimestamp()) { + if (in.isSetDeleteType() && + in.getDeleteType().equals(TDeleteType.DELETE_COLUMNS)) out.addColumns(column.getFamily(), column.getQualifier(), column.getTimestamp()); - } else { + else + out.addColumn(column.getFamily(), column.getQualifier(), column.getTimestamp()); + } else { + if (in.isSetDeleteType() && + in.getDeleteType().equals(TDeleteType.DELETE_COLUMNS)) 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 + out.addColumn(column.getFamily(), column.getQualifier()); } + } else { - throw new IllegalArgumentException("DeleteType is required for TDelete"); + if (column.isSetTimestamp()) { + out.addFamily(column.getFamily(), column.getTimestamp()); + } else { + out.addFamily(column.getFamily()); + } } } } else { 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 8c9aa392d70..5d47508a716 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,9 +18,7 @@ import org.apache.thrift.TEnum; */ public enum TDeleteType implements org.apache.thrift.TEnum { DELETE_COLUMN(0), - DELETE_COLUMNS(1), - DELETE_FAMILY(2), - DELETE_FAMILY_VERSION(3); + DELETE_COLUMNS(1); private final int value; @@ -45,10 +43,6 @@ 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; } 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 8c5ef599173..e2e5b2994c0 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,9 +75,7 @@ struct TResult { */ enum TDeleteType { DELETE_COLUMN = 0, - DELETE_COLUMNS = 1, - DELETE_FAMILY = 2, - DELETE_FAMILY_VERSION = 3 + DELETE_COLUMNS = 1 } /** 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 7a35d29300d..3f5c388503f 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,11 +31,8 @@ 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; @@ -78,8 +75,10 @@ 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,92 +440,6 @@ public class TestThriftHBaseServiceHandler { assertEquals(timestamp1, result.getColumnValues().get(0).getTimestamp()); } - @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();