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 <mah...@apache.org>
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

Reply via email to