Stamatis Zampetakis created HIVE-27157:
------------------------------------------
Summary: AssertionError when inferring return type for
unix_timestamp function
Key: HIVE-27157
URL: https://issues.apache.org/jira/browse/HIVE-27157
Project: Hive
Issue Type: Bug
Components: CBO
Affects Versions: 4.0.0-alpha-2
Reporter: Stamatis Zampetakis
Assignee: Stamatis Zampetakis
Any attempt to derive the return data type for the {{unix_timestamp}} function
results into the following assertion error.
{noformat}
java.lang.AssertionError: typeName.allowsPrecScale(true, false): BIGINT
at
org.apache.calcite.sql.type.BasicSqlType.checkPrecScale(BasicSqlType.java:65)
at org.apache.calcite.sql.type.BasicSqlType.<init>(BasicSqlType.java:81)
at
org.apache.calcite.sql.type.SqlTypeFactoryImpl.createSqlType(SqlTypeFactoryImpl.java:67)
at
org.apache.calcite.sql.fun.SqlAbstractTimeFunction.inferReturnType(SqlAbstractTimeFunction.java:78)
at
org.apache.calcite.rex.RexBuilder.deriveReturnType(RexBuilder.java:278)
{noformat}
due to a faulty implementation of type inference for the respective operators:
*
[https://github.com/apache/hive/blob/52360151dc43904217e812efde1069d6225e9570/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveUnixTimestampSqlOperator.java]
*
[https://github.com/apache/hive/blob/52360151dc43904217e812efde1069d6225e9570/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveToUnixTimestampSqlOperator.java]
Although at this stage in master it is not possible to reproduce the problem
with an actual SQL query the buggy implementation must be fixed since slight
changes in the code/CBO rules may lead to methods relying on
{{{}SqlOperator.inferReturnType{}}}.
Note that in older versions of Hive it is possible to hit the AssertionError in
various ways. For example in Hive 3.1.3 (and older), the error may come from
[HiveRelDecorrelator|https://github.com/apache/hive/blob/4df4d75bf1e16fe0af75aad0b4179c34c07fc975/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveRelDecorrelator.java#L1933]
in the presence of sub-queries.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)