You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ng...@apache.org on 2021/10/22 15:56:34 UTC

[hive] branch master updated: HIVE-25547: Alter view as Select statement should create Authorizable events in HS2(Saihemanth reviewed by Naveen Gangam)

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

ngangam 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 e14cff3  HIVE-25547: Alter view as Select statement should create Authorizable events in HS2(Saihemanth reviewed by Naveen Gangam)
e14cff3 is described below

commit e14cff3e3d8cf65034292ba7a52be562ed44c1c8
Author: saihemanth <sa...@cloudera.com>
AuthorDate: Wed Sep 22 18:52:34 2021 -0700

    HIVE-25547: Alter view as Select statement should create Authorizable events in HS2(Saihemanth reviewed by Naveen Gangam)
---
 .../plugin/TestHiveAuthorizerCheckInvocation.java  | 23 ++++++++++++++++++++++
 .../ql/ddl/view/create/AlterViewAsAnalyzer.java    |  2 ++
 .../clientpositive/llap/alter_view_as_select.q.out |  8 ++++----
 .../clientpositive/llap/alter_view_col_type.q.out  |  4 ++--
 .../results/clientpositive/llap/lineage3.q.out     |  4 ++--
 5 files changed, 33 insertions(+), 8 deletions(-)

diff --git a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/authorization/plugin/TestHiveAuthorizerCheckInvocation.java b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/authorization/plugin/TestHiveAuthorizerCheckInvocation.java
index ee6925d..241ec9f 100644
--- a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/authorization/plugin/TestHiveAuthorizerCheckInvocation.java
+++ b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/security/authorization/plugin/TestHiveAuthorizerCheckInvocation.java
@@ -649,6 +649,29 @@ public class TestHiveAuthorizerCheckInvocation {
     assertTrue(dbObj.getOwnerName() != null);
   }
 
+  @Test
+  public void AlterViewAsStmnt() throws Exception{
+    reset(mockedAuthorizer);
+    final String tableName1 = "foo_tbl";
+    driver.run("create table " + dbName+"."+tableName1 + "(eid int, yoj int)");
+    final String tableName2 = "foo_bar";
+    driver.run("create table " + dbName+"."+tableName2 + "(eid int, name string)");
+    final String viewName = "foo_view";
+    driver.run("create view " + dbName+"."+viewName + " as select * from "+ dbName+"."+tableName1);
+    reset(mockedAuthorizer);
+    int status = driver.compile("Alter view "+dbName+"."+viewName+" as select * from "+ dbName+"."+tableName2, true);
+    assertEquals(0, status);
+    Pair<List<HivePrivilegeObject>, List<HivePrivilegeObject>> io = getHivePrivilegeObjectInputs();
+    List<HivePrivilegeObject> inputs = io.getLeft();
+    assertEquals(1, inputs.size()); // foo_bar table object
+    List<HivePrivilegeObject> outputs = io.getRight();
+    assertEquals(2, outputs.size()); // Database and view objects
+    HivePrivilegeObject dbObj = outputs.get(0);
+    assertEquals("input type", HivePrivilegeObjectType.DATABASE, dbObj.getType());
+    HivePrivilegeObject viewObj = outputs.get(1);
+    assertEquals("input type", HivePrivilegeObjectType.TABLE_OR_VIEW, viewObj.getType());
+  }
+
   private void checkSingleTableInput(List<HivePrivilegeObject> inputs) {
     assertEquals("number of inputs", 1, inputs.size());
 
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/create/AlterViewAsAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/create/AlterViewAsAnalyzer.java
index 5884a29..33c8bda 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/create/AlterViewAsAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/create/AlterViewAsAnalyzer.java
@@ -36,6 +36,7 @@ import org.apache.hadoop.hive.ql.parse.HiveParser;
 import org.apache.hadoop.hive.ql.parse.ParseUtils;
 import org.apache.hadoop.hive.ql.parse.SemanticAnalyzer;
 import org.apache.hadoop.hive.ql.parse.SemanticException;
+import org.apache.hadoop.hive.ql.plan.HiveOperation;
 
 /**
  * Analyzer for alter view ... as commands.
@@ -44,6 +45,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 public class AlterViewAsAnalyzer extends AbstractCreateViewAnalyzer {
   public AlterViewAsAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
+    queryState.setCommandType(HiveOperation.ALTERVIEW_AS);
   }
 
   @Override
diff --git a/ql/src/test/results/clientpositive/llap/alter_view_as_select.q.out b/ql/src/test/results/clientpositive/llap/alter_view_as_select.q.out
index b024443..9fc906e 100644
--- a/ql/src/test/results/clientpositive/llap/alter_view_as_select.q.out
+++ b/ql/src/test/results/clientpositive/llap/alter_view_as_select.q.out
@@ -52,12 +52,12 @@ Sort Columns:       	[]
 Original Query:     	SELECT * FROM srcpart	 
 Expanded Query:     	SELECT `srcpart`.`key`, `srcpart`.`value`, `srcpart`.`ds`, `srcpart`.`hr` FROM `default`.`srcpart`	 
 PREHOOK: query: ALTER VIEW tv.testView AS SELECT value FROM src WHERE key=86
-PREHOOK: type: CREATEVIEW
+PREHOOK: type: ALTERVIEW_AS
 PREHOOK: Input: default@src
 PREHOOK: Output: database:tv
 PREHOOK: Output: tv@testView
 POSTHOOK: query: ALTER VIEW tv.testView AS SELECT value FROM src WHERE key=86
-POSTHOOK: type: CREATEVIEW
+POSTHOOK: type: ALTERVIEW_AS
 POSTHOOK: Input: default@src
 POSTHOOK: Output: database:tv
 POSTHOOK: Output: tv@testView
@@ -96,7 +96,7 @@ SELECT * FROM src
 WHERE key > 80 AND key < 100
 ORDER BY key, value
 LIMIT 10
-PREHOOK: type: CREATEVIEW
+PREHOOK: type: ALTERVIEW_AS
 PREHOOK: Input: default@src
 PREHOOK: Output: database:tv
 PREHOOK: Output: tv@testView
@@ -105,7 +105,7 @@ SELECT * FROM src
 WHERE key > 80 AND key < 100
 ORDER BY key, value
 LIMIT 10
-POSTHOOK: type: CREATEVIEW
+POSTHOOK: type: ALTERVIEW_AS
 POSTHOOK: Input: default@src
 POSTHOOK: Output: database:tv
 POSTHOOK: Output: tv@testView
diff --git a/ql/src/test/results/clientpositive/llap/alter_view_col_type.q.out b/ql/src/test/results/clientpositive/llap/alter_view_col_type.q.out
index 2d1d2ab..dfd720c 100644
--- a/ql/src/test/results/clientpositive/llap/alter_view_col_type.q.out
+++ b/ql/src/test/results/clientpositive/llap/alter_view_col_type.q.out
@@ -120,12 +120,12 @@ POSTHOOK: Input: default@av1
 4	d
 5	e
 PREHOOK: query: alter view av1 as select c2, c3 from at1
-PREHOOK: type: CREATEVIEW
+PREHOOK: type: ALTERVIEW_AS
 PREHOOK: Input: default@at1
 PREHOOK: Output: database:default
 PREHOOK: Output: default@av1
 POSTHOOK: query: alter view av1 as select c2, c3 from at1
-POSTHOOK: type: CREATEVIEW
+POSTHOOK: type: ALTERVIEW_AS
 POSTHOOK: Input: default@at1
 POSTHOOK: Output: database:default
 POSTHOOK: Output: default@av1
diff --git a/ql/src/test/results/clientpositive/llap/lineage3.q.out b/ql/src/test/results/clientpositive/llap/lineage3.q.out
index 45b1b8f..9211eec 100644
--- a/ql/src/test/results/clientpositive/llap/lineage3.q.out
+++ b/ql/src/test/results/clientpositive/llap/lineage3.q.out
@@ -246,7 +246,7 @@ PREHOOK: Input: default@dest_v1
 -64	253665376
 -64	253665376
 PREHOOK: query: alter view dest_v1 as select ctinyint from alltypesorc
-PREHOOK: type: CREATEVIEW
+PREHOOK: type: ALTERVIEW_AS
 PREHOOK: Input: default@alltypesorc
 PREHOOK: Output: database:default
 PREHOOK: Output: default@dest_v1
@@ -313,7 +313,7 @@ PREHOOK: query: alter view dest_v3 as
     group by a.ctinyint, a.csmallint, b.cboolean1
     having count(a.cint) > 10
     order by a, x, b.cboolean1 limit 10) t_n20
-PREHOOK: type: CREATEVIEW
+PREHOOK: type: ALTERVIEW_AS
 PREHOOK: Input: default@alltypesorc
 PREHOOK: Output: database:default
 PREHOOK: Output: default@dest_v3