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 2022/03/04 17:01:28 UTC
[hive] branch master updated: HIVE-25988: CreateTableEvent should have database object as one of the hive privilege object(Saihemanth Gantasala via 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 f3cc454 HIVE-25988: CreateTableEvent should have database object as one of the hive privilege object(Saihemanth Gantasala via Naveen Gangam)
f3cc454 is described below
commit f3cc454d2ff648be3236bde82199cdc830781a53
Author: saihemanth <sa...@cloudera.com>
AuthorDate: Sat Feb 26 00:15:11 2022 +0530
HIVE-25988: CreateTableEvent should have database object as one of the hive privilege object(Saihemanth Gantasala via Naveen Gangam)
---
.../plugin/metastore/events/CreateTableEvent.java | 15 ++++++++++++++-
.../java/org/apache/hadoop/hive/metastore/HMSHandler.java | 2 +-
.../hadoop/hive/metastore/events/PreCreateTableEvent.java | 11 ++++++++++-
3 files changed, 25 insertions(+), 3 deletions(-)
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/metastore/events/CreateTableEvent.java b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/metastore/events/CreateTableEvent.java
index 748846e..1f060b5 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/metastore/events/CreateTableEvent.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/metastore/events/CreateTableEvent.java
@@ -21,6 +21,7 @@ package org.apache.hadoop.hive.ql.security.authorization.plugin.metastore.events
import org.apache.commons.lang3.StringUtils;
import org.apache.hadoop.hive.metastore.api.Table;
+import org.apache.hadoop.hive.metastore.api.Database;
import org.apache.hadoop.hive.metastore.events.PreCreateTableEvent;
import org.apache.hadoop.hive.metastore.events.PreEventContext;
import org.apache.hadoop.hive.ql.security.authorization.plugin.HiveOperationType;
@@ -56,7 +57,17 @@ public class CreateTableEvent extends HiveMetaStoreAuthorizableEvent {
return ret;
}
- private List<HivePrivilegeObject> getInputHObjs() { return Collections.emptyList(); }
+ private List<HivePrivilegeObject> getInputHObjs() {
+ List<HivePrivilegeObject> ret = new ArrayList<>();
+ PreCreateTableEvent event = (PreCreateTableEvent) preEventContext;
+ Table table = event.getTable();
+ String uri = getSdLocation(table.getSd());
+
+ if (StringUtils.isNotEmpty(uri)) {
+ ret.add(new HivePrivilegeObject(HivePrivilegeObjectType.DFS_URI, null, uri));
+ }
+ return ret;
+ }
private List<HivePrivilegeObject> getOutputHObjs() {
LOG.debug("==> CreateTableEvent.getOutputHObjs()");
@@ -64,8 +75,10 @@ public class CreateTableEvent extends HiveMetaStoreAuthorizableEvent {
List<HivePrivilegeObject> ret = new ArrayList<>();
PreCreateTableEvent event = (PreCreateTableEvent) preEventContext;
Table table = event.getTable();
+ Database database = event.getDatabase();
String uri = getSdLocation(table.getSd());
+ ret.add(getHivePrivilegeObject(database));
ret.add(getHivePrivilegeObject(table));
if (StringUtils.isNotEmpty(uri)) {
diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HMSHandler.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HMSHandler.java
index b2bd19a..965ab77 100644
--- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HMSHandler.java
+++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HMSHandler.java
@@ -2351,13 +2351,13 @@ public class HMSHandler extends FacebookBase implements IHMSHandler {
boolean success = false, madeDir = false;
boolean isReplicated = false;
try {
- firePreEvent(new PreCreateTableEvent(tbl, this));
ms.openTransaction();
db = ms.getDatabase(tbl.getCatName(), tbl.getDbName());
isReplicated = isDbReplicationTarget(db);
+ firePreEvent(new PreCreateTableEvent(tbl, db, this));
// get_table checks whether database exists, it should be moved here
if (is_table_exists(ms, tbl.getCatName(), tbl.getDbName(), tbl.getTableName())) {
throw new AlreadyExistsException("Table " + getCatalogQualifiedTableName(tbl)
diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/events/PreCreateTableEvent.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/events/PreCreateTableEvent.java
index bd3aa3d..e62a8b0 100644
--- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/events/PreCreateTableEvent.java
+++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/events/PreCreateTableEvent.java
@@ -21,6 +21,7 @@ package org.apache.hadoop.hive.metastore.events;
import org.apache.hadoop.classification.InterfaceAudience;
import org.apache.hadoop.classification.InterfaceStability;
import org.apache.hadoop.hive.metastore.IHMSHandler;
+import org.apache.hadoop.hive.metastore.api.Database;
import org.apache.hadoop.hive.metastore.api.Table;
@InterfaceAudience.Public
@@ -29,9 +30,12 @@ public class PreCreateTableEvent extends PreEventContext {
private final Table table;
- public PreCreateTableEvent(Table table, IHMSHandler handler) {
+ private final Database db;
+
+ public PreCreateTableEvent(Table table, Database db, IHMSHandler handler) {
super(PreEventType.CREATE_TABLE, handler);
this.table = table;
+ this.db = db;
}
/**
@@ -40,4 +44,9 @@ public class PreCreateTableEvent extends PreEventContext {
public Table getTable() {
return table;
}
+
+ /**
+ * @return the database
+ */
+ public Database getDatabase() { return db; }
}