You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by jc...@apache.org on 2019/02/01 18:32:38 UTC

[hive] branch branch-3 updated: HIVE-21188: SemanticException for query on view with masked table (Jesus Camacho Rodriguez, reviewed by Ashutosh Chauhan)

This is an automated email from the ASF dual-hosted git repository.

jcamacho pushed a commit to branch branch-3
in repository https://gitbox.apache.org/repos/asf/hive.git


The following commit(s) were added to refs/heads/branch-3 by this push:
     new 91497df  HIVE-21188: SemanticException for query on view with masked table (Jesus Camacho Rodriguez, reviewed by Ashutosh Chauhan)
91497df is described below

commit 91497df12324d9a0812a81c430ef8de8199cec6b
Author: Jesus Camacho Rodriguez <jc...@apache.org>
AuthorDate: Thu Jan 31 09:27:47 2019 -0800

    HIVE-21188: SemanticException for query on view with masked table (Jesus Camacho Rodriguez, reviewed by Ashutosh Chauhan)
---
 .../hadoop/hive/ql/parse/SemanticAnalyzer.java     |  4 +-
 ql/src/test/queries/clientpositive/masking_14.q    | 13 +++++
 .../clientpositive/beeline/escape_comments.q.out   |  4 +-
 .../test/results/clientpositive/create_view.q.out  | 12 ++--
 .../clientpositive/create_view_partitioned.q.out   |  2 +-
 .../results/clientpositive/escape_comments.q.out   |  4 +-
 .../llap/materialized_view_partitioned.q.out       |  4 +-
 .../llap/materialized_view_partitioned_3.q.out     |  2 +-
 .../test/results/clientpositive/masking_14.q.out   | 64 ++++++++++++++++++++++
 .../results/clientpositive/unicode_comments.q.out  |  4 +-
 10 files changed, 95 insertions(+), 18 deletions(-)

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 ba1bc1b..6d9e4be 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
@@ -12636,7 +12636,7 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer {
         sb.append(" FROM (");
         sb.append(expandedText);
         sb.append(") ");
-        sb.append(HiveUtils.unparseIdentifier(createVwDesc.getViewName(), conf));
+        sb.append(HiveUtils.unparseIdentifier(Utilities.getDbTableName(createVwDesc.getViewName())[1], conf));
         expandedText = sb.toString();
       }
     } else {
@@ -12670,7 +12670,7 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer {
         sb.append(" FROM (");
         sb.append(expandedText);
         sb.append(") ");
-        sb.append(HiveUtils.unparseIdentifier(createVwDesc.getViewName(), conf));
+        sb.append(HiveUtils.unparseIdentifier(Utilities.getDbTableName(createVwDesc.getViewName())[1], conf));
         expandedText = sb.toString();
       }
 
diff --git a/ql/src/test/queries/clientpositive/masking_14.q b/ql/src/test/queries/clientpositive/masking_14.q
new file mode 100644
index 0000000..50cda8c
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/masking_14.q
@@ -0,0 +1,13 @@
+--! qt:dataset:srcpart
+--! qt:dataset:src
+set hive.mapred.mode=nonstrict;
+set hive.security.authorization.manager=org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactoryForTest;
+
+create database atlasmask;
+use atlasmask;
+create table masking_test_n8 (key int, value int);
+insert into masking_test_n8 values(1,1), (2,2);
+create view testv(c,d) as select * from masking_test_n8;
+
+select * from `atlasmask`.`testv`;
+select `testv`.`c` from `atlasmask`.`testv`
diff --git a/ql/src/test/results/clientpositive/beeline/escape_comments.q.out b/ql/src/test/results/clientpositive/beeline/escape_comments.q.out
index ac919e1..a79cb30 100644
--- a/ql/src/test/results/clientpositive/beeline/escape_comments.q.out
+++ b/ql/src/test/results/clientpositive/beeline/escape_comments.q.out
@@ -131,7 +131,7 @@ PREHOOK: Input: escape_comments_db@escape_comments_view1
 POSTHOOK: query: show create table escape_comments_view1
 POSTHOOK: type: SHOW_CREATETABLE
 POSTHOOK: Input: escape_comments_db@escape_comments_view1
-CREATE VIEW `escape_comments_view1` AS SELECT `col1` AS `col1` FROM (select `escape_comments_tbl1`.`col1` from `escape_comments_db`.`escape_comments_tbl1`) `escape_comments_db.escape_comments_view1`
+CREATE VIEW `escape_comments_view1` AS SELECT `col1` AS `col1` FROM (select `escape_comments_tbl1`.`col1` from `escape_comments_db`.`escape_comments_tbl1`) `escape_comments_view1`
 PREHOOK: query: describe formatted escape_comments_view1
 PREHOOK: type: DESCTABLE
 PREHOOK: Input: escape_comments_db@escape_comments_view1
@@ -163,7 +163,7 @@ Sort Columns:       	[]                  	NULL
 	NULL	NULL
 # View Information	NULL	NULL
 Original Query:     	select col1 from escape_comments_tbl1	NULL
-Expanded Query:     	SELECT `col1` AS `col1` FROM (select `escape_comments_tbl1`.`col1` from `escape_comments_db`.`escape_comments_tbl1`) `escape_comments_db.escape_comments_view1`	NULL
+Expanded Query:     	SELECT `col1` AS `col1` FROM (select `escape_comments_tbl1`.`col1` from `escape_comments_db`.`escape_comments_tbl1`) `escape_comments_view1`	NULL
 PREHOOK: query: drop database escape_comments_db cascade
 PREHOOK: type: DROPDATABASE
 PREHOOK: Input: database:escape_comments_db
diff --git a/ql/src/test/results/clientpositive/create_view.q.out b/ql/src/test/results/clientpositive/create_view.q.out
index 84507da..f565e76 100644
--- a/ql/src/test/results/clientpositive/create_view.q.out
+++ b/ql/src/test/results/clientpositive/create_view.q.out
@@ -175,7 +175,7 @@ STAGE PLANS:
       Create View Operator:
         Create View
           columns: valoo string
-          expanded text: SELECT `_c0` AS `valoo` FROM (SELECT upper(`src`.`value`) FROM `default`.`src` WHERE `src`.`key`=86) `default.view0`
+          expanded text: SELECT `_c0` AS `valoo` FROM (SELECT upper(`src`.`value`) FROM `default`.`src` WHERE `src`.`key`=86) `view0`
           name: default.view0
           original text: SELECT upper(value) FROM src WHERE key=86
 
@@ -380,7 +380,7 @@ Sort Columns:       	[]
 	 	 
 # View Information	 	 
 Original Query:     	SELECT upper(value) FROM src WHERE key=86	 
-Expanded Query:     	SELECT `_c0` AS `valoo` FROM (SELECT upper(`src`.`value`) FROM `default`.`src` WHERE `src`.`key`=86) `default.view3`	 
+Expanded Query:     	SELECT `_c0` AS `valoo` FROM (SELECT upper(`src`.`value`) FROM `default`.`src` WHERE `src`.`key`=86) `view3`	 
 PREHOOK: query: ALTER VIEW view3 SET TBLPROPERTIES ("biggest" = "loser")
 PREHOOK: type: ALTERVIEW_PROPERTIES
 PREHOOK: Input: default@view3
@@ -429,7 +429,7 @@ Sort Columns:       	[]
 	 	 
 # View Information	 	 
 Original Query:     	SELECT upper(value) FROM src WHERE key=86	 
-Expanded Query:     	SELECT `_c0` AS `valoo` FROM (SELECT upper(`src`.`value`) FROM `default`.`src` WHERE `src`.`key`=86) `default.view3`	 
+Expanded Query:     	SELECT `_c0` AS `valoo` FROM (SELECT upper(`src`.`value`) FROM `default`.`src` WHERE `src`.`key`=86) `view3`	 
 PREHOOK: query: CREATE TABLE table1_n4 (key int)
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
@@ -772,7 +772,7 @@ Sort Columns:       	[]
 Original Query:     	SELECT test_translate('abc', 'a', 'b')	 
 	                    	FROM table1_n4      
 Expanded Query:     	SELECT `_c0` AS `c` FROM (SELECT `test_translate`('abc', 'a', 'b')	 
-	                    	FROM `default`.`table1_n4`) `default.view8`
+	                    	FROM `default`.`table1_n4`) `view8`
 PREHOOK: query: SELECT * FROM view8
 PREHOOK: type: QUERY
 PREHOOK: Input: default@table1_n4
@@ -847,7 +847,7 @@ Sort Columns:       	[]
 Original Query:     	SELECT test_max(length(value))	 
 	                    	FROM src            
 Expanded Query:     	SELECT `_c0` AS `m` FROM (SELECT `test_max`(length(`src`.`value`))	 
-	                    	FROM `default`.`src`) `default.view9`
+	                    	FROM `default`.`src`) `view9`
 PREHOOK: query: SELECT * FROM view9
 PREHOOK: type: QUERY
 PREHOOK: Input: default@src
@@ -922,7 +922,7 @@ Sort Columns:       	[]
 Original Query:     	SELECT test_max(length(value))	 
 	                    	FROM src            
 Expanded Query:     	SELECT `_c0` AS `m` FROM (SELECT `test_max`(length(`src`.`value`))	 
-	                    	FROM `default`.`src`) `default.view9`
+	                    	FROM `default`.`src`) `view9`
 PREHOOK: query: SELECT * FROM view9
 PREHOOK: type: QUERY
 PREHOOK: Input: default@src
diff --git a/ql/src/test/results/clientpositive/create_view_partitioned.q.out b/ql/src/test/results/clientpositive/create_view_partitioned.q.out
index bd9cb3a..5128b20 100644
--- a/ql/src/test/results/clientpositive/create_view_partitioned.q.out
+++ b/ql/src/test/results/clientpositive/create_view_partitioned.q.out
@@ -402,7 +402,7 @@ Original Query:     	SELECT key, value
 	                    	WHERE key=86        
 Expanded Query:     	SELECT `key` AS `k`, `value` AS `v` FROM (SELECT `src`.`key`, `src`.`value`	 
 	                    	FROM `default`.`src`
-	                    	WHERE `src`.`key`=86) `default.vp3`
+	                    	WHERE `src`.`key`=86) `vp3`
 PREHOOK: query: ALTER VIEW vp3
 ADD PARTITION (v='val_86')
 PREHOOK: type: ALTERTABLE_ADDPARTS
diff --git a/ql/src/test/results/clientpositive/escape_comments.q.out b/ql/src/test/results/clientpositive/escape_comments.q.out
index e29cfee..f8b0713 100644
--- a/ql/src/test/results/clientpositive/escape_comments.q.out
+++ b/ql/src/test/results/clientpositive/escape_comments.q.out
@@ -136,7 +136,7 @@ PREHOOK: Input: escape_comments_db@escape_comments_view1
 POSTHOOK: query: show create table escape_comments_view1
 POSTHOOK: type: SHOW_CREATETABLE
 POSTHOOK: Input: escape_comments_db@escape_comments_view1
-CREATE VIEW `escape_comments_view1` AS SELECT `col1` AS `col1` FROM (select `escape_comments_tbl1`.`col1` from `escape_comments_db`.`escape_comments_tbl1`) `escape_comments_db.escape_comments_view1`
+CREATE VIEW `escape_comments_view1` AS SELECT `col1` AS `col1` FROM (select `escape_comments_tbl1`.`col1` from `escape_comments_db`.`escape_comments_tbl1`) `escape_comments_view1`
 PREHOOK: query: describe formatted escape_comments_view1
 PREHOOK: type: DESCTABLE
 PREHOOK: Input: escape_comments_db@escape_comments_view1
@@ -169,7 +169,7 @@ Sort Columns:       	[]
 	 	 
 # View Information	 	 
 Original Query:     	select col1 from escape_comments_tbl1	 
-Expanded Query:     	SELECT `col1` AS `col1` FROM (select `escape_comments_tbl1`.`col1` from `escape_comments_db`.`escape_comments_tbl1`) `escape_comments_db.escape_comments_view1`	 
+Expanded Query:     	SELECT `col1` AS `col1` FROM (select `escape_comments_tbl1`.`col1` from `escape_comments_db`.`escape_comments_tbl1`) `escape_comments_view1`	 
 PREHOOK: query: drop database escape_comments_db cascade
 PREHOOK: type: DROPDATABASE
 PREHOOK: Input: database:escape_comments_db
diff --git a/ql/src/test/results/clientpositive/llap/materialized_view_partitioned.q.out b/ql/src/test/results/clientpositive/llap/materialized_view_partitioned.q.out
index d5d7fad..f9b9787 100644
--- a/ql/src/test/results/clientpositive/llap/materialized_view_partitioned.q.out
+++ b/ql/src/test/results/clientpositive/llap/materialized_view_partitioned.q.out
@@ -71,7 +71,7 @@ STAGE PLANS:
         Create View
           partition columns: key string
           columns: value string
-          expanded text: SELECT `value`, `key` FROM (SELECT `src_txn`.`value`, `src_txn`.`key` FROM `default`.`src_txn` where `src_txn`.`key` > 200 and `src_txn`.`key` < 250) `default.partition_mv_1`
+          expanded text: SELECT `value`, `key` FROM (SELECT `src_txn`.`value`, `src_txn`.`key` FROM `default`.`src_txn` where `src_txn`.`key` > 200 and `src_txn`.`key` < 250) `partition_mv_1`
           name: default.partition_mv_1
           original text: SELECT value, key FROM src_txn where key > 200 and key < 250
           rewrite enabled: true
@@ -212,7 +212,7 @@ Sort Columns:       	[]
 	 	 
 # Materialized View Information	 	 
 Original Query:     	SELECT value, key FROM src_txn where key > 200 and key < 250	 
-Expanded Query:     	SELECT `value`, `key` FROM (SELECT `src_txn`.`value`, `src_txn`.`key` FROM `default`.`src_txn` where `src_txn`.`key` > 200 and `src_txn`.`key` < 250) `default.partition_mv_1`	 
+Expanded Query:     	SELECT `value`, `key` FROM (SELECT `src_txn`.`value`, `src_txn`.`key` FROM `default`.`src_txn` where `src_txn`.`key` > 200 and `src_txn`.`key` < 250) `partition_mv_1`	 
 Rewrite Enabled:    	Yes                 	 
 Outdated for Rewriting:	No                  	 
 PREHOOK: query: EXPLAIN
diff --git a/ql/src/test/results/clientpositive/llap/materialized_view_partitioned_3.q.out b/ql/src/test/results/clientpositive/llap/materialized_view_partitioned_3.q.out
index 8735689..48d5f5a 100644
--- a/ql/src/test/results/clientpositive/llap/materialized_view_partitioned_3.q.out
+++ b/ql/src/test/results/clientpositive/llap/materialized_view_partitioned_3.q.out
@@ -88,7 +88,7 @@ STAGE PLANS:
         Create View
           partition columns: key string
           columns: value string
-          expanded text: SELECT `value`, `key` FROM (SELECT `src_txn`.`value`, `src_txn`.`key` FROM `default`.`src_txn` where `src_txn`.`key` > 200 and `src_txn`.`key` < 250) `default.partition_mv_sdp`
+          expanded text: SELECT `value`, `key` FROM (SELECT `src_txn`.`value`, `src_txn`.`key` FROM `default`.`src_txn` where `src_txn`.`key` > 200 and `src_txn`.`key` < 250) `partition_mv_sdp`
           name: default.partition_mv_sdp
           original text: SELECT value, key FROM src_txn where key > 200 and key < 250
           rewrite enabled: true
diff --git a/ql/src/test/results/clientpositive/masking_14.q.out b/ql/src/test/results/clientpositive/masking_14.q.out
new file mode 100644
index 0000000..254af5a
--- /dev/null
+++ b/ql/src/test/results/clientpositive/masking_14.q.out
@@ -0,0 +1,64 @@
+PREHOOK: query: create database atlasmask
+PREHOOK: type: CREATEDATABASE
+PREHOOK: Output: database:atlasmask
+POSTHOOK: query: create database atlasmask
+POSTHOOK: type: CREATEDATABASE
+POSTHOOK: Output: database:atlasmask
+PREHOOK: query: use atlasmask
+PREHOOK: type: SWITCHDATABASE
+PREHOOK: Input: database:atlasmask
+POSTHOOK: query: use atlasmask
+POSTHOOK: type: SWITCHDATABASE
+POSTHOOK: Input: database:atlasmask
+PREHOOK: query: create table masking_test_n8 (key int, value int)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: atlasmask@masking_test_n8
+PREHOOK: Output: database:atlasmask
+POSTHOOK: query: create table masking_test_n8 (key int, value int)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: atlasmask@masking_test_n8
+POSTHOOK: Output: database:atlasmask
+PREHOOK: query: insert into masking_test_n8 values(1,1), (2,2)
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Output: atlasmask@masking_test_n8
+POSTHOOK: query: insert into masking_test_n8 values(1,1), (2,2)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Output: atlasmask@masking_test_n8
+POSTHOOK: Lineage: masking_test_n8.key SCRIPT []
+POSTHOOK: Lineage: masking_test_n8.value SCRIPT []
+PREHOOK: query: create view testv(c,d) as select * from masking_test_n8
+PREHOOK: type: CREATEVIEW
+PREHOOK: Input: atlasmask@masking_test_n8
+PREHOOK: Output: atlasmask@testv
+PREHOOK: Output: database:atlasmask
+POSTHOOK: query: create view testv(c,d) as select * from masking_test_n8
+POSTHOOK: type: CREATEVIEW
+POSTHOOK: Input: atlasmask@masking_test_n8
+POSTHOOK: Output: atlasmask@testv
+POSTHOOK: Output: database:atlasmask
+POSTHOOK: Lineage: testv.c SIMPLE [(masking_test_n8)masking_test_n8.FieldSchema(name:key, type:int, comment:null), ]
+POSTHOOK: Lineage: testv.d SIMPLE [(masking_test_n8)masking_test_n8.FieldSchema(name:value, type:int, comment:null), ]
+PREHOOK: query: select * from `atlasmask`.`testv`
+PREHOOK: type: QUERY
+PREHOOK: Input: atlasmask@masking_test_n8
+PREHOOK: Input: atlasmask@testv
+#### A masked pattern was here ####
+POSTHOOK: query: select * from `atlasmask`.`testv`
+POSTHOOK: type: QUERY
+POSTHOOK: Input: atlasmask@masking_test_n8
+POSTHOOK: Input: atlasmask@testv
+#### A masked pattern was here ####
+2	2
+PREHOOK: query: select `testv`.`c` from `atlasmask`.`testv`
+PREHOOK: type: QUERY
+PREHOOK: Input: atlasmask@masking_test_n8
+PREHOOK: Input: atlasmask@testv
+#### A masked pattern was here ####
+POSTHOOK: query: select `testv`.`c` from `atlasmask`.`testv`
+POSTHOOK: type: QUERY
+POSTHOOK: Input: atlasmask@masking_test_n8
+POSTHOOK: Input: atlasmask@testv
+#### A masked pattern was here ####
+2
diff --git a/ql/src/test/results/clientpositive/unicode_comments.q.out b/ql/src/test/results/clientpositive/unicode_comments.q.out
index ee95406..dbbc100 100644
--- a/ql/src/test/results/clientpositive/unicode_comments.q.out
+++ b/ql/src/test/results/clientpositive/unicode_comments.q.out
@@ -110,7 +110,7 @@ PREHOOK: Input: unicode_comments_db@unicode_comments_view1
 POSTHOOK: query: show create table unicode_comments_view1
 POSTHOOK: type: SHOW_CREATETABLE
 POSTHOOK: Input: unicode_comments_db@unicode_comments_view1
-CREATE VIEW `unicode_comments_view1` AS SELECT `col1` AS `col1` FROM (select `unicode_comments_tbl1`.`col1` from `unicode_comments_db`.`unicode_comments_tbl1`) `unicode_comments_db.unicode_comments_view1`
+CREATE VIEW `unicode_comments_view1` AS SELECT `col1` AS `col1` FROM (select `unicode_comments_tbl1`.`col1` from `unicode_comments_db`.`unicode_comments_tbl1`) `unicode_comments_view1`
 PREHOOK: query: describe formatted unicode_comments_view1
 PREHOOK: type: DESCTABLE
 PREHOOK: Input: unicode_comments_db@unicode_comments_view1
@@ -141,7 +141,7 @@ Sort Columns:       	[]
 	 	 
 # View Information	 	 
 Original Query:     	select col1 from unicode_comments_tbl1	 
-Expanded Query:     	SELECT `col1` AS `col1` FROM (select `unicode_comments_tbl1`.`col1` from `unicode_comments_db`.`unicode_comments_tbl1`) `unicode_comments_db.unicode_comments_view1`	 
+Expanded Query:     	SELECT `col1` AS `col1` FROM (select `unicode_comments_tbl1`.`col1` from `unicode_comments_db`.`unicode_comments_tbl1`) `unicode_comments_view1`	 
 PREHOOK: query: drop database unicode_comments_db cascade
 PREHOOK: type: DROPDATABASE
 PREHOOK: Input: database:unicode_comments_db