diff --git a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/AuthorizationMetaStoreFilterHook.java b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/AuthorizationMetaStoreFilterHook.java index ca4b667a76..f5b8b12ace 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/AuthorizationMetaStoreFilterHook.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/AuthorizationMetaStoreFilterHook.java @@ -19,6 +19,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; import org.apache.hadoop.conf.Configuration; import org.slf4j.Logger; @@ -26,6 +27,7 @@ import org.apache.hadoop.hive.common.classification.InterfaceAudience.Private; import org.apache.hadoop.hive.metastore.DefaultMetaStoreFilterHookImpl; import org.apache.hadoop.hive.metastore.api.MetaException; +import org.apache.hadoop.hive.metastore.api.TableMeta; import org.apache.hadoop.hive.ql.security.authorization.plugin.HivePrivilegeObject.HivePrivilegeObjectType; import org.apache.hadoop.hive.ql.session.SessionState; @@ -99,5 +101,17 @@ public AuthorizationMetaStoreFilterHook(Configuration conf) { return objs; } + @Override + public List filterTableMetas(String catName,String dbName,List tableMetas) throws MetaException { + List tableNames = new ArrayList<>(); + for(TableMeta tableMeta: tableMetas){ + tableNames.add(tableMeta.getTableName()); + } + List filteredTableNames = filterTableNames(catName,dbName,tableNames); + return tableMetas.stream() + .filter(e -> filteredTableNames.contains(e.getTableName())).collect(Collectors.toList()); + } + + } diff --git a/standalone-metastore/metastore-common/src/main/java/org/apache/hadoop/hive/metastore/DefaultMetaStoreFilterHookImpl.java b/standalone-metastore/metastore-common/src/main/java/org/apache/hadoop/hive/metastore/DefaultMetaStoreFilterHookImpl.java index 4e1dabab11..36a82c5149 100644 --- a/standalone-metastore/metastore-common/src/main/java/org/apache/hadoop/hive/metastore/DefaultMetaStoreFilterHookImpl.java +++ b/standalone-metastore/metastore-common/src/main/java/org/apache/hadoop/hive/metastore/DefaultMetaStoreFilterHookImpl.java @@ -54,7 +54,7 @@ public Database filterDatabase(Database dataBase) throws NoSuchObjectException { } @Override - public List filterTableMetas(List tableMetas) throws MetaException { + public List filterTableMetas(String catName, String dbName,List tableMetas) throws MetaException { return tableMetas; } diff --git a/standalone-metastore/metastore-common/src/main/java/org/apache/hadoop/hive/metastore/MetaStoreFilterHook.java b/standalone-metastore/metastore-common/src/main/java/org/apache/hadoop/hive/metastore/MetaStoreFilterHook.java index f7a0cd073c..2f48aed37f 100644 --- a/standalone-metastore/metastore-common/src/main/java/org/apache/hadoop/hive/metastore/MetaStoreFilterHook.java +++ b/standalone-metastore/metastore-common/src/main/java/org/apache/hadoop/hive/metastore/MetaStoreFilterHook.java @@ -93,7 +93,7 @@ default Catalog filterCatalog(Catalog catalog) throws MetaException { * @return filtered table metas * @throws MetaException something went wrong */ - List filterTableMetas(List tableMetas) throws MetaException; + List filterTableMetas(String catName,String dbName,List tableMetas) throws MetaException; /** * filter to given table object if applicable diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java index c962ccc93a..df6d56b679 100644 --- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java +++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java @@ -1961,7 +1961,7 @@ public Type getType(String name) throws NoSuchObjectException, MetaException, TE @Override public List getTableMeta(String catName, String dbPatterns, String tablePatterns, List tableTypes) throws TException { - return filterHook.filterTableMetas(client.get_table_meta(prependCatalogToDbName( + return filterHook.filterTableMetas(catName,dbPatterns,client.get_table_meta(prependCatalogToDbName( catName, dbPatterns, conf), tablePatterns, tableTypes)); }