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);
}