Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAcos.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAcos.java (revision f53d07b86e98f6a4f85b90a78701b8cad60244af) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAcos.java (revision fe1afe47e26350ff47424957bd78f06bdfe49533) @@ -44,8 +44,13 @@ */ @Override protected DoubleWritable doEvaluate(DoubleWritable a) { - result.set(Math.acos(a.get())); - return result; + double d = a.get(); + if (d < -1 || d > 1) { + return null; + } else { + result.set(Math.acos(d)); + return result; + } } } Index: ql/src/test/results/clientpositive/udf_acos.q.out IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>US-ASCII =================================================================== --- ql/src/test/results/clientpositive/udf_acos.q.out (revision f53d07b86e98f6a4f85b90a78701b8cad60244af) +++ ql/src/test/results/clientpositive/udf_acos.q.out (revision fe1afe47e26350ff47424957bd78f06bdfe49533) @@ -58,4 +58,4 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@src #### A masked pattern was here #### -NaN +NULL Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAsin.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAsin.java (revision fe1afe47e26350ff47424957bd78f06bdfe49533) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAsin.java (revision 630042704cdadaf69a7afe49ffafb3c4af91a3b8) @@ -44,8 +44,13 @@ */ @Override protected DoubleWritable doEvaluate(DoubleWritable a) { - result.set(Math.asin(a.get())); - return result; + double d = a.get(); + if (d < -1 || d > 1) { + return null; + } else { + result.set(Math.asin(d)); + return result; + } } } Index: ql/src/test/results/clientpositive/udf_asin.q.out IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>US-ASCII =================================================================== --- ql/src/test/results/clientpositive/udf_asin.q.out (revision fe1afe47e26350ff47424957bd78f06bdfe49533) +++ ql/src/test/results/clientpositive/udf_asin.q.out (revision 630042704cdadaf69a7afe49ffafb3c4af91a3b8) @@ -58,4 +58,4 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@src #### A masked pattern was here #### -NaN +NULL Index: ql/src/test/results/clientpositive/decimal_udf2.q.out IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>US-ASCII =================================================================== --- ql/src/test/results/clientpositive/decimal_udf2.q.out (revision 630042704cdadaf69a7afe49ffafb3c4af91a3b8) +++ ql/src/test/results/clientpositive/decimal_udf2.q.out (revision bee3c0eb6630a692093d231a3b7d3f842bfc1144) @@ -47,7 +47,7 @@ predicate: (key = 10) (type: boolean) Statistics: Num rows: 1 Data size: 119 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: NaN (type: double), NaN (type: double), 1.4711276743037347 (type: double), -0.8390715290764524 (type: double), -0.5440211108893698 (type: double), 0.6483608274590866 (type: double), 0.17453292519943295 (type: double) + expressions: null (type: double), null (type: double), 1.4711276743037347 (type: double), -0.8390715290764524 (type: double), -0.5440211108893698 (type: double), 0.6483608274590866 (type: double), 0.17453292519943295 (type: double) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6 Statistics: Num rows: 1 Data size: 119 Basic stats: COMPLETE Column stats: NONE File Output Operator @@ -74,7 +74,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_udf2 #### A masked pattern was here #### -NaN NaN 1.4711276743037347 -0.8390715290764524 -0.5440211108893698 0.6483608274590866 0.17453292519943295 +NULL NULL 1.4711276743037347 -0.8390715290764524 -0.5440211108893698 0.6483608274590866 0.17453292519943295 PREHOOK: query: EXPLAIN SELECT exp(key), ln(key), Index: ql/src/test/results/clientpositive/llap/vector_decimal_udf2.q.out IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>US-ASCII =================================================================== --- ql/src/test/results/clientpositive/llap/vector_decimal_udf2.q.out (revision 630042704cdadaf69a7afe49ffafb3c4af91a3b8) +++ ql/src/test/results/clientpositive/llap/vector_decimal_udf2.q.out (revision bee3c0eb6630a692093d231a3b7d3f842bfc1144) @@ -85,13 +85,13 @@ predicate: (key = 10) (type: boolean) Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: NaN (type: double), NaN (type: double), 1.4711276743037347 (type: double), -0.8390715290764524 (type: double), -0.5440211108893698 (type: double), 0.6483608274590866 (type: double), 0.17453292519943295 (type: double) + expressions: null (type: double), null (type: double), 1.4711276743037347 (type: double), -0.8390715290764524 (type: double), -0.5440211108893698 (type: double), 0.6483608274590866 (type: double), 0.17453292519943295 (type: double) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6 Select Vectorization: className: VectorSelectOperator native: true projectedOutputColumns: [2, 3, 4, 5, 6, 7, 8] - selectExpressions: ConstantVectorExpression(val NaN) -> 2:double, ConstantVectorExpression(val NaN) -> 3:double, ConstantVectorExpression(val 1.4711276743037347) -> 4:double, ConstantVectorExpression(val -0.8390715290764524) -> 5:double, ConstantVectorExpression(val -0.5440211108893698) -> 6:double, ConstantVectorExpression(val 0.6483608274590866) -> 7:double, ConstantVectorExpression(val 0.17453292519943295) -> 8:double + selectExpressions: ConstantVectorExpression(val null) -> 2:double, ConstantVectorExpression(val null) -> 3:double, ConstantVectorExpression(val 1.4711276743037347) -> 4:double, ConstantVectorExpression(val -0.8390715290764524) -> 5:double, ConstantVectorExpression(val -0.5440211108893698) -> 6:double, ConstantVectorExpression(val 0.6483608274590866) -> 7:double, ConstantVectorExpression(val 0.17453292519943295) -> 8:double Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false @@ -130,7 +130,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_udf2 #### A masked pattern was here #### -NaN NaN 1.4711276743037347 -0.8390715290764524 -0.5440211108893698 0.6483608274590866 0.17453292519943295 +NULL NULL 1.4711276743037347 -0.8390715290764524 -0.5440211108893698 0.6483608274590866 0.17453292519943295 PREHOOK: query: EXPLAIN VECTORIZATION EXPRESSION SELECT exp(key), ln(key), Index: ql/src/test/results/clientpositive/vector_decimal_udf2.q.out IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>US-ASCII =================================================================== --- ql/src/test/results/clientpositive/vector_decimal_udf2.q.out (revision 630042704cdadaf69a7afe49ffafb3c4af91a3b8) +++ ql/src/test/results/clientpositive/vector_decimal_udf2.q.out (revision bee3c0eb6630a692093d231a3b7d3f842bfc1144) @@ -82,13 +82,13 @@ predicate: (key = 10) (type: boolean) Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: NaN (type: double), NaN (type: double), 1.4711276743037347 (type: double), -0.8390715290764524 (type: double), -0.5440211108893698 (type: double), 0.6483608274590866 (type: double), 0.17453292519943295 (type: double) + expressions: null (type: double), null (type: double), 1.4711276743037347 (type: double), -0.8390715290764524 (type: double), -0.5440211108893698 (type: double), 0.6483608274590866 (type: double), 0.17453292519943295 (type: double) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6 Select Vectorization: className: VectorSelectOperator native: true projectedOutputColumns: [2, 3, 4, 5, 6, 7, 8] - selectExpressions: ConstantVectorExpression(val NaN) -> 2:double, ConstantVectorExpression(val NaN) -> 3:double, ConstantVectorExpression(val 1.4711276743037347) -> 4:double, ConstantVectorExpression(val -0.8390715290764524) -> 5:double, ConstantVectorExpression(val -0.5440211108893698) -> 6:double, ConstantVectorExpression(val 0.6483608274590866) -> 7:double, ConstantVectorExpression(val 0.17453292519943295) -> 8:double + selectExpressions: ConstantVectorExpression(val null) -> 2:double, ConstantVectorExpression(val null) -> 3:double, ConstantVectorExpression(val 1.4711276743037347) -> 4:double, ConstantVectorExpression(val -0.8390715290764524) -> 5:double, ConstantVectorExpression(val -0.5440211108893698) -> 6:double, ConstantVectorExpression(val 0.6483608274590866) -> 7:double, ConstantVectorExpression(val 0.17453292519943295) -> 8:double Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false @@ -126,7 +126,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_udf2 #### A masked pattern was here #### -NaN NaN 1.4711276743037347 -0.8390715290764524 -0.5440211108893698 0.6483608274590866 0.17453292519943295 +NULL NULL 1.4711276743037347 -0.8390715290764524 -0.5440211108893698 0.6483608274590866 0.17453292519943295 PREHOOK: query: EXPLAIN VECTORIZATION EXPRESSION SELECT exp(key), ln(key), Index: vector-code-gen/src/org/apache/hadoop/hive/tools/GenVectorCode.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- vector-code-gen/src/org/apache/hadoop/hive/tools/GenVectorCode.java (revision 630042704cdadaf69a7afe49ffafb3c4af91a3b8) +++ vector-code-gen/src/org/apache/hadoop/hive/tools/GenVectorCode.java (revision bee3c0eb6630a692093d231a3b7d3f842bfc1144) @@ -916,16 +916,20 @@ "MathExpr.NaNToNull(outputColVector, sel, batch.selectedInUse, n);", ""}, {"ColumnUnaryFunc", "FuncSqrt", "double", "long", "Math.sqrt", "(double)", "", "MathExpr.NaNToNull(outputColVector, sel, batch.selectedInUse, n);", ""}, + {"ColumnUnaryFunc", "FuncASin", "double", "double", "Math.asin", "", "", + "MathExpr.NaNToNull(outputColVector, sel, batch.selectedInUse, n);", ""}, + {"ColumnUnaryFunc", "FuncASin", "double", "long", "Math.asin", "(double)", "", + "MathExpr.NaNToNull(outputColVector, sel, batch.selectedInUse, n);", ""}, + {"ColumnUnaryFunc", "FuncACos", "double", "double", "Math.acos", "", "", + "MathExpr.NaNToNull(outputColVector, sel, batch.selectedInUse, n);", ""}, + {"ColumnUnaryFunc", "FuncACos", "double", "long", "Math.acos", "(double)", "", + "MathExpr.NaNToNull(outputColVector, sel, batch.selectedInUse, n);", ""}, {"ColumnUnaryFunc", "FuncAbs", "double", "double", "Math.abs", "", "", "", ""}, {"ColumnUnaryFunc", "FuncAbs", "long", "long", "MathExpr.abs", "", "", "", ""}, {"ColumnUnaryFunc", "FuncSin", "double", "double", "Math.sin", "", "", "", ""}, {"ColumnUnaryFunc", "FuncSin", "double", "long", "Math.sin", "(double)", "", "", ""}, - {"ColumnUnaryFunc", "FuncASin", "double", "double", "Math.asin", "", "", "", ""}, - {"ColumnUnaryFunc", "FuncASin", "double", "long", "Math.asin", "(double)", "", "", ""}, {"ColumnUnaryFunc", "FuncCos", "double", "double", "Math.cos", "", "", "", ""}, {"ColumnUnaryFunc", "FuncCos", "double", "long", "Math.cos", "(double)", "", "", ""}, - {"ColumnUnaryFunc", "FuncACos", "double", "double", "Math.acos", "", "", "", ""}, - {"ColumnUnaryFunc", "FuncACos", "double", "long", "Math.acos", "(double)", "", "", ""}, {"ColumnUnaryFunc", "FuncTan", "double", "double", "Math.tan", "", "", "", ""}, {"ColumnUnaryFunc", "FuncTan", "double", "long", "Math.tan", "(double)", "", "", ""}, {"ColumnUnaryFunc", "FuncATan", "double", "double", "Math.atan", "", "", "", ""},