diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzerFactory.java ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzerFactory.java index 48a05e8..85e5b31 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzerFactory.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzerFactory.java @@ -95,6 +95,7 @@ commandType.put(HiveParser.TOK_DESCDATABASE, HiveOperation.DESCDATABASE); commandType.put(HiveParser.TOK_ALTERTABLE_SKEWED, HiveOperation.ALTERTABLE_SKEWED); commandType.put(HiveParser.TOK_ANALYZE, HiveOperation.ANALYZE_TABLE); + commandType.put(HiveParser.TOK_ALTERVIEW_RENAME, HiveOperation.ALTERVIEW_RENAME); } static { diff --git ql/src/java/org/apache/hadoop/hive/ql/plan/HiveOperation.java ql/src/java/org/apache/hadoop/hive/ql/plan/HiveOperation.java index 4b1c429..52f4221 100644 --- ql/src/java/org/apache/hadoop/hive/ql/plan/HiveOperation.java +++ ql/src/java/org/apache/hadoop/hive/ql/plan/HiveOperation.java @@ -21,7 +21,6 @@ import org.apache.hadoop.hive.ql.security.authorization.Privilege; public enum HiveOperation { - EXPLAIN("EXPLAIN", null, null), LOAD("LOAD", null, new Privilege[]{Privilege.ALTER_DATA}), EXPORT("EXPORT", new Privilege[]{Privilege.SELECT}, null), @@ -102,6 +101,7 @@ ALTERTABLE_SKEWED("ALTERTABLE_SKEWED", new Privilege[] {Privilege.ALTER_METADATA}, null), ALTERTBLPART_SKEWED_LOCATION("ALTERTBLPART_SKEWED_LOCATION", new Privilege[] {Privilege.ALTER_DATA}, null), + ALTERVIEW_RENAME("ALTERVIEW_RENAME", new Privilege[] {Privilege.ALTER_METADATA}, null), ; private String operationName; diff --git ql/src/test/queries/clientpositive/authorization_8.q ql/src/test/queries/clientpositive/authorization_8.q new file mode 100644 index 0000000..67fcf31 --- /dev/null +++ ql/src/test/queries/clientpositive/authorization_8.q @@ -0,0 +1,8 @@ +set hive.security.authorization.enabled=true; +GRANT ALL TO USER hive_test_user; +CREATE TABLE tbl_j5jbymsx8e (key INT, value STRING) PARTITIONED BY (ds STRING); +CREATE VIEW view_j5jbymsx8e_1 as SELECT * FROM tbl_j5jbymsx8e; +DESCRIBE view_j5jbymsx8e_1; +ALTER VIEW view_j5jbymsx8e_1 RENAME TO view_j5jbymsx8e_2; +REVOKE ALL FROM USER hive_test_user; +set hive.security.authorization.enabled=false; diff --git ql/src/test/results/clientnegative/recursive_view.q.out ql/src/test/results/clientnegative/recursive_view.q.out index 3a2618b..1171fa8 100644 --- ql/src/test/results/clientnegative/recursive_view.q.out +++ ql/src/test/results/clientnegative/recursive_view.q.out @@ -68,11 +68,11 @@ POSTHOOK: type: DROPVIEW POSTHOOK: Input: default@r0 POSTHOOK: Output: default@r0 PREHOOK: query: alter view r3 rename to r0 -PREHOOK: type: null +PREHOOK: type: ALTERVIEW_RENAME PREHOOK: Input: default@r3 PREHOOK: Output: default@r3 POSTHOOK: query: alter view r3 rename to r0 -POSTHOOK: type: null +POSTHOOK: type: ALTERVIEW_RENAME POSTHOOK: Input: default@r3 POSTHOOK: Output: default@r0 POSTHOOK: Output: default@r3 diff --git ql/src/test/results/clientpositive/alter_view_rename.q.out ql/src/test/results/clientpositive/alter_view_rename.q.out index 6a498e8..d6838f5 100644 --- ql/src/test/results/clientpositive/alter_view_rename.q.out +++ ql/src/test/results/clientpositive/alter_view_rename.q.out @@ -18,11 +18,11 @@ ds string None #### A masked pattern was here #### PREHOOK: query: ALTER VIEW view1 RENAME TO view2 -PREHOOK: type: null +PREHOOK: type: ALTERVIEW_RENAME PREHOOK: Input: default@view1 PREHOOK: Output: default@view1 POSTHOOK: query: ALTER VIEW view1 RENAME TO view2 -POSTHOOK: type: null +POSTHOOK: type: ALTERVIEW_RENAME POSTHOOK: Input: default@view1 POSTHOOK: Output: default@view1 POSTHOOK: Output: default@view2 diff --git ql/src/test/results/clientpositive/authorization_8.q.out ql/src/test/results/clientpositive/authorization_8.q.out new file mode 100644 index 0000000..b66fabc --- /dev/null +++ ql/src/test/results/clientpositive/authorization_8.q.out @@ -0,0 +1,34 @@ +PREHOOK: query: GRANT ALL TO USER hive_test_user +PREHOOK: type: GRANT_PRIVILEGE +POSTHOOK: query: GRANT ALL TO USER hive_test_user +POSTHOOK: type: GRANT_PRIVILEGE +PREHOOK: query: CREATE TABLE tbl_j5jbymsx8e (key INT, value STRING) PARTITIONED BY (ds STRING) +PREHOOK: type: CREATETABLE +POSTHOOK: query: CREATE TABLE tbl_j5jbymsx8e (key INT, value STRING) PARTITIONED BY (ds STRING) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: default@tbl_j5jbymsx8e +PREHOOK: query: CREATE VIEW view_j5jbymsx8e_1 as SELECT * FROM tbl_j5jbymsx8e +PREHOOK: type: CREATEVIEW +POSTHOOK: query: CREATE VIEW view_j5jbymsx8e_1 as SELECT * FROM tbl_j5jbymsx8e +POSTHOOK: type: CREATEVIEW +POSTHOOK: Output: default@view_j5jbymsx8e_1 +PREHOOK: query: DESCRIBE view_j5jbymsx8e_1 +PREHOOK: type: DESCTABLE +POSTHOOK: query: DESCRIBE view_j5jbymsx8e_1 +POSTHOOK: type: DESCTABLE +key int None +value string None +ds string None +PREHOOK: query: ALTER VIEW view_j5jbymsx8e_1 RENAME TO view_j5jbymsx8e_2 +PREHOOK: type: ALTERVIEW_RENAME +PREHOOK: Input: default@view_j5jbymsx8e_1 +PREHOOK: Output: default@view_j5jbymsx8e_1 +POSTHOOK: query: ALTER VIEW view_j5jbymsx8e_1 RENAME TO view_j5jbymsx8e_2 +POSTHOOK: type: ALTERVIEW_RENAME +POSTHOOK: Input: default@view_j5jbymsx8e_1 +POSTHOOK: Output: default@view_j5jbymsx8e_1 +POSTHOOK: Output: default@view_j5jbymsx8e_2 +PREHOOK: query: REVOKE ALL FROM USER hive_test_user +PREHOOK: type: REVOKE_PRIVILEGE +POSTHOOK: query: REVOKE ALL FROM USER hive_test_user +POSTHOOK: type: REVOKE_PRIVILEGE