[ https://issues.apache.org/jira/browse/HIVE-27960?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
gaoxiong updated HIVE-27960: ---------------------------- Affects Version/s: 4.0.0-beta-1 > Invalid function error when using custom udaf > --------------------------------------------- > > Key: HIVE-27960 > URL: https://issues.apache.org/jira/browse/HIVE-27960 > Project: Hive > Issue Type: Bug > Components: Hive > Affects Versions: 2.3.9, 4.0.0-beta-1 > Environment: Aliyun emr hive 2.3.9 > Reporter: gaoxiong > Assignee: gaoxiong > Priority: Major > Labels: pull-request-available > Fix For: 2.3.9 > > > When a permanent udaf used before over() function, hive will throw invalid > function error. > > -In HIVE-12719 , it fix this issue for hive 3, but it can't work in hive 2.- > This issue reproduce on master. > > In hive 2, it should get FunctionInfo from FunctionRegistry before get > WindowFunctionInfo same to hive 3. Because it will register window function > to session. Then hive can get WindowFunctionInfo correctly. > > ---------------------------- err detail ---------------------------- > register a permanent udaf: > {code:java} > create function row_number2 as > 'org.apache.hadoop.hive.ql.udf.generic.GenericUDAFRowNumber'; {code} > execute query in a new cli session: > {code:java} > select row_number2() over();{code} > blew is error log: > {code:java} > FAILED: SemanticException Failed to breakup Windowing invocations into > Groups. At least 1 group must only depend on input columns. Also check for > circular dependencies.Underlying error: Invalid function > row_number22023-12-06T10:17:30,348 ERROR > [0b7764ce-cde3-49c5-9d32-f96d61b20773 main] ql.Driver: FAILED: > SemanticException Failed to breakup Windowing invocations into Groups. At > least 1 group must only depend on input columns. Also check for circular > dependencies.Underlying error: Invalid function > row_number2org.apache.hadoop.hive.ql.parse.SemanticException: Failed to > breakup Windowing invocations into Groups. At least 1 group must only depend > on input columns. Also check for circular dependencies.Underlying error: > Invalid function row_number2 at > org.apache.hadoop.hive.ql.parse.WindowingComponentizer.next(WindowingComponentizer.java:97) > at > org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genWindowingPlan(SemanticAnalyzer.java:13270) > at > org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genPostGroupByBodyPlan(SemanticAnalyzer.java:9685) > at > org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genBodyPlan(SemanticAnalyzer.java:9644) > at > org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genPlan(SemanticAnalyzer.java:10549) > at > org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genPlan(SemanticAnalyzer.java:10427) > at > org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genOPTree(SemanticAnalyzer.java:11125) > at > org.apache.hadoop.hive.ql.parse.CalcitePlanner.genOPTree(CalcitePlanner.java:481) > at > org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeInternal(SemanticAnalyzer.java:11138) > at > org.apache.hadoop.hive.ql.parse.CalcitePlanner.analyzeInternal(CalcitePlanner.java:286) > at > org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:258) > at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:512) at > org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1317) at > org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1457) at > org.apache.hadoop.hive.ql.Driver.run(Driver.java:1237) at > org.apache.hadoop.hive.ql.Driver.run(Driver.java:1227) at > org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:233) > at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:184) at > org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:403) at > org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:336) at > org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:787) at > org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:759) at > org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:686) at > sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) at > org.apache.hadoop.util.RunJar.run(RunJar.java:239) at > org.apache.hadoop.util.RunJar.main(RunJar.java:153) {code} > > -- This message was sent by Atlassian Jira (v8.20.10#820010)