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 5c9853f226..de564385b4 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 @@ -180,18 +180,16 @@ public class ThriftUtilities { out.setCheckExistenceOnly(in.isExistence_only()); } - - if (!in.isSetColumns()) { - return out; - } - - for (TColumn column : in.getColumns()) { - if (column.isSetQualifier()) { - out.addColumn(column.getFamily(), column.getQualifier()); - } else { - out.addFamily(column.getFamily()); + if (in.isSetColumns()) { + for (TColumn column : in.getColumns()) { + if (column.isSetQualifier()) { + out.addColumn(column.getFamily(), column.getQualifier()); + } else { + out.addFamily(column.getFamily()); + } } } + if (in.isSetFilterBytes()) { out.setFilter(filterFromThrift(in.getFilterBytes())); } diff --git a/hbase-thrift/src/test/java/org/apache/hadoop/hbase/thrift2/TestThriftConnection.java b/hbase-thrift/src/test/java/org/apache/hadoop/hbase/thrift2/TestThriftConnection.java index 2c9bf69b51..a11f2e88fd 100644 --- a/hbase-thrift/src/test/java/org/apache/hadoop/hbase/thrift2/TestThriftConnection.java +++ b/hbase-thrift/src/test/java/org/apache/hadoop/hbase/thrift2/TestThriftConnection.java @@ -56,6 +56,7 @@ import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.client.Table; import org.apache.hadoop.hbase.client.TableDescriptor; import org.apache.hadoop.hbase.client.TableDescriptorBuilder; +import org.apache.hadoop.hbase.filter.ColumnCountGetFilter; import org.apache.hadoop.hbase.filter.ColumnValueFilter; import org.apache.hadoop.hbase.filter.FilterList; import org.apache.hadoop.hbase.filter.PrefixFilter; @@ -315,6 +316,26 @@ public class TestThriftConnection { } + @Test + public void testHBASE22011()throws Exception{ + testHBASE22011(thriftConnection, "testHBASE22011Table"); + testHBASE22011(thriftHttpConnection, "testHBASE22011HttpTable"); + } + + public void testHBASE22011(Connection connection, String tableName) throws IOException { + createTable(thriftAdmin, tableName); + try (Table table = connection.getTable(TableName.valueOf(tableName))){ + Get get = new Get(ROW_2); + Result result = table.get(get); + assertEquals(2, result.listCells().size()); + + ColumnCountGetFilter filter = new ColumnCountGetFilter(1); + get.setFilter(filter); + result = table.get(get); + assertEquals(1, result.listCells().size()); + } + } + @Test public void testMultiGet() throws Exception { testMultiGet(thriftConnection, "testMultiGetTable");