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)