You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by te...@apache.org on 2017/07/25 10:09:37 UTC
hbase git commit: Thrift2 should support DeleteFamilyVersion type
Repository: hbase
Updated Branches:
refs/heads/master e1cd59bbc -> c891642a5
Thrift2 should support DeleteFamilyVersion type
Signed-off-by: tedyu <yu...@gmail.com>
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/c891642a
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/c891642a
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/c891642a
Branch: refs/heads/master
Commit: c891642a5f56b67e3e4f2c73e8e262e266786571
Parents: e1cd59b
Author: huzheng <op...@gmail.com>
Authored: Wed Jul 19 18:00:11 2017 +0800
Committer: tedyu <yu...@gmail.com>
Committed: Tue Jul 25 03:09:29 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/c891642a/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/c891642a/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/c891642a/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/c891642a/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<TColumnValue> columnValues = new ArrayList<TColumnValue>();
+ 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<TColumn> deleteColumns = new ArrayList<TColumn>();
+ 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<TColumnValue> columnValues = new ArrayList<TColumnValue>();
+ 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<TColumn> deleteColumns = new ArrayList<TColumn>();
+ 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();