You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ra...@apache.org on 2011/02/24 00:02:11 UTC

svn commit: r1073979 [1/3] - in /hbase/trunk: CHANGES.txt src/main/java/org/apache/hadoop/hbase/thrift/ThriftServer.java src/main/java/org/apache/hadoop/hbase/thrift/generated/Hbase.java src/main/resources/org/apache/hadoop/hbase/thrift/Hbase.thrift

Author: rawson
Date: Wed Feb 23 23:02:10 2011
New Revision: 1073979

URL: http://svn.apache.org/viewvc?rev=1073979&view=rev
Log:
HBASE-3542  MultiGet methods in Thrift

Modified:
    hbase/trunk/CHANGES.txt
    hbase/trunk/src/main/java/org/apache/hadoop/hbase/thrift/ThriftServer.java
    hbase/trunk/src/main/java/org/apache/hadoop/hbase/thrift/generated/Hbase.java
    hbase/trunk/src/main/resources/org/apache/hadoop/hbase/thrift/Hbase.thrift

Modified: hbase/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hbase/trunk/CHANGES.txt?rev=1073979&r1=1073978&r2=1073979&view=diff
==============================================================================
--- hbase/trunk/CHANGES.txt (original)
+++ hbase/trunk/CHANGES.txt Wed Feb 23 23:02:10 2011
@@ -107,6 +107,9 @@ Release 0.90.2 - Unreleased
                HRegionServer getMaster (Greg Bowyer via Stack)
    HBASE-3548  Fix type in documentation of pseudo distributed mode
 
+  IMPROVEMENTS
+   HBASE-3542  MultiGet methods in Thrift
+
 Release 0.90.1 - Unreleased
 
   NEW FEATURES

Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/thrift/ThriftServer.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/thrift/ThriftServer.java?rev=1073979&r1=1073978&r2=1073979&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/thrift/ThriftServer.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/thrift/ThriftServer.java Wed Feb 23 23:02:10 2011
@@ -398,6 +398,52 @@ public class ThriftServer {
       }
     }
 
+    public List<TRowResult> getRows(byte[] tableName, List<byte[]> rows)
+        throws IOError {
+      return getRowsWithColumnsTs(tableName, rows, null,
+                                  HConstants.LATEST_TIMESTAMP);
+    }
+
+    public List<TRowResult> getRowsWithColumns(byte[] tableName, List<byte[]> rows,
+        List<byte[]> columns) throws IOError {
+      return getRowsWithColumnsTs(tableName, rows, columns,
+                                  HConstants.LATEST_TIMESTAMP);
+    }
+
+    public List<TRowResult> getRowsTs(byte[] tableName, List<byte[]> rows,
+        long timestamp) throws IOError {
+      return getRowsWithColumnsTs(tableName, rows, null,
+                                  timestamp);
+    }
+
+    public List<TRowResult> getRowsWithColumnsTs(byte[] tableName, List<byte[]> rows,
+        List<byte[]> columns, long timestamp) throws IOError {
+      try {
+        List<Get> gets = new ArrayList<Get>(rows.size());
+        HTable table = getTable(tableName);
+        for (byte[] row : rows) {
+          Get get = new Get(row);
+          if (columns != null) {
+            byte[][] columnArr = columns.toArray(new byte[columns.size()][]);
+            for(byte [] column : columnArr) {
+              byte [][] famAndQf = KeyValue.parseColumn(column);
+              if (famAndQf.length == 1) {
+                get.addFamily(famAndQf[0]);
+              } else {
+                get.addColumn(famAndQf[0], famAndQf[1]);
+              }
+            }
+            get.setTimeRange(Long.MIN_VALUE, timestamp);
+          }
+          gets.add(get);
+        }
+        Result[] result = table.get(gets);
+        return ThriftUtilities.rowResultFromHBase(result);
+      } catch (IOException e) {
+        throw new IOError(e.getMessage());
+      }
+    }
+
     public void deleteAll(byte[] tableName, byte[] row, byte[] column)
         throws IOError {
       deleteAllTs(tableName, row, column, HConstants.LATEST_TIMESTAMP);