This is an automated email from the ASF dual-hosted git repository.
jcamacho pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git
The following commit(s) were added to refs/heads/master by this push:
new 2a400c4 HIVE-23060: Query failing with error "Grouping sets
expression is not in GROUP BY key. Error encountered near token" (Mahesh Kumar
Behera, reviewed by Jesus Camacho Rodriguez)
2a400c4 is described below
commit 2a400c4d82a6135ae5816ebb0fc130fe909b3120
Author: Mahesh Kumar Behera <[email protected]>
AuthorDate: Tue Mar 24 15:28:41 2020 -0700
HIVE-23060: Query failing with error "Grouping sets expression is not in
GROUP BY key. Error encountered near token" (Mahesh Kumar Behera, reviewed by
Jesus Camacho Rodriguez)
---
.../hadoop/hive/ql/parse/SemanticAnalyzer.java | 6 +
.../clientpositive/groupby_grouping_sets_view.q | 38 ++++++
.../groupby_grouping_sets_view.q.out | 148 +++++++++++++++++++++
3 files changed, 192 insertions(+)
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
index 841f92b..679ae2e 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
@@ -4211,6 +4211,12 @@ public class SemanticAnalyzer extends
BaseSemanticAnalyzer {
ErrorMsg.HIVE_GROUPING_SETS_EXPR_NOT_IN_GROUPBY.getErrorCodedMsg()));
}
bitmap = unsetBit(bitmap, groupByExpr.size() - pos - 1);
+
+ // Add the copy translation for grouping set keys. This will make
sure that same translation as
+ // group by key is applied on the grouping set key. If translation
is added to group by key
+ // to add the table name to the column name (tbl.key), then same
thing will be done for grouping
+ // set keys also.
+ unparseTranslator.addCopyTranslation((ASTNode)child.getChild(j),
groupByExpr.get(pos));
}
result.add(bitmap);
}
diff --git a/ql/src/test/queries/clientpositive/groupby_grouping_sets_view.q
b/ql/src/test/queries/clientpositive/groupby_grouping_sets_view.q
new file mode 100644
index 0000000..376d3d4
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/groupby_grouping_sets_view.q
@@ -0,0 +1,38 @@
+set hive.mapred.mode=nonstrict;
+
+create database test;
+
+create table test.case665558 (c1 string, c2 string);
+
+insert into test.case665558 values ("1", "1");
+insert into test.case665558 values ("2", "1");
+insert into test.case665558 values ("3", "1");
+insert into test.case665558 values ("1", "4");
+insert into test.case665558 values ("1", "5");
+
+create view test.viewcase665558
+as
+select
+ case
+ when GROUPING__ID = 255 then `c1`
+ end as `col_1`,
+ case
+ when GROUPING__ID = 255 then 3
+ end as `col_2`,
+ `c1`,
+ `c2`
+from
+ `test`.`case665558`
+group by
+ `c1`,
+ `c2`
+GROUPING SETS
+ (
+ (`c1`),
+ (`c1`, `c2`)
+ );
+
+select * from test.viewcase665558 ;
+
+
+drop database test cascade;
diff --git
a/ql/src/test/results/clientpositive/groupby_grouping_sets_view.q.out
b/ql/src/test/results/clientpositive/groupby_grouping_sets_view.q.out
new file mode 100644
index 0000000..582b780
--- /dev/null
+++ b/ql/src/test/results/clientpositive/groupby_grouping_sets_view.q.out
@@ -0,0 +1,148 @@
+PREHOOK: query: create database test
+PREHOOK: type: CREATEDATABASE
+PREHOOK: Output: database:test
+POSTHOOK: query: create database test
+POSTHOOK: type: CREATEDATABASE
+POSTHOOK: Output: database:test
+PREHOOK: query: create table test.case665558 (c1 string, c2 string)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:test
+PREHOOK: Output: test@case665558
+POSTHOOK: query: create table test.case665558 (c1 string, c2 string)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:test
+POSTHOOK: Output: test@case665558
+PREHOOK: query: insert into test.case665558 values ("1", "1")
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Output: test@case665558
+POSTHOOK: query: insert into test.case665558 values ("1", "1")
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Output: test@case665558
+POSTHOOK: Lineage: case665558.c1 SCRIPT []
+POSTHOOK: Lineage: case665558.c2 SCRIPT []
+PREHOOK: query: insert into test.case665558 values ("2", "1")
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Output: test@case665558
+POSTHOOK: query: insert into test.case665558 values ("2", "1")
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Output: test@case665558
+POSTHOOK: Lineage: case665558.c1 SCRIPT []
+POSTHOOK: Lineage: case665558.c2 SCRIPT []
+PREHOOK: query: insert into test.case665558 values ("3", "1")
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Output: test@case665558
+POSTHOOK: query: insert into test.case665558 values ("3", "1")
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Output: test@case665558
+POSTHOOK: Lineage: case665558.c1 SCRIPT []
+POSTHOOK: Lineage: case665558.c2 SCRIPT []
+PREHOOK: query: insert into test.case665558 values ("1", "4")
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Output: test@case665558
+POSTHOOK: query: insert into test.case665558 values ("1", "4")
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Output: test@case665558
+POSTHOOK: Lineage: case665558.c1 SCRIPT []
+POSTHOOK: Lineage: case665558.c2 SCRIPT []
+PREHOOK: query: insert into test.case665558 values ("1", "5")
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Output: test@case665558
+POSTHOOK: query: insert into test.case665558 values ("1", "5")
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Output: test@case665558
+POSTHOOK: Lineage: case665558.c1 SCRIPT []
+POSTHOOK: Lineage: case665558.c2 SCRIPT []
+PREHOOK: query: create view test.viewcase665558
+as
+select
+ case
+ when GROUPING__ID = 255 then `c1`
+ end as `col_1`,
+ case
+ when GROUPING__ID = 255 then 3
+ end as `col_2`,
+ `c1`,
+ `c2`
+from
+ `test`.`case665558`
+group by
+ `c1`,
+ `c2`
+GROUPING SETS
+ (
+ (`c1`),
+ (`c1`, `c2`)
+ )
+PREHOOK: type: CREATEVIEW
+PREHOOK: Input: test@case665558
+PREHOOK: Output: database:test
+PREHOOK: Output: test@viewcase665558
+POSTHOOK: query: create view test.viewcase665558
+as
+select
+ case
+ when GROUPING__ID = 255 then `c1`
+ end as `col_1`,
+ case
+ when GROUPING__ID = 255 then 3
+ end as `col_2`,
+ `c1`,
+ `c2`
+from
+ `test`.`case665558`
+group by
+ `c1`,
+ `c2`
+GROUPING SETS
+ (
+ (`c1`),
+ (`c1`, `c2`)
+ )
+POSTHOOK: type: CREATEVIEW
+POSTHOOK: Input: test@case665558
+POSTHOOK: Output: database:test
+POSTHOOK: Output: test@viewcase665558
+POSTHOOK: Lineage: viewcase665558.c1 SIMPLE
[(case665558)case665558.FieldSchema(name:c1, type:string, comment:null), ]
+POSTHOOK: Lineage: viewcase665558.c2 SIMPLE
[(case665558)case665558.FieldSchema(name:c2, type:string, comment:null), ]
+POSTHOOK: Lineage: viewcase665558.col_1 EXPRESSION
[(case665558)case665558.FieldSchema(name:c1, type:string, comment:null), ]
+POSTHOOK: Lineage: viewcase665558.col_2 EXPRESSION []
+PREHOOK: query: select * from test.viewcase665558
+PREHOOK: type: QUERY
+PREHOOK: Input: test@case665558
+PREHOOK: Input: test@viewcase665558
+#### A masked pattern was here ####
+POSTHOOK: query: select * from test.viewcase665558
+POSTHOOK: type: QUERY
+POSTHOOK: Input: test@case665558
+POSTHOOK: Input: test@viewcase665558
+#### A masked pattern was here ####
+NULL NULL 1 1
+NULL NULL 1 4
+NULL NULL 1 5
+NULL NULL 1 NULL
+NULL NULL 2 1
+NULL NULL 2 NULL
+NULL NULL 3 1
+NULL NULL 3 NULL
+PREHOOK: query: drop database test cascade
+PREHOOK: type: DROPDATABASE
+PREHOOK: Input: database:test
+PREHOOK: Output: database:test
+PREHOOK: Output: test@case665558
+PREHOOK: Output: test@viewcase665558
+POSTHOOK: query: drop database test cascade
+POSTHOOK: type: DROPDATABASE
+POSTHOOK: Input: database:test
+POSTHOOK: Output: database:test
+POSTHOOK: Output: test@case665558
+POSTHOOK: Output: test@viewcase665558