diff --git common/src/java/org/apache/hive/common/util/DateUtils.java common/src/java/org/apache/hive/common/util/DateUtils.java
index 959a542..a1068ec 100644
--- common/src/java/org/apache/hive/common/util/DateUtils.java
+++ common/src/java/org/apache/hive/common/util/DateUtils.java
@@ -54,4 +54,24 @@ public static int parseNumericValueWithRange(String fieldName,
}
return result;
}
+
+ // From java.util.Calendar
+ private static final String[] FIELD_NAME = {
+ "ERA", "YEAR", "MONTH", "WEEK_OF_YEAR", "WEEK_OF_MONTH", "DAY_OF_MONTH",
+ "DAY_OF_YEAR", "DAY_OF_WEEK", "DAY_OF_WEEK_IN_MONTH", "AM_PM", "HOUR",
+ "HOUR_OF_DAY", "MINUTE", "SECOND", "MILLISECOND", "ZONE_OFFSET",
+ "DST_OFFSET"
+ };
+
+ /**
+ * Returns the name of the specified calendar field.
+ *
+ * @param field the calendar field
+ * @return the calendar field name
+ * @exception IndexOutOfBoundsException if field is negative,
+ * equal to or greater then FIELD_COUNT.
+ */
+ public static String getFieldName(int field) {
+ return FIELD_NAME[field];
+ }
}
diff --git ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticColumn.txt ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticColumn.txt
index e52fcc0..d8164a4 100644
--- ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticColumn.txt
@@ -157,7 +157,12 @@ public class extends VectorExpression {
public void setOutputColumn(int outputColumn) {
this.outputColumn = outputColumn;
}
-
+
+ @Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum1 + ", col " + + colNum2;
+ }
+
@Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
diff --git ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticColumnDecimal.txt ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticColumnDecimal.txt
index e1df589..31a015f 100644
--- ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticColumnDecimal.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticColumnDecimal.txt
@@ -167,6 +167,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum1 + ", col " + + colNum2;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticColumnWithConvert.txt ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticColumnWithConvert.txt
deleted file mode 100644
index bcd10a2..0000000
--- ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticColumnWithConvert.txt
+++ /dev/null
@@ -1,173 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.hadoop.hive.ql.exec.vector.expressions.gen;
-
-import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression;
-import org.apache.hadoop.hive.ql.exec.vector.expressions.NullUtil;
-import org.apache.hadoop.hive.ql.exec.vector.*;
-import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
-import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor;
-
-/**
- * Generated from template ColumnArithmeticColumnWithConvert.txt, which covers binary arithmetic
- * expressions between columns.
- */
-public class extends VectorExpression {
-
- private static final long serialVersionUID = 1L;
-
- private int colNum1;
- private int colNum2;
- private int outputColumn;
-
- public (int colNum1, int colNum2, int outputColumn) {
- this.colNum1 = colNum1;
- this.colNum2 = colNum2;
- this.outputColumn = outputColumn;
- }
-
- public () {
- }
-
- @Override
- public void evaluate(VectorizedRowBatch batch) {
-
- if (childExpressions != null) {
- super.evaluateChildren(batch);
- }
-
- inputColVector1 = () batch.cols[colNum1];
- inputColVector2 = () batch.cols[colNum2];
- outputColVector = () batch.cols[outputColumn];
- int[] sel = batch.selected;
- int n = batch.size;
- [] vector1 = inputColVector1.vector;
- [] vector2 = inputColVector2.vector;
- [] outputVector = outputColVector.vector;
-
- // return immediately if batch is empty
- if (n == 0) {
- return;
- }
-
- outputColVector.isRepeating =
- inputColVector1.isRepeating && inputColVector2.isRepeating
- || inputColVector1.isRepeating && !inputColVector1.noNulls && inputColVector1.isNull[0]
- || inputColVector2.isRepeating && !inputColVector2.noNulls && inputColVector2.isNull[0];
-
- // Handle nulls first
- NullUtil.propagateNullsColCol(
- inputColVector1, inputColVector2, outputColVector, sel, n, batch.selectedInUse);
-
- /* Disregard nulls for processing. In other words,
- * the arithmetic operation is performed even if one or
- * more inputs are null. This is to improve speed by avoiding
- * conditional checks in the inner loop.
- */
- if (inputColVector1.isRepeating && inputColVector2.isRepeating) {
- outputVector[0] = (vector1[0]) (vector2[0]);
- } else if (inputColVector1.isRepeating) {
- if (batch.selectedInUse) {
- for(int j = 0; j != n; j++) {
- int i = sel[j];
- outputVector[i] = (vector1[0]) (vector2[i]);
- }
- } else {
- for(int i = 0; i != n; i++) {
- outputVector[i] = (vector1[0]) (vector2[i]);
- }
- }
- } else if (inputColVector2.isRepeating) {
- if (batch.selectedInUse) {
- for(int j = 0; j != n; j++) {
- int i = sel[j];
- outputVector[i] = (vector1[i]) (vector2[0]);
- }
- } else {
- for(int i = 0; i != n; i++) {
- outputVector[i] = (vector1[i]) (vector2[0]);
- }
- }
- } else {
- if (batch.selectedInUse) {
- for(int j = 0; j != n; j++) {
- int i = sel[j];
- outputVector[i] = (vector1[i]) (vector2[i]);
- }
- } else {
- for(int i = 0; i != n; i++) {
- outputVector[i] = (vector1[i]) (vector2[i]);
- }
- }
- }
-
- /* For the case when the output can have null values, follow
- * the convention that the data values must be 1 for long and
- * NaN for double. This is to prevent possible later zero-divide errors
- * in complex arithmetic expressions like col2 / (col1 - 1)
- * in the case when some col1 entries are null.
- */
- NullUtil.setNullDataEntries(outputColVector, batch.selectedInUse, sel, n);
- }
-
- @Override
- public int getOutputColumn() {
- return outputColumn;
- }
-
- @Override
- public String getOutputType() {
- return "";
- }
-
- public int getColNum1() {
- return colNum1;
- }
-
- public void setColNum1(int colNum1) {
- this.colNum1 = colNum1;
- }
-
- public int getColNum2() {
- return colNum2;
- }
-
- public void setColNum2(int colNum2) {
- this.colNum2 = colNum2;
- }
-
- public void setOutputColumn(int outputColumn) {
- this.outputColumn = outputColumn;
- }
-
- @Override
- public VectorExpressionDescriptor.Descriptor getDescriptor() {
- return (new VectorExpressionDescriptor.Builder())
- .setMode(
- VectorExpressionDescriptor.Mode.PROJECTION)
- .setNumArguments(2)
- .setArgumentTypes(
- VectorExpressionDescriptor.ArgumentType.getType(""),
- VectorExpressionDescriptor.ArgumentType.getType(""))
- .setInputExpressionTypes(
- VectorExpressionDescriptor.InputExpressionType.COLUMN,
- VectorExpressionDescriptor.InputExpressionType.COLUMN).build();
- }
-}
-
diff --git ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticScalar.txt ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticScalar.txt
index 87335f1..2cc1aa2 100644
--- ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticScalar.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticScalar.txt
@@ -134,6 +134,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", val " + value;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticScalarDecimal.txt ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticScalarDecimal.txt
index 0bb1532..294bb4f 100644
--- ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticScalarDecimal.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticScalarDecimal.txt
@@ -132,6 +132,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", val " + value.toString();
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticScalarWithConvert.txt ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticScalarWithConvert.txt
deleted file mode 100644
index 105eb92..0000000
--- ql/src/gen/vectorization/ExpressionTemplates/ColumnArithmeticScalarWithConvert.txt
+++ /dev/null
@@ -1,150 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.hadoop.hive.ql.exec.vector.expressions.gen;
-
-import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression;
-import org.apache.hadoop.hive.ql.exec.vector.;
-import org.apache.hadoop.hive.ql.exec.vector.;
-import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
-import org.apache.hadoop.hive.ql.exec.vector.expressions.NullUtil;
-import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor;
-import org.apache.hadoop.hive.ql.exec.vector.*;
-
-/**
- * Generated from template ColumnArithmeticScalarWithConvert.txt, which covers binary arithmetic
- * expressions between a column and a scalar.
- */
-public class extends VectorExpression {
-
- private static final long serialVersionUID = 1L;
-
- private int colNum;
- private value;
- private int outputColumn;
-
- public (int colNum, value, int outputColumn) {
- this.colNum = colNum;
- this.value = (value);
- this.outputColumn = outputColumn;
- }
-
- public () {
- }
-
- @Override
- public void evaluate(VectorizedRowBatch batch) {
-
- if (childExpressions != null) {
- super.evaluateChildren(batch);
- }
-
- inputColVector = () batch.cols[colNum];
- outputColVector = () batch.cols[outputColumn];
- int[] sel = batch.selected;
- boolean[] inputIsNull = inputColVector.isNull;
- boolean[] outputIsNull = outputColVector.isNull;
- outputColVector.noNulls = inputColVector.noNulls;
- outputColVector.isRepeating = inputColVector.isRepeating;
- int n = batch.size;
- [] vector = inputColVector.vector;
- [] outputVector = outputColVector.vector;
-
- // return immediately if batch is empty
- if (n == 0) {
- return;
- }
-
- if (inputColVector.isRepeating) {
- outputVector[0] = (vector[0]) value;
-
- // Even if there are no nulls, we always copy over entry 0. Simplifies code.
- outputIsNull[0] = inputIsNull[0];
- } else if (inputColVector.noNulls) {
- if (batch.selectedInUse) {
- for(int j = 0; j != n; j++) {
- int i = sel[j];
- outputVector[i] = (vector[i]) value;
- }
- } else {
- for(int i = 0; i != n; i++) {
- outputVector[i] = (vector[i]) value;
- }
- }
- } else /* there are nulls */ {
- if (batch.selectedInUse) {
- for(int j = 0; j != n; j++) {
- int i = sel[j];
- outputVector[i] = (vector[i]) value;
- outputIsNull[i] = inputIsNull[i];
- }
- } else {
- for(int i = 0; i != n; i++) {
- outputVector[i] = (vector[i]) value;
- }
- System.arraycopy(inputIsNull, 0, outputIsNull, 0, n);
- }
- }
-
- NullUtil.setNullOutputEntriesColScalar(outputColVector, batch.selectedInUse, sel, n);
- }
-
- @Override
- public int getOutputColumn() {
- return outputColumn;
- }
-
- @Override
- public String getOutputType() {
- return "";
- }
-
- public int getColNum() {
- return colNum;
- }
-
- public void setColNum(int colNum) {
- this.colNum = colNum;
- }
-
- public getValue() {
- return value;
- }
-
- public void setValue( value) {
- this.value = value;
- }
-
- public void setOutputColumn(int outputColumn) {
- this.outputColumn = outputColumn;
- }
-
- @Override
- public VectorExpressionDescriptor.Descriptor getDescriptor() {
- return (new VectorExpressionDescriptor.Builder())
- .setMode(
- VectorExpressionDescriptor.Mode.PROJECTION)
- .setNumArguments(2)
- .setArgumentTypes(
- VectorExpressionDescriptor.ArgumentType.getType(""),
- VectorExpressionDescriptor.ArgumentType.getType(""))
- .setInputExpressionTypes(
- VectorExpressionDescriptor.InputExpressionType.COLUMN,
- VectorExpressionDescriptor.InputExpressionType.SCALAR).build();
- }
-}
diff --git ql/src/gen/vectorization/ExpressionTemplates/ColumnCompareColumn.txt ql/src/gen/vectorization/ExpressionTemplates/ColumnCompareColumn.txt
index f2b4c81..cbc97da 100644
--- ql/src/gen/vectorization/ExpressionTemplates/ColumnCompareColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/ColumnCompareColumn.txt
@@ -157,6 +157,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum1 + ", col " + + colNum2;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/ColumnCompareScalar.txt ql/src/gen/vectorization/ExpressionTemplates/ColumnCompareScalar.txt
index 2438ee4..6568d1c 100644
--- ql/src/gen/vectorization/ExpressionTemplates/ColumnCompareScalar.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/ColumnCompareScalar.txt
@@ -149,6 +149,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", val " + value;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideColumn.txt ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideColumn.txt
index b0f6eb1..04b533a 100644
--- ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideColumn.txt
@@ -184,6 +184,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum1 + ", col " + + colNum2;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideColumnDecimal.txt ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideColumnDecimal.txt
index 623bcfb..68c4f58 100644
--- ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideColumnDecimal.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideColumnDecimal.txt
@@ -139,6 +139,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum1 + ", col " + + colNum2;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideScalar.txt ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideScalar.txt
index c6614ab..25e0d85 100644
--- ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideScalar.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideScalar.txt
@@ -139,6 +139,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", val " + value;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideScalarDecimal.txt ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideScalarDecimal.txt
index 841ef93..0728f6c 100644
--- ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideScalarDecimal.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/ColumnDivideScalarDecimal.txt
@@ -138,6 +138,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", val " + value.toString();
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/ColumnUnaryFunc.txt ql/src/gen/vectorization/ExpressionTemplates/ColumnUnaryFunc.txt
index cf690db..efbf1ba 100644
--- ql/src/gen/vectorization/ExpressionTemplates/ColumnUnaryFunc.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/ColumnUnaryFunc.txt
@@ -122,6 +122,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/ColumnUnaryMinus.txt ql/src/gen/vectorization/ExpressionTemplates/ColumnUnaryMinus.txt
index b52b7c7..6574267 100644
--- ql/src/gen/vectorization/ExpressionTemplates/ColumnUnaryMinus.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/ColumnUnaryMinus.txt
@@ -124,6 +124,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/DateColumnArithmeticIntervalYearMonthColumn.txt ql/src/gen/vectorization/ExpressionTemplates/DateColumnArithmeticIntervalYearMonthColumn.txt
index c3d8d7e..2a9f947 100644
--- ql/src/gen/vectorization/ExpressionTemplates/DateColumnArithmeticIntervalYearMonthColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/DateColumnArithmeticIntervalYearMonthColumn.txt
@@ -181,6 +181,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum1 + ", col " + + colNum2;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/DateColumnArithmeticIntervalYearMonthScalar.txt ql/src/gen/vectorization/ExpressionTemplates/DateColumnArithmeticIntervalYearMonthScalar.txt
index d1474fb..4bbc358 100644
--- ql/src/gen/vectorization/ExpressionTemplates/DateColumnArithmeticIntervalYearMonthScalar.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/DateColumnArithmeticIntervalYearMonthScalar.txt
@@ -141,6 +141,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", val " + value;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/DateColumnArithmeticTimestampColumn.txt ql/src/gen/vectorization/ExpressionTemplates/DateColumnArithmeticTimestampColumn.txt
index 63cebaf..2e66b3a 100644
--- ql/src/gen/vectorization/ExpressionTemplates/DateColumnArithmeticTimestampColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/DateColumnArithmeticTimestampColumn.txt
@@ -170,6 +170,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum1 + ", col " + + colNum2;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/DateColumnArithmeticTimestampScalar.txt ql/src/gen/vectorization/ExpressionTemplates/DateColumnArithmeticTimestampScalar.txt
index 7aee529..e679449 100644
--- ql/src/gen/vectorization/ExpressionTemplates/DateColumnArithmeticTimestampScalar.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/DateColumnArithmeticTimestampScalar.txt
@@ -139,6 +139,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", val " + value.toString();
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/DateScalarArithmeticIntervalYearMonthColumn.txt ql/src/gen/vectorization/ExpressionTemplates/DateScalarArithmeticIntervalYearMonthColumn.txt
index c68ac34..e23dc27 100644
--- ql/src/gen/vectorization/ExpressionTemplates/DateScalarArithmeticIntervalYearMonthColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/DateScalarArithmeticIntervalYearMonthColumn.txt
@@ -155,6 +155,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "val " + value + ", col " + + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/DateScalarArithmeticTimestampColumn.txt ql/src/gen/vectorization/ExpressionTemplates/DateScalarArithmeticTimestampColumn.txt
index cb6b750..85d88fd 100644
--- ql/src/gen/vectorization/ExpressionTemplates/DateScalarArithmeticTimestampColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/DateScalarArithmeticTimestampColumn.txt
@@ -146,6 +146,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "val " + value + ", col " + + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/DecimalColumnUnaryFunc.txt ql/src/gen/vectorization/ExpressionTemplates/DecimalColumnUnaryFunc.txt
index 619015e..0b7fefc 100644
--- ql/src/gen/vectorization/ExpressionTemplates/DecimalColumnUnaryFunc.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/DecimalColumnUnaryFunc.txt
@@ -119,6 +119,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/FilterColumnBetween.txt ql/src/gen/vectorization/ExpressionTemplates/FilterColumnBetween.txt
index e9aaaf2..0a9c444 100644
--- ql/src/gen/vectorization/ExpressionTemplates/FilterColumnBetween.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/FilterColumnBetween.txt
@@ -173,7 +173,12 @@ public class extends VectorExpression {
public void setRightValue( value) {
this.leftValue = value;
}
-
+
+ @Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", left " + leftValue + ", right " + rightValue;
+ }
+
@Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
diff --git ql/src/gen/vectorization/ExpressionTemplates/FilterColumnCompareColumn.txt ql/src/gen/vectorization/ExpressionTemplates/FilterColumnCompareColumn.txt
index e25b9c2..ee80606 100644
--- ql/src/gen/vectorization/ExpressionTemplates/FilterColumnCompareColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/FilterColumnCompareColumn.txt
@@ -33,8 +33,8 @@ public class extends VectorExpression {
private static final long serialVersionUID = 1L;
- private int colNum1;
- private int colNum2;
+ protected int colNum1;
+ protected int colNum2;
public (int colNum1, int colNum2) {
this.colNum1 = colNum1;
@@ -182,6 +182,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum1 + ", col " + + colNum2;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/FilterColumnCompareScalar.txt ql/src/gen/vectorization/ExpressionTemplates/FilterColumnCompareScalar.txt
index b0f6e5c..248a66a 100644
--- ql/src/gen/vectorization/ExpressionTemplates/FilterColumnCompareScalar.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/FilterColumnCompareScalar.txt
@@ -32,8 +32,8 @@ public class extends VectorExpression {
private static final long serialVersionUID = 1L;
- private int colNum;
- private value;
+ protected int colNum;
+ protected value;
public (int colNum, value) {
this.colNum = colNum;
@@ -158,6 +158,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", val " + value;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/FilterDecimalColumnBetween.txt ql/src/gen/vectorization/ExpressionTemplates/FilterDecimalColumnBetween.txt
index d68edfa..4cef036 100644
--- ql/src/gen/vectorization/ExpressionTemplates/FilterDecimalColumnBetween.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/FilterDecimalColumnBetween.txt
@@ -155,6 +155,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", left " + leftValue.toString() + ", right " + rightValue.toString();
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/FilterDecimalColumnCompareDecimalColumn.txt ql/src/gen/vectorization/ExpressionTemplates/FilterDecimalColumnCompareDecimalColumn.txt
index a2352c6..ee450d3 100644
--- ql/src/gen/vectorization/ExpressionTemplates/FilterDecimalColumnCompareDecimalColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/FilterDecimalColumnCompareDecimalColumn.txt
@@ -430,6 +430,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum1 + ", col " + + colNum2;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/FilterDecimalColumnCompareDecimalScalar.txt ql/src/gen/vectorization/ExpressionTemplates/FilterDecimalColumnCompareDecimalScalar.txt
index bdd39b9..9943f45 100644
--- ql/src/gen/vectorization/ExpressionTemplates/FilterDecimalColumnCompareDecimalScalar.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/FilterDecimalColumnCompareDecimalScalar.txt
@@ -145,6 +145,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", val " + value.toString();
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/FilterDecimalScalarCompareDecimalColumn.txt ql/src/gen/vectorization/ExpressionTemplates/FilterDecimalScalarCompareDecimalColumn.txt
index 0608016..4477aff 100644
--- ql/src/gen/vectorization/ExpressionTemplates/FilterDecimalScalarCompareDecimalColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/FilterDecimalScalarCompareDecimalColumn.txt
@@ -145,6 +145,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "val " + value.toString() + ", col " + + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/FilterLongDoubleColumnCompareTimestampColumn.txt ql/src/gen/vectorization/ExpressionTemplates/FilterLongDoubleColumnCompareTimestampColumn.txt
index 57caf7e..610c062 100644
--- ql/src/gen/vectorization/ExpressionTemplates/FilterLongDoubleColumnCompareTimestampColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/FilterLongDoubleColumnCompareTimestampColumn.txt
@@ -170,6 +170,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum1 + ", col " + + colNum2;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/FilterLongDoubleScalarCompareTimestampColumn.txt ql/src/gen/vectorization/ExpressionTemplates/FilterLongDoubleScalarCompareTimestampColumn.txt
index f5f59c2..73c46a1 100644
--- ql/src/gen/vectorization/ExpressionTemplates/FilterLongDoubleScalarCompareTimestampColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/FilterLongDoubleScalarCompareTimestampColumn.txt
@@ -154,6 +154,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "val " + value + ", col " + + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/FilterScalarCompareColumn.txt ql/src/gen/vectorization/ExpressionTemplates/FilterScalarCompareColumn.txt
index b7544c7..037382c 100644
--- ql/src/gen/vectorization/ExpressionTemplates/FilterScalarCompareColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/FilterScalarCompareColumn.txt
@@ -32,8 +32,8 @@ public class extends VectorExpression {
private static final long serialVersionUID = 1L;
- private int colNum;
- private value;
+ protected int colNum;
+ protected value;
public ( value, int colNum) {
this.colNum = colNum;
@@ -158,6 +158,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "val " + value + ", col " + + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/FilterStringColumnBetween.txt ql/src/gen/vectorization/ExpressionTemplates/FilterStringColumnBetween.txt
index e8049da..6cbfca1 100644
--- ql/src/gen/vectorization/ExpressionTemplates/FilterStringColumnBetween.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/FilterStringColumnBetween.txt
@@ -18,6 +18,8 @@
package org.apache.hadoop.hive.ql.exec.vector.expressions.gen;
+import java.nio.charset.StandardCharsets;
+
import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression;
import org.apache.hadoop.hive.ql.exec.vector.expressions.StringExpr;
import org.apache.hadoop.hive.ql.exec.vector.BytesColumnVector;
@@ -176,7 +178,12 @@ public class extends VectorExpression {
public void setRight(byte[] value) {
this.right = value;
}
-
+
+ @Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", left " + new String(left, StandardCharsets.UTF_8) + ", right " + new String(right, StandardCharsets.UTF_8);
+ }
+
@Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
diff --git ql/src/gen/vectorization/ExpressionTemplates/FilterStringGroupColumnCompareStringGroupColumn.txt ql/src/gen/vectorization/ExpressionTemplates/FilterStringGroupColumnCompareStringGroupColumn.txt
index a72b882..9114932 100644
--- ql/src/gen/vectorization/ExpressionTemplates/FilterStringGroupColumnCompareStringGroupColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/FilterStringGroupColumnCompareStringGroupColumn.txt
@@ -477,6 +477,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum1 + ", col " + + colNum2;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/FilterStringGroupColumnCompareStringGroupScalarBase.txt ql/src/gen/vectorization/ExpressionTemplates/FilterStringGroupColumnCompareStringGroupScalarBase.txt
index 8b1c366..b56d451 100644
--- ql/src/gen/vectorization/ExpressionTemplates/FilterStringGroupColumnCompareStringGroupScalarBase.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/FilterStringGroupColumnCompareStringGroupScalarBase.txt
@@ -18,6 +18,8 @@
package org.apache.hadoop.hive.ql.exec.vector.expressions.gen;
+import java.nio.charset.StandardCharsets;
+
import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression;
import org.apache.hadoop.hive.ql.exec.vector.expressions.StringExpr;
import org.apache.hadoop.hive.ql.exec.vector.BytesColumnVector;
@@ -152,4 +154,9 @@ public abstract class extends VectorExpression {
this.value = value;
}
+ @Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", val " + new String(value, StandardCharsets.UTF_8);
+ }
+
}
\ No newline at end of file
diff --git ql/src/gen/vectorization/ExpressionTemplates/FilterStringGroupScalarCompareStringGroupColumnBase.txt ql/src/gen/vectorization/ExpressionTemplates/FilterStringGroupScalarCompareStringGroupColumnBase.txt
index 930069c..4fb5035 100644
--- ql/src/gen/vectorization/ExpressionTemplates/FilterStringGroupScalarCompareStringGroupColumnBase.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/FilterStringGroupScalarCompareStringGroupColumnBase.txt
@@ -18,6 +18,8 @@
package org.apache.hadoop.hive.ql.exec.vector.expressions.gen;
+import java.nio.charset.StandardCharsets;
+
import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression;
import org.apache.hadoop.hive.ql.exec.vector.expressions.StringExpr;
import org.apache.hadoop.hive.ql.exec.vector.BytesColumnVector;
@@ -155,4 +157,10 @@ public abstract class extends VectorExpression {
public void setValue(byte[] value) {
this.value = value;
}
+
+ @Override
+ public String vectorExpressionParameters() {
+ return "val " + new String(value, StandardCharsets.UTF_8) + ", col " + + colNum;
+ }
+
}
diff --git ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampColumnBetween.txt ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampColumnBetween.txt
index 4298d79..7863b16 100644
--- ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampColumnBetween.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampColumnBetween.txt
@@ -154,6 +154,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", left " + leftValue.toString() + ", right " + rightValue.toString();
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampColumnCompareLongDoubleColumn.txt ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampColumnCompareLongDoubleColumn.txt
index d10be96..8873826 100644
--- ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampColumnCompareLongDoubleColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampColumnCompareLongDoubleColumn.txt
@@ -167,6 +167,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum1 + ", col " + + colNum2;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampColumnCompareLongDoubleScalar.txt ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampColumnCompareLongDoubleScalar.txt
index 31c3f6b..8583eee 100644
--- ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampColumnCompareLongDoubleScalar.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampColumnCompareLongDoubleScalar.txt
@@ -150,6 +150,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", val " + value;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampColumnCompareTimestampColumn.txt ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampColumnCompareTimestampColumn.txt
index 31dce1c..eeb73c9 100644
--- ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampColumnCompareTimestampColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampColumnCompareTimestampColumn.txt
@@ -436,6 +436,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum1 + ", col " + + colNum2;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampColumnCompareTimestampScalar.txt ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampColumnCompareTimestampScalar.txt
index bab8508..23790a5 100644
--- ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampColumnCompareTimestampScalar.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampColumnCompareTimestampScalar.txt
@@ -147,6 +147,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", val " + value.toString();
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampScalarCompareLongDoubleColumn.txt ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampScalarCompareLongDoubleColumn.txt
index 5e418de..0e10779 100644
--- ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampScalarCompareLongDoubleColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampScalarCompareLongDoubleColumn.txt
@@ -43,6 +43,11 @@ public class extends {
}
@Override
+ public String vectorExpressionParameters() {
+ return "val " + value + ", col " + + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampScalarCompareTimestampColumn.txt ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampScalarCompareTimestampColumn.txt
index ff5d11e..5a6def3 100644
--- ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampScalarCompareTimestampColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/FilterTimestampScalarCompareTimestampColumn.txt
@@ -149,6 +149,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "val " + value.toString() + ", col " + + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/FilterTruncStringColumnBetween.txt ql/src/gen/vectorization/ExpressionTemplates/FilterTruncStringColumnBetween.txt
index 94a174d..781c9b8 100644
--- ql/src/gen/vectorization/ExpressionTemplates/FilterTruncStringColumnBetween.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/FilterTruncStringColumnBetween.txt
@@ -18,6 +18,8 @@
package org.apache.hadoop.hive.ql.exec.vector.expressions.gen;
+import java.nio.charset.StandardCharsets;
+
import org.apache.hadoop.hive.common.type.;
import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression;
@@ -178,7 +180,13 @@ public class extends VectorExpression {
public void setRight(byte[] value) {
this.right = value;
}
-
+
+ @Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", left " + new String(left, StandardCharsets.UTF_8) +
+ ", right " + new String(right, StandardCharsets.UTF_8);
+ }
+
@Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
diff --git ql/src/gen/vectorization/ExpressionTemplates/IfExprColumnScalar.txt ql/src/gen/vectorization/ExpressionTemplates/IfExprColumnScalar.txt
index 3a75a26..9f4bb75 100644
--- ql/src/gen/vectorization/ExpressionTemplates/IfExprColumnScalar.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/IfExprColumnScalar.txt
@@ -160,6 +160,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + arg1Column + ", col " + arg2Column + ", val "+ arg3Scalar;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/IfExprScalarColumn.txt ql/src/gen/vectorization/ExpressionTemplates/IfExprScalarColumn.txt
index 648b776..487d894 100644
--- ql/src/gen/vectorization/ExpressionTemplates/IfExprScalarColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/IfExprScalarColumn.txt
@@ -162,6 +162,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + arg1Column + ", val "+ arg2Scalar + ", col "+ arg3Column;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/IfExprScalarScalar.txt ql/src/gen/vectorization/ExpressionTemplates/IfExprScalarScalar.txt
index def9863..5651d15 100644
--- ql/src/gen/vectorization/ExpressionTemplates/IfExprScalarScalar.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/IfExprScalarScalar.txt
@@ -147,6 +147,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + arg1Column + ", val "+ arg2Scalar + ", val "+ arg3Scalar;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/IntervalYearMonthColumnArithmeticDateColumn.txt ql/src/gen/vectorization/ExpressionTemplates/IntervalYearMonthColumnArithmeticDateColumn.txt
index 8e3a419..49a1950 100644
--- ql/src/gen/vectorization/ExpressionTemplates/IntervalYearMonthColumnArithmeticDateColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/IntervalYearMonthColumnArithmeticDateColumn.txt
@@ -180,6 +180,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum1 + ", col " + + colNum2;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/IntervalYearMonthColumnArithmeticDateScalar.txt ql/src/gen/vectorization/ExpressionTemplates/IntervalYearMonthColumnArithmeticDateScalar.txt
index ad65d52..283352d 100644
--- ql/src/gen/vectorization/ExpressionTemplates/IntervalYearMonthColumnArithmeticDateScalar.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/IntervalYearMonthColumnArithmeticDateScalar.txt
@@ -141,6 +141,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", val " + value.toString();
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/IntervalYearMonthColumnArithmeticTimestampColumn.txt ql/src/gen/vectorization/ExpressionTemplates/IntervalYearMonthColumnArithmeticTimestampColumn.txt
index 858c3d7..9eba829 100644
--- ql/src/gen/vectorization/ExpressionTemplates/IntervalYearMonthColumnArithmeticTimestampColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/IntervalYearMonthColumnArithmeticTimestampColumn.txt
@@ -170,6 +170,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum1 + ", col " + + colNum2;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/IntervalYearMonthColumnArithmeticTimestampScalar.txt ql/src/gen/vectorization/ExpressionTemplates/IntervalYearMonthColumnArithmeticTimestampScalar.txt
index 66fffd2..9a06822 100644
--- ql/src/gen/vectorization/ExpressionTemplates/IntervalYearMonthColumnArithmeticTimestampScalar.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/IntervalYearMonthColumnArithmeticTimestampScalar.txt
@@ -139,6 +139,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", val " + value.toString();
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/IntervalYearMonthScalarArithmeticDateColumn.txt ql/src/gen/vectorization/ExpressionTemplates/IntervalYearMonthScalarArithmeticDateColumn.txt
index ddde913..a5d9877 100644
--- ql/src/gen/vectorization/ExpressionTemplates/IntervalYearMonthScalarArithmeticDateColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/IntervalYearMonthScalarArithmeticDateColumn.txt
@@ -155,6 +155,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "val " + value.toString() + ", col " + + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/IntervalYearMonthScalarArithmeticTimestampColumn.txt ql/src/gen/vectorization/ExpressionTemplates/IntervalYearMonthScalarArithmeticTimestampColumn.txt
index cbb7021..9a0d397 100644
--- ql/src/gen/vectorization/ExpressionTemplates/IntervalYearMonthScalarArithmeticTimestampColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/IntervalYearMonthScalarArithmeticTimestampColumn.txt
@@ -143,6 +143,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "val " + value.toString() + ", col " + + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/LongDoubleColumnCompareTimestampColumn.txt ql/src/gen/vectorization/ExpressionTemplates/LongDoubleColumnCompareTimestampColumn.txt
index 9ccfaac..cff2deb 100644
--- ql/src/gen/vectorization/ExpressionTemplates/LongDoubleColumnCompareTimestampColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/LongDoubleColumnCompareTimestampColumn.txt
@@ -139,6 +139,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum1 + ", col " + + colNum2;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/LongDoubleColumnCompareTimestampScalar.txt ql/src/gen/vectorization/ExpressionTemplates/LongDoubleColumnCompareTimestampScalar.txt
index c7d8c65..8308a30 100644
--- ql/src/gen/vectorization/ExpressionTemplates/LongDoubleColumnCompareTimestampScalar.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/LongDoubleColumnCompareTimestampScalar.txt
@@ -129,6 +129,10 @@ public class extends VectorExpression {
return "long";
}
+ @Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", val " + value;
+ }
@Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
diff --git ql/src/gen/vectorization/ExpressionTemplates/LongDoubleScalarCompareTimestampColumn.txt ql/src/gen/vectorization/ExpressionTemplates/LongDoubleScalarCompareTimestampColumn.txt
index d47bc10..6aa30e4 100644
--- ql/src/gen/vectorization/ExpressionTemplates/LongDoubleScalarCompareTimestampColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/LongDoubleScalarCompareTimestampColumn.txt
@@ -129,6 +129,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "val " + value + ", col " + + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/ScalarArithmeticColumn.txt ql/src/gen/vectorization/ExpressionTemplates/ScalarArithmeticColumn.txt
index 4fcbdc0..8473599 100644
--- ql/src/gen/vectorization/ExpressionTemplates/ScalarArithmeticColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/ScalarArithmeticColumn.txt
@@ -146,6 +146,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "val " + value + ", col " + + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/ScalarArithmeticColumnDecimal.txt ql/src/gen/vectorization/ExpressionTemplates/ScalarArithmeticColumnDecimal.txt
index ea55bec..d3fd9bd 100644
--- ql/src/gen/vectorization/ExpressionTemplates/ScalarArithmeticColumnDecimal.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/ScalarArithmeticColumnDecimal.txt
@@ -129,6 +129,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "val " + value.toString() + ", col " + + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/ScalarArithmeticColumnWithConvert.txt ql/src/gen/vectorization/ExpressionTemplates/ScalarArithmeticColumnWithConvert.txt
deleted file mode 100644
index 91887c8..0000000
--- ql/src/gen/vectorization/ExpressionTemplates/ScalarArithmeticColumnWithConvert.txt
+++ /dev/null
@@ -1,163 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.hadoop.hive.ql.exec.vector.expressions.gen;
-
-import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression;
-import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor;
-import org.apache.hadoop.hive.ql.exec.vector.*;
-
-
-/*
- * Because of the templatized nature of the code, either or both
- * of these ColumnVector imports may be needed. Listing both of them
- * rather than using ....vectorization.*;
- */
-import org.apache.hadoop.hive.ql.exec.vector.DoubleColumnVector;
-import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector;
-import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
-import org.apache.hadoop.hive.ql.exec.vector.expressions.NullUtil;
-
-/**
- * Generated from template ScalarArithmeticColumnWithConvert.txt.
- * Implements a vectorized arithmetic operator with a scalar on the left and a
- * column vector on the right. The result is output to an output column vector.
- */
-public class extends VectorExpression {
-
- private static final long serialVersionUID = 1L;
-
- private int colNum;
- private value;
- private int outputColumn;
-
- public ( value, int colNum, int outputColumn) {
- this.colNum = colNum;
- this.value = (value);
- this.outputColumn = outputColumn;
- }
-
- public () {
- }
-
- @Override
- /**
- * Method to evaluate scalar-column operation in vectorized fashion.
- *
- * @batch a package of rows with each column stored in a vector
- */
- public void evaluate(VectorizedRowBatch batch) {
-
- if (childExpressions != null) {
- super.evaluateChildren(batch);
- }
-
- inputColVector = () batch.cols[colNum];
- outputColVector = () batch.cols[outputColumn];
- int[] sel = batch.selected;
- boolean[] inputIsNull = inputColVector.isNull;
- boolean[] outputIsNull = outputColVector.isNull;
- outputColVector.noNulls = inputColVector.noNulls;
- outputColVector.isRepeating = inputColVector.isRepeating;
- int n = batch.size;
- [] vector = inputColVector.vector;
- [] outputVector = outputColVector.vector;
-
- // return immediately if batch is empty
- if (n == 0) {
- return;
- }
-
- if (inputColVector.isRepeating) {
- outputVector[0] = value (vector[0]);
-
- // Even if there are no nulls, we always copy over entry 0. Simplifies code.
- outputIsNull[0] = inputIsNull[0];
- } else if (inputColVector.noNulls) {
- if (batch.selectedInUse) {
- for(int j = 0; j != n; j++) {
- int i = sel[j];
- outputVector[i] = value (vector[i]);
- }
- } else {
- for(int i = 0; i != n; i++) {
- outputVector[i] = value (vector[i]);
- }
- }
- } else { /* there are nulls */
- if (batch.selectedInUse) {
- for(int j = 0; j != n; j++) {
- int i = sel[j];
- outputVector[i] = value (vector[i]);
- outputIsNull[i] = inputIsNull[i];
- }
- } else {
- for(int i = 0; i != n; i++) {
- outputVector[i] = value (vector[i]);
- }
- System.arraycopy(inputIsNull, 0, outputIsNull, 0, n);
- }
- }
-
- NullUtil.setNullOutputEntriesColScalar(outputColVector, batch.selectedInUse, sel, n);
- }
-
- @Override
- public int getOutputColumn() {
- return outputColumn;
- }
-
- @Override
- public String getOutputType() {
- return "";
- }
-
- public int getColNum() {
- return colNum;
- }
-
- public void setColNum(int colNum) {
- this.colNum = colNum;
- }
-
- public getValue() {
- return value;
- }
-
- public void setValue( value) {
- this.value = value;
- }
-
- public void setOutputColumn(int outputColumn) {
- this.outputColumn = outputColumn;
- }
-
- @Override
- public VectorExpressionDescriptor.Descriptor getDescriptor() {
- return (new VectorExpressionDescriptor.Builder())
- .setMode(
- VectorExpressionDescriptor.Mode.PROJECTION)
- .setNumArguments(2)
- .setArgumentTypes(
- VectorExpressionDescriptor.ArgumentType.getType(""),
- VectorExpressionDescriptor.ArgumentType.getType(""))
- .setInputExpressionTypes(
- VectorExpressionDescriptor.InputExpressionType.SCALAR,
- VectorExpressionDescriptor.InputExpressionType.COLUMN).build();
- }
-}
diff --git ql/src/gen/vectorization/ExpressionTemplates/ScalarCompareColumn.txt ql/src/gen/vectorization/ExpressionTemplates/ScalarCompareColumn.txt
index e6e59f5..6f9e2e2 100644
--- ql/src/gen/vectorization/ExpressionTemplates/ScalarCompareColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/ScalarCompareColumn.txt
@@ -149,6 +149,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "val " + value + ", col " + + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/ScalarDivideColumn.txt ql/src/gen/vectorization/ExpressionTemplates/ScalarDivideColumn.txt
index f8a8457..8e6e8a9 100644
--- ql/src/gen/vectorization/ExpressionTemplates/ScalarDivideColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/ScalarDivideColumn.txt
@@ -162,6 +162,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "val " + value + ", col " + + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/ScalarDivideColumnDecimal.txt ql/src/gen/vectorization/ExpressionTemplates/ScalarDivideColumnDecimal.txt
index c8a5d17..1014978 100644
--- ql/src/gen/vectorization/ExpressionTemplates/ScalarDivideColumnDecimal.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/ScalarDivideColumnDecimal.txt
@@ -131,6 +131,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "val " + value.toString() + ", col " + + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/StringGroupColumnCompareStringGroupColumn.txt ql/src/gen/vectorization/ExpressionTemplates/StringGroupColumnCompareStringGroupColumn.txt
index e881037..747f707 100644
--- ql/src/gen/vectorization/ExpressionTemplates/StringGroupColumnCompareStringGroupColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/StringGroupColumnCompareStringGroupColumn.txt
@@ -493,6 +493,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum1 + ", col " + + colNum2;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/StringGroupColumnCompareStringGroupScalarBase.txt ql/src/gen/vectorization/ExpressionTemplates/StringGroupColumnCompareStringGroupScalarBase.txt
index 92bf27a..d9530d6 100644
--- ql/src/gen/vectorization/ExpressionTemplates/StringGroupColumnCompareStringGroupScalarBase.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/StringGroupColumnCompareStringGroupScalarBase.txt
@@ -18,6 +18,8 @@
package org.apache.hadoop.hive.ql.exec.vector.expressions.gen;
+import java.nio.charset.StandardCharsets;
+
import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression;
import org.apache.hadoop.hive.ql.exec.vector.expressions.StringExpr;
import org.apache.hadoop.hive.ql.exec.vector.BytesColumnVector;
@@ -155,4 +157,8 @@ public abstract class extends VectorExpression {
this.outputColumn = outputColumn;
}
+ @Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", val " + new String(value, StandardCharsets.UTF_8);
+ }
}
\ No newline at end of file
diff --git ql/src/gen/vectorization/ExpressionTemplates/StringGroupColumnCompareTruncStringScalar.txt ql/src/gen/vectorization/ExpressionTemplates/StringGroupColumnCompareTruncStringScalar.txt
index 8a92f54..8e36fc0 100644
--- ql/src/gen/vectorization/ExpressionTemplates/StringGroupColumnCompareTruncStringScalar.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/StringGroupColumnCompareTruncStringScalar.txt
@@ -20,6 +20,8 @@ package org.apache.hadoop.hive.ql.exec.vector.expressions.gen;
import org.apache.hadoop.hive.ql.exec.vector.expressions.gen.;
+import java.nio.charset.StandardCharsets;
+
import org.apache.hadoop.hive.common.type.;
import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression;
@@ -44,6 +46,11 @@ public class extends {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", val " + new String(value, StandardCharsets.UTF_8);
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/StringGroupScalarCompareStringGroupColumnBase.txt ql/src/gen/vectorization/ExpressionTemplates/StringGroupScalarCompareStringGroupColumnBase.txt
index 238dc93..5eed703 100644
--- ql/src/gen/vectorization/ExpressionTemplates/StringGroupScalarCompareStringGroupColumnBase.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/StringGroupScalarCompareStringGroupColumnBase.txt
@@ -18,6 +18,8 @@
package org.apache.hadoop.hive.ql.exec.vector.expressions.gen;
+import java.nio.charset.StandardCharsets;
+
import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression;
import org.apache.hadoop.hive.ql.exec.vector.expressions.StringExpr;
import org.apache.hadoop.hive.ql.exec.vector.BytesColumnVector;
@@ -154,4 +156,9 @@ public abstract class extends VectorExpression {
public void setOutputColumn(int outputColumn) {
this.outputColumn = outputColumn;
}
+
+ @Override
+ public String vectorExpressionParameters() {
+ return "val " + new String(value, StandardCharsets.UTF_8) + ", col " + + colNum;
+ }
}
\ No newline at end of file
diff --git ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnArithmeticDateColumn.txt ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnArithmeticDateColumn.txt
index 27e083d..7aeff81 100644
--- ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnArithmeticDateColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnArithmeticDateColumn.txt
@@ -171,6 +171,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum1 + ", col " + + colNum2;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnArithmeticDateScalar.txt ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnArithmeticDateScalar.txt
index 8b91a4a..f8cb880 100644
--- ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnArithmeticDateScalar.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnArithmeticDateScalar.txt
@@ -132,6 +132,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", val " + value.toString();
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnArithmeticIntervalYearMonthColumn.txt ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnArithmeticIntervalYearMonthColumn.txt
index 4ac2174..989e2f5 100644
--- ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnArithmeticIntervalYearMonthColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnArithmeticIntervalYearMonthColumn.txt
@@ -170,6 +170,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum1 + ", col " + + colNum2;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnArithmeticIntervalYearMonthScalar.txt ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnArithmeticIntervalYearMonthScalar.txt
index 9382aca..a90b1b2 100644
--- ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnArithmeticIntervalYearMonthScalar.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnArithmeticIntervalYearMonthScalar.txt
@@ -128,6 +128,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", val " + value.toString();
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnArithmeticTimestampColumn.txt ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnArithmeticTimestampColumn.txt
index 5eaa450..ad43cac 100644
--- ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnArithmeticTimestampColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnArithmeticTimestampColumn.txt
@@ -161,6 +161,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum1 + ", col " + + colNum2;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnArithmeticTimestampScalar.txt ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnArithmeticTimestampScalar.txt
index c6c872f..32b49a3 100644
--- ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnArithmeticTimestampScalar.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnArithmeticTimestampScalar.txt
@@ -130,6 +130,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", val " + value.toString();
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnCompareLongDoubleColumn.txt ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnCompareLongDoubleColumn.txt
index 0fc402d..7267148 100644
--- ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnCompareLongDoubleColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnCompareLongDoubleColumn.txt
@@ -138,6 +138,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum1 + ", col " + + colNum2;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnCompareLongDoubleScalar.txt ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnCompareLongDoubleScalar.txt
index e0ae206..2be05f3 100644
--- ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnCompareLongDoubleScalar.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnCompareLongDoubleScalar.txt
@@ -129,6 +129,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", val " + value;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnCompareTimestampColumn.txt ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnCompareTimestampColumn.txt
index f9fc425..2710fa4 100644
--- ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnCompareTimestampColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnCompareTimestampColumn.txt
@@ -143,6 +143,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum1 + ", col " + + colNum2;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnCompareTimestampScalar.txt ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnCompareTimestampScalar.txt
index 90701ec..32647f2 100644
--- ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnCompareTimestampScalar.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/TimestampColumnCompareTimestampScalar.txt
@@ -133,6 +133,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", val " + value.toString();
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/TimestampScalarArithmeticDateColumn.txt ql/src/gen/vectorization/ExpressionTemplates/TimestampScalarArithmeticDateColumn.txt
index f958be8..dea4db2 100644
--- ql/src/gen/vectorization/ExpressionTemplates/TimestampScalarArithmeticDateColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/TimestampScalarArithmeticDateColumn.txt
@@ -153,6 +153,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "val " + value.toString() + ", col " + + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/TimestampScalarArithmeticIntervalYearMonthColumn.txt ql/src/gen/vectorization/ExpressionTemplates/TimestampScalarArithmeticIntervalYearMonthColumn.txt
index 585027a..e82b9e2 100644
--- ql/src/gen/vectorization/ExpressionTemplates/TimestampScalarArithmeticIntervalYearMonthColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/TimestampScalarArithmeticIntervalYearMonthColumn.txt
@@ -152,6 +152,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "val " + value.toString() + ", col " + + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/TimestampScalarArithmeticTimestampColumn.txt ql/src/gen/vectorization/ExpressionTemplates/TimestampScalarArithmeticTimestampColumn.txt
index 996c86a..0d8a26b 100644
--- ql/src/gen/vectorization/ExpressionTemplates/TimestampScalarArithmeticTimestampColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/TimestampScalarArithmeticTimestampColumn.txt
@@ -143,6 +143,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "val " + value.toString() + ", col " + + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/TimestampScalarCompareTimestampColumn.txt ql/src/gen/vectorization/ExpressionTemplates/TimestampScalarCompareTimestampColumn.txt
index 6506c93..ec0a395 100644
--- ql/src/gen/vectorization/ExpressionTemplates/TimestampScalarCompareTimestampColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/TimestampScalarCompareTimestampColumn.txt
@@ -135,6 +135,11 @@ public class extends VectorExpression {
}
@Override
+ public String vectorExpressionParameters() {
+ return "val " + value.toString() + ", col " + + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/gen/vectorization/ExpressionTemplates/TruncStringScalarCompareStringGroupColumn.txt ql/src/gen/vectorization/ExpressionTemplates/TruncStringScalarCompareStringGroupColumn.txt
index a9a3b6d..26da73a 100644
--- ql/src/gen/vectorization/ExpressionTemplates/TruncStringScalarCompareStringGroupColumn.txt
+++ ql/src/gen/vectorization/ExpressionTemplates/TruncStringScalarCompareStringGroupColumn.txt
@@ -20,6 +20,8 @@ package org.apache.hadoop.hive.ql.exec.vector.expressions.gen;
import org.apache.hadoop.hive.ql.exec.vector.expressions.gen.;
+import java.nio.charset.StandardCharsets;
+
import org.apache.hadoop.hive.common.type.;
import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression;
diff --git ql/src/gen/vectorization/UDAFTemplates/VectorUDAFAvg.txt ql/src/gen/vectorization/UDAFTemplates/VectorUDAFAvg.txt
index d153fd6..4393c3b 100644
--- ql/src/gen/vectorization/UDAFTemplates/VectorUDAFAvg.txt
+++ ql/src/gen/vectorization/UDAFTemplates/VectorUDAFAvg.txt
@@ -85,6 +85,12 @@ public class extends VectorAggregateExpression {
}
private VectorExpression inputExpression;
+
+ @Override
+ public VectorExpression inputExpression() {
+ return inputExpression;
+ }
+
transient private Object[] partialResult;
transient private LongWritable resultCount;
transient private DoubleWritable resultSum;
diff --git ql/src/gen/vectorization/UDAFTemplates/VectorUDAFMinMax.txt ql/src/gen/vectorization/UDAFTemplates/VectorUDAFMinMax.txt
index 46d66bd..7468c2f 100644
--- ql/src/gen/vectorization/UDAFTemplates/VectorUDAFMinMax.txt
+++ ql/src/gen/vectorization/UDAFTemplates/VectorUDAFMinMax.txt
@@ -77,6 +77,12 @@ public class extends VectorAggregateExpression {
}
private VectorExpression inputExpression;
+
+ @Override
+ public VectorExpression inputExpression() {
+ return inputExpression;
+ }
+
private transient VectorExpressionWriter resultWriter;
public (VectorExpression inputExpression) {
diff --git ql/src/gen/vectorization/UDAFTemplates/VectorUDAFMinMaxDecimal.txt ql/src/gen/vectorization/UDAFTemplates/VectorUDAFMinMaxDecimal.txt
index b532e2f..57b7ea5 100644
--- ql/src/gen/vectorization/UDAFTemplates/VectorUDAFMinMaxDecimal.txt
+++ ql/src/gen/vectorization/UDAFTemplates/VectorUDAFMinMaxDecimal.txt
@@ -82,6 +82,12 @@ public class extends VectorAggregateExpression {
}
private VectorExpression inputExpression;
+
+ @Override
+ public VectorExpression inputExpression() {
+ return inputExpression;
+ }
+
private transient VectorExpressionWriter resultWriter;
public (VectorExpression inputExpression) {
diff --git ql/src/gen/vectorization/UDAFTemplates/VectorUDAFMinMaxIntervalDayTime.txt ql/src/gen/vectorization/UDAFTemplates/VectorUDAFMinMaxIntervalDayTime.txt
index 3cdf7e2..749e97e 100644
--- ql/src/gen/vectorization/UDAFTemplates/VectorUDAFMinMaxIntervalDayTime.txt
+++ ql/src/gen/vectorization/UDAFTemplates/VectorUDAFMinMaxIntervalDayTime.txt
@@ -81,6 +81,12 @@ public class extends VectorAggregateExpression {
}
private VectorExpression inputExpression;
+
+ @Override
+ public VectorExpression inputExpression() {
+ return inputExpression;
+ }
+
private transient VectorExpressionWriter resultWriter;
public (VectorExpression inputExpression) {
diff --git ql/src/gen/vectorization/UDAFTemplates/VectorUDAFMinMaxString.txt ql/src/gen/vectorization/UDAFTemplates/VectorUDAFMinMaxString.txt
index cdce457..9dfc147 100644
--- ql/src/gen/vectorization/UDAFTemplates/VectorUDAFMinMaxString.txt
+++ ql/src/gen/vectorization/UDAFTemplates/VectorUDAFMinMaxString.txt
@@ -93,6 +93,12 @@ public class extends VectorAggregateExpression {
}
private VectorExpression inputExpression;
+
+ @Override
+ public VectorExpression inputExpression() {
+ return inputExpression;
+ }
+
transient private Text result;
public (VectorExpression inputExpression) {
diff --git ql/src/gen/vectorization/UDAFTemplates/VectorUDAFMinMaxTimestamp.txt ql/src/gen/vectorization/UDAFTemplates/VectorUDAFMinMaxTimestamp.txt
index 7e34965..32ecb34 100644
--- ql/src/gen/vectorization/UDAFTemplates/VectorUDAFMinMaxTimestamp.txt
+++ ql/src/gen/vectorization/UDAFTemplates/VectorUDAFMinMaxTimestamp.txt
@@ -83,6 +83,12 @@ public class extends VectorAggregateExpression {
}
private VectorExpression inputExpression;
+
+ @Override
+ public VectorExpression inputExpression() {
+ return inputExpression;
+ }
+
private transient VectorExpressionWriter resultWriter;
public (VectorExpression inputExpression) {
diff --git ql/src/gen/vectorization/UDAFTemplates/VectorUDAFSum.txt ql/src/gen/vectorization/UDAFTemplates/VectorUDAFSum.txt
index cc7e54d..bd0f14d 100644
--- ql/src/gen/vectorization/UDAFTemplates/VectorUDAFSum.txt
+++ ql/src/gen/vectorization/UDAFTemplates/VectorUDAFSum.txt
@@ -78,6 +78,12 @@ public class extends VectorAggregateExpression {
}
private VectorExpression inputExpression;
+
+ @Override
+ public VectorExpression inputExpression() {
+ return inputExpression;
+ }
+
transient private final result;
public (VectorExpression inputExpression) {
diff --git ql/src/gen/vectorization/UDAFTemplates/VectorUDAFVar.txt ql/src/gen/vectorization/UDAFTemplates/VectorUDAFVar.txt
index c6c9c52..dc9d4b1 100644
--- ql/src/gen/vectorization/UDAFTemplates/VectorUDAFVar.txt
+++ ql/src/gen/vectorization/UDAFTemplates/VectorUDAFVar.txt
@@ -84,6 +84,12 @@ public class extends VectorAggregateExpression {
}
private VectorExpression inputExpression;
+
+ @Override
+ public VectorExpression inputExpression() {
+ return inputExpression;
+ }
+
transient private LongWritable resultCount;
transient private DoubleWritable resultSum;
transient private DoubleWritable resultVariance;
diff --git ql/src/gen/vectorization/UDAFTemplates/VectorUDAFVarDecimal.txt ql/src/gen/vectorization/UDAFTemplates/VectorUDAFVarDecimal.txt
index 8fc94ba..01062a9 100644
--- ql/src/gen/vectorization/UDAFTemplates/VectorUDAFVarDecimal.txt
+++ ql/src/gen/vectorization/UDAFTemplates/VectorUDAFVarDecimal.txt
@@ -111,6 +111,12 @@ public class extends VectorAggregateExpression {
}
private VectorExpression inputExpression;
+
+ @Override
+ public VectorExpression inputExpression() {
+ return inputExpression;
+ }
+
transient private LongWritable resultCount;
transient private DoubleWritable resultSum;
transient private DoubleWritable resultVariance;
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/ExplainTask.java ql/src/java/org/apache/hadoop/hive/ql/exec/ExplainTask.java
index b8a4693..74cec3e 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/ExplainTask.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/ExplainTask.java
@@ -20,6 +20,8 @@
import static org.apache.hadoop.hive.serde.serdeConstants.STRING_TYPE_NAME;
+import org.apache.commons.lang3.tuple.ImmutablePair;
+
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.Serializable;
@@ -35,30 +37,68 @@
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.Stack;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;
import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.hive.common.ObjectPair;
import org.apache.hadoop.hive.common.jsonexplain.JsonParser;
import org.apache.hadoop.hive.common.jsonexplain.JsonParserFactory;
+import org.apache.hadoop.hive.conf.HiveConf;
+import org.apache.hadoop.hive.conf.Validator.StringSet;
import org.apache.hadoop.hive.metastore.api.FieldSchema;
import org.apache.hadoop.hive.ql.Driver;
import org.apache.hadoop.hive.ql.DriverContext;
+import org.apache.hadoop.hive.ql.exec.spark.SparkTask;
+import org.apache.hadoop.hive.ql.exec.tez.TezTask;
+import org.apache.hadoop.hive.ql.exec.vector.VectorGroupByOperator;
+import org.apache.hadoop.hive.ql.exec.vector.VectorizationContext;
+import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression;
+import org.apache.hadoop.hive.ql.exec.vector.expressions.aggregates.VectorAggregateExpression;
+import org.apache.hadoop.hive.ql.plan.MapJoinDesc;
+import org.apache.hadoop.hive.ql.plan.ReduceSinkDesc;
import org.apache.hadoop.hive.ql.hooks.ReadEntity;
+import org.apache.hadoop.hive.ql.io.AcidUtils;
+import org.apache.hadoop.hive.ql.lib.DefaultGraphWalker;
+import org.apache.hadoop.hive.ql.lib.DefaultRuleDispatcher;
+import org.apache.hadoop.hive.ql.lib.Dispatcher;
+import org.apache.hadoop.hive.ql.lib.GraphWalker;
+import org.apache.hadoop.hive.ql.lib.Node;
+import org.apache.hadoop.hive.ql.lib.NodeProcessor;
+import org.apache.hadoop.hive.ql.lib.NodeProcessorCtx;
+import org.apache.hadoop.hive.ql.lib.Rule;
import org.apache.hadoop.hive.ql.metadata.Table;
import org.apache.hadoop.hive.ql.optimizer.physical.StageIDsRearranger;
+import org.apache.hadoop.hive.ql.optimizer.physical.Vectorizer;
+import org.apache.hadoop.hive.ql.optimizer.physical.VectorizerReason;
import org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer;
+import org.apache.hadoop.hive.ql.parse.ExplainConfiguration.VectorizationDetailLevel;
+import org.apache.hadoop.hive.ql.parse.SemanticException;
+import org.apache.hadoop.hive.ql.plan.BaseWork;
import org.apache.hadoop.hive.ql.plan.Explain;
import org.apache.hadoop.hive.ql.plan.Explain.Level;
+import org.apache.hadoop.hive.ql.plan.Explain.Vectorization;
+import org.apache.hadoop.hive.ql.plan.AggregationDesc;
import org.apache.hadoop.hive.ql.plan.ExplainWork;
+import org.apache.hadoop.hive.ql.plan.GroupByDesc;
import org.apache.hadoop.hive.ql.plan.HiveOperation;
+import org.apache.hadoop.hive.ql.plan.MapredWork;
+import org.apache.hadoop.hive.ql.plan.MapWork;
+import org.apache.hadoop.hive.ql.plan.ReduceWork;
import org.apache.hadoop.hive.ql.plan.OperatorDesc;
import org.apache.hadoop.hive.ql.plan.SparkWork;
+import org.apache.hadoop.hive.ql.plan.TableDesc;
import org.apache.hadoop.hive.ql.plan.TezWork;
+import org.apache.hadoop.hive.ql.plan.VectorReduceSinkInfo;
+import org.apache.hadoop.hive.ql.plan.VectorReduceSinkDesc;
+import org.apache.hadoop.hive.ql.plan.VectorGroupByDesc;
import org.apache.hadoop.hive.ql.plan.api.StageType;
import org.apache.hadoop.hive.ql.security.authorization.AuthorizationFactory;
import org.apache.hadoop.hive.ql.session.SessionState;
+import org.apache.hadoop.hive.serde2.Deserializer;
+import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.util.StringUtils;
import org.apache.hive.common.util.AnnotationUtils;
@@ -157,6 +197,54 @@ public JSONObject getJSONLogicalPlan(PrintStream out, ExplainWork work) throws E
return outJSONObject;
}
+ private static String trueCondNameVectorizationEnabled =
+ HiveConf.ConfVars.HIVE_VECTORIZATION_ENABLED.varname + " IS true";
+ private static String falseCondNameVectorizationEnabled =
+ HiveConf.ConfVars.HIVE_VECTORIZATION_ENABLED.varname + " IS false";
+
+ private ImmutablePair outputPlanVectorization(PrintStream out, boolean jsonOutput)
+ throws Exception {
+
+ if (out != null) {
+ out.println("PLAN VECTORIZATION:");
+ }
+
+ JSONObject json = jsonOutput ? new JSONObject(new LinkedHashMap<>()) : null;
+
+ HiveConf hiveConf = queryState.getConf();
+
+ boolean isVectorizationEnabled = HiveConf.getBoolVar(hiveConf,
+ HiveConf.ConfVars.HIVE_VECTORIZATION_ENABLED);
+ String isVectorizationEnabledCondName =
+ (isVectorizationEnabled ?
+ trueCondNameVectorizationEnabled :
+ falseCondNameVectorizationEnabled);
+ List isVectorizationEnabledCondList = Arrays.asList(isVectorizationEnabledCondName);
+
+ if (out != null) {
+ out.print(indentString(2));
+ out.print("enabled: ");
+ out.println(isVectorizationEnabled);
+ out.print(indentString(2));
+ if (!isVectorizationEnabled) {
+ out.print("enabledConditionsNotMet: ");
+ } else {
+ out.print("enabledConditionsMet: ");
+ }
+ out.println(isVectorizationEnabledCondList);
+ }
+ if (jsonOutput) {
+ json.put("enabled", isVectorizationEnabled);
+ if (!isVectorizationEnabled) {
+ json.put("enabledConditionsNotMet", isVectorizationEnabledCondList);
+ } else {
+ json.put("enabledConditionsMet", isVectorizationEnabledCondList);
+ }
+ }
+
+ return new ImmutablePair(isVectorizationEnabled, jsonOutput ? json : null);
+ }
+
public JSONObject getJSONPlan(PrintStream out, ExplainWork work)
throws Exception {
return getJSONPlan(out, work.getRootTasks(), work.getFetchTask(),
@@ -184,26 +272,46 @@ public JSONObject getJSONPlan(PrintStream out, List> tasks, Task> fetc
ordered.add(fetchTask);
}
- JSONObject jsonDependencies = outputDependencies(out, jsonOutput, appendTaskType, ordered);
+ boolean suppressOthersForVectorization = false;
+ if (this.work != null && this.work.isVectorization()) {
+ ImmutablePair planVecPair = outputPlanVectorization(out, jsonOutput);
+
+ if (this.work.isVectorizationOnly()) {
+ // Suppress the STAGES if vectorization is off.
+ suppressOthersForVectorization = !planVecPair.left;
+ }
- if (out != null) {
- out.println();
+ if (out != null) {
+ out.println();
+ }
+
+ if (jsonOutput) {
+ outJSONObject.put("PLAN VECTORIZATION", planVecPair.right);
+ }
}
- if (jsonOutput) {
- outJSONObject.put("STAGE DEPENDENCIES", jsonDependencies);
- }
+ if (!suppressOthersForVectorization) {
+ JSONObject jsonDependencies = outputDependencies(out, jsonOutput, appendTaskType, ordered);
- // Go over all the tasks and dump out the plans
- JSONObject jsonPlan = outputStagePlans(out, ordered,
- jsonOutput, isExtended);
+ if (out != null) {
+ out.println();
+ }
- if (jsonOutput) {
- outJSONObject.put("STAGE PLANS", jsonPlan);
- }
+ if (jsonOutput) {
+ outJSONObject.put("STAGE DEPENDENCIES", jsonDependencies);
+ }
- if (fetchTask != null) {
- fetchTask.setParentTasks(null);
+ // Go over all the tasks and dump out the plans
+ JSONObject jsonPlan = outputStagePlans(out, ordered,
+ jsonOutput, isExtended);
+
+ if (jsonOutput) {
+ outJSONObject.put("STAGE PLANS", jsonPlan);
+ }
+
+ if (fetchTask != null) {
+ fetchTask.setParentTasks(null);
+ }
}
return jsonOutput ? outJSONObject : null;
@@ -602,6 +710,64 @@ private JSONObject outputPlan(Object work, PrintStream out,
}
}
if (invokeFlag) {
+ Vectorization vectorization = xpl_note.vectorization();
+ if (this.work != null && this.work.isVectorization()) {
+
+ // The EXPLAIN VECTORIZATION option was specified.
+ final boolean desireOnly = this.work.isVectorizationOnly();
+ final VectorizationDetailLevel desiredVecDetailLevel =
+ this.work.isVectorizationDetailLevel();
+
+ switch (vectorization) {
+ case NON_VECTORIZED:
+ // Display all non-vectorized leaf objects unless ONLY.
+ if (desireOnly) {
+ invokeFlag = false;
+ }
+ break;
+ case SUMMARY:
+ case OPERATOR:
+ case EXPRESSION:
+ case DETAIL:
+ if (vectorization.rank < desiredVecDetailLevel.rank) {
+ // This detail not desired.
+ invokeFlag = false;
+ }
+ break;
+ case SUMMARY_PATH:
+ case OPERATOR_PATH:
+ if (desireOnly) {
+ if (vectorization.rank < desiredVecDetailLevel.rank) {
+ // Suppress headers and all objects below.
+ invokeFlag = false;
+ }
+ }
+ break;
+ default:
+ throw new RuntimeException("Unknown EXPLAIN vectorization " + vectorization);
+ }
+ } else {
+ // Do not display vectorization objects.
+ switch (vectorization) {
+ case SUMMARY:
+ case OPERATOR:
+ case EXPRESSION:
+ case DETAIL:
+ invokeFlag = false;
+ break;
+ case NON_VECTORIZED:
+ // No action.
+ break;
+ case SUMMARY_PATH:
+ case OPERATOR_PATH:
+ // Always include headers since they contain non-vectorized objects, too.
+ break;
+ default:
+ throw new RuntimeException("Unknown EXPLAIN vectorization " + vectorization);
+ }
+ }
+ }
+ if (invokeFlag) {
keyJSONObject = xpl_note.displayName();
if (out != null) {
out.print(indentString(indent));
@@ -675,6 +841,64 @@ private JSONObject outputPlan(Object work, PrintStream out,
}
}
if (invokeFlag) {
+ Vectorization vectorization = xpl_note.vectorization();
+ if (this.work != null && this.work.isVectorization()) {
+
+ // The EXPLAIN VECTORIZATION option was specified.
+ final boolean desireOnly = this.work.isVectorizationOnly();
+ final VectorizationDetailLevel desiredVecDetailLevel =
+ this.work.isVectorizationDetailLevel();
+
+ switch (vectorization) {
+ case NON_VECTORIZED:
+ // Display all non-vectorized leaf objects unless ONLY.
+ if (desireOnly) {
+ invokeFlag = false;
+ }
+ break;
+ case SUMMARY:
+ case OPERATOR:
+ case EXPRESSION:
+ case DETAIL:
+ if (vectorization.rank < desiredVecDetailLevel.rank) {
+ // This detail not desired.
+ invokeFlag = false;
+ }
+ break;
+ case SUMMARY_PATH:
+ case OPERATOR_PATH:
+ if (desireOnly) {
+ if (vectorization.rank < desiredVecDetailLevel.rank) {
+ // Suppress headers and all objects below.
+ invokeFlag = false;
+ }
+ }
+ break;
+ default:
+ throw new RuntimeException("Unknown EXPLAIN vectorization " + vectorization);
+ }
+ } else {
+ // Do not display vectorization objects.
+ switch (vectorization) {
+ case SUMMARY:
+ case OPERATOR:
+ case EXPRESSION:
+ case DETAIL:
+ invokeFlag = false;
+ break;
+ case NON_VECTORIZED:
+ // No action.
+ break;
+ case SUMMARY_PATH:
+ case OPERATOR_PATH:
+ // Always include headers since they contain non-vectorized objects, too.
+ break;
+ default:
+ throw new RuntimeException("Unknown EXPLAIN vectorization " + vectorization);
+ }
+ }
+ }
+ if (invokeFlag) {
Object val = null;
try {
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/MapJoinOperator.java ql/src/java/org/apache/hadoop/hive/ql/exec/MapJoinOperator.java
index 07aa2ea..dd3cc4a 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/MapJoinOperator.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/MapJoinOperator.java
@@ -93,7 +93,7 @@
protected transient ReusableGetAdaptor[] hashMapRowGetters;
private UnwrapRowContainer[] unwrapContainer;
- private transient Configuration hconf;
+ protected transient Configuration hconf;
private transient boolean hybridMapJoinLeftover; // whether there's spilled data to be processed
protected transient MapJoinBytesTableContainer[] spilledMapJoinTables; // used to hold restored
// spilled small tables
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/OperatorFactory.java ql/src/java/org/apache/hadoop/hive/ql/exec/OperatorFactory.java
index 038b96c..af1fa66 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/OperatorFactory.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/OperatorFactory.java
@@ -41,6 +41,8 @@
import org.apache.hadoop.hive.ql.metadata.HiveException;
import org.apache.hadoop.hive.ql.optimizer.spark.SparkPartitionPruningSinkDesc;
import org.apache.hadoop.hive.ql.parse.spark.SparkPartitionPruningSinkOperator;
+import org.apache.hadoop.hive.ql.plan.AbstractOperatorDesc;
+import org.apache.hadoop.hive.ql.plan.AbstractVectorDesc;
import org.apache.hadoop.hive.ql.plan.AppMasterEventDesc;
import org.apache.hadoop.hive.ql.plan.CollectDesc;
import org.apache.hadoop.hive.ql.plan.CommonMergeJoinDesc;
@@ -73,6 +75,7 @@
import org.apache.hadoop.hive.ql.plan.TableScanDesc;
import org.apache.hadoop.hive.ql.plan.UDTFDesc;
import org.apache.hadoop.hive.ql.plan.UnionDesc;
+import org.apache.hadoop.hive.ql.plan.VectorDesc;
import com.google.common.base.Preconditions;
@@ -142,6 +145,8 @@
Class extends Operator>> opClass, CompilationOpContext cContext, T conf,
VectorizationContext vContext) throws HiveException {
try {
+ VectorDesc vectorDesc = ((AbstractOperatorDesc) conf).getVectorDesc();
+ vectorDesc.setVectorOp(opClass);
Operator op = (Operator) opClass.getDeclaredConstructor(
CompilationOpContext.class, VectorizationContext.class, OperatorDesc.class)
.newInstance(cContext, vContext, conf);
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/SelectOperator.java ql/src/java/org/apache/hadoop/hive/ql/exec/SelectOperator.java
index 9049ddd..42c7d36 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/SelectOperator.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/SelectOperator.java
@@ -201,5 +201,4 @@ public boolean isIdentitySelect() {
return true;
}
-
}
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/persistence/MapJoinKey.java ql/src/java/org/apache/hadoop/hive/ql/exec/persistence/MapJoinKey.java
index 1cd9021..63e4802 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/persistence/MapJoinKey.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/persistence/MapJoinKey.java
@@ -93,9 +93,7 @@ public static boolean isSupportedField(ObjectInspector foi) {
return true;
}
- public static boolean isSupportedField(String typeName) {
- TypeInfo typeInfo = TypeInfoUtils.getTypeInfoFromTypeString(typeName);
-
+ public static boolean isSupportedField(TypeInfo typeInfo) {
if (typeInfo.getCategory() != Category.PRIMITIVE) return false; // not supported
PrimitiveTypeInfo primitiveTypeInfo = (PrimitiveTypeInfo) typeInfo;
PrimitiveCategory pc = primitiveTypeInfo.getPrimitiveCategory();
@@ -103,6 +101,11 @@ public static boolean isSupportedField(String typeName) {
return true;
}
+ public static boolean isSupportedField(String typeName) {
+ TypeInfo typeInfo = TypeInfoUtils.getTypeInfoFromTypeString(typeName);
+ return isSupportedField(typeInfo);
+ }
+
public static MapJoinKey readFromVector(Output output, MapJoinKey key, Object[] keyObject,
List keyOIs, boolean mayReuseKey) throws HiveException {
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/spark/HashTableLoader.java ql/src/java/org/apache/hadoop/hive/ql/exec/spark/HashTableLoader.java
index 1634f42..3cf6561 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/spark/HashTableLoader.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/spark/HashTableLoader.java
@@ -75,7 +75,7 @@ public void init(ExecMapperContext context, MapredContext mrContext, Configurati
this.desc = joinOp.getConf();
if (desc.getVectorMode() && HiveConf.getBoolVar(
hconf, HiveConf.ConfVars.HIVE_VECTORIZATION_MAPJOIN_NATIVE_FAST_HASHTABLE_ENABLED)) {
- VectorMapJoinDesc vectorDesc = desc.getVectorDesc();
+ VectorMapJoinDesc vectorDesc = (VectorMapJoinDesc) desc.getVectorDesc();
useFastContainer = vectorDesc != null && vectorDesc.hashTableImplementationType() ==
VectorMapJoinDesc.HashTableImplementationType.FAST;
}
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorColumnMapping.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorColumnMapping.java
index c4b95c3..c890674 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorColumnMapping.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorColumnMapping.java
@@ -20,6 +20,8 @@
import java.util.Arrays;
+import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
+
/**
* This class collects column information for copying a row from one VectorizedRowBatch to
* same/another batch.
@@ -30,7 +32,7 @@
protected int[] sourceColumns;
protected int[] outputColumns;
- protected String[] typeNames;
+ protected TypeInfo[] typeInfos;
protected VectorColumnOrderedMap vectorColumnMapping;
@@ -38,7 +40,7 @@ public VectorColumnMapping(String name) {
this.vectorColumnMapping = new VectorColumnOrderedMap(name);
}
- public abstract void add(int sourceColumn, int outputColumn, String typeName);
+ public abstract void add(int sourceColumn, int outputColumn, TypeInfo typeInfo);
public abstract void finalize();
@@ -54,8 +56,8 @@ public int getCount() {
return outputColumns;
}
- public String[] getTypeNames() {
- return typeNames;
+ public TypeInfo[] getTypeInfos() {
+ return typeInfos;
}
@Override
@@ -65,7 +67,7 @@ public String toString() {
sb.append(", ");
sb.append("output columns: " + Arrays.toString(outputColumns));
sb.append(", ");
- sb.append("type names: " + Arrays.toString(typeNames));
+ sb.append("type infos: " + Arrays.toString(typeInfos));
return sb.toString();
}
}
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorColumnOrderedMap.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorColumnOrderedMap.java
index 0e6014b..97d55f5 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorColumnOrderedMap.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorColumnOrderedMap.java
@@ -23,8 +23,10 @@
import java.util.TreeMap;
import org.apache.commons.lang.ArrayUtils;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
/**
* This class collects column information for mapping vector columns, including the hive type name.
@@ -43,17 +45,17 @@
private class Value {
int valueColumn;
- String typeName;
+ TypeInfo typeInfo;
- Value(int valueColumn, String typeName) {
+ Value(int valueColumn, TypeInfo typeInfo) {
this.valueColumn = valueColumn;
- this.typeName = typeName;
+ this.typeInfo = typeInfo;
}
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("(value column: " + valueColumn);
- sb.append(", type name: " + typeName + ")");
+ sb.append(", type info: " + typeInfo.toString() + ")");
return sb.toString();
}
}
@@ -62,12 +64,12 @@ public String toString() {
private final int[] orderedColumns;
private final int[] valueColumns;
- private final String[] typeNames;
+ private final TypeInfo[] typeInfos;
- Mapping(int[] orderedColumns, int[] valueColumns, String[] typeNames) {
+ Mapping(int[] orderedColumns, int[] valueColumns, TypeInfo[] typeInfos) {
this.orderedColumns = orderedColumns;
this.valueColumns = valueColumns;
- this.typeNames = typeNames;
+ this.typeInfos = typeInfos;
}
public int getCount() {
@@ -82,8 +84,8 @@ public int getCount() {
return valueColumns;
}
- public String[] getTypeNames() {
- return typeNames;
+ public TypeInfo[] getTypeInfos() {
+ return typeInfos;
}
}
@@ -92,14 +94,14 @@ public VectorColumnOrderedMap(String name) {
orderedTreeMap = new TreeMap();
}
- public void add(int orderedColumn, int valueColumn, String typeName) {
+ public void add(int orderedColumn, int valueColumn, TypeInfo typeInfo) {
if (orderedTreeMap.containsKey(orderedColumn)) {
throw new RuntimeException(
name + " duplicate column " + orderedColumn +
" in ordered column map " + orderedTreeMap.toString() +
- " when adding value column " + valueColumn + ", type " + typeName);
+ " when adding value column " + valueColumn + ", type into " + typeInfo.toString());
}
- orderedTreeMap.put(orderedColumn, new Value(valueColumn, typeName));
+ orderedTreeMap.put(orderedColumn, new Value(valueColumn, typeInfo));
}
public boolean orderedColumnsContain(int orderedColumn) {
@@ -109,17 +111,16 @@ public boolean orderedColumnsContain(int orderedColumn) {
public Mapping getMapping() {
ArrayList orderedColumns = new ArrayList();
ArrayList valueColumns = new ArrayList();
- ArrayList typeNames = new ArrayList();
+ ArrayList typeInfos = new ArrayList();
for (Map.Entry entry : orderedTreeMap.entrySet()) {
orderedColumns.add(entry.getKey());
Value value = entry.getValue();
valueColumns.add(value.valueColumn);
- typeNames.add(value.typeName);
+ typeInfos.add(value.typeInfo);
}
return new Mapping(
ArrayUtils.toPrimitive(orderedColumns.toArray(new Integer[0])),
ArrayUtils.toPrimitive(valueColumns.toArray(new Integer[0])),
- typeNames.toArray(new String[0]));
-
+ typeInfos.toArray(new TypeInfo[0]));
}
}
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorColumnOutputMapping.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorColumnOutputMapping.java
index f35aff7..4ceff6b 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorColumnOutputMapping.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorColumnOutputMapping.java
@@ -19,6 +19,7 @@
package org.apache.hadoop.hive.ql.exec.vector;
import org.apache.hadoop.hive.ql.exec.vector.VectorColumnOrderedMap.Mapping;
+import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
/**
* This class collects column information for copying a row from one VectorizedRowBatch to
@@ -35,9 +36,9 @@ public VectorColumnOutputMapping(String name) {
}
@Override
- public void add(int sourceColumn, int outputColumn, String typeName) {
+ public void add(int sourceColumn, int outputColumn, TypeInfo typeInfo) {
// Order on outputColumn.
- vectorColumnMapping.add(outputColumn, sourceColumn, typeName);
+ vectorColumnMapping.add(outputColumn, sourceColumn, typeInfo);
}
public boolean containsOutputColumn(int outputColumn) {
@@ -51,7 +52,7 @@ public void finalize() {
// Ordered columns are the output columns.
sourceColumns = mapping.getValueColumns();
outputColumns = mapping.getOrderedColumns();
- typeNames = mapping.getTypeNames();
+ typeInfos = mapping.getTypeInfos();
// Not needed anymore.
vectorColumnMapping = null;
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorColumnSourceMapping.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorColumnSourceMapping.java
index 4f5ba9a..061e396 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorColumnSourceMapping.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorColumnSourceMapping.java
@@ -19,6 +19,7 @@
package org.apache.hadoop.hive.ql.exec.vector;
import org.apache.hadoop.hive.ql.exec.vector.VectorColumnOrderedMap.Mapping;
+import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
/**
* This class collects column information for copying a row from one VectorizedRowBatch to
@@ -35,9 +36,9 @@ public VectorColumnSourceMapping(String name) {
}
@Override
- public void add(int sourceColumn, int outputColumn, String typeName) {
+ public void add(int sourceColumn, int outputColumn, TypeInfo typeInfo) {
// Order on sourceColumn.
- vectorColumnMapping.add(sourceColumn, outputColumn, typeName);
+ vectorColumnMapping.add(sourceColumn, outputColumn, typeInfo);
}
@Override
@@ -47,7 +48,7 @@ public void finalize() {
// Ordered columns are the source columns.
sourceColumns = mapping.getOrderedColumns();
outputColumns = mapping.getValueColumns();
- typeNames = mapping.getTypeNames();
+ typeInfos = mapping.getTypeInfos();
// Not needed anymore.
vectorColumnMapping = null;
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorCopyRow.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorCopyRow.java
index c8e0284..911aeb0 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorCopyRow.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorCopyRow.java
@@ -262,8 +262,7 @@ public void init(VectorColumnMapping columnMapping) throws HiveException {
for (int i = 0; i < count; i++) {
int inputColumn = columnMapping.getInputColumns()[i];
int outputColumn = columnMapping.getOutputColumns()[i];
- String typeName = columnMapping.getTypeNames()[i].toLowerCase();
- TypeInfo typeInfo = TypeInfoUtils.getTypeInfoFromTypeString(typeName);
+ TypeInfo typeInfo = columnMapping.getTypeInfos()[i];
Type columnVectorType = VectorizationContext.getColumnVectorTypeFromTypeInfo(typeInfo);
CopyRow copyRowByValue = null;
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorFilterOperator.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorFilterOperator.java
index 261246b..bfe22b0 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorFilterOperator.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorFilterOperator.java
@@ -28,6 +28,7 @@
import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
import org.apache.hadoop.hive.ql.plan.FilterDesc;
import org.apache.hadoop.hive.ql.plan.OperatorDesc;
+import org.apache.hadoop.hive.ql.plan.VectorFilterDesc;
import com.google.common.annotations.VisibleForTesting;
@@ -50,9 +51,8 @@
public VectorFilterOperator(CompilationOpContext ctx,
VectorizationContext vContext, OperatorDesc conf) throws HiveException {
this(ctx);
- ExprNodeDesc oldExpression = ((FilterDesc) conf).getPredicate();
- conditionEvaluator = vContext.getVectorExpression(oldExpression, VectorExpressionDescriptor.Mode.FILTER);
this.conf = (FilterDesc) conf;
+ conditionEvaluator = ((VectorFilterDesc) this.conf.getVectorDesc()).getPredicateExpression();
}
/** Kryo ctor. */
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupByOperator.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupByOperator.java
index 2605203..fef7c2a 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupByOperator.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupByOperator.java
@@ -41,6 +41,7 @@
import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
import org.apache.hadoop.hive.ql.plan.GroupByDesc;
import org.apache.hadoop.hive.ql.plan.OperatorDesc;
+import org.apache.hadoop.hive.ql.plan.VectorGroupByDesc;
import org.apache.hadoop.hive.ql.plan.VectorGroupByDesc.ProcessingMode;
import org.apache.hadoop.hive.ql.plan.api.OperatorType;
import org.apache.hadoop.hive.ql.util.JavaDataModel;
@@ -65,6 +66,8 @@
private static final Logger LOG = LoggerFactory.getLogger(
VectorGroupByOperator.class.getName());
+ private VectorGroupByDesc vectorDesc;
+
/**
* This is the vector of aggregators. They are stateless and only implement
* the algorithm of how to compute the aggregation. state is kept in the
@@ -756,16 +759,10 @@ public VectorGroupByOperator(CompilationOpContext ctx,
this(ctx);
GroupByDesc desc = (GroupByDesc) conf;
this.conf = desc;
- List keysDesc = desc.getKeys();
- keyExpressions = vContext.getVectorExpressions(keysDesc);
- ArrayList aggrDesc = desc.getAggregators();
- aggregators = new VectorAggregateExpression[aggrDesc.size()];
- for (int i = 0; i < aggrDesc.size(); ++i) {
- AggregationDesc aggDesc = aggrDesc.get(i);
- aggregators[i] = vContext.getAggregatorExpression(aggDesc);
- }
-
- isVectorOutput = desc.getVectorDesc().isVectorOutput();
+ vectorDesc = (VectorGroupByDesc) desc.getVectorDesc();
+ keyExpressions = vectorDesc.getKeyExpressions();
+ aggregators = vectorDesc.getAggregators();
+ isVectorOutput = vectorDesc.isVectorOutput();
vOutContext = new VectorizationContext(getName(), desc.getOutputColumnNames(),
/* vContextEnvironment */ vContext);
@@ -834,7 +831,7 @@ protected void initializeOp(Configuration hconf) throws HiveException {
forwardCache = new Object[outputKeyLength + aggregators.length];
- switch (conf.getVectorDesc().getProcessingMode()) {
+ switch (vectorDesc.getProcessingMode()) {
case GLOBAL:
Preconditions.checkState(outputKeyLength == 0);
processingMode = this.new ProcessingModeGlobalAggregate();
@@ -850,7 +847,7 @@ protected void initializeOp(Configuration hconf) throws HiveException {
break;
default:
throw new RuntimeException("Unsupported vector GROUP BY processing mode " +
- conf.getVectorDesc().getProcessingMode().name());
+ vectorDesc.getProcessingMode().name());
}
processingMode.initialize(hconf);
}
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 f7fec8f..6ea6122 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
@@ -31,6 +31,7 @@
import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
import org.apache.hadoop.hive.ql.plan.OperatorDesc;
import org.apache.hadoop.hive.ql.plan.SelectDesc;
+import org.apache.hadoop.hive.ql.plan.VectorSelectDesc;
import org.apache.hadoop.hive.ql.plan.api.OperatorType;
import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory;
@@ -45,9 +46,11 @@
private static final long serialVersionUID = 1L;
+ private VectorSelectDesc vectorDesc;
+
protected VectorExpression[] vExpressions = null;
- private transient int [] projectedColumns = null;
+ private int [] projectedOutputColumns = null;
private transient VectorExpressionWriter [] valueWriters = null;
@@ -58,13 +61,9 @@ public VectorSelectOperator(CompilationOpContext ctx,
VectorizationContext vContext, OperatorDesc conf) throws HiveException {
this(ctx);
this.conf = (SelectDesc) conf;
- List colList = this.conf.getColList();
- vExpressions = new VectorExpression[colList.size()];
- for (int i = 0; i < colList.size(); i++) {
- ExprNodeDesc expr = colList.get(i);
- VectorExpression ve = vContext.getVectorExpression(expr);
- vExpressions[i] = ve;
- }
+ vectorDesc = (VectorSelectDesc) this.conf.getVectorDesc();
+ vExpressions = vectorDesc.getSelectExpressions();
+ projectedOutputColumns = vectorDesc.getProjectedOutputColumns();
/**
* Create a new vectorization context to create a new projection, but keep
@@ -73,11 +72,10 @@ public VectorSelectOperator(CompilationOpContext ctx,
vOutContext = new VectorizationContext(getName(), vContext);
vOutContext.resetProjectionColumns();
- for (int i=0; i < colList.size(); ++i) {
- String columnName = this.conf.getOutputColumnNames().get(i);
- VectorExpression ve = vExpressions[i];
- vOutContext.addProjectionColumn(columnName,
- ve.getOutputColumn());
+ List outputColumnNames = this.conf.getOutputColumnNames();
+ for (int i=0; i < projectedOutputColumns.length; ++i) {
+ String columnName = outputColumnNames.get(i);
+ vOutContext.addProjectionColumn(columnName, projectedOutputColumns[i]);
}
}
@@ -110,11 +108,6 @@ protected void initializeOp(Configuration hconf) throws HiveException {
List outputFieldNames = conf.getOutputColumnNames();
outputObjInspector = ObjectInspectorFactory.getStandardStructObjectInspector(
outputFieldNames, objectInspectors);
-
- projectedColumns = new int [vExpressions.length];
- for (int i = 0; i < projectedColumns.length; i++) {
- projectedColumns[i] = vExpressions[i].getOutputColumn();
- }
}
@Override
@@ -139,8 +132,8 @@ public void process(Object row, int tag) throws HiveException {
// Prepare output, set the projections
int[] originalProjections = vrg.projectedColumns;
int originalProjectionSize = vrg.projectionSize;
- vrg.projectionSize = vExpressions.length;
- vrg.projectedColumns = this.projectedColumns;
+ vrg.projectionSize = projectedOutputColumns.length;
+ vrg.projectedColumns = this.projectedOutputColumns;
forward(vrg, outputObjInspector);
// Revert the projected columns back, because vrg will be re-used.
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java
index f6b6447..09eed2f 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java
@@ -92,6 +92,7 @@
import org.apache.hadoop.hive.ql.exec.vector.udf.VectorUDFAdaptor;
import org.apache.hadoop.hive.ql.exec.vector.udf.VectorUDFArgDesc;
import org.apache.hadoop.hive.ql.metadata.HiveException;
+import org.apache.hadoop.hive.ql.optimizer.physical.Vectorizer;
import org.apache.hadoop.hive.ql.parse.SemanticException;
import org.apache.hadoop.hive.ql.plan.AggregationDesc;
import org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc;
@@ -560,7 +561,7 @@ public VectorExpression getVectorExpression(ExprNodeDesc exprDesc, VectorExpress
} else {
throw new HiveException(
"Could not vectorize expression (mode = " + mode.name() + "): " + exprDesc.toString()
- + " because hive.vectorized.adaptor.usage.mode=chosen "
+ + " because hive.vectorized.adaptor.usage.mode=chosen"
+ " and the UDF wasn't one of the chosen ones");
}
break;
@@ -1262,6 +1263,35 @@ private String getNewInstanceArgumentString(Object [] args) {
return "arguments: " + Arrays.toString(args) + ", argument classes: " + argClasses.toString();
}
+ private static int STACK_LENGTH_LIMIT = 15;
+
+ public static String getStackTraceAsSingleLine(Throwable e) {
+ StringBuilder sb = new StringBuilder();
+ sb.append(e);
+ sb.append(" stack trace: ");
+ StackTraceElement[] stackTrace = e.getStackTrace();
+ int length = stackTrace.length;
+ boolean isTruncated = false;
+ if (length > STACK_LENGTH_LIMIT) {
+ length = STACK_LENGTH_LIMIT;
+ isTruncated = true;
+ }
+ for (int i = 0; i < length; i++) {
+ if (i > 0) {
+ sb.append(", ");
+ }
+ sb.append(stackTrace[i]);
+ }
+ if (isTruncated) {
+ sb.append(", ...");
+ }
+
+ // Attempt to cleanup stack trace elements that vary by VM.
+ String cleaned = sb.toString().replaceAll("GeneratedConstructorAccessor[0-9]*", "GeneratedConstructorAccessor");
+
+ return cleaned;
+ }
+
private VectorExpression instantiateExpression(Class> vclass, TypeInfo returnType, Object...args)
throws HiveException {
VectorExpression ve = null;
@@ -1273,14 +1303,14 @@ private VectorExpression instantiateExpression(Class> vclass, TypeInfo returnT
ve = (VectorExpression) ctor.newInstance();
} catch (Exception ex) {
throw new HiveException("Could not instantiate " + vclass.getSimpleName() + " with 0 arguments, exception: " +
- StringUtils.stringifyException(ex));
+ getStackTraceAsSingleLine(ex));
}
} else if (numParams == argsLength) {
try {
ve = (VectorExpression) ctor.newInstance(args);
} catch (Exception ex) {
throw new HiveException("Could not instantiate " + vclass.getSimpleName() + " with " + getNewInstanceArgumentString(args) + ", exception: " +
- StringUtils.stringifyException(ex));
+ getStackTraceAsSingleLine(ex));
}
} else if (numParams == argsLength + 1) {
// Additional argument is needed, which is the outputcolumn.
@@ -1308,7 +1338,7 @@ private VectorExpression instantiateExpression(Class> vclass, TypeInfo returnT
ve.setOutputType(returnTypeName);
} catch (Exception ex) {
throw new HiveException("Could not instantiate " + vclass.getSimpleName() + " with arguments " + getNewInstanceArgumentString(newArgs) + ", exception: " +
- StringUtils.stringifyException(ex));
+ getStackTraceAsSingleLine(ex));
}
}
// Add maxLength parameter to UDFs that have CHAR or VARCHAR output.
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContextRegion.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContextRegion.java
index a403725..914bb1f 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContextRegion.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContextRegion.java
@@ -20,10 +20,10 @@
/**
* VectorizationContextRegion optional interface implemented by vectorized operators
- * that are changing the vectorizaiton context (region boundary operators)
+ * that are changing the vectorization context (region boundary operators)
*/
public interface VectorizationContextRegion {
VectorizationContext getOuputVectorizationContext();
-}
+}
\ No newline at end of file
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedRowBatchCtx.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedRowBatchCtx.java
index 3e3844e..e546a65 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedRowBatchCtx.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedRowBatchCtx.java
@@ -38,7 +38,10 @@
import org.apache.hadoop.hive.ql.io.HiveFileFormatUtils;
import org.apache.hadoop.hive.ql.io.IOPrepareCache;
import org.apache.hadoop.hive.ql.metadata.HiveException;
+import org.apache.hadoop.hive.ql.plan.Explain;
import org.apache.hadoop.hive.ql.plan.PartitionDesc;
+import org.apache.hadoop.hive.ql.plan.Explain.Level;
+import org.apache.hadoop.hive.ql.plan.Explain.Vectorization;
import org.apache.hadoop.hive.serde2.ColumnProjectionUtils;
import org.apache.hadoop.hive.serde2.io.DateWritable;
import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/AbstractFilterStringColLikeStringScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/AbstractFilterStringColLikeStringScalar.java
index c50af8d..b49ff39 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/AbstractFilterStringColLikeStringScalar.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/AbstractFilterStringColLikeStringScalar.java
@@ -518,6 +518,11 @@ public void setPattern(String pattern) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", pattern " + pattern;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastBooleanToCharViaLongToChar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastBooleanToCharViaLongToChar.java
index 57dc92b..96c08af 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastBooleanToCharViaLongToChar.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastBooleanToCharViaLongToChar.java
@@ -51,4 +51,9 @@ public int getMaxLength() {
public void setMaxLength(int maxLength) {
this.maxLength = maxLength;
}
+
+ @Override
+ public String vectorExpressionParameters() {
+ return "col " + inputColumn + ", maxLength " + maxLength;
+ }
}
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastBooleanToVarCharViaLongToVarChar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastBooleanToVarCharViaLongToVarChar.java
index 1f7697e..a120f2e 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastBooleanToVarCharViaLongToVarChar.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastBooleanToVarCharViaLongToVarChar.java
@@ -51,4 +51,9 @@ public int getMaxLength() {
public void setMaxLength(int maxLength) {
this.maxLength = maxLength;
}
+
+ @Override
+ public String vectorExpressionParameters() {
+ return "col " + inputColumn + ", maxLength " + maxLength;
+ }
}
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDateToChar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDateToChar.java
index 187f12b..447e258 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDateToChar.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDateToChar.java
@@ -51,4 +51,8 @@ public int getMaxLength() {
public void setMaxLength(int maxLength) {
this.maxLength = maxLength;
}
+
+ public String vectorExpressionParameters() {
+ return "col " + inputColumn + ", maxLength " + maxLength;
+ }
}
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDateToVarChar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDateToVarChar.java
index 5ad745c..98c1f93 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDateToVarChar.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDateToVarChar.java
@@ -51,4 +51,9 @@ public int getMaxLength() {
public void setMaxLength(int maxLength) {
this.maxLength = maxLength;
}
+
+ @Override
+ public String vectorExpressionParameters() {
+ return "col " + inputColumn + ", maxLength " + maxLength;
+ }
}
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToChar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToChar.java
index e753a6e..3bcd989 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToChar.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToChar.java
@@ -55,4 +55,9 @@ public int getMaxLength() {
public void setMaxLength(int maxLength) {
this.maxLength = maxLength;
}
+
+ @Override
+ public String vectorExpressionParameters() {
+ return "col " + inputColumn + ", maxLength " + maxLength;
+ }
}
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToDecimal.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToDecimal.java
index ea235d9..e1debcd 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToDecimal.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToDecimal.java
@@ -148,6 +148,11 @@ public void setInputColumn(int inputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + inputColumn;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
VectorExpressionDescriptor.Builder b = new VectorExpressionDescriptor.Builder();
b.setMode(VectorExpressionDescriptor.Mode.PROJECTION)
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToVarChar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToVarChar.java
index 3a2c2d0..3b4f05b 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToVarChar.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToVarChar.java
@@ -55,4 +55,9 @@ public int getMaxLength() {
public void setMaxLength(int maxLength) {
this.maxLength = maxLength;
}
+
+ @Override
+ public String vectorExpressionParameters() {
+ return "col " + inputColumn + ", maxLength " + maxLength;
+ }
}
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDoubleToTimestamp.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDoubleToTimestamp.java
index 07f94f5..e38e32b 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDoubleToTimestamp.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDoubleToTimestamp.java
@@ -114,6 +114,11 @@ public String getOutputType() {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastLongToChar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastLongToChar.java
index 27674c4..eac45e4 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastLongToChar.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastLongToChar.java
@@ -51,4 +51,9 @@ public int getMaxLength() {
public void setMaxLength(int maxLength) {
this.maxLength = maxLength;
}
+
+ @Override
+ public String vectorExpressionParameters() {
+ return "col " + inputColumn + ", maxLength " + maxLength;
+ }
}
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastLongToDate.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastLongToDate.java
index ceefd61..86e0959 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastLongToDate.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastLongToDate.java
@@ -94,6 +94,11 @@ public String getOutputType() {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + inputColumn;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
VectorExpressionDescriptor.Builder b = new VectorExpressionDescriptor.Builder();
b.setMode(VectorExpressionDescriptor.Mode.PROJECTION)
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastLongToTimestamp.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastLongToTimestamp.java
index 4de95a5..9f71b9a 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastLongToTimestamp.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastLongToTimestamp.java
@@ -111,6 +111,11 @@ public String getOutputType() {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastLongToVarChar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastLongToVarChar.java
index 7c3dca2..9bc1cdb 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastLongToVarChar.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastLongToVarChar.java
@@ -51,4 +51,9 @@ public int getMaxLength() {
public void setMaxLength(int maxLength) {
this.maxLength = maxLength;
}
+
+ @Override
+ public String vectorExpressionParameters() {
+ return "col " + inputColumn + ", maxLength " + maxLength;
+ }
}
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastMillisecondsLongToTimestamp.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastMillisecondsLongToTimestamp.java
index b1c6b2d..4cc120a 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastMillisecondsLongToTimestamp.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastMillisecondsLongToTimestamp.java
@@ -112,6 +112,11 @@ public String getOutputType() {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastStringGroupToChar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastStringGroupToChar.java
index 7c06ff5..3469183 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastStringGroupToChar.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastStringGroupToChar.java
@@ -52,4 +52,8 @@ public int getMaxLength() {
public void setMaxLength(int maxLength) {
this.maxLength = maxLength;
}
+
+ public String vectorExpressionParameters() {
+ return "col " + inputColumn + ", maxLength " + maxLength;
+ }
}
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastStringGroupToVarChar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastStringGroupToVarChar.java
index 376ce92..fd4c76a 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastStringGroupToVarChar.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastStringGroupToVarChar.java
@@ -52,4 +52,9 @@ public int getMaxLength() {
public void setMaxLength(int maxLength) {
this.maxLength = maxLength;
}
+
+ @Override
+ public String vectorExpressionParameters() {
+ return "col " + inputColumn + ", maxLength " + maxLength;
+ }
}
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastStringToDate.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastStringToDate.java
index e456b12..4b176ae 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastStringToDate.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastStringToDate.java
@@ -149,6 +149,11 @@ public String getOutputType() {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + inputColumn;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
VectorExpressionDescriptor.Builder b = new VectorExpressionDescriptor.Builder();
b.setMode(VectorExpressionDescriptor.Mode.PROJECTION)
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastStringToDecimal.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastStringToDecimal.java
index 504b354..074f9aa 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastStringToDecimal.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastStringToDecimal.java
@@ -154,6 +154,11 @@ public void setInputColumn(int inputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + inputColumn;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
VectorExpressionDescriptor.Builder b = new VectorExpressionDescriptor.Builder();
b.setMode(VectorExpressionDescriptor.Mode.PROJECTION)
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastStringToIntervalDayTime.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastStringToIntervalDayTime.java
index c8844c8..e577628 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastStringToIntervalDayTime.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastStringToIntervalDayTime.java
@@ -148,6 +148,11 @@ public String getOutputType() {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + inputColumn;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
VectorExpressionDescriptor.Builder b = new VectorExpressionDescriptor.Builder();
b.setMode(VectorExpressionDescriptor.Mode.PROJECTION)
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastStringToIntervalYearMonth.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastStringToIntervalYearMonth.java
index 62f3dc9..21b034a 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastStringToIntervalYearMonth.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastStringToIntervalYearMonth.java
@@ -146,6 +146,11 @@ public String getOutputType() {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + inputColumn;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
VectorExpressionDescriptor.Builder b = new VectorExpressionDescriptor.Builder();
b.setMode(VectorExpressionDescriptor.Mode.PROJECTION)
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastTimestampToBoolean.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastTimestampToBoolean.java
index b8a58cd..0e23bfb 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastTimestampToBoolean.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastTimestampToBoolean.java
@@ -21,8 +21,6 @@
import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression;
import org.apache.hadoop.hive.ql.exec.vector.expressions.MathExpr;
import org.apache.hadoop.hive.ql.exec.vector.*;
-import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
-import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor;
public class CastTimestampToBoolean extends VectorExpression {
private static final long serialVersionUID = 1L;
@@ -125,6 +123,11 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastTimestampToDouble.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastTimestampToDouble.java
index a955d79..92595d9 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastTimestampToDouble.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastTimestampToDouble.java
@@ -118,6 +118,11 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastTimestampToLong.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastTimestampToLong.java
index ba2e823..466043e 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastTimestampToLong.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastTimestampToLong.java
@@ -21,8 +21,6 @@
import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression;
import org.apache.hadoop.hive.ql.exec.vector.expressions.MathExpr;
import org.apache.hadoop.hive.ql.exec.vector.*;
-import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
-import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor;
public class CastTimestampToLong extends VectorExpression {
private static final long serialVersionUID = 1L;
@@ -120,6 +118,11 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/ColAndCol.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/ColAndCol.java
index ff7371d..42f9b60 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/ColAndCol.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/ColAndCol.java
@@ -314,6 +314,11 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum1 + ", col " + colNum2;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/ColOrCol.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/ColOrCol.java
index 60ed2d4..297c372 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/ColOrCol.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/ColOrCol.java
@@ -317,6 +317,11 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum1 + ", col " + colNum2;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/ConstantVectorExpression.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/ConstantVectorExpression.java
index 72749b7..487c4b0 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/ConstantVectorExpression.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/ConstantVectorExpression.java
@@ -18,6 +18,7 @@
package org.apache.hadoop.hive.ql.exec.vector.expressions;
+import java.nio.charset.StandardCharsets;
import java.sql.Timestamp;
import org.apache.hadoop.hive.common.type.HiveDecimal;
@@ -268,6 +269,38 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ String value;
+ if (isNullValue) {
+ value = "null";
+ } else {
+ switch (type) {
+ case LONG:
+ value = Long.toString(longValue);
+ break;
+ case DOUBLE:
+ value = Double.toString(doubleValue);
+ break;
+ case BYTES:
+ value = new String(bytesValue, StandardCharsets.UTF_8);
+ break;
+ case DECIMAL:
+ value = decimalValue.toString();
+ break;
+ case TIMESTAMP:
+ value = timestampValue.toString();
+ break;
+ case INTERVAL_DAY_TIME:
+ value = intervalDayTimeValue.toString();
+ break;
+ default:
+ throw new RuntimeException("Unknown vector column type " + type);
+ }
+ }
+ return "val " + value;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder()).build();
}
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DateColSubtractDateColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DateColSubtractDateColumn.java
index fafacce..e04280f 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DateColSubtractDateColumn.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DateColSubtractDateColumn.java
@@ -168,6 +168,10 @@ public String getOutputType() {
return "timestamp";
}
+ public String vectorExpressionParameters() {
+ return "col " + colNum1 + ", col " + colNum2;
+ }
+
@Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DateColSubtractDateScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DateColSubtractDateScalar.java
index a9ca93c..bce24ea 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DateColSubtractDateScalar.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DateColSubtractDateScalar.java
@@ -132,6 +132,11 @@ public String getOutputType() {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", val " + value;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DateScalarSubtractDateColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DateScalarSubtractDateColumn.java
index 59cf9da..62f29f1 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DateScalarSubtractDateColumn.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DateScalarSubtractDateColumn.java
@@ -135,6 +135,11 @@ public String getOutputType() {
}
@Override
+ public String vectorExpressionParameters() {
+ return "val " + value + ", col " + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DecimalColumnInList.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DecimalColumnInList.java
index d4d8fea..9a42f50 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DecimalColumnInList.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DecimalColumnInList.java
@@ -25,6 +25,7 @@
import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable;
+import java.util.Arrays;
import java.util.HashSet;
/**
@@ -155,4 +156,10 @@ public Descriptor getDescriptor() {
public void setInListValues(HiveDecimal[] a) {
this.inListValues = a;
}
+
+ @Override
+ public String vectorExpressionParameters() {
+ return "col " + inputCol + ", values " + Arrays.toString(inListValues);
+ }
+
}
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DecimalToStringUnaryUDF.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DecimalToStringUnaryUDF.java
index 4b1182c..a9e1f8b 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DecimalToStringUnaryUDF.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DecimalToStringUnaryUDF.java
@@ -134,6 +134,11 @@ public String getOutputType() {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + inputColumn;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
VectorExpressionDescriptor.Builder b = new VectorExpressionDescriptor.Builder();
b.setMode(VectorExpressionDescriptor.Mode.PROJECTION)
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DoubleColumnInList.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DoubleColumnInList.java
index dfc1aff..db65460 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DoubleColumnInList.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/DoubleColumnInList.java
@@ -18,6 +18,8 @@
package org.apache.hadoop.hive.ql.exec.vector.expressions;
+import java.util.Arrays;
+
import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression;
import org.apache.hadoop.hive.ql.exec.vector.DoubleColumnVector;
import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector;
@@ -156,6 +158,11 @@ public void setInListValues(double[] a) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", values " + Arrays.toString(inListValues);
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
// return null since this will be handled as a special case in VectorizationContext
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterColAndScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterColAndScalar.java
index bef1c18..578feb0 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterColAndScalar.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterColAndScalar.java
@@ -73,6 +73,11 @@ public void setValue(long value) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", val " + value;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterColOrScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterColOrScalar.java
index ee0ac69..72f58b1 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterColOrScalar.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterColOrScalar.java
@@ -73,6 +73,11 @@ public void setValue(long value) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", val " + value;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterDecimalColumnInList.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterDecimalColumnInList.java
index 79d3fe3..48f4a93 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterDecimalColumnInList.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterDecimalColumnInList.java
@@ -24,6 +24,7 @@
import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable;
+import java.util.Arrays;
import java.util.HashSet;
/**
@@ -171,4 +172,10 @@ public Descriptor getDescriptor() {
public void setInListValues(HiveDecimal[] a) {
this.inListValues = a;
}
+
+ @Override
+ public String vectorExpressionParameters() {
+ return "col " + inputCol + ", values " + Arrays.toString(inListValues);
+ }
+
}
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterDoubleColumnInList.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterDoubleColumnInList.java
index 05dcb43..0252236 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterDoubleColumnInList.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterDoubleColumnInList.java
@@ -177,4 +177,10 @@ public Descriptor getDescriptor() {
public void setInListValues(double [] a) {
this.inListValues = a;
}
+
+ @Override
+ public String vectorExpressionParameters() {
+ return "col " + inputCol + ", values " + Arrays.toString(inListValues);
+ }
+
}
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterExprAndExpr.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterExprAndExpr.java
index 41e3b0f..175b497 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterExprAndExpr.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterExprAndExpr.java
@@ -18,6 +18,8 @@
package org.apache.hadoop.hive.ql.exec.vector.expressions;
+import java.util.Arrays;
+
import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor;
import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
@@ -51,6 +53,12 @@ public String getOutputType() {
}
@Override
+ public String vectorExpressionParameters() {
+ // The children are input.
+ return null;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
// IMPORTANT NOTE: For Multi-AND, the VectorizationContext class will catch cases with 3 or
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterExprOrExpr.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterExprOrExpr.java
index dc5139d..5ed1ed8 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterExprOrExpr.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterExprOrExpr.java
@@ -232,6 +232,12 @@ public String getOutputType() {
}
@Override
+ public String vectorExpressionParameters() {
+ // The children are input.
+ return null;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
// IMPORTANT NOTE: For Multi-OR, the VectorizationContext class will catch cases with 3 or
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterLongColumnInList.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterLongColumnInList.java
index a40f39c..dce1b43 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterLongColumnInList.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterLongColumnInList.java
@@ -177,4 +177,11 @@ public Descriptor getDescriptor() {
public void setInListValues(long [] a) {
this.inListValues = a;
}
+
+ @Override
+ public String vectorExpressionParameters() {
+ return "col " + inputCol + ", values " + Arrays.toString(inListValues);
+ }
+
+
}
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterScalarAndColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterScalarAndColumn.java
index bcc8f89..7092f4b 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterScalarAndColumn.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterScalarAndColumn.java
@@ -73,6 +73,11 @@ public void setValue(long value) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "val " + value + ", col " + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterScalarOrColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterScalarOrColumn.java
index f515e60..ab242ae 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterScalarOrColumn.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterScalarOrColumn.java
@@ -73,6 +73,11 @@ public void setValue(long value) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "val " + value + ", col " + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterStringColumnInList.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterStringColumnInList.java
index e34ec75..200735c 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterStringColumnInList.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterStringColumnInList.java
@@ -18,6 +18,8 @@
package org.apache.hadoop.hive.ql.exec.vector.expressions;
+import java.util.Arrays;
+
import org.apache.hadoop.hive.ql.exec.vector.BytesColumnVector;
import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor.Descriptor;
import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
@@ -179,4 +181,9 @@ public Descriptor getDescriptor() {
public void setInListValues(byte [][] a) {
this.inListValues = a;
}
+
+ @Override
+ public String vectorExpressionParameters() {
+ return "col " + inputCol + ", values " + Arrays.toString(inListValues);
+ }
}
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterStructColumnInList.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterStructColumnInList.java
index 1e21fea..8b873f3 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterStructColumnInList.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterStructColumnInList.java
@@ -18,6 +18,7 @@
package org.apache.hadoop.hive.ql.exec.vector.expressions;
+import java.util.Arrays;
import java.util.List;
import org.apache.hadoop.hive.ql.exec.vector.BytesColumnVector;
@@ -176,4 +177,12 @@ public void setStructColumnExprs(VectorizationContext vContext,
}
this.fieldVectorColumnTypes = fieldVectorColumnTypes;
}
+
+ @Override
+ public String vectorExpressionParameters() {
+ return "structExpressions " + Arrays.toString(structExpressions) +
+ ", fieldVectorColumnTypes " + Arrays.toString(fieldVectorColumnTypes) +
+ ", structColumnMap " + Arrays.toString(structColumnMap);
+ }
+
}
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterTimestampColumnInList.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterTimestampColumnInList.java
index 25a276a..a7666bc 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterTimestampColumnInList.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterTimestampColumnInList.java
@@ -19,6 +19,7 @@
package org.apache.hadoop.hive.ql.exec.vector.expressions;
import java.sql.Timestamp;
+import java.util.Arrays;
import java.util.HashSet;
import org.apache.hadoop.hive.ql.exec.vector.TimestampColumnVector;
@@ -169,4 +170,10 @@ public Descriptor getDescriptor() {
public void setInListValues(Timestamp[] a) {
this.inListValues = a;
}
+
+ @Override
+ public String vectorExpressionParameters() {
+ return "col " + inputCol + ", values " + Arrays.toString(inListValues);
+ }
+
}
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncDecimalToDouble.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncDecimalToDouble.java
index cc6afa5..76fdeb5 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncDecimalToDouble.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncDecimalToDouble.java
@@ -134,6 +134,11 @@ public String getOutputType() {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + inputColumn;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
VectorExpressionDescriptor.Builder b = new VectorExpressionDescriptor.Builder();
b.setMode(VectorExpressionDescriptor.Mode.PROJECTION)
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncDecimalToLong.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncDecimalToLong.java
index 7f005a1..8dbb7b9 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncDecimalToLong.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncDecimalToLong.java
@@ -131,6 +131,11 @@ public int getOutputColumn() {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + inputColumn;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
VectorExpressionDescriptor.Builder b = new VectorExpressionDescriptor.Builder();
b.setMode(VectorExpressionDescriptor.Mode.PROJECTION)
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncDecimalToTimestamp.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncDecimalToTimestamp.java
index 561c152..569d7f7 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncDecimalToTimestamp.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncDecimalToTimestamp.java
@@ -122,6 +122,11 @@ public String getOutputType() {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + inputColumn;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
VectorExpressionDescriptor.Builder b = new VectorExpressionDescriptor.Builder();
b.setMode(VectorExpressionDescriptor.Mode.PROJECTION)
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncDoubleToDecimal.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncDoubleToDecimal.java
index 0120c0a..1b3127c 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncDoubleToDecimal.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncDoubleToDecimal.java
@@ -130,6 +130,10 @@ public void setInputColumn(int inputColumn) {
this.inputColumn = inputColumn;
}
+ public String vectorExpressionParameters() {
+ return "col " + inputColumn;
+ }
+
@Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
VectorExpressionDescriptor.Builder b = new VectorExpressionDescriptor.Builder();
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncLongToDecimal.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncLongToDecimal.java
index b73e851..b527482 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncLongToDecimal.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncLongToDecimal.java
@@ -130,6 +130,10 @@ public void setInputColumn(int inputColumn) {
this.inputColumn = inputColumn;
}
+ public String vectorExpressionParameters() {
+ return "col " + inputColumn;
+ }
+
@Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
VectorExpressionDescriptor.Builder b = new VectorExpressionDescriptor.Builder();
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncLongToString.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncLongToString.java
index fa0a746..db45ed4 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncLongToString.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncLongToString.java
@@ -143,6 +143,10 @@ public String getOutputType() {
return "String";
}
+ @Override
+ public String vectorExpressionParameters() {
+ return "col " + inputCol;
+ }
@Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncRoundWithNumDigitsDecimalToDecimal.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncRoundWithNumDigitsDecimalToDecimal.java
index a18bb55..9eead7b 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncRoundWithNumDigitsDecimalToDecimal.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncRoundWithNumDigitsDecimalToDecimal.java
@@ -120,6 +120,10 @@ public String getOutputType() {
return outputType;
}
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", decimalPlaces " + decimalPlaces;
+ }
+
@Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncTimestampToDecimal.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncTimestampToDecimal.java
index 774551c..5f4e83a 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncTimestampToDecimal.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncTimestampToDecimal.java
@@ -131,6 +131,11 @@ public void setInputColumn(int inputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + inputColumn;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
VectorExpressionDescriptor.Builder b = new VectorExpressionDescriptor.Builder();
b.setMode(VectorExpressionDescriptor.Mode.PROJECTION)
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncTimestampToLong.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncTimestampToLong.java
index b84d9be..b652226 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncTimestampToLong.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FuncTimestampToLong.java
@@ -132,6 +132,11 @@ public void setInputColumn(int inputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + inputColumn;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
VectorExpressionDescriptor.Builder b = new VectorExpressionDescriptor.Builder();
b.setMode(VectorExpressionDescriptor.Mode.PROJECTION)
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IdentityExpression.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IdentityExpression.java
index 402d0f8..2385a40 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IdentityExpression.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IdentityExpression.java
@@ -81,6 +81,11 @@ public void setType(String type) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder()).build();
}
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprDoubleColumnDoubleColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprDoubleColumnDoubleColumn.java
index f0f4f6d..514b453 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprDoubleColumnDoubleColumn.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprDoubleColumnDoubleColumn.java
@@ -167,6 +167,11 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + arg1Column + ", col "+ arg2Column + ", col "+ arg3Column;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprIntervalDayTimeColumnColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprIntervalDayTimeColumnColumn.java
index 804923e..98fa29e 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprIntervalDayTimeColumnColumn.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprIntervalDayTimeColumnColumn.java
@@ -136,6 +136,11 @@ public String getOutputType() {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + arg1Column + ", col "+ arg2Column + ", col "+ arg3Column;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprIntervalDayTimeColumnScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprIntervalDayTimeColumnScalar.java
index 8face7d..9dc3669 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprIntervalDayTimeColumnScalar.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprIntervalDayTimeColumnScalar.java
@@ -130,6 +130,11 @@ public String getOutputType() {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + arg1Column + ", col "+ arg2Column + ", val "+ arg3Scalar.toString();
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprIntervalDayTimeScalarColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprIntervalDayTimeScalarColumn.java
index 40f2e08..4d4649f 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprIntervalDayTimeScalarColumn.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprIntervalDayTimeScalarColumn.java
@@ -132,6 +132,11 @@ public String getOutputType() {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + arg1Column + ", val "+ arg2Scalar + ", col "+ arg3Column;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprIntervalDayTimeScalarScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprIntervalDayTimeScalarScalar.java
index 43676dd..c8f3294 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprIntervalDayTimeScalarScalar.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprIntervalDayTimeScalarScalar.java
@@ -120,6 +120,11 @@ public String getOutputType() {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + arg1Column + ", val "+ arg2Scalar + ", val "+ arg3Scalar;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprLongColumnLongColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprLongColumnLongColumn.java
index 06ba8f8..4c6015e 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprLongColumnLongColumn.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprLongColumnLongColumn.java
@@ -166,6 +166,11 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + arg1Column + ", col "+ arg2Column + ", col "+ arg3Column;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringGroupColumnStringGroupColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringGroupColumnStringGroupColumn.java
index ca11a55..c8367c6 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringGroupColumnStringGroupColumn.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringGroupColumnStringGroupColumn.java
@@ -177,6 +177,11 @@ public String getOutputType() {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + arg1Column + ", col "+ arg2Column + ", col "+ arg3Column;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringGroupColumnStringScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringGroupColumnStringScalar.java
index 4e09448..8b18ae0 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringGroupColumnStringScalar.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringGroupColumnStringScalar.java
@@ -18,6 +18,8 @@
package org.apache.hadoop.hive.ql.exec.vector.expressions;
+import java.nio.charset.StandardCharsets;
+
import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression;
import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector;
import org.apache.hadoop.hive.ql.exec.vector.BytesColumnVector;
@@ -164,6 +166,11 @@ public String getOutputType() {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + arg1Column + ", col "+ arg2Column + ", val "+ new String(arg3Scalar, StandardCharsets.UTF_8);
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringScalarStringGroupColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringScalarStringGroupColumn.java
index 79ed71e..3a0c035 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringScalarStringGroupColumn.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringScalarStringGroupColumn.java
@@ -18,6 +18,8 @@
package org.apache.hadoop.hive.ql.exec.vector.expressions;
+import java.nio.charset.StandardCharsets;
+
import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression;
import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector;
import org.apache.hadoop.hive.ql.exec.vector.BytesColumnVector;
@@ -164,6 +166,11 @@ public String getOutputType() {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + arg1Column + ", val "+ new String(arg2Scalar, StandardCharsets.UTF_8) + ", col "+ arg3Column;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringScalarStringScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringScalarStringScalar.java
index 2a35970..4a51693 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringScalarStringScalar.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprStringScalarStringScalar.java
@@ -18,6 +18,8 @@
package org.apache.hadoop.hive.ql.exec.vector.expressions;
+import java.nio.charset.StandardCharsets;
+
import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression;
import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector;
import org.apache.hadoop.hive.ql.exec.vector.BytesColumnVector;
@@ -133,6 +135,11 @@ public String getOutputType() {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + arg1Column + ", val "+ new String(arg2Scalar, StandardCharsets.UTF_8) + ", val "+ new String(arg3Scalar, StandardCharsets.UTF_8);
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprTimestampColumnColumnBase.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprTimestampColumnColumnBase.java
index 8441863..8219b3c 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprTimestampColumnColumnBase.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprTimestampColumnColumnBase.java
@@ -133,4 +133,9 @@ public int getOutputColumn() {
public String getOutputType() {
return "long";
}
+
+ @Override
+ public String vectorExpressionParameters() {
+ return "col " + arg1Column + ", col "+ arg2Column + ", col "+ arg3Column;
+ }
}
\ No newline at end of file
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprTimestampColumnScalarBase.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprTimestampColumnScalarBase.java
index 6b87ff2..eb0c1c0 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprTimestampColumnScalarBase.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprTimestampColumnScalarBase.java
@@ -130,4 +130,10 @@ public int getOutputColumn() {
public String getOutputType() {
return "timestamp";
}
+
+ @Override
+ public String vectorExpressionParameters() {
+ return "col " + arg1Column + ", col "+ arg2Column + ", val "+ arg3Scalar;
+ }
+
}
\ No newline at end of file
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprTimestampScalarColumnBase.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprTimestampScalarColumnBase.java
index 2162f17..3e4a195 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprTimestampScalarColumnBase.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprTimestampScalarColumnBase.java
@@ -131,4 +131,10 @@ public int getOutputColumn() {
public String getOutputType() {
return "timestamp";
}
+
+ @Override
+ public String vectorExpressionParameters() {
+ return "col " + arg1Column + ", val "+ arg2Scalar + ", col "+ arg3Column;
+ }
+
}
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprTimestampScalarScalarBase.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprTimestampScalarScalarBase.java
index 707f574..5273131 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprTimestampScalarScalarBase.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IfExprTimestampScalarScalarBase.java
@@ -117,4 +117,10 @@ public int getOutputColumn() {
public String getOutputType() {
return "timestamp";
}
+
+ @Override
+ public String vectorExpressionParameters() {
+ return "col " + arg1Column + ", val "+ arg2Scalar + ", val "+ arg3Scalar;
+ }
+
}
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IsNotNull.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IsNotNull.java
index f19551e..2f6e7b9 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IsNotNull.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IsNotNull.java
@@ -107,6 +107,11 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IsNull.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IsNull.java
index 3169bae..583ab7a 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IsNull.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/IsNull.java
@@ -105,6 +105,11 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
VectorExpressionDescriptor.Builder b = new VectorExpressionDescriptor.Builder();
b.setMode(VectorExpressionDescriptor.Mode.PROJECTION)
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColDivideLongColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColDivideLongColumn.java
index 33f50e0..6fa9779 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColDivideLongColumn.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColDivideLongColumn.java
@@ -174,6 +174,11 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum1 + ", col " + colNum2;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColDivideLongScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColDivideLongScalar.java
index 68b6a87..f26c8e1 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColDivideLongScalar.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColDivideLongScalar.java
@@ -141,6 +141,11 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", val " + value;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColEqualLongColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColEqualLongColumn.java
index a77d41a..3b3c923 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColEqualLongColumn.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColEqualLongColumn.java
@@ -154,6 +154,11 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum1 + ", col " + colNum2;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColEqualLongScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColEqualLongScalar.java
index be717a1..c174d5f 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColEqualLongScalar.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColEqualLongScalar.java
@@ -135,6 +135,10 @@ public void setOutputColumn(int outputColumn) {
this.outputColumn = outputColumn;
}
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", val " + value;
+ }
+
@Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColGreaterEqualLongColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColGreaterEqualLongColumn.java
index 6ee5daf..dd2c3dc 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColGreaterEqualLongColumn.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColGreaterEqualLongColumn.java
@@ -154,6 +154,11 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum1 + ", col " + colNum2;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColGreaterEqualLongScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColGreaterEqualLongScalar.java
index cd8d723..710ac23 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColGreaterEqualLongScalar.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColGreaterEqualLongScalar.java
@@ -136,6 +136,11 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", val " + value;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColGreaterLongColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColGreaterLongColumn.java
index 053ced9..c8e07f2 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColGreaterLongColumn.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColGreaterLongColumn.java
@@ -154,6 +154,11 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum1 + ", col " + colNum2;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColGreaterLongScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColGreaterLongScalar.java
index 16148f3..a234ae1 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColGreaterLongScalar.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColGreaterLongScalar.java
@@ -136,6 +136,11 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", val " + value;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColLessEqualLongColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColLessEqualLongColumn.java
index 25d52b3..8db8b86 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColLessEqualLongColumn.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColLessEqualLongColumn.java
@@ -154,6 +154,11 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum1 + ", col " + colNum2;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColLessEqualLongScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColLessEqualLongScalar.java
index 927856f..b06a876 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColLessEqualLongScalar.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColLessEqualLongScalar.java
@@ -136,6 +136,11 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", val " + value;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColLessLongColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColLessLongColumn.java
index e6e54e9..b44e9bd 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColLessLongColumn.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColLessLongColumn.java
@@ -154,6 +154,11 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum1 + ", col " + colNum2;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColLessLongScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColLessLongScalar.java
index ac10a83..ada4312 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColLessLongScalar.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColLessLongScalar.java
@@ -136,6 +136,11 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", val " + value;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColNotEqualLongColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColNotEqualLongColumn.java
index 865fdb9..fa667ca 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColNotEqualLongColumn.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColNotEqualLongColumn.java
@@ -154,6 +154,11 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum1 + ", col " + colNum2;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColNotEqualLongScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColNotEqualLongScalar.java
index 789ca3e..7d16ae0 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColNotEqualLongScalar.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColNotEqualLongScalar.java
@@ -136,6 +136,11 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", val " + value;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColumnInList.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColumnInList.java
index fb15880..babac22 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColumnInList.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongColumnInList.java
@@ -18,6 +18,8 @@
package org.apache.hadoop.hive.ql.exec.vector.expressions;
+import java.util.Arrays;
+
import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression;
import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector;
import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
@@ -154,6 +156,10 @@ public void setInListValues(long [] a) {
this.inListValues = a;
}
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", values " + Arrays.toString(inListValues);
+ }
+
@Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarDivideLongColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarDivideLongColumn.java
index 3c442da..b1958f2 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarDivideLongColumn.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarDivideLongColumn.java
@@ -153,6 +153,11 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "val " + value + ", col " + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarEqualLongColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarEqualLongColumn.java
index 09d845c..a4cea31 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarEqualLongColumn.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarEqualLongColumn.java
@@ -135,6 +135,10 @@ public void setOutputColumn(int outputColumn) {
this.outputColumn = outputColumn;
}
+ public String vectorExpressionParameters() {
+ return "val " + value + ", col " + colNum;
+ }
+
@Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarGreaterEqualLongColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarGreaterEqualLongColumn.java
index afc80eb..15ba69b 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarGreaterEqualLongColumn.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarGreaterEqualLongColumn.java
@@ -136,6 +136,11 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "val " + value + ", col " + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarGreaterLongColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarGreaterLongColumn.java
index e2e871d..38984c5 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarGreaterLongColumn.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarGreaterLongColumn.java
@@ -136,6 +136,11 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "val " + value + ", col " + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarLessEqualLongColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarLessEqualLongColumn.java
index ae675ed..47fb591 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarLessEqualLongColumn.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarLessEqualLongColumn.java
@@ -135,6 +135,10 @@ public void setOutputColumn(int outputColumn) {
this.outputColumn = outputColumn;
}
+ public String vectorExpressionParameters() {
+ return "val " + value + ", col " + colNum;
+ }
+
@Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarLessLongColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarLessLongColumn.java
index c664e35..d5801d7 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarLessLongColumn.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarLessLongColumn.java
@@ -136,6 +136,11 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "val " + value + ", col " + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarNotEqualLongColumn.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarNotEqualLongColumn.java
index 776ab9f..b6bbfd1 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarNotEqualLongColumn.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongScalarNotEqualLongColumn.java
@@ -136,6 +136,11 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "val " + value + ", col " + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongToStringUnaryUDF.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongToStringUnaryUDF.java
index fbca683..80b79a4 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongToStringUnaryUDF.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/LongToStringUnaryUDF.java
@@ -135,6 +135,11 @@ public String getOutputType() {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + inputColumn;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
VectorExpressionDescriptor.Builder b = new VectorExpressionDescriptor.Builder();
b.setMode(VectorExpressionDescriptor.Mode.PROJECTION)
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/MathFuncDoubleToDouble.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/MathFuncDoubleToDouble.java
index f95c9ec..b8e3489 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/MathFuncDoubleToDouble.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/MathFuncDoubleToDouble.java
@@ -34,7 +34,7 @@
public abstract class MathFuncDoubleToDouble extends VectorExpression {
private static final long serialVersionUID = 1L;
- private int colNum;
+ protected int colNum;
private int outputColumn;
// Subclasses must override this with a function that implements the desired logic.
@@ -133,4 +133,9 @@ public void setColNum(int colNum) {
public String getOutputType() {
return "double";
}
+
+ @Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum;
+ }
}
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/MathFuncLongToDouble.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/MathFuncLongToDouble.java
index 4b4f38d..3b55d06 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/MathFuncLongToDouble.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/MathFuncLongToDouble.java
@@ -133,4 +133,9 @@ public void setColNum(int colNum) {
public String getOutputType() {
return "double";
}
+
+ @Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum;
+ }
}
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/MathFuncLongToLong.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/MathFuncLongToLong.java
index 4b1f908..5e36c09 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/MathFuncLongToLong.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/MathFuncLongToLong.java
@@ -33,7 +33,7 @@
public abstract class MathFuncLongToLong extends VectorExpression {
private static final long serialVersionUID = 1L;
- private int colNum;
+ protected int colNum;
private int outputColumn;
// Subclasses must override this with a function that implements the desired logic.
@@ -125,4 +125,9 @@ public void setColNum(int colNum) {
public String getOutputType() {
return "long";
}
+
+ @Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum;
+ }
}
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/NotCol.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/NotCol.java
index ea2a434..1ece4a8 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/NotCol.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/NotCol.java
@@ -122,6 +122,11 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/PosModDoubleToDouble.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/PosModDoubleToDouble.java
index 39a3d87..0990095 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/PosModDoubleToDouble.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/PosModDoubleToDouble.java
@@ -55,6 +55,11 @@ public double getDivisor() {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", divisor " + divisor;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/PosModLongToLong.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/PosModLongToLong.java
index 12b7286..4809011 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/PosModLongToLong.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/PosModLongToLong.java
@@ -55,6 +55,11 @@ public long getDivisor() {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", divisor " + divisor;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/RoundWithNumDigitsDoubleToDouble.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/RoundWithNumDigitsDoubleToDouble.java
index b8dfb41..4b791b6 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/RoundWithNumDigitsDoubleToDouble.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/RoundWithNumDigitsDoubleToDouble.java
@@ -59,6 +59,11 @@ public void setArg(long l) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", decimalPlaces " + decimalPlaces.get();
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
VectorExpressionDescriptor.Builder b = new VectorExpressionDescriptor.Builder();
b.setMode(VectorExpressionDescriptor.Mode.PROJECTION)
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/SelectColumnIsFalse.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/SelectColumnIsFalse.java
index 77749e9..a906bef 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/SelectColumnIsFalse.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/SelectColumnIsFalse.java
@@ -138,6 +138,10 @@ public void setColNum1(int colNum1) {
this.colNum1 = colNum1;
}
+ public String vectorExpressionParameters() {
+ return "col " + colNum1;
+ }
+
@Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
VectorExpressionDescriptor.Builder b = new VectorExpressionDescriptor.Builder();
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/SelectColumnIsNotNull.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/SelectColumnIsNotNull.java
index 733e2a6..f8517dd 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/SelectColumnIsNotNull.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/SelectColumnIsNotNull.java
@@ -108,6 +108,11 @@ public void setColNum(int colNum) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
VectorExpressionDescriptor.Builder b = new VectorExpressionDescriptor.Builder();
b.setMode(VectorExpressionDescriptor.Mode.FILTER)
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/SelectColumnIsNull.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/SelectColumnIsNull.java
index 7159178..b792bbe 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/SelectColumnIsNull.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/SelectColumnIsNull.java
@@ -106,6 +106,11 @@ public void setColNum(int colNum) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
VectorExpressionDescriptor.Builder b = new VectorExpressionDescriptor.Builder();
b.setMode(VectorExpressionDescriptor.Mode.FILTER)
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/SelectColumnIsTrue.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/SelectColumnIsTrue.java
index f387a5c..b58b49e 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/SelectColumnIsTrue.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/SelectColumnIsTrue.java
@@ -138,6 +138,11 @@ public void setColNum1(int colNum1) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum1;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
VectorExpressionDescriptor.Builder b = new VectorExpressionDescriptor.Builder();
b.setMode(VectorExpressionDescriptor.Mode.FILTER)
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/SelectStringColLikeStringScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/SelectStringColLikeStringScalar.java
index b914196..cb3870e 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/SelectStringColLikeStringScalar.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/SelectStringColLikeStringScalar.java
@@ -162,8 +162,12 @@ public String getOutputType() {
return "String_Family";
}
- @Override
- public Descriptor getDescriptor() {
+ public String vectorExpressionParameters() {
+ return "col " + colNum;
+ }
+
+@Override
+public Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
VectorExpressionDescriptor.Mode.PROJECTION)
@@ -174,6 +178,6 @@ public Descriptor getDescriptor() {
.setInputExpressionTypes(
VectorExpressionDescriptor.InputExpressionType.COLUMN,
VectorExpressionDescriptor.InputExpressionType.SCALAR).build();
- }
+}
}
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringColumnInList.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringColumnInList.java
index b90e3c0..b1ceb9a 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringColumnInList.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringColumnInList.java
@@ -175,4 +175,9 @@ public Descriptor getDescriptor() {
public void setInListValues(byte [][] a) {
this.inListValues = a;
}
+
+ @Override
+ public String vectorExpressionParameters() {
+ return "col " + inputCol + ", values " + Arrays.toString(inListValues);
+ }
}
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringGroupColConcatStringScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringGroupColConcatStringScalar.java
index 1cd3c46..bd44390 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringGroupColConcatStringScalar.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringGroupColConcatStringScalar.java
@@ -18,6 +18,8 @@
package org.apache.hadoop.hive.ql.exec.vector.expressions;
+import java.nio.charset.StandardCharsets;
+
import org.apache.hadoop.hive.ql.exec.vector.BytesColumnVector;
import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor;
import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
@@ -149,6 +151,11 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", val " + new String(value, StandardCharsets.UTF_8);
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringGroupConcatColCol.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringGroupConcatColCol.java
index 56bc97b..35666d8 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringGroupConcatColCol.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringGroupConcatColCol.java
@@ -440,6 +440,11 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum1 + ", col " + colNum2;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringLength.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringLength.java
index 76602be..cdaf694 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringLength.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringLength.java
@@ -156,6 +156,10 @@ public void setOutputColumn(int outputColumn) {
this.outputColumn = outputColumn;
}
+ public String vectorExpressionParameters() {
+ return "col " + colNum;
+ }
+
@Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
VectorExpressionDescriptor.Builder b = new VectorExpressionDescriptor.Builder();
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringScalarConcatStringGroupCol.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringScalarConcatStringGroupCol.java
index b98f72d..b1e1dad 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringScalarConcatStringGroupCol.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringScalarConcatStringGroupCol.java
@@ -18,6 +18,8 @@
package org.apache.hadoop.hive.ql.exec.vector.expressions;
+import java.nio.charset.StandardCharsets;
+
import org.apache.hadoop.hive.ql.exec.vector.BytesColumnVector;
import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor;
import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
@@ -149,6 +151,11 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "val " + new String(value, StandardCharsets.UTF_8) + ", col " + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder())
.setMode(
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringSubstrColStart.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringSubstrColStart.java
index 75a99f0..305d1a7 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringSubstrColStart.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringSubstrColStart.java
@@ -245,6 +245,11 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", start " + startIdx;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
VectorExpressionDescriptor.Builder b = new VectorExpressionDescriptor.Builder();
b.setMode(VectorExpressionDescriptor.Mode.PROJECTION)
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringSubstrColStartLen.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringSubstrColStartLen.java
index 0ff7af6..4a7dbdc 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringSubstrColStartLen.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringSubstrColStartLen.java
@@ -272,6 +272,11 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", start " + startIdx + ", length " + length;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
VectorExpressionDescriptor.Builder b = new VectorExpressionDescriptor.Builder();
b.setMode(VectorExpressionDescriptor.Mode.PROJECTION)
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringUnaryUDF.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringUnaryUDF.java
index 016a695..527d3b3 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringUnaryUDF.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringUnaryUDF.java
@@ -195,6 +195,11 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
VectorExpressionDescriptor.Builder b = new VectorExpressionDescriptor.Builder();
b.setMode(VectorExpressionDescriptor.Mode.PROJECTION)
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringUnaryUDFDirect.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringUnaryUDFDirect.java
index 89ef251..c87371f 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringUnaryUDFDirect.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringUnaryUDFDirect.java
@@ -136,6 +136,10 @@ public String getOutputType() {
return "String";
}
+ public String vectorExpressionParameters() {
+ return "col " + inputColumn;
+ }
+
@Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
VectorExpressionDescriptor.Builder b = new VectorExpressionDescriptor.Builder();
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StructColumnInList.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StructColumnInList.java
index 8134108..7d25446 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StructColumnInList.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StructColumnInList.java
@@ -18,6 +18,7 @@
package org.apache.hadoop.hive.ql.exec.vector.expressions;
+import java.util.Arrays;
import java.util.List;
import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor.Descriptor;
@@ -172,4 +173,11 @@ public void setStructColumnExprs(VectorizationContext vContext,
}
this.fieldVectorColumnTypes = fieldVectorColumnTypes;
}
+
+ @Override
+ public String vectorExpressionParameters() {
+ return "structExpressions " + Arrays.toString(structExpressions) +
+ ", fieldVectorColumnTypes " + Arrays.toString(fieldVectorColumnTypes) +
+ ", structColumnMap " + Arrays.toString(structColumnMap);
+ }
}
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/TimestampColumnInList.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/TimestampColumnInList.java
index bc09a3a..5e76de8 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/TimestampColumnInList.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/TimestampColumnInList.java
@@ -19,6 +19,7 @@
package org.apache.hadoop.hive.ql.exec.vector.expressions;
import java.sql.Timestamp;
+import java.util.Arrays;
import java.util.HashSet;
import org.apache.hadoop.hive.ql.exec.vector.TimestampColumnVector;
@@ -150,4 +151,9 @@ public Descriptor getDescriptor() {
public void setInListValues(Timestamp[] a) {
this.inListValues = a;
}
+
+ @Override
+ public String vectorExpressionParameters() {
+ return "col " + inputCol + ", values " + Arrays.toString(inListValues);
+ }
}
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/TimestampToStringUnaryUDF.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/TimestampToStringUnaryUDF.java
index 052d57c..32cf527 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/TimestampToStringUnaryUDF.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/TimestampToStringUnaryUDF.java
@@ -133,6 +133,10 @@ public String getOutputType() {
return "String";
}
+ public String vectorExpressionParameters() {
+ return "col " + inputColumn;
+ }
+
@Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
VectorExpressionDescriptor.Builder b = new VectorExpressionDescriptor.Builder();
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorCoalesce.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorCoalesce.java
index 543d7f0..c0870c8 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorCoalesce.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorCoalesce.java
@@ -141,6 +141,11 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "columns " + Arrays.toString(inputColumns);
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
// Descriptor is not defined because it takes variable number of arguments with different
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorElt.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorElt.java
index 329d381..5e0e7aa 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorElt.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorElt.java
@@ -17,6 +17,8 @@
*/
package org.apache.hadoop.hive.ql.exec.vector.expressions;
+import java.util.Arrays;
+
import org.apache.hadoop.hive.ql.exec.vector.BytesColumnVector;
import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector;
import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor;
@@ -129,6 +131,11 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "columns " + Arrays.toString(inputColumns);
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
// Descriptor is not defined because it takes variable number of arguments with different
// data types.
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorExpression.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorExpression.java
index 8fca8a1..bf2d4ec 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorExpression.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorExpression.java
@@ -22,6 +22,7 @@
import java.util.Map;
import com.google.common.collect.ImmutableMap;
+
import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor;
import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
@@ -138,25 +139,42 @@ public void setInputTypes(Type ... inputTypes) {
return inputTypes;
}
+ public String vectorExpressionParameters() {
+ return null;
+ }
+
@Override
public String toString() {
StringBuilder b = new StringBuilder();
- b.append(this.getClass().getSimpleName());
- b.append("[");
- b.append(this.getOutputColumn());
- b.append(":");
- b.append(this.getOutputType());
- b.append("]");
- if (childExpressions != null) {
- b.append("(");
- for (int i = 0; i < childExpressions.length; i++) {
- b.append(childExpressions[i].toString());
- if (i < childExpressions.length-1) {
- b.append(" ");
+ if (this instanceof IdentityExpression) {
+ b.append(vectorExpressionParameters());
+ } else {
+ b.append(this.getClass().getSimpleName());
+ String vectorExpressionParameters = vectorExpressionParameters();
+ if (vectorExpressionParameters != null) {
+ b.append("(");
+ b.append(vectorExpressionParameters);
+ b.append(")");
+ }
+ if (childExpressions != null) {
+ b.append("(children: ");
+ for (int i = 0; i < childExpressions.length; i++) {
+ b.append(childExpressions[i].toString());
+ if (i < childExpressions.length-1) {
+ b.append(", ");
+ }
}
+ b.append(")");
+ }
+ b.append(" -> ");
+ int outputColumn = getOutputColumn();
+ if (outputColumn != -1) {
+ b.append(outputColumn);
+ b.append(":");
}
- b.append(")");
+ b.append(getOutputType());
}
+
return b.toString();
}
}
\ No newline at end of file
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateAddColCol.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateAddColCol.java
index 4ce6e20..00e9e03 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateAddColCol.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateAddColCol.java
@@ -216,6 +216,11 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum1 + ", col " + colNum2;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
VectorExpressionDescriptor.Builder b = new VectorExpressionDescriptor.Builder();
b.setMode(VectorExpressionDescriptor.Mode.PROJECTION)
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateAddColScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateAddColScalar.java
index 0e09f49..730dc36 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateAddColScalar.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateAddColScalar.java
@@ -261,6 +261,11 @@ public void setNumDay(int numDays) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", val " + numDays;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
VectorExpressionDescriptor.Builder b = new VectorExpressionDescriptor.Builder();
b.setMode(VectorExpressionDescriptor.Mode.PROJECTION)
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateAddScalarCol.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateAddScalarCol.java
index 74ef6a6..f0a676d 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateAddScalarCol.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateAddScalarCol.java
@@ -207,6 +207,11 @@ public void setPositive(boolean isPositive) {
this.isPositive = isPositive;
}
+ @Override
+ public String vectorExpressionParameters() {
+ return "val " + stringValue + ", col " + colNum;
+ }
+
public VectorExpressionDescriptor.Descriptor getDescriptor() {
VectorExpressionDescriptor.Builder b = new VectorExpressionDescriptor.Builder();
b.setMode(VectorExpressionDescriptor.Mode.PROJECTION)
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateDiffColCol.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateDiffColCol.java
index 4edf558..d3c5da2 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateDiffColCol.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateDiffColCol.java
@@ -358,6 +358,11 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum1 + ", col " + colNum2;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
VectorExpressionDescriptor.Builder b = new VectorExpressionDescriptor.Builder();
b.setMode(VectorExpressionDescriptor.Mode.PROJECTION)
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateDiffColScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateDiffColScalar.java
index 15edbdf..4988630 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateDiffColScalar.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateDiffColScalar.java
@@ -28,6 +28,7 @@
import org.apache.hadoop.hive.serde2.io.DateWritable;
import org.apache.hadoop.io.Text;
+import java.nio.charset.StandardCharsets;
import java.sql.Date;
import java.sql.Timestamp;
import java.text.ParseException;
@@ -299,6 +300,11 @@ public void setStringValue(byte[] stringValue) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "col " + colNum + ", val " + new String(stringValue, StandardCharsets.UTF_8);
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
VectorExpressionDescriptor.Builder b = new VectorExpressionDescriptor.Builder();
b.setMode(VectorExpressionDescriptor.Mode.PROJECTION)
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateDiffScalarCol.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateDiffScalarCol.java
index 371537a..d5ee1eb 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateDiffScalarCol.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateDiffScalarCol.java
@@ -298,6 +298,11 @@ public void setStringValue(byte[] stringValue) {
}
@Override
+ public String vectorExpressionParameters() {
+ return "val " + stringValue + ", col " + colNum;
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
VectorExpressionDescriptor.Builder b = new VectorExpressionDescriptor.Builder();
b.setMode(VectorExpressionDescriptor.Mode.PROJECTION)
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFTimestampFieldDate.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFTimestampFieldDate.java
index 0a3a87a..0255cfa 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFTimestampFieldDate.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFTimestampFieldDate.java
@@ -25,6 +25,7 @@
import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor;
import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
import org.apache.hadoop.hive.serde2.io.DateWritable;
+import org.apache.hive.common.util.DateUtils;
import com.google.common.base.Preconditions;
@@ -150,6 +151,15 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ if (field == -1) {
+ return "col " + colNum;
+ } else {
+ return "col " + colNum + ", field " + DateUtils.getFieldName(field);
+ }
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
VectorExpressionDescriptor.Builder b = new VectorExpressionDescriptor.Builder();
b.setMode(VectorExpressionDescriptor.Mode.PROJECTION)
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFTimestampFieldString.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFTimestampFieldString.java
index 45e7a31..6719ce3 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFTimestampFieldString.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFTimestampFieldString.java
@@ -177,6 +177,15 @@ public void setOutputColumn(int outputColumn) {
}
@Override
+ public String vectorExpressionParameters() {
+ if (fieldStart == -1) {
+ return "col " + colNum;
+ } else {
+ return "col " + colNum + ", fieldStart " + fieldStart + ", fieldLength " + fieldLength;
+ }
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
VectorExpressionDescriptor.Builder b = new VectorExpressionDescriptor.Builder();
b.setMode(VectorExpressionDescriptor.Mode.PROJECTION)
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFTimestampFieldTimestamp.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFTimestampFieldTimestamp.java
index 5fca678..e9000c6 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFTimestampFieldTimestamp.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFTimestampFieldTimestamp.java
@@ -25,6 +25,7 @@
import org.apache.hadoop.hive.ql.exec.vector.TimestampColumnVector;
import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor;
import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
+import org.apache.hive.common.util.DateUtils;
import com.google.common.base.Preconditions;
@@ -148,6 +149,14 @@ public void setOutputColumn(int outputColumn) {
this.outputColumn = outputColumn;
}
+ public String vectorExpressionParameters() {
+ if (field == -1) {
+ return "col " + colNum;
+ } else {
+ return "col " + colNum + ", field " + DateUtils.getFieldName(field);
+ }
+ }
+
@Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
VectorExpressionDescriptor.Builder b = new VectorExpressionDescriptor.Builder();
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorAggregateExpression.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorAggregateExpression.java
index 96e62cf..0866f63 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorAggregateExpression.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorAggregateExpression.java
@@ -22,6 +22,7 @@
import org.apache.hadoop.hive.ql.exec.vector.VectorAggregationBufferRow;
import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
+import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression;
import org.apache.hadoop.hive.ql.metadata.HiveException;
import org.apache.hadoop.hive.ql.plan.AggregationDesc;
import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
@@ -55,7 +56,25 @@ public abstract void aggregateInputSelection(VectorAggregationBufferRow[] aggreg
public boolean hasVariableSize() {
return false;
}
+ public abstract VectorExpression inputExpression();
public abstract void init(AggregationDesc desc) throws HiveException;
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append(this.getClass().getSimpleName());
+ VectorExpression inputExpression = inputExpression();
+ if (inputExpression != null) {
+ sb.append("(");
+ sb.append(inputExpression.toString());
+ sb.append(") -> ");
+ } else {
+ sb.append("(*) -> ");
+ }
+ ObjectInspector outputObjectInspector = getOutputObjectInspector();
+ sb.append(outputObjectInspector.getTypeName());
+ return sb.toString();
+ }
}
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFAvgDecimal.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFAvgDecimal.java
index 4f6d652..74e25ae 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFAvgDecimal.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFAvgDecimal.java
@@ -93,6 +93,12 @@ public void reset() {
}
private VectorExpression inputExpression;
+
+ @Override
+ public VectorExpression inputExpression() {
+ return inputExpression;
+ }
+
transient private Object[] partialResult;
transient private LongWritable resultCount;
transient private HiveDecimalWritable resultSum;
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFAvgTimestamp.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFAvgTimestamp.java
index d0a1d0d..483d9dc 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFAvgTimestamp.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFAvgTimestamp.java
@@ -84,6 +84,12 @@ public void reset () {
}
private VectorExpression inputExpression;
+
+ @Override
+ public VectorExpression inputExpression() {
+ return inputExpression;
+ }
+
transient private Object[] partialResult;
transient private LongWritable resultCount;
transient private DoubleWritable resultSum;
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFCount.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFCount.java
index cf373a1..494febc 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFCount.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFCount.java
@@ -60,6 +60,12 @@ public void reset() {
}
private VectorExpression inputExpression = null;
+
+ @Override
+ public VectorExpression inputExpression() {
+ return inputExpression;
+ }
+
transient private final LongWritable result;
public VectorUDAFCount(VectorExpression inputExpression) {
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFCountMerge.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFCountMerge.java
index 577977f..dec88cb 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFCountMerge.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFCountMerge.java
@@ -61,6 +61,12 @@ public void reset() {
}
private VectorExpression inputExpression = null;
+
+ @Override
+ public VectorExpression inputExpression() {
+ return inputExpression;
+ }
+
transient private final LongWritable result;
public VectorUDAFCountMerge(VectorExpression inputExpression) {
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFCountStar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFCountStar.java
index 72beda8..337ba0a 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFCountStar.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFCountStar.java
@@ -57,6 +57,13 @@ public void reset() {
}
}
+
+ @Override
+ public VectorExpression inputExpression() {
+ // None.
+ return null;
+ }
+
transient private final LongWritable result;
public VectorUDAFCountStar(VectorExpression inputExpression) {
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFStdPopTimestamp.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFStdPopTimestamp.java
index fa25e6a..8cd3506 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFStdPopTimestamp.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFStdPopTimestamp.java
@@ -83,6 +83,12 @@ public void reset () {
}
private VectorExpression inputExpression;
+
+ @Override
+ public VectorExpression inputExpression() {
+ return inputExpression;
+ }
+
transient private LongWritable resultCount;
transient private DoubleWritable resultSum;
transient private DoubleWritable resultVariance;
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFStdSampTimestamp.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFStdSampTimestamp.java
index b3e1fae..61d6977 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFStdSampTimestamp.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFStdSampTimestamp.java
@@ -83,6 +83,12 @@ public void reset () {
}
private VectorExpression inputExpression;
+
+ @Override
+ public VectorExpression inputExpression() {
+ return inputExpression;
+ }
+
transient private LongWritable resultCount;
transient private DoubleWritable resultSum;
transient private DoubleWritable resultVariance;
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFSumDecimal.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFSumDecimal.java
index 508c960..b10f66f 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFSumDecimal.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFSumDecimal.java
@@ -75,6 +75,11 @@ public void reset() {
private VectorExpression inputExpression;
+ @Override
+ public VectorExpression inputExpression() {
+ return inputExpression;
+ }
+
public VectorUDAFSumDecimal(VectorExpression inputExpression) {
this();
this.inputExpression = inputExpression;
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFVarPopTimestamp.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFVarPopTimestamp.java
index 970ec22..2709b07 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFVarPopTimestamp.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFVarPopTimestamp.java
@@ -83,6 +83,12 @@ public void reset () {
}
private VectorExpression inputExpression;
+
+ @Override
+ public VectorExpression inputExpression() {
+ return inputExpression;
+ }
+
transient private LongWritable resultCount;
transient private DoubleWritable resultSum;
transient private DoubleWritable resultVariance;
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFVarSampTimestamp.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFVarSampTimestamp.java
index 9af1a28..03dce1e 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFVarSampTimestamp.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/aggregates/VectorUDAFVarSampTimestamp.java
@@ -83,6 +83,12 @@ public void reset () {
}
private VectorExpression inputExpression;
+
+ @Override
+ public VectorExpression inputExpression() {
+ return inputExpression;
+ }
+
transient private LongWritable resultCount;
transient private DoubleWritable resultSum;
transient private DoubleWritable resultVariance;
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinCommonOperator.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinCommonOperator.java
index 476446a..77b44fb 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinCommonOperator.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinCommonOperator.java
@@ -22,6 +22,7 @@
import java.util.Arrays;
import java.util.List;
import java.util.Map;
+
import org.apache.commons.lang.ArrayUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -56,6 +57,7 @@
import org.apache.hadoop.hive.ql.plan.OperatorDesc;
import org.apache.hadoop.hive.ql.plan.VectorMapJoinDesc;
import org.apache.hadoop.hive.ql.plan.VectorMapJoinDesc.HashTableImplementationType;
+import org.apache.hadoop.hive.ql.plan.VectorMapJoinInfo;
import org.apache.hadoop.hive.ql.plan.api.OperatorType;
import org.apache.hadoop.hive.serde2.lazybinary.fast.LazyBinaryDeserializeRead;
import org.apache.hadoop.hive.serde2.objectinspector.StructField;
@@ -63,6 +65,8 @@
import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoUtils;
+import com.google.common.base.Preconditions;
+
/**
* This class is common operator class for native vectorized map join.
*
@@ -72,7 +76,43 @@
*/
public abstract class VectorMapJoinCommonOperator extends MapJoinOperator implements VectorizationContextRegion {
private static final long serialVersionUID = 1L;
- private static final Logger LOG = LoggerFactory.getLogger(VectorMapJoinCommonOperator.class.getName());
+
+ //------------------------------------------------------------------------------------------------
+
+ private static final String CLASS_NAME = VectorMapJoinCommonOperator.class.getName();
+private static final Logger LOG = LoggerFactory.getLogger(CLASS_NAME);
+
+ protected abstract String getLoggingPrefix();
+
+ // For debug tracing: information about the map or reduce task, operator, operator class, etc.
+ protected transient String loggingPrefix;
+
+ protected String getLoggingPrefix(String className) {
+ if (loggingPrefix == null) {
+ initLoggingPrefix(className);
+ }
+ return loggingPrefix;
+ }
+
+ protected void initLoggingPrefix(String className) {
+ if (hconf == null) {
+ // Constructor time...
+ loggingPrefix = className;
+ } else {
+ // Determine the name of our map or reduce task for debug tracing.
+ BaseWork work = Utilities.getMapWork(hconf);
+ if (work == null) {
+ work = Utilities.getReduceWork(hconf);
+ }
+ loggingPrefix = className + " " + work.getName() + " " + getOperatorId();
+ }
+ }
+
+ //------------------------------------------------------------------------------------------------
+
+ protected VectorMapJoinDesc vectorDesc;
+
+ protected VectorMapJoinInfo vectorMapJoinInfo;
// Whether this operator is an outer join.
protected boolean isOuterJoin;
@@ -88,10 +128,10 @@
// a mixture of input big table columns and new scratch columns.
protected VectorizationContext vOutContext;
- // The output column projection of the vectorized row batch. And, the type names of the output
+ // The output column projection of the vectorized row batch. And, the type infos of the output
// columns.
protected int[] outputProjection;
- protected String[] outputTypeNames;
+ protected TypeInfo[] outputTypeInfos;
// These are the vectorized batch expressions for filtering, key expressions, and value
// expressions.
@@ -101,15 +141,17 @@
// This is map of which vectorized row batch columns are the big table key columns. Since
// we may have key expressions that produce new scratch columns, we need a mapping.
- // And, we have their type names.
+ // And, we have their type infos.
protected int[] bigTableKeyColumnMap;
- protected ArrayList bigTableKeyTypeNames;
+ protected String[] bigTableKeyColumnNames;
+ protected TypeInfo[] bigTableKeyTypeInfos;
// Similarly, this is map of which vectorized row batch columns are the big table value columns.
// Since we may have value expressions that produce new scratch columns, we need a mapping.
- // And, we have their type names.
+ // And, we have their type infos.
protected int[] bigTableValueColumnMap;
- protected ArrayList bigTableValueTypeNames;
+ protected String[] bigTableValueColumnNames;
+ protected TypeInfo[] bigTableValueTypeInfos;
// This is a mapping of which big table columns (input and key/value expressions) will be
// part of the big table portion of the join output result.
@@ -124,6 +166,8 @@
// to output batch scratch columns for the small table portion.
protected VectorColumnSourceMapping smallTableMapping;
+ protected VectorColumnSourceMapping projectionMapping;
+
// These are the output columns for the small table and the outer small table keys.
protected int[] smallTableOutputVectorColumns;
protected int[] bigTableOuterKeyOutputVectorColumns;
@@ -137,9 +181,6 @@
// transient.
//---------------------------------------------------------------------------
- // For debug tracing: the name of the map or reduce task.
- protected transient String taskName;
-
// The threshold where we should use a repeating vectorized row batch optimization for
// generating join output results.
protected transient boolean useOverflowRepeatedThreshold;
@@ -192,6 +233,9 @@ public VectorMapJoinCommonOperator(CompilationOpContext ctx,
MapJoinDesc desc = (MapJoinDesc) conf;
this.conf = desc;
+ vectorDesc = (VectorMapJoinDesc) desc.getVectorDesc();
+ vectorMapJoinInfo = vectorDesc.getVectorMapJoinInfo();
+ Preconditions.checkState(vectorMapJoinInfo != null);
this.vContext = vContext;
@@ -210,217 +254,28 @@ public VectorMapJoinCommonOperator(CompilationOpContext ctx,
bigTableFilterExpressions = vContext.getVectorExpressions(filterExpressions.get(posBigTable),
VectorExpressionDescriptor.Mode.FILTER);
- List keyDesc = desc.getKeys().get(posBigTable);
- bigTableKeyExpressions = vContext.getVectorExpressions(keyDesc);
-
- // Since a key expression can be a calculation and the key will go into a scratch column,
- // we need the mapping and type information.
- bigTableKeyColumnMap = new int[bigTableKeyExpressions.length];
- bigTableKeyTypeNames = new ArrayList();
- boolean onlyColumns = true;
- for (int i = 0; i < bigTableKeyColumnMap.length; i++) {
- VectorExpression ve = bigTableKeyExpressions[i];
- if (!IdentityExpression.isColumnOnly(ve)) {
- onlyColumns = false;
- }
- bigTableKeyTypeNames.add(keyDesc.get(i).getTypeString());
- bigTableKeyColumnMap[i] = ve.getOutputColumn();
- }
- if (onlyColumns) {
- bigTableKeyExpressions = null;
- }
-
- List bigTableExprs = desc.getExprs().get(posBigTable);
- bigTableValueExpressions = vContext.getVectorExpressions(bigTableExprs);
-
- /*
- * Similarly, we need a mapping since a value expression can be a calculation and the value
- * will go into a scratch column.
- */
- bigTableValueColumnMap = new int[bigTableValueExpressions.length];
- bigTableValueTypeNames = new ArrayList();
- onlyColumns = true;
- for (int i = 0; i < bigTableValueColumnMap.length; i++) {
- VectorExpression ve = bigTableValueExpressions[i];
- if (!IdentityExpression.isColumnOnly(ve)) {
- onlyColumns = false;
- }
- bigTableValueTypeNames.add(bigTableExprs.get(i).getTypeString());
- bigTableValueColumnMap[i] = ve.getOutputColumn();
- }
- if (onlyColumns) {
- bigTableValueExpressions = null;
- }
-
- determineCommonInfo(isOuterJoin);
- }
-
- protected void determineCommonInfo(boolean isOuter) throws HiveException {
-
- bigTableRetainedMapping = new VectorColumnOutputMapping("Big Table Retained Mapping");
-
- bigTableOuterKeyMapping = new VectorColumnOutputMapping("Big Table Outer Key Mapping");
-
- // The order of the fields in the LazyBinary small table value must be used, so
- // we use the source ordering flavor for the mapping.
- smallTableMapping = new VectorColumnSourceMapping("Small Table Mapping");
-
- // We use a mapping object here so we can build the projection in any order and
- // get the ordered by 0 to n-1 output columns at the end.
- //
- // Also, to avoid copying a big table key into the small table result area for inner joins,
- // we reference it with the projection so there can be duplicate output columns
- // in the projection.
- VectorColumnSourceMapping projectionMapping = new VectorColumnSourceMapping("Projection Mapping");
-
- /*
- * Gather up big and small table output result information from the MapJoinDesc.
- */
- List bigTableRetainList = conf.getRetainList().get(posBigTable);
- int bigTableRetainSize = bigTableRetainList.size();
-
- int[] smallTableIndices;
- int smallTableIndicesSize;
- List smallTableExprs = conf.getExprs().get(posSingleVectorMapJoinSmallTable);
- if (conf.getValueIndices() != null && conf.getValueIndices().get(posSingleVectorMapJoinSmallTable) != null) {
- smallTableIndices = conf.getValueIndices().get(posSingleVectorMapJoinSmallTable);
- smallTableIndicesSize = smallTableIndices.length;
- } else {
- smallTableIndices = null;
- smallTableIndicesSize = 0;
- }
-
- List smallTableRetainList = conf.getRetainList().get(posSingleVectorMapJoinSmallTable);
- int smallTableRetainSize = smallTableRetainList.size();
-
- int smallTableResultSize = 0;
- if (smallTableIndicesSize > 0) {
- smallTableResultSize = smallTableIndicesSize;
- } else if (smallTableRetainSize > 0) {
- smallTableResultSize = smallTableRetainSize;
- }
-
- /*
- * Determine the big table retained mapping first so we can optimize out (with
- * projection) copying inner join big table keys in the subsequent small table results section.
- */
- int nextOutputColumn = (order[0] == posBigTable ? 0 : smallTableResultSize);
- for (int i = 0; i < bigTableRetainSize; i++) {
-
- // Since bigTableValueExpressions may do a calculation and produce a scratch column, we
- // need to map to the right batch column.
-
- int retainColumn = bigTableRetainList.get(i);
- int batchColumnIndex = bigTableValueColumnMap[retainColumn];
- String typeName = bigTableValueTypeNames.get(i);
-
- // With this map we project the big table batch to make it look like an output batch.
- projectionMapping.add(nextOutputColumn, batchColumnIndex, typeName);
-
- // Collect columns we copy from the big table batch to the overflow batch.
- if (!bigTableRetainedMapping.containsOutputColumn(batchColumnIndex)) {
- // Tolerate repeated use of a big table column.
- bigTableRetainedMapping.add(batchColumnIndex, batchColumnIndex, typeName);
- }
-
- nextOutputColumn++;
- }
-
- /*
- * Now determine the small table results.
- */
- int firstSmallTableOutputColumn;
- firstSmallTableOutputColumn = (order[0] == posBigTable ? bigTableRetainSize : 0);
- int smallTableOutputCount = 0;
- nextOutputColumn = firstSmallTableOutputColumn;
-
- // Small table indices has more information (i.e. keys) than retain, so use it if it exists...
- if (smallTableIndicesSize > 0) {
- smallTableOutputCount = smallTableIndicesSize;
-
- for (int i = 0; i < smallTableIndicesSize; i++) {
- if (smallTableIndices[i] >= 0) {
-
- // Zero and above numbers indicate a big table key is needed for
- // small table result "area".
-
- int keyIndex = smallTableIndices[i];
-
- // Since bigTableKeyExpressions may do a calculation and produce a scratch column, we
- // need to map the right column.
- int batchKeyColumn = bigTableKeyColumnMap[keyIndex];
- String typeName = bigTableKeyTypeNames.get(keyIndex);
-
- if (!isOuter) {
-
- // Optimize inner join keys of small table results.
-
- // Project the big table key into the small table result "area".
- projectionMapping.add(nextOutputColumn, batchKeyColumn, typeName);
-
- if (!bigTableRetainedMapping.containsOutputColumn(batchKeyColumn)) {
- // If necessary, copy the big table key into the overflow batch's small table
- // result "area".
- bigTableRetainedMapping.add(batchKeyColumn, batchKeyColumn, typeName);
- }
- } else {
-
- // For outer joins, since the small table key can be null when there is no match,
- // we must have a physical (scratch) column for those keys. We cannot use the
- // projection optimization used by inner joins above.
-
- TypeInfo typeInfo = TypeInfoUtils.getTypeInfoFromTypeString(typeName);
- int scratchColumn = vOutContext.allocateScratchColumn(typeInfo);
- projectionMapping.add(nextOutputColumn, scratchColumn, typeName);
-
- bigTableRetainedMapping.add(batchKeyColumn, scratchColumn, typeName);
+ bigTableKeyColumnMap = vectorMapJoinInfo.getBigTableKeyColumnMap();
+ bigTableKeyColumnNames = vectorMapJoinInfo.getBigTableKeyColumnNames();
+ bigTableKeyTypeInfos = vectorMapJoinInfo.getBigTableKeyTypeInfos();
+ bigTableKeyExpressions = vectorMapJoinInfo.getBigTableKeyExpressions();
- bigTableOuterKeyMapping.add(batchKeyColumn, scratchColumn, typeName);
- }
- } else {
+ bigTableValueColumnMap = vectorMapJoinInfo.getBigTableValueColumnMap();
+ bigTableValueColumnNames = vectorMapJoinInfo.getBigTableValueColumnNames();
+ bigTableValueTypeInfos = vectorMapJoinInfo.getBigTableValueTypeInfos();
+ bigTableValueExpressions = vectorMapJoinInfo.getBigTableValueExpressions();
- // Negative numbers indicate a column to be (deserialize) read from the small table's
- // LazyBinary value row.
- int smallTableValueIndex = -smallTableIndices[i] - 1;
+ bigTableRetainedMapping = vectorMapJoinInfo.getBigTableRetainedMapping();
- String typeName = smallTableExprs.get(i).getTypeString();
+ bigTableOuterKeyMapping = vectorMapJoinInfo.getBigTableOuterKeyMapping();
- // Make a new big table scratch column for the small table value.
- TypeInfo typeInfo = TypeInfoUtils.getTypeInfoFromTypeString(typeName);
- int scratchColumn = vOutContext.allocateScratchColumn(typeInfo);
- projectionMapping.add(nextOutputColumn, scratchColumn, typeName);
+ smallTableMapping = vectorMapJoinInfo.getSmallTableMapping();
- smallTableMapping.add(smallTableValueIndex, scratchColumn, typeName);
- }
- nextOutputColumn++;
- }
- } else if (smallTableRetainSize > 0) {
- smallTableOutputCount = smallTableRetainSize;
-
- // Only small table values appear in join output result.
-
- for (int i = 0; i < smallTableRetainSize; i++) {
- int smallTableValueIndex = smallTableRetainList.get(i);
-
- // Make a new big table scratch column for the small table value.
- TypeInfo typeInfo = smallTableExprs.get(i).getTypeInfo();
- int scratchColumn = vOutContext.allocateScratchColumn(typeInfo);
+ projectionMapping = vectorMapJoinInfo.getProjectionMapping();
- String typeName = smallTableExprs.get(i).getTypeString();
- projectionMapping.add(nextOutputColumn, scratchColumn, typeName);
-
- smallTableMapping.add(smallTableValueIndex, scratchColumn, typeName);
- nextOutputColumn++;
- }
- }
-
- // Convert dynamic arrays and maps to simple arrays.
-
- bigTableRetainedMapping.finalize();
-
- bigTableOuterKeyMapping.finalize();
+ determineCommonInfo(isOuterJoin);
+ }
- smallTableMapping.finalize();
+ protected void determineCommonInfo(boolean isOuter) throws HiveException {
bigTableOuterKeyOutputVectorColumns = bigTableOuterKeyMapping.getOutputColumns();
smallTableOutputVectorColumns = smallTableMapping.getOutputColumns();
@@ -432,46 +287,37 @@ protected void determineCommonInfo(boolean isOuter) throws HiveException {
smallTableByteColumnVectorColumns = getByteColumnVectorColumns(smallTableMapping);
- projectionMapping.finalize();
-
- // Verify we added an entry for each output.
- assert projectionMapping.isSourceSequenceGood();
-
outputProjection = projectionMapping.getOutputColumns();
- outputTypeNames = projectionMapping.getTypeNames();
+ outputTypeInfos = projectionMapping.getTypeInfos();
if (isLogDebugEnabled) {
int[] orderDisplayable = new int[order.length];
for (int i = 0; i < order.length; i++) {
orderDisplayable[i] = (int) order[i];
}
- LOG.debug(taskName + ", " + getOperatorId() + " VectorMapJoinCommonOperator constructor order " + Arrays.toString(orderDisplayable));
- LOG.debug(taskName + ", " + getOperatorId() + " VectorMapJoinCommonOperator constructor posBigTable " + (int) posBigTable);
- LOG.debug(taskName + ", " + getOperatorId() + " VectorMapJoinCommonOperator constructor posSingleVectorMapJoinSmallTable " + (int) posSingleVectorMapJoinSmallTable);
-
- LOG.debug(taskName + ", " + getOperatorId() + " VectorMapJoinCommonOperator constructor bigTableKeyColumnMap " + Arrays.toString(bigTableKeyColumnMap));
- LOG.debug(taskName + ", " + getOperatorId() + " VectorMapJoinCommonOperator constructor bigTableKeyTypeNames " + bigTableKeyTypeNames);
+ LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator constructor order " + Arrays.toString(orderDisplayable));
+ LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator constructor posBigTable " + (int) posBigTable);
+ LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator constructor posSingleVectorMapJoinSmallTable " + (int) posSingleVectorMapJoinSmallTable);
- LOG.debug(taskName + ", " + getOperatorId() + " VectorMapJoinCommonOperator constructor bigTableValueColumnMap " + Arrays.toString(bigTableValueColumnMap));
- LOG.debug(taskName + ", " + getOperatorId() + " VectorMapJoinCommonOperator constructor bigTableValueTypeNames " + bigTableValueTypeNames);
+ LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator constructor bigTableKeyColumnMap " + Arrays.toString(bigTableKeyColumnMap));
+ LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator constructor bigTableKeyColumnNames " + Arrays.toString(bigTableKeyColumnNames));
+ LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator constructor bigTableKeyTypeInfos " + Arrays.toString(bigTableKeyTypeInfos));
- LOG.debug(taskName + ", " + getOperatorId() + " VectorMapJoinCommonOperator constructor smallTableIndices " + Arrays.toString(smallTableIndices));
- LOG.debug(taskName + ", " + getOperatorId() + " VectorMapJoinCommonOperator constructor smallTableRetainList " + smallTableRetainList);
+ LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator constructor bigTableValueColumnMap " + Arrays.toString(bigTableValueColumnMap));
+ LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator constructor bigTableValueColumnNames " + Arrays.toString(bigTableValueColumnNames));
+ LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator constructor bigTableValueTypeNames " + Arrays.toString(bigTableValueTypeInfos));
- LOG.debug(taskName + ", " + getOperatorId() + " VectorMapJoinCommonOperator constructor firstSmallTableOutputColumn " + firstSmallTableOutputColumn);
- LOG.debug(taskName + ", " + getOperatorId() + " VectorMapJoinCommonOperator constructor smallTableOutputCount " + smallTableOutputCount);
+ LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator constructor bigTableRetainedMapping " + bigTableRetainedMapping.toString());
- LOG.debug(taskName + ", " + getOperatorId() + " VectorMapJoinCommonOperator constructor bigTableRetainedMapping " + bigTableRetainedMapping.toString());
+ LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator constructor bigTableOuterKeyMapping " + bigTableOuterKeyMapping.toString());
- LOG.debug(taskName + ", " + getOperatorId() + " VectorMapJoinCommonOperator constructor bigTableOuterKeyMapping " + bigTableOuterKeyMapping.toString());
+ LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator constructor smallTableMapping " + smallTableMapping.toString());
- LOG.debug(taskName + ", " + getOperatorId() + " VectorMapJoinCommonOperator constructor smallTableMapping " + smallTableMapping.toString());
+ LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator constructor bigTableByteColumnVectorColumns " + Arrays.toString(bigTableByteColumnVectorColumns));
+ LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator constructor smallTableByteColumnVectorColumns " + Arrays.toString(smallTableByteColumnVectorColumns));
- LOG.debug(taskName + ", " + getOperatorId() + " VectorMapJoinCommonOperator constructor bigTableByteColumnVectorColumns " + Arrays.toString(bigTableByteColumnVectorColumns));
- LOG.debug(taskName + ", " + getOperatorId() + " VectorMapJoinCommonOperator constructor smallTableByteColumnVectorColumns " + Arrays.toString(smallTableByteColumnVectorColumns));
-
- LOG.debug(taskName + ", " + getOperatorId() + " VectorMapJoinCommonOperator constructor outputProjection " + Arrays.toString(outputProjection));
- LOG.debug(taskName + ", " + getOperatorId() + " VectorMapJoinCommonOperator constructor outputTypeNames " + Arrays.toString(outputTypeNames));
+ LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator constructor outputProjection " + Arrays.toString(outputProjection));
+ LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator constructor outputTypeInfos " + Arrays.toString(outputTypeInfos));
}
setupVOutContext(conf.getOutputColumnNames());
@@ -485,10 +331,10 @@ protected void determineCommonInfo(boolean isOuter) throws HiveException {
ArrayList list = new ArrayList();
int count = mapping.getCount();
int[] outputColumns = mapping.getOutputColumns();
- String[] typeNames = mapping.getTypeNames();
+ TypeInfo[] typeInfos = mapping.getTypeInfos();
for (int i = 0; i < count; i++) {
int outputColumn = outputColumns[i];
- String typeName = typeNames[i];
+ String typeName = typeInfos[i].getTypeName();
if (VectorizationContext.isStringFamily(typeName)) {
list.add(outputColumn);
}
@@ -503,10 +349,10 @@ protected void determineCommonInfo(boolean isOuter) throws HiveException {
*/
protected void setupVOutContext(List outputColumnNames) {
if (isLogDebugEnabled) {
- LOG.debug(taskName + ", " + getOperatorId() + " VectorMapJoinCommonOperator constructor outputColumnNames " + outputColumnNames);
+ LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator constructor outputColumnNames " + outputColumnNames);
}
if (outputColumnNames.size() != outputProjection.length) {
- throw new RuntimeException("Output column names " + outputColumnNames + " length and output projection " + Arrays.toString(outputProjection) + " / " + Arrays.toString(outputTypeNames) + " length mismatch");
+ throw new RuntimeException("Output column names " + outputColumnNames + " length and output projection " + Arrays.toString(outputProjection) + " / " + Arrays.toString(outputTypeInfos) + " length mismatch");
}
vOutContext.resetProjectionColumns();
for (int i = 0; i < outputColumnNames.size(); ++i) {
@@ -515,7 +361,7 @@ protected void setupVOutContext(List outputColumnNames) {
vOutContext.addProjectionColumn(columnName, outputColumn);
if (isLogDebugEnabled) {
- LOG.debug(taskName + ", " + getOperatorId() + " VectorMapJoinCommonOperator constructor addProjectionColumn " + i + " columnName " + columnName + " outputColumn " + outputColumn);
+ LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator constructor addProjectionColumn " + i + " columnName " + columnName + " outputColumn " + outputColumn);
}
}
}
@@ -525,7 +371,7 @@ protected void setupVOutContext(List outputColumnNames) {
*/
@Override
protected HashTableLoader getHashTableLoader(Configuration hconf) {
- VectorMapJoinDesc vectorDesc = conf.getVectorDesc();
+ VectorMapJoinDesc vectorDesc = (VectorMapJoinDesc) conf.getVectorDesc();
HashTableImplementationType hashTableImplementationType = vectorDesc.hashTableImplementationType();
HashTableLoader hashTableLoader;
switch (vectorDesc.hashTableImplementationType()) {
@@ -549,15 +395,6 @@ protected HashTableLoader getHashTableLoader(Configuration hconf) {
protected void initializeOp(Configuration hconf) throws HiveException {
super.initializeOp(hconf);
- if (isLogDebugEnabled) {
- // Determine the name of our map or reduce task for debug tracing.
- BaseWork work = Utilities.getMapWork(hconf);
- if (work == null) {
- work = Utilities.getReduceWork(hconf);
- }
- taskName = work.getName();
- }
-
/*
* Get configuration parameters.
*/
@@ -573,9 +410,8 @@ protected void initializeOp(Configuration hconf) throws HiveException {
smallTableVectorDeserializeRow =
new VectorDeserializeRow(
new LazyBinaryDeserializeRead(
- VectorizedBatchUtil.typeInfosFromTypeNames(
- smallTableMapping.getTypeNames()),
- /* useExternalBuffer */ true));
+ smallTableMapping.getTypeInfos(),
+ /* useExternalBuffer */ true));
smallTableVectorDeserializeRow.init(smallTableMapping.getOutputColumns());
}
@@ -599,13 +435,13 @@ protected void initializeOp(Configuration hconf) throws HiveException {
if (isLogDebugEnabled) {
int[] currentScratchColumns = vOutContext.currentScratchColumns();
- LOG.debug(taskName + ", " + getOperatorId() + " VectorMapJoinCommonOperator initializeOp currentScratchColumns " + Arrays.toString(currentScratchColumns));
+ LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator initializeOp currentScratchColumns " + Arrays.toString(currentScratchColumns));
StructObjectInspector structOutputObjectInspector = (StructObjectInspector) outputObjInspector;
List extends StructField> fields = structOutputObjectInspector.getAllStructFieldRefs();
int i = 0;
for (StructField field : fields) {
- LOG.debug("VectorMapJoinInnerBigOnlyCommonOperator initializeOp " + i + " field " + field.getFieldName() + " type " + field.getFieldObjectInspector().getTypeName());
+ LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator initializeOp " + i + " field " + field.getFieldName() + " type " + field.getFieldObjectInspector().getTypeName());
i++;
}
}
@@ -616,7 +452,7 @@ protected void completeInitializationOp(Object[] os) throws HiveException {
// setup mapJoinTables and serdes
super.completeInitializationOp(os);
- VectorMapJoinDesc vectorDesc = conf.getVectorDesc();
+ VectorMapJoinDesc vectorDesc = (VectorMapJoinDesc) conf.getVectorDesc();
HashTableImplementationType hashTableImplementationType = vectorDesc.hashTableImplementationType();
switch (vectorDesc.hashTableImplementationType()) {
case OPTIMIZED:
@@ -658,7 +494,7 @@ protected VectorizedRowBatch setupOverflowBatch() throws HiveException {
// First, just allocate just the projection columns we will be using.
for (int i = 0; i < outputProjection.length; i++) {
int outputColumn = outputProjection[i];
- String typeName = outputTypeNames[i];
+ String typeName = outputTypeInfos[i].getTypeName();
allocateOverflowBatchColumnVector(overflowBatch, outputColumn, typeName);
}
@@ -690,7 +526,7 @@ private void allocateOverflowBatchColumnVector(VectorizedRowBatch overflowBatch,
overflowBatch.cols[outputColumn] = VectorizedBatchUtil.createColumnVector(typeInfo);
if (isLogDebugEnabled) {
- LOG.debug(taskName + ", " + getOperatorId() + " VectorMapJoinCommonOperator initializeOp overflowBatch outputColumn " + outputColumn + " class " + overflowBatch.cols[outputColumn].getClass().getSimpleName());
+ LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator initializeOp overflowBatch outputColumn " + outputColumn + " class " + overflowBatch.cols[outputColumn].getClass().getSimpleName());
}
}
}
@@ -727,9 +563,9 @@ protected void commonSetup(VectorizedRowBatch batch) throws HiveException {
}
protected void displayBatchColumns(VectorizedRowBatch batch, String batchName) {
- LOG.debug("commonSetup " + batchName + " column count " + batch.numCols);
+ LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator commonSetup " + batchName + " column count " + batch.numCols);
for (int column = 0; column < batch.numCols; column++) {
- LOG.debug("commonSetup " + batchName + " column " + column + " type " + (batch.cols[column] == null ? "NULL" : batch.cols[column].getClass().getSimpleName()));
+ LOG.debug(getLoggingPrefix() + " VectorMapJoinCommonOperator commonSetup " + batchName + " column " + column + " type " + (batch.cols[column] == null ? "NULL" : batch.cols[column].getClass().getSimpleName()));
}
}
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerBigOnlyLongOperator.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerBigOnlyLongOperator.java
index 0bba141..43f3951 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerBigOnlyLongOperator.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerBigOnlyLongOperator.java
@@ -45,8 +45,17 @@
public class VectorMapJoinInnerBigOnlyLongOperator extends VectorMapJoinInnerBigOnlyGenerateResultOperator {
private static final long serialVersionUID = 1L;
- private static final Logger LOG = LoggerFactory.getLogger(VectorMapJoinInnerBigOnlyLongOperator.class.getName());
+
+ //------------------------------------------------------------------------------------------------
+
private static final String CLASS_NAME = VectorMapJoinInnerBigOnlyLongOperator.class.getName();
+ private static final Logger LOG = LoggerFactory.getLogger(CLASS_NAME);
+
+ protected String getLoggingPrefix() {
+ return super.getLoggingPrefix(CLASS_NAME);
+ }
+
+ //------------------------------------------------------------------------------------------------
// (none)
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerBigOnlyMultiKeyOperator.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerBigOnlyMultiKeyOperator.java
index 621804b..95fb0c2 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerBigOnlyMultiKeyOperator.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerBigOnlyMultiKeyOperator.java
@@ -40,6 +40,8 @@
import org.apache.hadoop.hive.serde2.ByteStream.Output;
import org.apache.hadoop.hive.serde2.binarysortable.fast.BinarySortableSerializeWrite;
+import com.google.common.base.Preconditions;
+
/*
* Specialized class for doing a vectorized map join that is an inner join on Multi-Key
* and only big table columns appear in the join result so a hash multi-set is used.
@@ -48,8 +50,17 @@
public class VectorMapJoinInnerBigOnlyMultiKeyOperator extends VectorMapJoinInnerBigOnlyGenerateResultOperator {
private static final long serialVersionUID = 1L;
- private static final Logger LOG = LoggerFactory.getLogger(VectorMapJoinInnerBigOnlyMultiKeyOperator.class.getName());
+
+ //------------------------------------------------------------------------------------------------
+
private static final String CLASS_NAME = VectorMapJoinInnerBigOnlyMultiKeyOperator.class.getName();
+ private static final Logger LOG = LoggerFactory.getLogger(CLASS_NAME);
+
+ protected String getLoggingPrefix() {
+ return super.getLoggingPrefix(CLASS_NAME);
+ }
+
+ //------------------------------------------------------------------------------------------------
// (none)
@@ -114,7 +125,7 @@ public void process(Object row, int tag) throws HiveException {
keyVectorSerializeWrite = new VectorSerializeRow(
new BinarySortableSerializeWrite(bigTableKeyColumnMap.length));
- keyVectorSerializeWrite.init(bigTableKeyTypeNames, bigTableKeyColumnMap);
+ keyVectorSerializeWrite.init(bigTableKeyTypeInfos, bigTableKeyColumnMap);
currentKeyOutput = new Output();
saveKeyOutput = new Output();
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerBigOnlyStringOperator.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerBigOnlyStringOperator.java
index 10e75ab..044e3e6 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerBigOnlyStringOperator.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerBigOnlyStringOperator.java
@@ -46,8 +46,17 @@
public class VectorMapJoinInnerBigOnlyStringOperator extends VectorMapJoinInnerBigOnlyGenerateResultOperator {
private static final long serialVersionUID = 1L;
- private static final Logger LOG = LoggerFactory.getLogger(VectorMapJoinInnerBigOnlyStringOperator.class.getName());
+
+ //------------------------------------------------------------------------------------------------
+
private static final String CLASS_NAME = VectorMapJoinInnerBigOnlyStringOperator.class.getName();
+ private static final Logger LOG = LoggerFactory.getLogger(CLASS_NAME);
+
+ protected String getLoggingPrefix() {
+ return super.getLoggingPrefix(CLASS_NAME);
+ }
+
+ //------------------------------------------------------------------------------------------------
// (none)
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerLongOperator.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerLongOperator.java
index 804d69c..c85e1d8 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerLongOperator.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerLongOperator.java
@@ -44,8 +44,17 @@
public class VectorMapJoinInnerLongOperator extends VectorMapJoinInnerGenerateResultOperator {
private static final long serialVersionUID = 1L;
- private static final Logger LOG = LoggerFactory.getLogger(VectorMapJoinInnerLongOperator.class.getName());
+
+ //------------------------------------------------------------------------------------------------
+
private static final String CLASS_NAME = VectorMapJoinInnerLongOperator.class.getName();
+ private static final Logger LOG = LoggerFactory.getLogger(CLASS_NAME);
+
+ protected String getLoggingPrefix() {
+ return super.getLoggingPrefix(CLASS_NAME);
+ }
+
+ //------------------------------------------------------------------------------------------------
// (none)
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerMultiKeyOperator.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerMultiKeyOperator.java
index fcfa0bd..a108cd0 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerMultiKeyOperator.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerMultiKeyOperator.java
@@ -39,6 +39,8 @@
import org.apache.hadoop.hive.serde2.ByteStream.Output;
import org.apache.hadoop.hive.serde2.binarysortable.fast.BinarySortableSerializeWrite;
+import com.google.common.base.Preconditions;
+
/*
* Specialized class for doing a vectorized map join that is an inner join on a Multi-Key
* using a hash map.
@@ -46,8 +48,17 @@
public class VectorMapJoinInnerMultiKeyOperator extends VectorMapJoinInnerGenerateResultOperator {
private static final long serialVersionUID = 1L;
- private static final Logger LOG = LoggerFactory.getLogger(VectorMapJoinInnerMultiKeyOperator.class.getName());
+
+ //------------------------------------------------------------------------------------------------
+
private static final String CLASS_NAME = VectorMapJoinInnerMultiKeyOperator.class.getName();
+ private static final Logger LOG = LoggerFactory.getLogger(VectorMapJoinInnerMultiKeyOperator.class.getName());
+
+ protected String getLoggingPrefix() {
+ return super.getLoggingPrefix(CLASS_NAME);
+ }
+
+ //------------------------------------------------------------------------------------------------
// (none)
@@ -112,7 +123,7 @@ public void process(Object row, int tag) throws HiveException {
keyVectorSerializeWrite = new VectorSerializeRow(
new BinarySortableSerializeWrite(bigTableKeyColumnMap.length));
- keyVectorSerializeWrite.init(bigTableKeyTypeNames, bigTableKeyColumnMap);
+ keyVectorSerializeWrite.init(bigTableKeyTypeInfos, bigTableKeyColumnMap);
currentKeyOutput = new Output();
saveKeyOutput = new Output();
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerStringOperator.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerStringOperator.java
index 0f9baae..3211d7d 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerStringOperator.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerStringOperator.java
@@ -45,8 +45,17 @@
public class VectorMapJoinInnerStringOperator extends VectorMapJoinInnerGenerateResultOperator {
private static final long serialVersionUID = 1L;
- private static final Logger LOG = LoggerFactory.getLogger(VectorMapJoinInnerStringOperator.class.getName());
+
+ //------------------------------------------------------------------------------------------------
+
private static final String CLASS_NAME = VectorMapJoinInnerStringOperator.class.getName();
+ private static final Logger LOG = LoggerFactory.getLogger(CLASS_NAME);
+
+ protected String getLoggingPrefix() {
+ return super.getLoggingPrefix(CLASS_NAME);
+ }
+
+ //------------------------------------------------------------------------------------------------
// (none)
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinLeftSemiLongOperator.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinLeftSemiLongOperator.java
index 1149a9d..b02e6fd 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinLeftSemiLongOperator.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinLeftSemiLongOperator.java
@@ -45,8 +45,17 @@
public class VectorMapJoinLeftSemiLongOperator extends VectorMapJoinLeftSemiGenerateResultOperator {
private static final long serialVersionUID = 1L;
- private static final Logger LOG = LoggerFactory.getLogger(VectorMapJoinInnerBigOnlyLongOperator.class.getName());
+
+ //------------------------------------------------------------------------------------------------
+
private static final String CLASS_NAME = VectorMapJoinLeftSemiLongOperator.class.getName();
+ private static final Logger LOG = LoggerFactory.getLogger(CLASS_NAME);
+
+ protected String getLoggingPrefix() {
+ return super.getLoggingPrefix(CLASS_NAME);
+ }
+
+ //------------------------------------------------------------------------------------------------
// (none)
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinLeftSemiMultiKeyOperator.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinLeftSemiMultiKeyOperator.java
index e0baebc..36b8f3f 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinLeftSemiMultiKeyOperator.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinLeftSemiMultiKeyOperator.java
@@ -40,6 +40,8 @@
import org.apache.hadoop.hive.serde2.ByteStream.Output;
import org.apache.hadoop.hive.serde2.binarysortable.fast.BinarySortableSerializeWrite;
+import com.google.common.base.Preconditions;
+
/*
* Specialized class for doing a vectorized map join that is an left semi join on Multi-Key
* using hash set.
@@ -47,8 +49,17 @@
public class VectorMapJoinLeftSemiMultiKeyOperator extends VectorMapJoinLeftSemiGenerateResultOperator {
private static final long serialVersionUID = 1L;
- private static final Logger LOG = LoggerFactory.getLogger(VectorMapJoinInnerBigOnlyLongOperator.class.getName());
+
+ //------------------------------------------------------------------------------------------------
+
private static final String CLASS_NAME = VectorMapJoinLeftSemiMultiKeyOperator.class.getName();
+ private static final Logger LOG = LoggerFactory.getLogger(CLASS_NAME);
+
+ protected String getLoggingPrefix() {
+ return super.getLoggingPrefix(CLASS_NAME);
+ }
+
+ //------------------------------------------------------------------------------------------------
// (none)
@@ -113,7 +124,7 @@ public void process(Object row, int tag) throws HiveException {
keyVectorSerializeWrite = new VectorSerializeRow(
new BinarySortableSerializeWrite(bigTableKeyColumnMap.length));
- keyVectorSerializeWrite.init(bigTableKeyTypeNames, bigTableKeyColumnMap);
+ keyVectorSerializeWrite.init(bigTableKeyTypeInfos, bigTableKeyColumnMap);
currentKeyOutput = new Output();
saveKeyOutput = new Output();
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinLeftSemiStringOperator.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinLeftSemiStringOperator.java
index 49e1177..0b3de0a 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinLeftSemiStringOperator.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinLeftSemiStringOperator.java
@@ -46,8 +46,17 @@
public class VectorMapJoinLeftSemiStringOperator extends VectorMapJoinLeftSemiGenerateResultOperator {
private static final long serialVersionUID = 1L;
- private static final Logger LOG = LoggerFactory.getLogger(VectorMapJoinInnerBigOnlyLongOperator.class.getName());
+
+ //------------------------------------------------------------------------------------------------
+
private static final String CLASS_NAME = VectorMapJoinLeftSemiStringOperator.class.getName();
+ private static final Logger LOG = LoggerFactory.getLogger(CLASS_NAME);
+
+ protected String getLoggingPrefix() {
+ return super.getLoggingPrefix(CLASS_NAME);
+ }
+
+ //------------------------------------------------------------------------------------------------
// (none)
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinOuterLongOperator.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinOuterLongOperator.java
index 58bd0ab..72309e8 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinOuterLongOperator.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinOuterLongOperator.java
@@ -45,8 +45,17 @@
*/
public class VectorMapJoinOuterLongOperator extends VectorMapJoinOuterGenerateResultOperator {
private static final long serialVersionUID = 1L;
- private static final Logger LOG = LoggerFactory.getLogger(VectorMapJoinOuterLongOperator.class.getName());
+
+ //------------------------------------------------------------------------------------------------
+
private static final String CLASS_NAME = VectorMapJoinOuterLongOperator.class.getName();
+ private static final Logger LOG = LoggerFactory.getLogger(CLASS_NAME);
+
+ protected String getLoggingPrefix() {
+ return super.getLoggingPrefix(CLASS_NAME);
+ }
+
+ //------------------------------------------------------------------------------------------------
// (none)
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinOuterMultiKeyOperator.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinOuterMultiKeyOperator.java
index 7f9afd2..a4fc7d3 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinOuterMultiKeyOperator.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinOuterMultiKeyOperator.java
@@ -40,6 +40,8 @@
import org.apache.hadoop.hive.serde2.ByteStream.Output;
import org.apache.hadoop.hive.serde2.binarysortable.fast.BinarySortableSerializeWrite;
+import com.google.common.base.Preconditions;
+
/*
* Specialized class for doing a vectorized map join that is an outer join on Multi-Key
* using a hash map.
@@ -47,8 +49,17 @@
public class VectorMapJoinOuterMultiKeyOperator extends VectorMapJoinOuterGenerateResultOperator {
private static final long serialVersionUID = 1L;
- private static final Logger LOG = LoggerFactory.getLogger(VectorMapJoinOuterMultiKeyOperator.class.getName());
+
+ //------------------------------------------------------------------------------------------------
+
private static final String CLASS_NAME = VectorMapJoinOuterMultiKeyOperator.class.getName();
+ private static final Logger LOG = LoggerFactory.getLogger(CLASS_NAME);
+
+ protected String getLoggingPrefix() {
+ return super.getLoggingPrefix(CLASS_NAME);
+ }
+
+ //------------------------------------------------------------------------------------------------
// (none)
@@ -112,7 +123,7 @@ public void process(Object row, int tag) throws HiveException {
keyVectorSerializeWrite = new VectorSerializeRow(
new BinarySortableSerializeWrite(bigTableKeyColumnMap.length));
- keyVectorSerializeWrite.init(bigTableKeyTypeNames, bigTableKeyColumnMap);
+ keyVectorSerializeWrite.init(bigTableKeyTypeInfos, bigTableKeyColumnMap);
currentKeyOutput = new Output();
saveKeyOutput = new Output();
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinOuterStringOperator.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinOuterStringOperator.java
index 8ed1ed4..6e7e5cb 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinOuterStringOperator.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinOuterStringOperator.java
@@ -45,8 +45,17 @@
public class VectorMapJoinOuterStringOperator extends VectorMapJoinOuterGenerateResultOperator {
private static final long serialVersionUID = 1L;
- private static final Logger LOG = LoggerFactory.getLogger(VectorMapJoinOuterStringOperator.class.getName());
+
+ //------------------------------------------------------------------------------------------------
+
private static final String CLASS_NAME = VectorMapJoinOuterStringOperator.class.getName();
+ private static final Logger LOG = LoggerFactory.getLogger(CLASS_NAME);
+
+ protected String getLoggingPrefix() {
+ return super.getLoggingPrefix(CLASS_NAME);
+ }
+
+ //------------------------------------------------------------------------------------------------
// (none)
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/fast/VectorMapJoinFastTableContainer.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/fast/VectorMapJoinFastTableContainer.java
index 9f3b107..069cc9a 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/fast/VectorMapJoinFastTableContainer.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/fast/VectorMapJoinFastTableContainer.java
@@ -94,7 +94,7 @@ public VectorMapJoinHashTable vectorMapJoinHashTable() {
private VectorMapJoinFastHashTable createHashTable(int newThreshold) {
boolean isOuterJoin = !desc.isNoOuterJoin();
- VectorMapJoinDesc vectorDesc = desc.getVectorDesc();
+ VectorMapJoinDesc vectorDesc = (VectorMapJoinDesc) desc.getVectorDesc();
HashTableImplementationType hashTableImplementationType = vectorDesc.hashTableImplementationType();
HashTableKind hashTableKind = vectorDesc.hashTableKind();
HashTableKeyType hashTableKeyType = vectorDesc.hashTableKeyType();
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/optimized/VectorMapJoinOptimizedCreateHashTable.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/optimized/VectorMapJoinOptimizedCreateHashTable.java
index f34b1cd..111a6d2 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/optimized/VectorMapJoinOptimizedCreateHashTable.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/optimized/VectorMapJoinOptimizedCreateHashTable.java
@@ -40,7 +40,7 @@ public static VectorMapJoinOptimizedHashTable createHashTable(MapJoinDesc desc,
ReusableGetAdaptor hashMapRowGetter = mapJoinTableContainer.createGetter(refKey);
boolean isOuterJoin = !desc.isNoOuterJoin();
- VectorMapJoinDesc vectorDesc = desc.getVectorDesc();
+ VectorMapJoinDesc vectorDesc = (VectorMapJoinDesc) desc.getVectorDesc();
HashTableKind hashTableKind = vectorDesc.hashTableKind();
HashTableKeyType hashTableKeyType = vectorDesc.hashTableKeyType();
boolean minMaxEnabled = vectorDesc.minMaxEnabled();
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/reducesink/VectorReduceSinkCommonOperator.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/reducesink/VectorReduceSinkCommonOperator.java
index 8133aef..42ca4b7 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/reducesink/VectorReduceSinkCommonOperator.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/reducesink/VectorReduceSinkCommonOperator.java
@@ -160,7 +160,7 @@ public VectorReduceSinkCommonOperator(CompilationOpContext ctx,
ReduceSinkDesc desc = (ReduceSinkDesc) conf;
this.conf = desc;
- vectorDesc = desc.getVectorDesc();
+ vectorDesc = (VectorReduceSinkDesc) desc.getVectorDesc();
vectorReduceSinkInfo = vectorDesc.getVectorReduceSinkInfo();
this.vContext = vContext;
diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/udf/VectorUDFAdaptor.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/udf/VectorUDFAdaptor.java
index 20cfb89..6806ab4 100644
--- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/udf/VectorUDFAdaptor.java
+++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/udf/VectorUDFAdaptor.java
@@ -374,6 +374,11 @@ public void setExpr(ExprNodeGenericFuncDesc expr) {
}
@Override
+ public String vectorExpressionParameters() {
+ return expr.getExprString();
+ }
+
+ @Override
public VectorExpressionDescriptor.Descriptor getDescriptor() {
return (new VectorExpressionDescriptor.Builder()).build();
}
diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java
index 468ccaf..4ed19f6 100644
--- ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java
+++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java
@@ -21,6 +21,7 @@
import static org.apache.hadoop.hive.ql.plan.ReduceSinkDesc.ReducerTraits.UNIFORM;
import java.io.Serializable;
+import java.lang.annotation.Annotation;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
@@ -33,6 +34,7 @@
import java.util.Set;
import java.util.Stack;
import java.util.regex.Pattern;
+import org.apache.commons.lang.ArrayUtils;
import org.apache.calcite.util.Pair;
import org.apache.commons.lang.ArrayUtils;
@@ -43,6 +45,8 @@
import org.apache.hadoop.hive.conf.HiveConf;
import org.apache.hadoop.hive.ql.exec.*;
import org.apache.hadoop.hive.ql.exec.mr.MapRedTask;
+import org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask;
+import org.apache.hadoop.hive.ql.exec.persistence.MapJoinBytesTableContainer;
import org.apache.hadoop.hive.ql.exec.persistence.MapJoinKey;
import org.apache.hadoop.hive.ql.exec.spark.SparkTask;
import org.apache.hadoop.hive.ql.exec.tez.TezTask;
@@ -62,7 +66,11 @@
import org.apache.hadoop.hive.ql.exec.vector.reducesink.VectorReduceSinkLongOperator;
import org.apache.hadoop.hive.ql.exec.vector.reducesink.VectorReduceSinkMultiKeyOperator;
import org.apache.hadoop.hive.ql.exec.vector.reducesink.VectorReduceSinkStringOperator;
+import org.apache.hadoop.hive.ql.exec.vector.udf.VectorUDFAdaptor;
import org.apache.hadoop.hive.ql.exec.vector.ColumnVector.Type;
+import org.apache.hadoop.hive.ql.exec.vector.VectorColumnOutputMapping;
+import org.apache.hadoop.hive.ql.exec.vector.VectorColumnSourceMapping;
+import org.apache.hadoop.hive.ql.exec.vector.VectorFilterOperator;
import org.apache.hadoop.hive.ql.exec.vector.VectorMapJoinOperator;
import org.apache.hadoop.hive.ql.exec.vector.VectorMapJoinOuterFilteredOperator;
import org.apache.hadoop.hive.ql.exec.vector.VectorSMBMapJoinOperator;
@@ -73,6 +81,7 @@
import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression;
import org.apache.hadoop.hive.ql.exec.vector.expressions.aggregates.VectorAggregateExpression;
import org.apache.hadoop.hive.ql.io.AcidUtils;
+import org.apache.hadoop.hive.ql.io.orc.OrcInputFormat;
import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatchCtx;
import org.apache.hadoop.hive.ql.lib.DefaultGraphWalker;
import org.apache.hadoop.hive.ql.lib.DefaultRuleDispatcher;
@@ -91,18 +100,36 @@
import org.apache.hadoop.hive.ql.parse.SemanticException;
import org.apache.hadoop.hive.ql.plan.AbstractOperatorDesc;
import org.apache.hadoop.hive.ql.plan.AggregationDesc;
+import org.apache.hadoop.hive.ql.plan.AppMasterEventDesc;
import org.apache.hadoop.hive.ql.plan.BaseWork;
+import org.apache.hadoop.hive.ql.plan.Explain;
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.FetchWork;
import org.apache.hadoop.hive.ql.plan.FileSinkDesc;
+import org.apache.hadoop.hive.ql.plan.FilterDesc;
import org.apache.hadoop.hive.ql.plan.GroupByDesc;
+import org.apache.hadoop.hive.ql.plan.HashTableSinkDesc;
import org.apache.hadoop.hive.ql.plan.JoinDesc;
+import org.apache.hadoop.hive.ql.plan.LimitDesc;
import org.apache.hadoop.hive.ql.plan.MapJoinDesc;
import org.apache.hadoop.hive.ql.plan.MapWork;
+import org.apache.hadoop.hive.ql.plan.MapredLocalWork;
+import org.apache.hadoop.hive.ql.plan.MapredWork;
import org.apache.hadoop.hive.ql.plan.OperatorDesc;
+import org.apache.hadoop.hive.ql.plan.SelectDesc;
+import org.apache.hadoop.hive.ql.plan.VectorAppMasterEventDesc;
+import org.apache.hadoop.hive.ql.plan.VectorFileSinkDesc;
+import org.apache.hadoop.hive.ql.plan.VectorFilterDesc;
+import org.apache.hadoop.hive.ql.plan.VectorTableScanDesc;
+import org.apache.hadoop.hive.ql.plan.VectorizationCondition;
import org.apache.hadoop.hive.ql.plan.VectorGroupByDesc.ProcessingMode;
+import org.apache.hadoop.hive.ql.plan.VectorSparkHashTableSinkDesc;
+import org.apache.hadoop.hive.ql.plan.VectorLimitDesc;
+import org.apache.hadoop.hive.ql.plan.VectorMapJoinInfo;
import org.apache.hadoop.hive.ql.plan.VectorPartitionConversion;
+import org.apache.hadoop.hive.ql.plan.VectorSMBJoinDesc;
import org.apache.hadoop.hive.ql.plan.PartitionDesc;
import org.apache.hadoop.hive.ql.plan.ReduceSinkDesc;
import org.apache.hadoop.hive.ql.plan.ReduceWork;
@@ -117,10 +144,13 @@
import org.apache.hadoop.hive.ql.plan.VectorMapJoinDesc.HashTableImplementationType;
import org.apache.hadoop.hive.ql.plan.VectorMapJoinDesc.HashTableKeyType;
import org.apache.hadoop.hive.ql.plan.VectorMapJoinDesc.HashTableKind;
+import org.apache.hadoop.hive.ql.plan.VectorMapJoinDesc.OperatorVariation;
import org.apache.hadoop.hive.ql.plan.VectorPartitionDesc.VectorDeserializeType;
+import org.apache.hadoop.hive.ql.plan.VectorMapJoinInfo;
import org.apache.hadoop.hive.ql.plan.VectorReduceSinkDesc;
import org.apache.hadoop.hive.ql.plan.VectorReduceSinkInfo;
import org.apache.hadoop.hive.ql.plan.VectorPartitionDesc;
+import org.apache.hadoop.hive.ql.plan.VectorSelectDesc;
import org.apache.hadoop.hive.ql.plan.api.OperatorType;
import org.apache.hadoop.hive.ql.udf.UDFAcos;
import org.apache.hadoop.hive.ql.udf.UDFAsin;
@@ -170,6 +200,8 @@
import org.apache.hadoop.hive.serde2.NullStructSerDe;
import org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe;
import org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe;
+import org.apache.hadoop.hive.serde2.SerDeException;
+import org.apache.hadoop.hive.serde2.SerDeUtils;
import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector.Category;
import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorUtils;
@@ -182,6 +214,9 @@
import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoUtils;
import org.apache.hadoop.mapred.SequenceFileInputFormat;
import org.apache.hadoop.mapred.TextInputFormat;
+import org.apache.hive.common.util.AnnotationUtils;
+import org.apache.hive.common.util.HiveStringUtils;
+import org.apache.hive.common.util.ReflectionUtil;
import com.google.common.base.Preconditions;
@@ -234,12 +269,39 @@
private boolean isSpark;
- boolean useVectorizedInputFileFormat;
- boolean useVectorDeserialize;
- boolean useRowDeserialize;
+ private boolean useVectorizedInputFileFormat;
+ private boolean useVectorDeserialize;
+ private boolean useRowDeserialize;
+ private boolean isReduceVectorizationEnabled;
boolean isSchemaEvolution;
+ private BaseWork currentBaseWork;
+ private Operator extends OperatorDesc> currentOperator;
+
+ public void testSetCurrentBaseWork(BaseWork testBaseWork) {
+ currentBaseWork = testBaseWork;
+ }
+
+ private void setNodeIssue(String issue) {
+ currentBaseWork.setNotVectorizedReason(
+ VectorizerReason.createNodeIssue(issue));
+ }
+
+ private void setOperatorIssue(String issue) {
+ currentBaseWork.setNotVectorizedReason(
+ VectorizerReason.createOperatorIssue(currentOperator, issue));
+ }
+
+ private void setExpressionIssue(String expressionTitle, String issue) {
+ currentBaseWork.setNotVectorizedReason(
+ VectorizerReason.createExpressionIssue(currentOperator, expressionTitle, issue));
+ }
+
+ private void clearNotVectorizedReason() {
+ currentBaseWork.setNotVectorizedReason(null);
+ }
+
public Vectorizer() {
supportedGenericUDFs.add(GenericUDFOPPlus.class);
@@ -369,6 +431,10 @@ public Vectorizer() {
int partitionColumnCount;
boolean useVectorizedInputFileFormat;
+ boolean groupByVectorOutput;
+ boolean allNative;
+ boolean usesVectorUDFAdaptor;
+
String[] scratchTypeNameArray;
Set> nonVectorizedOps;
@@ -379,6 +445,12 @@ public Vectorizer() {
partitionColumnCount = 0;
}
+ public void assume() {
+ groupByVectorOutput = true;
+ allNative = true;
+ usesVectorUDFAdaptor = false;
+ }
+
public void setAllColumnNames(List allColumnNames) {
this.allColumnNames = allColumnNames;
}
@@ -394,9 +466,19 @@ public void setPartitionColumnCount(int partitionColumnCount) {
public void setScratchTypeNameArray(String[] scratchTypeNameArray) {
this.scratchTypeNameArray = scratchTypeNameArray;
}
+ public void setGroupByVectorOutput(boolean groupByVectorOutput) {
+ this.groupByVectorOutput = groupByVectorOutput;
+ }
+ public void setAllNative(boolean allNative) {
+ this.allNative = allNative;
+ }
+ public void setUsesVectorUDFAdaptor(boolean usesVectorUDFAdaptor) {
+ this.usesVectorUDFAdaptor = usesVectorUDFAdaptor;
+ }
public void setUseVectorizedInputFileFormat(boolean useVectorizedInputFileFormat) {
this.useVectorizedInputFileFormat = useVectorizedInputFileFormat;
}
+
public void setNonVectorizedOps(Set> nonVectorizedOps) {
this.nonVectorizedOps = nonVectorizedOps;
}
@@ -428,7 +510,14 @@ public void transferToBaseWork(BaseWork baseWork) {
scratchTypeNameArray);
baseWork.setVectorizedRowBatchCtx(vectorizedRowBatchCtx);
- baseWork.setUseVectorizedInputFileFormat(useVectorizedInputFileFormat);
+ if (baseWork instanceof MapWork) {
+ MapWork mapWork = (MapWork) baseWork;
+ mapWork.setUseVectorizedInputFileFormat(useVectorizedInputFileFormat);
+ }
+
+ baseWork.setAllNative(allNative);
+ baseWork.setGroupByVectorOutput(groupByVectorOutput);
+ baseWork.setUsesVectorUDFAdaptor(usesVectorUDFAdaptor);
}
}
@@ -445,17 +534,29 @@ public Object dispatch(Node nd, Stack stack, Object... nodeOutputs)
throws SemanticException {
Task extends Serializable> currTask = (Task extends Serializable>) nd;
if (currTask instanceof MapRedTask) {
- convertMapWork(((MapRedTask) currTask).getWork().getMapWork(), false);
+ MapredWork mapredWork = ((MapRedTask) currTask).getWork();
+ convertMapWork(mapredWork.getMapWork(), false);
+ ReduceWork reduceWork = mapredWork.getReduceWork();
+ if (reduceWork != null) {
+ // Always set the EXPLAIN conditions.
+ setReduceWorkExplainConditions(reduceWork);
+
+ // We do not vectorize MR Reduce.
+ }
} else if (currTask instanceof TezTask) {
TezWork work = ((TezTask) currTask).getWork();
- for (BaseWork w: work.getAllWork()) {
- if (w instanceof MapWork) {
- convertMapWork((MapWork) w, true);
- } else if (w instanceof ReduceWork) {
- // We are only vectorizing Reduce under Tez.
- if (HiveConf.getBoolVar(hiveConf,
- HiveConf.ConfVars.HIVE_VECTORIZATION_REDUCE_ENABLED)) {
- convertReduceWork((ReduceWork) w, true);
+ for (BaseWork baseWork: work.getAllWork()) {
+ if (baseWork instanceof MapWork) {
+ convertMapWork((MapWork) baseWork, true);
+ } else if (baseWork instanceof ReduceWork) {
+ ReduceWork reduceWork = (ReduceWork) baseWork;
+
+ // Always set the EXPLAIN conditions.
+ setReduceWorkExplainConditions(reduceWork);
+
+ // We are only vectorizing Reduce under Tez/Spark.
+ if (isReduceVectorizationEnabled) {
+ convertReduceWork(reduceWork);
}
}
}
@@ -463,22 +564,43 @@ public Object dispatch(Node nd, Stack stack, Object... nodeOutputs)
SparkWork sparkWork = (SparkWork) currTask.getWork();
for (BaseWork baseWork : sparkWork.getAllWork()) {
if (baseWork instanceof MapWork) {
- convertMapWork((MapWork) baseWork, false);
- } else if (baseWork instanceof ReduceWork
- && HiveConf.getBoolVar(hiveConf,
- HiveConf.ConfVars.HIVE_VECTORIZATION_REDUCE_ENABLED)) {
- convertReduceWork((ReduceWork) baseWork, false);
+ convertMapWork((MapWork) baseWork, true);
+ } else if (baseWork instanceof ReduceWork) {
+ ReduceWork reduceWork = (ReduceWork) baseWork;
+
+ // Always set the EXPLAIN conditions.
+ setReduceWorkExplainConditions(reduceWork);
+
+ if (isReduceVectorizationEnabled) {
+ convertReduceWork(reduceWork);
+ }
}
}
}
+
return null;
}
- private void convertMapWork(MapWork mapWork, boolean isTez) throws SemanticException {
+ private void convertMapWork(MapWork mapWork, boolean isTezOrSpark) throws SemanticException {
+
+ mapWork.setVectorizationExamined(true);
+
+ // Global used when setting errors, etc.
+ currentBaseWork = mapWork;
+
VectorTaskColumnInfo vectorTaskColumnInfo = new VectorTaskColumnInfo();
- boolean ret = validateMapWork(mapWork, vectorTaskColumnInfo, isTez);
+ vectorTaskColumnInfo.assume();
+
+ boolean ret = validateMapWork(mapWork, vectorTaskColumnInfo, isTezOrSpark);
if (ret) {
- vectorizeMapWork(mapWork, vectorTaskColumnInfo, isTez);
+ vectorizeMapWork(mapWork, vectorTaskColumnInfo, isTezOrSpark);
+ } else if (currentBaseWork.getVectorizationEnabled()) {
+ VectorizerReason notVectorizedReason = currentBaseWork.getNotVectorizedReason();
+ if (notVectorizedReason == null) {
+ LOG.info("Cannot vectorize: unknown");
+ } else {
+ LOG.info("Cannot vectorize: " + notVectorizedReason.toString());
+ }
}
}
@@ -499,6 +621,7 @@ private void addMapWorkRules(Map opRules, NodeProcessor np)
LinkedHashMap> aliasToWork = mapWork.getAliasToWork();
if ((aliasToWork == null) || (aliasToWork.size() == 0)) {
+ setNodeIssue("Vectorized map work requires work");
return null;
}
int tableScanCount = 0;
@@ -507,7 +630,7 @@ private void addMapWorkRules(Map opRules, NodeProcessor np)
for (Entry> entry : aliasToWork.entrySet()) {
Operator> op = entry.getValue();
if (op == null) {
- LOG.warn("Map work has invalid aliases to work with. Fail validation!");
+ setNodeIssue("Vectorized map work requires a valid alias");
return null;
}
if (op instanceof TableScanOperator) {
@@ -517,7 +640,7 @@ private void addMapWorkRules(Map opRules, NodeProcessor np)
}
}
if (tableScanCount > 1) {
- LOG.warn("Map work has more than 1 TableScanOperator. Fail validation!");
+ setNodeIssue("Vectorized map work only works with 1 TableScanOperator");
return null;
}
return new ImmutablePair(alias, tableScanOperator);
@@ -558,22 +681,6 @@ private void determineDataColumnNums(TableScanOperator tableScanOperator,
}
}
- private String getHiveOptionsString() {
- StringBuilder sb = new StringBuilder();
- sb.append(HiveConf.ConfVars.HIVE_VECTORIZATION_USE_VECTORIZED_INPUT_FILE_FORMAT.varname);
- sb.append("=");
- sb.append(useVectorizedInputFileFormat);
- sb.append(", ");
- sb.append(HiveConf.ConfVars.HIVE_VECTORIZATION_USE_VECTOR_DESERIALIZE.varname);
- sb.append("=");
- sb.append(useVectorDeserialize);
- sb.append(", and ");
- sb.append(HiveConf.ConfVars.HIVE_VECTORIZATION_USE_ROW_DESERIALIZE.varname);
- sb.append("=");
- sb.append(useRowDeserialize);
- return sb.toString();
- }
-
/*
* There are 3 modes of reading for vectorization:
*
@@ -588,44 +695,58 @@ private String getHiveOptionsString() {
* the row object into the VectorizedRowBatch with VectorAssignRow.
* This picks up Input File Format not supported by the other two.
*/
- private boolean verifyAndSetVectorPartDesc(PartitionDesc pd, boolean isAcidTable) {
+ private boolean verifyAndSetVectorPartDesc(PartitionDesc pd, boolean isAcidTable,
+ HashSet