diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveConcat.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveConcat.java new file mode 100644 index 0000000..36c34cc --- /dev/null +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveConcat.java @@ -0,0 +1,35 @@ +/* + * 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.optimizer.calcite.reloperators; + +import org.apache.calcite.sql.SqlKind; +import org.apache.calcite.sql.SqlSpecialOperator; +import org.apache.calcite.sql.type.InferTypes; +import org.apache.calcite.sql.type.ReturnTypes; + +public class HiveConcat extends SqlSpecialOperator { + public static final SqlSpecialOperator INSTANCE = new HiveConcat(); + + private HiveConcat() { + super("||", SqlKind.OTHER_FUNCTION, 30, true, ReturnTypes.VARCHAR_2000, + InferTypes.RETURN_TYPE, null + ); + } +} + diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveExtractDate.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveExtractDate.java index 4099733..a43f406 100644 --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveExtractDate.java +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveExtractDate.java @@ -22,6 +22,7 @@ import org.apache.calcite.sql.SqlFunction; import org.apache.calcite.sql.SqlFunctionCategory; import org.apache.calcite.sql.SqlKind; +import org.apache.calcite.sql.fun.SqlExtractFunction; import org.apache.calcite.sql.type.OperandTypes; import org.apache.calcite.sql.type.ReturnTypes; import org.apache.calcite.sql.type.SqlTypeTransforms; @@ -43,7 +44,7 @@ Sets.newHashSet(YEAR, QUARTER, MONTH, WEEK, DAY, HOUR, MINUTE, SECOND); private HiveExtractDate(String name) { - super(name, SqlKind.EXTRACT, + super(name, SqlKind.EXTRACT, ReturnTypes.cascade(ReturnTypes.INTEGER, SqlTypeTransforms.FORCE_NULLABLE), null, OperandTypes.INTERVALINTERVAL_INTERVALDATETIME, SqlFunctionCategory.SYSTEM); diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/SqlFunctionConverter.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/SqlFunctionConverter.java index 3f2eaef..359634f 100644 --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/SqlFunctionConverter.java +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/SqlFunctionConverter.java @@ -50,6 +50,7 @@ import org.apache.hadoop.hive.ql.optimizer.calcite.functions.HiveSqlMinMaxAggFunction; import org.apache.hadoop.hive.ql.optimizer.calcite.functions.HiveSqlSumAggFunction; import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveBetween; +import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveConcat; import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveExtractDate; import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveFloorDate; import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveIn; @@ -235,6 +236,8 @@ public static ASTNode buildAST(SqlOperator op, List children) { case CASE: case EXTRACT: case FLOOR: + case CEIL: + case LIKE: case OTHER_FUNCTION: node = (ASTNode) ParseDriver.adaptor.create(HiveParser.TOK_FUNCTION, "TOK_FUNCTION"); node.addChild((ASTNode) ParseDriver.adaptor.create(hToken.type, hToken.text)); @@ -398,6 +401,44 @@ private static String getName(GenericUDF hiveUDF) { hToken(HiveParser.Identifier, "floor_minute")); registerFunction("floor_second", HiveFloorDate.SECOND, hToken(HiveParser.Identifier, "floor_second")); + registerFunction("power", SqlStdOperatorTable.POWER, hToken(HiveParser.Identifier, "power")); + registerDuplicateFunction("pow", SqlStdOperatorTable.POWER, + hToken(HiveParser.Identifier, "power") + ); + registerFunction("ceil", SqlStdOperatorTable.CEIL, hToken(HiveParser.Identifier, "ceil")); + registerDuplicateFunction("ceiling", SqlStdOperatorTable.CEIL, + hToken(HiveParser.Identifier, "ceil") + ); + registerFunction("floor", SqlStdOperatorTable.FLOOR, hToken(HiveParser.Identifier, "floor")); + registerFunction("log10", SqlStdOperatorTable.LOG10, hToken(HiveParser.Identifier, "log10")); + registerFunction("ln", SqlStdOperatorTable.LN, hToken(HiveParser.Identifier, "ln")); + registerFunction("cos", SqlStdOperatorTable.COS, hToken(HiveParser.Identifier, "cos")); + registerFunction("sin", SqlStdOperatorTable.SIN, hToken(HiveParser.Identifier, "sin")); + registerFunction("tan", SqlStdOperatorTable.TAN, hToken(HiveParser.Identifier, "tan")); + registerFunction("concat", HiveConcat.INSTANCE, + hToken(HiveParser.Identifier, "concat") + ); + registerFunction("substring", SqlStdOperatorTable.SUBSTRING, + hToken(HiveParser.Identifier, "substring") + ); + registerFunction("like", SqlStdOperatorTable.LIKE, hToken(HiveParser.Identifier, "like")); + registerFunction("exp", SqlStdOperatorTable.EXP, hToken(HiveParser.Identifier, "exp")); + registerFunction("div", SqlStdOperatorTable.DIVIDE_INTEGER, + hToken(HiveParser.DIV, "div") + ); + registerFunction("sqrt", SqlStdOperatorTable.SQRT, hToken(HiveParser.Identifier, "sqrt")); + registerFunction("lower", SqlStdOperatorTable.LOWER, hToken(HiveParser.Identifier, "lower")); + registerFunction("upper", SqlStdOperatorTable.UPPER, hToken(HiveParser.Identifier, "upper")); + registerFunction("abs", SqlStdOperatorTable.ABS, hToken(HiveParser.Identifier, "abs")); + registerFunction("character_length", SqlStdOperatorTable.CHAR_LENGTH, + hToken(HiveParser.Identifier, "character_length") + ); + registerDuplicateFunction("char_length", SqlStdOperatorTable.CHAR_LENGTH, + hToken(HiveParser.Identifier, "character_length") + ); + registerDuplicateFunction("length", SqlStdOperatorTable.CHAR_LENGTH, + hToken(HiveParser.Identifier, "character_length") + ); } private void registerFunction(String name, SqlOperator calciteFn, HiveToken hiveToken) { diff --git ql/src/test/results/clientpositive/vector_decimal_math_funcs.q.out ql/src/test/results/clientpositive/vector_decimal_math_funcs.q.out index 9f4d478..23a63da 100644 --- ql/src/test/results/clientpositive/vector_decimal_math_funcs.q.out +++ ql/src/test/results/clientpositive/vector_decimal_math_funcs.q.out @@ -112,13 +112,13 @@ STAGE PLANS: predicate: (((cbigint % 500) = 0) and (sin(cdecimal1) >= -1.0)) (type: boolean) Statistics: Num rows: 2048 Data size: 366958 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: cdecimal1 (type: decimal(20,10)), round(cdecimal1, 2) (type: decimal(13,2)), round(cdecimal1) (type: decimal(11,0)), floor(cdecimal1) (type: decimal(11,0)), ceil(cdecimal1) (type: decimal(11,0)), round(exp(cdecimal1), 58) (type: double), ln(cdecimal1) (type: double), log10(cdecimal1) (type: double), log2(cdecimal1) (type: double), log2((cdecimal1 - 15601)) (type: double), log(2, cdecimal1) (type: double), power(log2(cdecimal1), 2) (type: double), power(log2(cdecimal1), 2) (type: double), sqrt(cdecimal1) (type: double), abs(cdecimal1) (type: decimal(20,10)), sin(cdecimal1) (type: double), asin(cdecimal1) (type: double), cos(cdecimal1) (type: double), acos(cdecimal1) (type: double), atan(cdecimal1) (type: double), degrees(cdecimal1) (type: double), radians(cdecimal1) (type: double), cdecimal1 (type: decimal(20,10)), (- cdecimal1) (type: decimal(20,10)), sign(cdecimal1) (type: int), cos(((- sin(log(cdecimal1))) + 3.14159)) (type: double) + expressions: cdecimal1 (type: decimal(20,10)), round(cdecimal1, 2) (type: decimal(13,2)), round(cdecimal1) (type: decimal(11,0)), floor(cdecimal1) (type: decimal(11,0)), 'ceil' (type: string), round(exp(cdecimal1), 58) (type: double), ln(cdecimal1) (type: double), log10(cdecimal1) (type: double), log2(cdecimal1) (type: double), log2((cdecimal1 - 15601)) (type: double), log(2, cdecimal1) (type: double), power(log2(cdecimal1), 2) (type: double), power(log2(cdecimal1), 2) (type: double), sqrt(cdecimal1) (type: double), abs(cdecimal1) (type: decimal(20,10)), sin(cdecimal1) (type: double), asin(cdecimal1) (type: double), cos(cdecimal1) (type: double), acos(cdecimal1) (type: double), atan(cdecimal1) (type: double), degrees(cdecimal1) (type: double), radians(cdecimal1) (type: double), cdecimal1 (type: decimal(20,10)), (- cdecimal1) (type: decimal(20,10)), sign(cdecimal1) (type: int), cos(((- sin(log(cdecimal1))) + 3.14159)) (type: double) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, _col17, _col18, _col19, _col20, _col21, _col22, _col23, _col24, _col25 Select Vectorization: className: VectorSelectOperator native: true projectedOutputColumnNums: [2, 8, 9, 10, 11, 6, 12, 13, 14, 16, 17, 7, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 2, 29, 5, 30] - selectExpressions: FuncRoundWithNumDigitsDecimalToDecimal(col 2:decimal(20,10), decimalPlaces 2) -> 8:decimal(13,2), FuncRoundDecimalToDecimal(col 2:decimal(20,10)) -> 9:decimal(11,0), FuncFloorDecimalToDecimal(col 2:decimal(20,10)) -> 10:decimal(11,0), FuncCeilDecimalToDecimal(col 2:decimal(20,10)) -> 11:decimal(11,0), RoundWithNumDigitsDoubleToDouble(col 7, decimalPlaces 58)(children: FuncExpDoubleToDouble(col 6:double)(children: CastDecimalToDouble(col 2:decimal(20,10)) -> 6:double) -> 7:double) -> 6:double, FuncLnDoubleToDouble(col 7:double)(children: CastDecimalToDouble(col 2:decimal(20,10)) -> 7:double) -> 12:double, FuncLog10DoubleToDouble(col 7:double)(children: CastDecimalToDouble(col 2:decimal(20,10)) -> 7:double) -> 13:double, FuncLog2DoubleToDouble(col 7:double)(children: CastDecimalToDouble(col 2:decimal(20,10)) -> 7:double) -> 14:double, FuncLog2DoubleToDouble(col 7:double)(children: CastDecimalToDouble(col 15:decimal(21,10))(children: DecimalColSubtractDecimalScalar(col 2:decimal(20,10), val 15601) -> 15:decimal(21,10)) -> 7:double) -> 16:double, FuncLogWithBaseDoubleToDouble(col 7:double)(children: CastDecimalToDouble(col 2:decimal(20,10)) -> 7:double) -> 17:double, FuncPowerDoubleToDouble(col 18:double)(children: FuncLog2DoubleToDouble(col 7:double)(children: CastDecimalToDouble(col 2:decimal(20,10)) -> 7:double) -> 18:double) -> 7:double, FuncPowerDoubleToDouble(col 19:double)(children: FuncLog2DoubleToDouble(col 18:double)(children: CastDecimalToDouble(col 2:decimal(20,10)) -> 18:double) -> 19:double) -> 18:double, FuncSqrtDoubleToDouble(col 19:double)(children: CastDecimalToDouble(col 2:decimal(20,10)) -> 19:double) -> 20:double, FuncAbsDecimalToDecimal(col 2:decimal(20,10)) -> 21:decimal(20,10), FuncSinDoubleToDouble(col 19:double)(children: CastDecimalToDouble(col 2:decimal(20,10)) -> 19:double) -> 22:double, FuncASinDoubleToDouble(col 19:double)(children: CastDecimalToDouble(col 2:decimal(20,10)) -> 19:double) -> 23:double, FuncCosDoubleToDouble(col 19:double)(children: CastDecimalToDouble(col 2:decimal(20,10)) -> 19:double) -> 24:double, FuncACosDoubleToDouble(col 19:double)(children: CastDecimalToDouble(col 2:decimal(20,10)) -> 19:double) -> 25:double, FuncATanDoubleToDouble(col 19:double)(children: CastDecimalToDouble(col 2:decimal(20,10)) -> 19:double) -> 26:double, FuncDegreesDoubleToDouble(col 19:double)(children: CastDecimalToDouble(col 2:decimal(20,10)) -> 19:double) -> 27:double, FuncRadiansDoubleToDouble(col 19:double)(children: CastDecimalToDouble(col 2:decimal(20,10)) -> 19:double) -> 28:double, FuncNegateDecimalToDecimal(col 2:decimal(20,10)) -> 29:decimal(20,10), FuncSignDecimalToLong(col 2:decimal(20,10)) -> 5:int, FuncCosDoubleToDouble(col 19:double)(children: DoubleColAddDoubleScalar(col 30:double, val 3.14159)(children: DoubleColUnaryMinus(col 19:double)(children: FuncSinDoubleToDouble(col 30:double)(children: FuncLnDoubleToDouble(col 19:double)(children: CastDecimalToDouble(col 2:decimal(20,10)) -> 19:double) -> 30:double) -> 19:double) -> 30:double) -> 19:double) -> 30:double + selectExpressions: FuncRoundWithNumDigitsDecimalToDecimal(col 2:decimal(20,10), decimalPlaces 2) -> 8:decimal(13,2), FuncRoundDecimalToDecimal(col 2:decimal(20,10)) -> 9:decimal(11,0), FuncFloorDecimalToDecimal(col 2:decimal(20,10)) -> 10:decimal(11,0), ConstantVectorExpression(val ceil) -> 11:string, RoundWithNumDigitsDoubleToDouble(col 7, decimalPlaces 58)(children: FuncExpDoubleToDouble(col 6:double)(children: CastDecimalToDouble(col 2:decimal(20,10)) -> 6:double) -> 7:double) -> 6:double, FuncLnDoubleToDouble(col 7:double)(children: CastDecimalToDouble(col 2:decimal(20,10)) -> 7:double) -> 12:double, FuncLog10DoubleToDouble(col 7:double)(children: CastDecimalToDouble(col 2:decimal(20,10)) -> 7:double) -> 13:double, FuncLog2DoubleToDouble(col 7:double)(children: CastDecimalToDouble(col 2:decimal(20,10)) -> 7:double) -> 14:double, FuncLog2DoubleToDouble(col 7:double)(children: CastDecimalToDouble(col 15:decimal(21,10))(children: DecimalColSubtractDecimalScalar(col 2:decimal(20,10), val 15601) -> 15:decimal(21,10)) -> 7:double) -> 16:double, FuncLogWithBaseDoubleToDouble(col 7:double)(children: CastDecimalToDouble(col 2:decimal(20,10)) -> 7:double) -> 17:double, FuncPowerDoubleToDouble(col 18:double)(children: FuncLog2DoubleToDouble(col 7:double)(children: CastDecimalToDouble(col 2:decimal(20,10)) -> 7:double) -> 18:double) -> 7:double, FuncPowerDoubleToDouble(col 19:double)(children: FuncLog2DoubleToDouble(col 18:double)(children: CastDecimalToDouble(col 2:decimal(20,10)) -> 18:double) -> 19:double) -> 18:double, FuncSqrtDoubleToDouble(col 19:double)(children: CastDecimalToDouble(col 2:decimal(20,10)) -> 19:double) -> 20:double, FuncAbsDecimalToDecimal(col 2:decimal(20,10)) -> 21:decimal(20,10), FuncSinDoubleToDouble(col 19:double)(children: CastDecimalToDouble(col 2:decimal(20,10)) -> 19:double) -> 22:double, FuncASinDoubleToDouble(col 19:double)(children: CastDecimalToDouble(col 2:decimal(20,10)) -> 19:double) -> 23:double, FuncCosDoubleToDouble(col 19:double)(children: CastDecimalToDouble(col 2:decimal(20,10)) -> 19:double) -> 24:double, FuncACosDoubleToDouble(col 19:double)(children: CastDecimalToDouble(col 2:decimal(20,10)) -> 19:double) -> 25:double, FuncATanDoubleToDouble(col 19:double)(children: CastDecimalToDouble(col 2:decimal(20,10)) -> 19:double) -> 26:double, FuncDegreesDoubleToDouble(col 19:double)(children: CastDecimalToDouble(col 2:decimal(20,10)) -> 19:double) -> 27:double, FuncRadiansDoubleToDouble(col 19:double)(children: CastDecimalToDouble(col 2:decimal(20,10)) -> 19:double) -> 28:double, FuncNegateDecimalToDecimal(col 2:decimal(20,10)) -> 29:decimal(20,10), FuncSignDecimalToLong(col 2:decimal(20,10)) -> 5:int, FuncCosDoubleToDouble(col 19:double)(children: DoubleColAddDoubleScalar(col 30:double, val 3.14159)(children: DoubleColUnaryMinus(col 19:double)(children: FuncSinDoubleToDouble(col 30:double)(children: FuncLnDoubleToDouble(col 19:double)(children: CastDecimalToDouble(col 2:decimal(20,10)) -> 19:double) -> 30:double) -> 19:double) -> 30:double) -> 19:double) -> 30:double Statistics: Num rows: 2048 Data size: 366958 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false @@ -145,7 +145,7 @@ STAGE PLANS: includeColumns: [0, 2] dataColumns: cbigint:bigint, cdouble:double, cdecimal1:decimal(20,10), cdecimal2:decimal(23,14) partitionColumnCount: 0 - scratchColumnTypeNames: [bigint, double, double, decimal(13,2), decimal(11,0), decimal(11,0), decimal(11,0), double, double, double, decimal(21,10), double, double, double, double, double, decimal(20,10), double, double, double, double, double, double, double, decimal(20,10), double] + scratchColumnTypeNames: [bigint, double, double, decimal(13,2), decimal(11,0), decimal(11,0), string, double, double, double, decimal(21,10), double, double, double, double, double, decimal(20,10), double, double, double, double, double, double, double, decimal(20,10), double] Stage: Stage-0 Fetch Operator @@ -229,17 +229,17 @@ and sin(cdecimal1) >= -1.0 POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_test #### A masked pattern was here #### --119.4594594595 -119.46 -119 -120 -119 1.316485E-52 NULL NULL NULL NULL NULL NULL NULL NULL 119.4594594595 -0.07885666683797002 NULL 0.9968859644388647 NULL -1.5624254815943668 -6844.522849943508 -2.0849608902209606 -119.4594594595 119.4594594595 -1 NULL -9318.4351351351 9318.44 9318 9318 9319 Infinity 9.13974998962673 3.969342986470191 13.185871984999437 NULL 13.185871984999437 173.867220004793 173.867220004793 96.53204201266593 9318.4351351351 0.4540668481851705 NULL 0.8909676185918236 NULL 1.5706890126394983 533907.0049096602 162.63737424163023 9318.4351351351 -9318.4351351351 1 -0.9607267417229353 -9318.4351351351 9318.44 9318 9318 9319 Infinity 9.13974998962673 3.969342986470191 13.185871984999437 NULL 13.185871984999437 173.867220004793 173.867220004793 96.53204201266593 9318.4351351351 0.4540668481851705 NULL 0.8909676185918236 NULL 1.5706890126394983 533907.0049096602 162.63737424163023 9318.4351351351 -9318.4351351351 1 -0.9607267417229353 -9318.4351351351 9318.44 9318 9318 9319 Infinity 9.13974998962673 3.969342986470191 13.185871984999437 NULL 13.185871984999437 173.867220004793 173.867220004793 96.53204201266593 9318.4351351351 0.4540668481851705 NULL 0.8909676185918236 NULL 1.5706890126394983 533907.0049096602 162.63737424163023 9318.4351351351 -9318.4351351351 1 -0.9607267417229353 --4298.1513513514 -4298.15 -4298 -4299 -4298 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1513513514 -0.43730633941118113 NULL 0.899312607223313 NULL -1.5705636686355597 -246265.93214088667 -75.01689283012556 -4298.1513513514 4298.1513513514 -1 NULL --4298.1513513514 -4298.15 -4298 -4299 -4298 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1513513514 -0.43730633941118113 NULL 0.899312607223313 NULL -1.5705636686355597 -246265.93214088667 -75.01689283012556 -4298.1513513514 4298.1513513514 -1 NULL --4298.1513513514 -4298.15 -4298 -4299 -4298 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1513513514 -0.43730633941118113 NULL 0.899312607223313 NULL -1.5705636686355597 -246265.93214088667 -75.01689283012556 -4298.1513513514 4298.1513513514 -1 NULL --4298.1513513514 -4298.15 -4298 -4299 -4298 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1513513514 -0.43730633941118113 NULL 0.899312607223313 NULL -1.5705636686355597 -246265.93214088667 -75.01689283012556 -4298.1513513514 4298.1513513514 -1 NULL --4298.1513513514 -4298.15 -4298 -4299 -4298 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1513513514 -0.43730633941118113 NULL 0.899312607223313 NULL -1.5705636686355597 -246265.93214088667 -75.01689283012556 -4298.1513513514 4298.1513513514 -1 NULL --4298.1513513514 -4298.15 -4298 -4299 -4298 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1513513514 -0.43730633941118113 NULL 0.899312607223313 NULL -1.5705636686355597 -246265.93214088667 -75.01689283012556 -4298.1513513514 4298.1513513514 -1 NULL --4298.1513513514 -4298.15 -4298 -4299 -4298 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1513513514 -0.43730633941118113 NULL 0.899312607223313 NULL -1.5705636686355597 -246265.93214088667 -75.01689283012556 -4298.1513513514 4298.1513513514 -1 NULL +-119.4594594595 -119.46 -119 -120 ceil 1.316485E-52 NULL NULL NULL NULL NULL NULL NULL NULL 119.4594594595 -0.07885666683797002 NULL 0.9968859644388647 NULL -1.5624254815943668 -6844.522849943508 -2.0849608902209606 -119.4594594595 119.4594594595 -1 NULL +9318.4351351351 9318.44 9318 9318 ceil Infinity 9.13974998962673 3.969342986470191 13.185871984999437 NULL 13.185871984999437 173.867220004793 173.867220004793 96.53204201266593 9318.4351351351 0.4540668481851705 NULL 0.8909676185918236 NULL 1.5706890126394983 533907.0049096602 162.63737424163023 9318.4351351351 -9318.4351351351 1 -0.9607267417229353 +9318.4351351351 9318.44 9318 9318 ceil Infinity 9.13974998962673 3.969342986470191 13.185871984999437 NULL 13.185871984999437 173.867220004793 173.867220004793 96.53204201266593 9318.4351351351 0.4540668481851705 NULL 0.8909676185918236 NULL 1.5706890126394983 533907.0049096602 162.63737424163023 9318.4351351351 -9318.4351351351 1 -0.9607267417229353 +9318.4351351351 9318.44 9318 9318 ceil Infinity 9.13974998962673 3.969342986470191 13.185871984999437 NULL 13.185871984999437 173.867220004793 173.867220004793 96.53204201266593 9318.4351351351 0.4540668481851705 NULL 0.8909676185918236 NULL 1.5706890126394983 533907.0049096602 162.63737424163023 9318.4351351351 -9318.4351351351 1 -0.9607267417229353 +-4298.1513513514 -4298.15 -4298 -4299 ceil 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1513513514 -0.43730633941118113 NULL 0.899312607223313 NULL -1.5705636686355597 -246265.93214088667 -75.01689283012556 -4298.1513513514 4298.1513513514 -1 NULL +-4298.1513513514 -4298.15 -4298 -4299 ceil 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1513513514 -0.43730633941118113 NULL 0.899312607223313 NULL -1.5705636686355597 -246265.93214088667 -75.01689283012556 -4298.1513513514 4298.1513513514 -1 NULL +-4298.1513513514 -4298.15 -4298 -4299 ceil 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1513513514 -0.43730633941118113 NULL 0.899312607223313 NULL -1.5705636686355597 -246265.93214088667 -75.01689283012556 -4298.1513513514 4298.1513513514 -1 NULL +-4298.1513513514 -4298.15 -4298 -4299 ceil 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1513513514 -0.43730633941118113 NULL 0.899312607223313 NULL -1.5705636686355597 -246265.93214088667 -75.01689283012556 -4298.1513513514 4298.1513513514 -1 NULL +-4298.1513513514 -4298.15 -4298 -4299 ceil 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1513513514 -0.43730633941118113 NULL 0.899312607223313 NULL -1.5705636686355597 -246265.93214088667 -75.01689283012556 -4298.1513513514 4298.1513513514 -1 NULL +-4298.1513513514 -4298.15 -4298 -4299 ceil 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1513513514 -0.43730633941118113 NULL 0.899312607223313 NULL -1.5705636686355597 -246265.93214088667 -75.01689283012556 -4298.1513513514 4298.1513513514 -1 NULL +-4298.1513513514 -4298.15 -4298 -4299 ceil 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1513513514 -0.43730633941118113 NULL 0.899312607223313 NULL -1.5705636686355597 -246265.93214088667 -75.01689283012556 -4298.1513513514 4298.1513513514 -1 NULL PREHOOK: query: CREATE TABLE decimal_test_small STORED AS ORC AS SELECT cbigint, cdouble, CAST (((cdouble*22.1)/37) AS DECIMAL(12,4)) AS cdecimal1, CAST (((cdouble*9.3)/13) AS DECIMAL(14,8)) AS cdecimal2 FROM alltypesorc PREHOOK: type: CREATETABLE_AS_SELECT PREHOOK: Input: default@alltypesorc @@ -354,13 +354,13 @@ STAGE PLANS: predicate: (((cbigint % 500) = 0) and (sin(cdecimal1) >= -1.0)) (type: boolean) Statistics: Num rows: 2048 Data size: 366865 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: cdecimal1 (type: decimal(12,4)), round(cdecimal1, 2) (type: decimal(11,2)), round(cdecimal1) (type: decimal(9,0)), floor(cdecimal1) (type: decimal(9,0)), ceil(cdecimal1) (type: decimal(9,0)), round(exp(cdecimal1), 58) (type: double), ln(cdecimal1) (type: double), log10(cdecimal1) (type: double), log2(cdecimal1) (type: double), log2((cdecimal1 - 15601)) (type: double), log(2, cdecimal1) (type: double), power(log2(cdecimal1), 2) (type: double), power(log2(cdecimal1), 2) (type: double), sqrt(cdecimal1) (type: double), abs(cdecimal1) (type: decimal(12,4)), sin(cdecimal1) (type: double), asin(cdecimal1) (type: double), cos(cdecimal1) (type: double), acos(cdecimal1) (type: double), atan(cdecimal1) (type: double), degrees(cdecimal1) (type: double), radians(cdecimal1) (type: double), cdecimal1 (type: decimal(12,4)), (- cdecimal1) (type: decimal(12,4)), sign(cdecimal1) (type: int), cos(((- sin(log(cdecimal1))) + 3.14159)) (type: double) + expressions: cdecimal1 (type: decimal(12,4)), round(cdecimal1, 2) (type: decimal(11,2)), round(cdecimal1) (type: decimal(9,0)), floor(cdecimal1) (type: decimal(9,0)), 'ceil' (type: string), round(exp(cdecimal1), 58) (type: double), ln(cdecimal1) (type: double), log10(cdecimal1) (type: double), log2(cdecimal1) (type: double), log2((cdecimal1 - 15601)) (type: double), log(2, cdecimal1) (type: double), power(log2(cdecimal1), 2) (type: double), power(log2(cdecimal1), 2) (type: double), sqrt(cdecimal1) (type: double), abs(cdecimal1) (type: decimal(12,4)), sin(cdecimal1) (type: double), asin(cdecimal1) (type: double), cos(cdecimal1) (type: double), acos(cdecimal1) (type: double), atan(cdecimal1) (type: double), degrees(cdecimal1) (type: double), radians(cdecimal1) (type: double), cdecimal1 (type: decimal(12,4)), (- cdecimal1) (type: decimal(12,4)), sign(cdecimal1) (type: int), cos(((- sin(log(cdecimal1))) + 3.14159)) (type: double) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, _col17, _col18, _col19, _col20, _col21, _col22, _col23, _col24, _col25 Select Vectorization: className: VectorSelectOperator native: true projectedOutputColumnNums: [2, 8, 9, 10, 11, 6, 12, 13, 14, 16, 17, 7, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 2, 29, 5, 30] - selectExpressions: FuncRoundWithNumDigitsDecimalToDecimal(col 2:decimal(12,4), decimalPlaces 2) -> 8:decimal(11,2), FuncRoundDecimalToDecimal(col 2:decimal(12,4)) -> 9:decimal(9,0), FuncFloorDecimalToDecimal(col 2:decimal(12,4)) -> 10:decimal(9,0), FuncCeilDecimalToDecimal(col 2:decimal(12,4)) -> 11:decimal(9,0), RoundWithNumDigitsDoubleToDouble(col 7, decimalPlaces 58)(children: FuncExpDoubleToDouble(col 6:double)(children: CastDecimalToDouble(col 2:decimal(12,4)) -> 6:double) -> 7:double) -> 6:double, FuncLnDoubleToDouble(col 7:double)(children: CastDecimalToDouble(col 2:decimal(12,4)) -> 7:double) -> 12:double, FuncLog10DoubleToDouble(col 7:double)(children: CastDecimalToDouble(col 2:decimal(12,4)) -> 7:double) -> 13:double, FuncLog2DoubleToDouble(col 7:double)(children: CastDecimalToDouble(col 2:decimal(12,4)) -> 7:double) -> 14:double, FuncLog2DoubleToDouble(col 7:double)(children: CastDecimalToDouble(col 15:decimal(13,4))(children: DecimalColSubtractDecimalScalar(col 2:decimal(12,4), val 15601) -> 15:decimal(13,4)) -> 7:double) -> 16:double, FuncLogWithBaseDoubleToDouble(col 7:double)(children: CastDecimalToDouble(col 2:decimal(12,4)) -> 7:double) -> 17:double, FuncPowerDoubleToDouble(col 18:double)(children: FuncLog2DoubleToDouble(col 7:double)(children: CastDecimalToDouble(col 2:decimal(12,4)) -> 7:double) -> 18:double) -> 7:double, FuncPowerDoubleToDouble(col 19:double)(children: FuncLog2DoubleToDouble(col 18:double)(children: CastDecimalToDouble(col 2:decimal(12,4)) -> 18:double) -> 19:double) -> 18:double, FuncSqrtDoubleToDouble(col 19:double)(children: CastDecimalToDouble(col 2:decimal(12,4)) -> 19:double) -> 20:double, FuncAbsDecimalToDecimal(col 2:decimal(12,4)) -> 21:decimal(12,4), FuncSinDoubleToDouble(col 19:double)(children: CastDecimalToDouble(col 2:decimal(12,4)) -> 19:double) -> 22:double, FuncASinDoubleToDouble(col 19:double)(children: CastDecimalToDouble(col 2:decimal(12,4)) -> 19:double) -> 23:double, FuncCosDoubleToDouble(col 19:double)(children: CastDecimalToDouble(col 2:decimal(12,4)) -> 19:double) -> 24:double, FuncACosDoubleToDouble(col 19:double)(children: CastDecimalToDouble(col 2:decimal(12,4)) -> 19:double) -> 25:double, FuncATanDoubleToDouble(col 19:double)(children: CastDecimalToDouble(col 2:decimal(12,4)) -> 19:double) -> 26:double, FuncDegreesDoubleToDouble(col 19:double)(children: CastDecimalToDouble(col 2:decimal(12,4)) -> 19:double) -> 27:double, FuncRadiansDoubleToDouble(col 19:double)(children: CastDecimalToDouble(col 2:decimal(12,4)) -> 19:double) -> 28:double, FuncNegateDecimalToDecimal(col 2:decimal(12,4)) -> 29:decimal(12,4), FuncSignDecimalToLong(col 2:decimal(12,4)) -> 5:int, FuncCosDoubleToDouble(col 19:double)(children: DoubleColAddDoubleScalar(col 30:double, val 3.14159)(children: DoubleColUnaryMinus(col 19:double)(children: FuncSinDoubleToDouble(col 30:double)(children: FuncLnDoubleToDouble(col 19:double)(children: CastDecimalToDouble(col 2:decimal(12,4)) -> 19:double) -> 30:double) -> 19:double) -> 30:double) -> 19:double) -> 30:double + selectExpressions: FuncRoundWithNumDigitsDecimalToDecimal(col 2:decimal(12,4), decimalPlaces 2) -> 8:decimal(11,2), FuncRoundDecimalToDecimal(col 2:decimal(12,4)) -> 9:decimal(9,0), FuncFloorDecimalToDecimal(col 2:decimal(12,4)) -> 10:decimal(9,0), ConstantVectorExpression(val ceil) -> 11:string, RoundWithNumDigitsDoubleToDouble(col 7, decimalPlaces 58)(children: FuncExpDoubleToDouble(col 6:double)(children: CastDecimalToDouble(col 2:decimal(12,4)) -> 6:double) -> 7:double) -> 6:double, FuncLnDoubleToDouble(col 7:double)(children: CastDecimalToDouble(col 2:decimal(12,4)) -> 7:double) -> 12:double, FuncLog10DoubleToDouble(col 7:double)(children: CastDecimalToDouble(col 2:decimal(12,4)) -> 7:double) -> 13:double, FuncLog2DoubleToDouble(col 7:double)(children: CastDecimalToDouble(col 2:decimal(12,4)) -> 7:double) -> 14:double, FuncLog2DoubleToDouble(col 7:double)(children: CastDecimalToDouble(col 15:decimal(13,4))(children: DecimalColSubtractDecimalScalar(col 2:decimal(12,4), val 15601) -> 15:decimal(13,4)) -> 7:double) -> 16:double, FuncLogWithBaseDoubleToDouble(col 7:double)(children: CastDecimalToDouble(col 2:decimal(12,4)) -> 7:double) -> 17:double, FuncPowerDoubleToDouble(col 18:double)(children: FuncLog2DoubleToDouble(col 7:double)(children: CastDecimalToDouble(col 2:decimal(12,4)) -> 7:double) -> 18:double) -> 7:double, FuncPowerDoubleToDouble(col 19:double)(children: FuncLog2DoubleToDouble(col 18:double)(children: CastDecimalToDouble(col 2:decimal(12,4)) -> 18:double) -> 19:double) -> 18:double, FuncSqrtDoubleToDouble(col 19:double)(children: CastDecimalToDouble(col 2:decimal(12,4)) -> 19:double) -> 20:double, FuncAbsDecimalToDecimal(col 2:decimal(12,4)) -> 21:decimal(12,4), FuncSinDoubleToDouble(col 19:double)(children: CastDecimalToDouble(col 2:decimal(12,4)) -> 19:double) -> 22:double, FuncASinDoubleToDouble(col 19:double)(children: CastDecimalToDouble(col 2:decimal(12,4)) -> 19:double) -> 23:double, FuncCosDoubleToDouble(col 19:double)(children: CastDecimalToDouble(col 2:decimal(12,4)) -> 19:double) -> 24:double, FuncACosDoubleToDouble(col 19:double)(children: CastDecimalToDouble(col 2:decimal(12,4)) -> 19:double) -> 25:double, FuncATanDoubleToDouble(col 19:double)(children: CastDecimalToDouble(col 2:decimal(12,4)) -> 19:double) -> 26:double, FuncDegreesDoubleToDouble(col 19:double)(children: CastDecimalToDouble(col 2:decimal(12,4)) -> 19:double) -> 27:double, FuncRadiansDoubleToDouble(col 19:double)(children: CastDecimalToDouble(col 2:decimal(12,4)) -> 19:double) -> 28:double, FuncNegateDecimalToDecimal(col 2:decimal(12,4)) -> 29:decimal(12,4), FuncSignDecimalToLong(col 2:decimal(12,4)) -> 5:int, FuncCosDoubleToDouble(col 19:double)(children: DoubleColAddDoubleScalar(col 30:double, val 3.14159)(children: DoubleColUnaryMinus(col 19:double)(children: FuncSinDoubleToDouble(col 30:double)(children: FuncLnDoubleToDouble(col 19:double)(children: CastDecimalToDouble(col 2:decimal(12,4)) -> 19:double) -> 30:double) -> 19:double) -> 30:double) -> 19:double) -> 30:double Statistics: Num rows: 2048 Data size: 366865 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false @@ -387,7 +387,7 @@ STAGE PLANS: includeColumns: [0, 2] dataColumns: cbigint:bigint, cdouble:double, cdecimal1:decimal(12,4), cdecimal2:decimal(14,8) partitionColumnCount: 0 - scratchColumnTypeNames: [bigint, double, double, decimal(11,2), decimal(9,0), decimal(9,0), decimal(9,0), double, double, double, decimal(13,4), double, double, double, double, double, decimal(12,4), double, double, double, double, double, double, double, decimal(12,4), double] + scratchColumnTypeNames: [bigint, double, double, decimal(11,2), decimal(9,0), decimal(9,0), string, double, double, double, decimal(13,4), double, double, double, double, double, decimal(12,4), double, double, double, double, double, double, double, decimal(12,4), double] Stage: Stage-0 Fetch Operator @@ -471,14 +471,14 @@ and sin(cdecimal1) >= -1.0 POSTHOOK: type: QUERY POSTHOOK: Input: default@decimal_test_small #### A masked pattern was here #### --119.4595 -119.46 -119 -120 -119 1.316432E-52 NULL NULL NULL NULL NULL NULL NULL NULL 119.4595 -0.07889708102860798 NULL 0.9968827667309558 NULL -1.562425484435015 -6844.525172743059 -2.084961597786166 -119.4595 119.4595 -1 NULL -9318.4351 9318.44 9318 9318 9319 Infinity 9.139749985856234 3.9693429848326867 13.185871979559764 NULL 13.185871979559764 173.86721986133932 173.86721986133932 96.5320418306792 9318.4351 0.4540355436693385 NULL 0.8909835717255892 NULL 1.5706890126390936 533907.0028965673 162.63737362840706 9318.4351 -9318.4351 1 -0.9607267407188516 -9318.4351 9318.44 9318 9318 9319 Infinity 9.139749985856234 3.9693429848326867 13.185871979559764 NULL 13.185871979559764 173.86721986133932 173.86721986133932 96.5320418306792 9318.4351 0.4540355436693385 NULL 0.8909835717255892 NULL 1.5706890126390936 533907.0028965673 162.63737362840706 9318.4351 -9318.4351 1 -0.9607267407188516 -9318.4351 9318.44 9318 9318 9319 Infinity 9.139749985856234 3.9693429848326867 13.185871979559764 NULL 13.185871979559764 173.86721986133932 173.86721986133932 96.5320418306792 9318.4351 0.4540355436693385 NULL 0.8909835717255892 NULL 1.5706890126390936 533907.0028965673 162.63737362840706 9318.4351 -9318.4351 1 -0.9607267407188516 --4298.1514 -4298.15 -4298 -4299 -4298 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1514 -0.4373500891926774 NULL 0.8992913318180917 NULL -1.5705636686381932 -246265.9349282461 -75.01689367920379 -4298.1514 4298.1514 -1 NULL --4298.1514 -4298.15 -4298 -4299 -4298 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1514 -0.4373500891926774 NULL 0.8992913318180917 NULL -1.5705636686381932 -246265.9349282461 -75.01689367920379 -4298.1514 4298.1514 -1 NULL --4298.1514 -4298.15 -4298 -4299 -4298 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1514 -0.4373500891926774 NULL 0.8992913318180917 NULL -1.5705636686381932 -246265.9349282461 -75.01689367920379 -4298.1514 4298.1514 -1 NULL --4298.1514 -4298.15 -4298 -4299 -4298 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1514 -0.4373500891926774 NULL 0.8992913318180917 NULL -1.5705636686381932 -246265.9349282461 -75.01689367920379 -4298.1514 4298.1514 -1 NULL --4298.1514 -4298.15 -4298 -4299 -4298 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1514 -0.4373500891926774 NULL 0.8992913318180917 NULL -1.5705636686381932 -246265.9349282461 -75.01689367920379 -4298.1514 4298.1514 -1 NULL --4298.1514 -4298.15 -4298 -4299 -4298 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1514 -0.4373500891926774 NULL 0.8992913318180917 NULL -1.5705636686381932 -246265.9349282461 -75.01689367920379 -4298.1514 4298.1514 -1 NULL --4298.1514 -4298.15 -4298 -4299 -4298 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1514 -0.4373500891926774 NULL 0.8992913318180917 NULL -1.5705636686381932 -246265.9349282461 -75.01689367920379 -4298.1514 4298.1514 -1 NULL +-119.4595 -119.46 -119 -120 ceil 1.316432E-52 NULL NULL NULL NULL NULL NULL NULL NULL 119.4595 -0.07889708102860798 NULL 0.9968827667309558 NULL -1.562425484435015 -6844.525172743059 -2.084961597786166 -119.4595 119.4595 -1 NULL +9318.4351 9318.44 9318 9318 ceil Infinity 9.139749985856234 3.9693429848326867 13.185871979559764 NULL 13.185871979559764 173.86721986133932 173.86721986133932 96.5320418306792 9318.4351 0.4540355436693385 NULL 0.8909835717255892 NULL 1.5706890126390936 533907.0028965673 162.63737362840706 9318.4351 -9318.4351 1 -0.9607267407188516 +9318.4351 9318.44 9318 9318 ceil Infinity 9.139749985856234 3.9693429848326867 13.185871979559764 NULL 13.185871979559764 173.86721986133932 173.86721986133932 96.5320418306792 9318.4351 0.4540355436693385 NULL 0.8909835717255892 NULL 1.5706890126390936 533907.0028965673 162.63737362840706 9318.4351 -9318.4351 1 -0.9607267407188516 +9318.4351 9318.44 9318 9318 ceil Infinity 9.139749985856234 3.9693429848326867 13.185871979559764 NULL 13.185871979559764 173.86721986133932 173.86721986133932 96.5320418306792 9318.4351 0.4540355436693385 NULL 0.8909835717255892 NULL 1.5706890126390936 533907.0028965673 162.63737362840706 9318.4351 -9318.4351 1 -0.9607267407188516 +-4298.1514 -4298.15 -4298 -4299 ceil 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1514 -0.4373500891926774 NULL 0.8992913318180917 NULL -1.5705636686381932 -246265.9349282461 -75.01689367920379 -4298.1514 4298.1514 -1 NULL +-4298.1514 -4298.15 -4298 -4299 ceil 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1514 -0.4373500891926774 NULL 0.8992913318180917 NULL -1.5705636686381932 -246265.9349282461 -75.01689367920379 -4298.1514 4298.1514 -1 NULL +-4298.1514 -4298.15 -4298 -4299 ceil 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1514 -0.4373500891926774 NULL 0.8992913318180917 NULL -1.5705636686381932 -246265.9349282461 -75.01689367920379 -4298.1514 4298.1514 -1 NULL +-4298.1514 -4298.15 -4298 -4299 ceil 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1514 -0.4373500891926774 NULL 0.8992913318180917 NULL -1.5705636686381932 -246265.9349282461 -75.01689367920379 -4298.1514 4298.1514 -1 NULL +-4298.1514 -4298.15 -4298 -4299 ceil 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1514 -0.4373500891926774 NULL 0.8992913318180917 NULL -1.5705636686381932 -246265.9349282461 -75.01689367920379 -4298.1514 4298.1514 -1 NULL +-4298.1514 -4298.15 -4298 -4299 ceil 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1514 -0.4373500891926774 NULL 0.8992913318180917 NULL -1.5705636686381932 -246265.9349282461 -75.01689367920379 -4298.1514 4298.1514 -1 NULL +-4298.1514 -4298.15 -4298 -4299 ceil 0.0 NULL NULL NULL NULL NULL NULL NULL NULL 4298.1514 -0.4373500891926774 NULL 0.8992913318180917 NULL -1.5705636686381932 -246265.9349282461 -75.01689367920379 -4298.1514 4298.1514 -1 NULL