diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSelectOperator.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSelectOperator.java index e0c0be2..bc88bad 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSelectOperator.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSelectOperator.java @@ -91,10 +91,6 @@ protected void initializeOp(Configuration hconf) throws HiveException { } } - public void setSelectExpressions(VectorExpression[] exprs) { - this.vExpressions = exprs; - } - @Override public void processOp(Object row, int tag) throws HiveException { diff --git ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorSelectOperator.java ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorSelectOperator.java index 36fe30a..dd2f839 100644 --- ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorSelectOperator.java +++ ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorSelectOperator.java @@ -20,14 +20,23 @@ import static org.junit.Assert.assertEquals; -import org.apache.hadoop.hive.ql.exec.vector.expressions.IdentityExpression; -import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression; -import org.apache.hadoop.hive.ql.exec.vector.expressions.gen.LongColAddLongColumn; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + import org.apache.hadoop.hive.ql.exec.vector.util.VectorizedRowGroupGenUtil; import org.apache.hadoop.hive.ql.metadata.HiveException; +import org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc; +import org.apache.hadoop.hive.ql.plan.ExprNodeDesc; +import org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc; import org.apache.hadoop.hive.ql.plan.OperatorDesc; import org.apache.hadoop.hive.ql.plan.SelectDesc; +import org.apache.hadoop.hive.ql.udf.UDFOPPlus; +import org.apache.hadoop.hive.ql.udf.generic.GenericUDF; +import org.apache.hadoop.hive.ql.udf.generic.GenericUDFBridge; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; +import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory; import org.junit.Test; public class TestVectorSelectOperator { @@ -36,8 +45,10 @@ private static final long serialVersionUID = 1L; - public ValidatorVectorSelectOperator(VectorizationContext ctxt, OperatorDesc conf) { + public ValidatorVectorSelectOperator(VectorizationContext ctxt, OperatorDesc conf) + throws HiveException { super(ctxt, conf); + initializeOp(null); } /** @@ -49,8 +60,8 @@ public void forward(Object row, ObjectInspector rowInspector) throws HiveExcepti int[] projections = vrg.projectedColumns; assertEquals(2, vrg.projectionSize); - assertEquals(2, projections[0]); - assertEquals(3, projections[1]); + assertEquals(3, projections[0]); + assertEquals(2, projections[1]); LongColumnVector out0 = (LongColumnVector) vrg.cols[projections[0]]; LongColumnVector out1 = (LongColumnVector) vrg.cols[projections[1]]; @@ -62,8 +73,8 @@ public void forward(Object row, ObjectInspector rowInspector) throws HiveExcepti for (int i = 0; i < VectorizedRowBatch.DEFAULT_SIZE; i++) { assertEquals(in0.vector[i] + in1.vector[i], out0.vector[i]); - assertEquals(in2.vector[i], out0.vector[i]); - assertEquals(in3.vector[i], out1.vector[i]); + assertEquals(in3.vector[i], out0.vector[i]); + assertEquals(in2.vector[i], out1.vector[i]); } } } @@ -71,19 +82,38 @@ public void forward(Object row, ObjectInspector rowInspector) throws HiveExcepti @Test public void testSelectOperator() throws HiveException { - ValidatorVectorSelectOperator vso = new ValidatorVectorSelectOperator(null, new SelectDesc( - false)); + Map columnMap = new HashMap(); + columnMap.put("a", 0); columnMap.put("b", 1); columnMap.put("c", 2); + VectorizationContext vc = new VectorizationContext(columnMap, 3); + + SelectDesc selDesc = new SelectDesc(false); + List colList = new ArrayList(); + ExprNodeColumnDesc colDesc1 = new ExprNodeColumnDesc(Long.class, "a", "table", false); + ExprNodeColumnDesc colDesc2 = new ExprNodeColumnDesc(Long.class, "b", "table", false); + ExprNodeColumnDesc colDesc3 = new ExprNodeColumnDesc(Long.class, "c", "table", false); + ExprNodeGenericFuncDesc plusDesc = new ExprNodeGenericFuncDesc(); + GenericUDF gudf = new GenericUDFBridge("+", true, UDFOPPlus.class); + plusDesc.setGenericUDF(gudf); + List children = new ArrayList(); + children.add(colDesc1); + children.add(colDesc2); + plusDesc.setChildExprs(children); + plusDesc.setTypeInfo(TypeInfoFactory.longTypeInfo); + + colList.add(plusDesc); + colList.add(colDesc3); + selDesc.setColList(colList); + + List outputColNames = new ArrayList(); + outputColNames.add("_col0"); + outputColNames.add("_col1"); + selDesc.setOutputColumnNames(outputColNames); + + ValidatorVectorSelectOperator vso = new ValidatorVectorSelectOperator(vc, selDesc); VectorizedRowBatch vrg = VectorizedRowGroupGenUtil.getVectorizedRowBatch( VectorizedRowBatch.DEFAULT_SIZE, 4, 17); - LongColAddLongColumn lcalcExpr = new LongColAddLongColumn(0, 1, 2); - IdentityExpression iexpr = new IdentityExpression(3, "long"); - - VectorExpression[] ves = new VectorExpression[] {lcalcExpr, iexpr}; - - vso.setSelectExpressions(ves); - vso.processOp(vrg, 0); }