You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ha...@apache.org on 2013/10/29 16:35:18 UTC

svn commit: r1536761 - /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/SelectOperator.java

Author: hashutosh
Date: Tue Oct 29 15:35:18 2013
New Revision: 1536761

URL: http://svn.apache.org/r1536761
Log:
HIVE-5602 : Micro optimize select operator (Ed Capriolo via Ashutosh Chauhan)

Modified:
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/SelectOperator.java

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/SelectOperator.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/SelectOperator.java?rev=1536761&r1=1536760&r2=1536761&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/SelectOperator.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/SelectOperator.java Tue Oct 29 15:35:18 2013
@@ -40,14 +40,16 @@ public class SelectOperator extends Oper
 
   transient Object[] output;
 
+  private transient boolean isSelectStarNoCompute = false;
+
   @Override
   protected void initializeOp(Configuration hconf) throws HiveException {
     // Just forward the row as is
     if (conf.isSelStarNoCompute()) {
       initializeChildren(hconf);
+      isSelectStarNoCompute = true;
       return;
     }
-
     List<ExprNodeDesc> colList = conf.getColList();
     eval = new ExprNodeEvaluator[colList.size()];
     for (int i = 0; i < colList.size(); i++) {
@@ -57,7 +59,6 @@ public class SelectOperator extends Oper
         eval[i] = ExprNodeEvaluatorFactory.toCachedEval(eval[i]);
       }
     }
-
     output = new Object[eval.length];
     LOG.info("SELECT "
         + ((StructObjectInspector) inputObjInspectors[0]).getTypeName());
@@ -68,22 +69,20 @@ public class SelectOperator extends Oper
 
   @Override
   public void processOp(Object row, int tag) throws HiveException {
-
-    // Just forward the row as is
-    if (conf.isSelStarNoCompute()) {
+    if (isSelectStarNoCompute) {
       forward(row, inputObjInspectors[tag]);
       return;
     }
-
-    for (int i = 0; i < eval.length; i++) {
-      try {
+    int i = 0;
+    try {
+      for (; i < eval.length; ++i) {
         output[i] = eval[i].evaluate(row);
-      } catch (HiveException e) {
-        throw e;
-      } catch (RuntimeException e) {
-        throw new HiveException("Error evaluating "
-            + conf.getColList().get(i).getExprString(), e);
       }
+    } catch (HiveException e) {
+      throw e;
+    } catch (RuntimeException e) {
+      throw new HiveException("Error evaluating "
+          + conf.getColList().get(i).getExprString(), e);
     }
     forward(output, outputObjInspector);
   }