Mykhailo Kysliuk created HIVE-19289: ---------------------------------------
Summary: Grouping function with several argument does not work Key: HIVE-19289 URL: https://issues.apache.org/jira/browse/HIVE-19289 Project: Hive Issue Type: Bug Affects Versions: 2.3.3 Reporter: Mykhailo Kysliuk This steps are taken from [Apache wiki | https://cwiki.apache.org/confluence/display/Hive/Enhanced+Aggregation%2C+Cube%2C+Grouping+and+Rollup] *General Info* Hive version : 2.3.3 {code:java} commit 3f7dde31aed44b5440563d3f9d8a8887beccf0be Author: Daniel Dai <da...@hortonworks.com> Date: Wed Mar 28 16:46:29 2018 -0700 Preparing for 2.3.3 release {code} Hadoop version: 2.7.2. Engine {code:java} hive> set hive.execution.engine; hive.execution.engine=mr{code} *STEP 1. Create test data* {code:java} DROP TABLE IF EXISTS T1; CREATE TABLE T1 (key int, value int); INSERT INTO T! VALUES (1,NULL),(1,1),(2,2),(3,3),(3,NULL),(4,5); SELECT * FROM T1; {code} {code:java} 1 NULL 1 1 2 2 3 3 3 NULL 4 5 {code} *STEP 2. Execute group by query* {code:java} SELECT key, value, GROUPING__ID, grouping(key, value), grouping(value, key), grouping(key), grouping(value), count(*) FROM T1 GROUP BY key, value WITH ROLLUP; {code} *ACTUAL RESULT* {code:java} FAILED: SemanticException [Error 10016]: Line 1:33 Argument type mismatch 'value': The second argument to grouping() must be a constant {code} Stacktrace: {code:java} 2018-04-25T18:08:25,438 ERROR [6033d3ac-f243-4e54-8724-d9665fed531c main] parse.CalcitePlanner: CBO failed, skipping CBO. org.apache.hadoop.hive.ql.parse.SemanticException: Line 2:16 Argument type mismatch 'value': The second argument to grouping() must be a constant at org.apache.hadoop.hive.ql.parse.TypeCheckProcFactory$DefaultExprProcessor.process(TypeCheckProcFactory.java:1361) ~[hive-exec-2.3.3.jar:2.3.3] at org.apache.hadoop.hive.ql.lib.DefaultRuleDispatcher.dispatch(DefaultRuleDispatcher.java:90) ~[hive-exec-2.3.3.jar:2.3.3] at org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.dispatchAndReturn(DefaultGraphWalker.java:105) ~[hive-exec-2.3.3.jar:2.3.3] at org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.dispatch(DefaultGraphWalker.java:89) ~[hive-exec-2.3.3.jar:2.3.3] at org.apache.hadoop.hive.ql.lib.ExpressionWalker.walk(ExpressionWalker.java:76) ~[hive-exec-2.3.3.jar:2.3.3] at org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.startWalking(DefaultGraphWalker.java:120) ~[hive-exec-2.3.3.jar:2.3.3] at org.apache.hadoop.hive.ql.parse.TypeCheckProcFactory.genExprNode(TypeCheckProcFactory.java:229) ~[hive-exec-2.3.3.jar:2.3.3] at org.apache.hadoop.hive.ql.parse.TypeCheckProcFactory.genExprNode(TypeCheckProcFactory.java:176) ~[hive-exec-2.3.3.jar:2.3.3] at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genAllExprNodeDesc(SemanticAnalyzer.java:11613) ~[hive-exec-2.3.3.jar:2.3.3] at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genExprNodeDesc(SemanticAnalyzer.java:11568) ~[hive-exec-2.3.3.jar:2.3.3] at org.apache.hadoop.hive.ql.parse.CalcitePlanner$CalcitePlannerAction.genSelectLogicalPlan(CalcitePlanner.java:3706) ~[hive-exec-2.3.3.jar:2.3.3] at org.apache.hadoop.hive.ql.parse.CalcitePlanner$CalcitePlannerAction.genLogicalPlan(CalcitePlanner.java:3999) ~[hive-exec-2.3.3.jar:2.3.3] at org.apache.hadoop.hive.ql.parse.CalcitePlanner$CalcitePlannerAction.apply(CalcitePlanner.java:1315) ~[hive-exec-2.3.3.jar:2.3.3] at org.apache.hadoop.hive.ql.parse.CalcitePlanner$CalcitePlannerAction.apply(CalcitePlanner.java:1261) ~[hive-exec-2.3.3.jar:2.3.3] at org.apache.calcite.tools.Frameworks$1.apply(Frameworks.java:113) ~[calcite-core-1.10.0.jar:1.10.0] at org.apache.calcite.prepare.CalcitePrepareImpl.perform(CalcitePrepareImpl.java:997) ~[calcite-core-1.10.0.jar:1.10.0] at org.apache.calcite.tools.Frameworks.withPrepare(Frameworks.java:149) ~[calcite-core-1.10.0.jar:1.10.0] at org.apache.calcite.tools.Frameworks.withPlanner(Frameworks.java:106) ~[calcite-core-1.10.0.jar:1.10.0] at org.apache.hadoop.hive.ql.parse.CalcitePlanner.logicalPlan(CalcitePlanner.java:1069) ~[hive-exec-2.3.3.jar:2.3.3] at org.apache.hadoop.hive.ql.parse.CalcitePlanner.getOptimizedAST(CalcitePlanner.java:1085) ~[hive-exec-2.3.3.jar:2.3.3] at org.apache.hadoop.hive.ql.parse.CalcitePlanner.genOPTree(CalcitePlanner.java:364) ~[hive-exec-2.3.3.jar:2.3.3] at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeInternal(SemanticAnalyzer.java:11138) ~[hive-exec-2.3.3.jar:2.3.3] at org.apache.hadoop.hive.ql.parse.CalcitePlanner.analyzeInternal(CalcitePlanner.java:286) ~[hive-exec-2.3.3.jar:2.3.3] at org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:258) ~[hive-exec-2.3.3.jar:2.3.3] at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:512) ~[hive-exec-2.3.3.jar:2.3.3] at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1317) ~[hive-exec-2.3.3.jar:2.3.3] at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1457) ~[hive-exec-2.3.3.jar:2.3.3] at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1237) ~[hive-exec-2.3.3.jar:2.3.3] at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1227) ~[hive-exec-2.3.3.jar:2.3.3] at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:233) ~[hive-cli-2.3.3.jar:2.3.3] at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:184) ~[hive-cli-2.3.3.jar:2.3.3] at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:403) ~[hive-cli-2.3.3.jar:2.3.3] at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:821) ~[hive-cli-2.3.3.jar:2.3.3] at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:759) ~[hive-cli-2.3.3.jar:2.3.3] at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:686) ~[hive-cli-2.3.3.jar:2.3.3] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_161] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_161] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_161] at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_161] at org.apache.hadoop.util.RunJar.run(RunJar.java:221) ~[hadoop-common-2.7.2.jar:?] at org.apache.hadoop.util.RunJar.main(RunJar.java:136) ~[hadoop-common-2.7.2.jar:?] Caused by: org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException: The second argument to grouping() must be a constant at org.apache.hadoop.hive.ql.udf.generic.GenericUDFGrouping.initialize(GenericUDFGrouping.java:69) ~[hive-exec-2.3.3.jar:2.3.3] at org.apache.hadoop.hive.ql.udf.generic.GenericUDF.initializeAndFoldConstants(GenericUDF.java:141) ~[hive-exec-2.3.3.jar:2.3.3] at org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc.newInstance(ExprNodeGenericFuncDesc.java:236) ~[hive-exec-2.3.3.jar:2.3.3] at org.apache.hadoop.hive.ql.parse.TypeCheckProcFactory$DefaultExprProcessor.getXpathOrFuncExprNodeDesc(TypeCheckProcFactory.java:1104) ~[hive-exec-2.3.3.jar:2.3.3] at org.apache.hadoop.hive.ql.parse.TypeCheckProcFactory$DefaultExprProcessor.process(TypeCheckProcFactory.java:1359) ~[hive-exec-2.3.3.jar:2.3.3] ... 40 more {code} FYI: [~ekoifman], [~eugene.koifman] -- This message was sent by Atlassian JIRA (v7.6.3#76005)