[ 
https://issues.apache.org/jira/browse/HIVE-27949?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

ASF GitHub Bot updated HIVE-27949:
----------------------------------
    Labels: pull-request-available  (was: )

> 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
>            Priority: Major
>              Labels: pull-request-available
>
> 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)

Reply via email to