Soumyakanti Das created HIVE-27949:
--------------------------------------
Summary: GenericUDFAddMonths doesn't accept DECIMAL with scale
zero for num_months
Key: HIVE-27949
URL: https://issues.apache.org/jira/browse/HIVE-27949
Project: Hive
Issue Type: Improvement
Components: Hive, UDF
Affects Versions: 4.0.0-beta-1
Reporter: Soumyakanti Das
Assignee: Soumyakanti Das
Currently the second argument of add_months UDF only accepts SHORT/BYTE/INT
types. If we pass a value of type DECIMAL(X, 0), for example, 1.0, it fails
with:
{code:java}
Caused by: org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException: add_months
only takes INT/SHORT/BYTE types as 2nd argument, got DECIMAL
at
org.apache.hadoop.hive.ql.udf.generic.GenericUDF.obtainIntConverter(GenericUDF.java:361)
at
org.apache.hadoop.hive.ql.udf.generic.GenericUDFAddMonths.initialize(GenericUDFAddMonths.java:107)
at
org.apache.hadoop.hive.ql.udf.generic.GenericUDF.initializeAndFoldConstants(GenericUDF.java:150)
at
org.apache.hadoop.hive.ql.parse.type.HiveFunctionHelper.getReturnType(HiveFunctionHelper.java:138)
at
org.apache.hadoop.hive.ql.parse.type.RexNodeExprFactory.createFuncCallExpr(RexNodeExprFactory.java:643)
at
org.apache.hadoop.hive.ql.parse.type.RexNodeExprFactory.createFuncCallExpr(RexNodeExprFactory.java:97)
at
org.apache.hadoop.hive.ql.parse.type.TypeCheckProcFactory$DefaultExprProcessor.getXpathOrFuncExprNodeDesc(TypeCheckProcFactory.java:1081)
at
org.apache.hadoop.hive.ql.parse.type.TypeCheckProcFactory$DefaultExprProcessor.process(TypeCheckProcFactory.java:1471)
... 80 more {code}
Ideally all of the following queries should work:
{code:java}
select add_months('2016-01-29 10:30:00', 1);
select add_months('2016-01-29 10:30:00', cast(1 as decimal(5, 0)));
select add_months('2016-01-29 10:30:00', 1.0); {code}
while currently only the first one works.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)