[ 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)