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 d19e44c  HIVE-24887: HMSHandler.getDatabase() with no capabilities to 
call translation (Naveen Gangam)
d19e44c is described below

commit d19e44ca8b3e0641e3d40caf8ba0b52e991b56fe
Author: Naveen Gangam <[email protected]>
AuthorDate: Mon Mar 15 18:27:53 2021 -0400

    HIVE-24887: HMSHandler.getDatabase() with no capabilities to call 
translation (Naveen Gangam)
---
 .../authorization/StorageBasedAuthorizationProvider.java    |  2 +-
 .../results/clientpositive/beeline/escape_comments.q.out    |  4 ++--
 .../java/org/apache/hadoop/hive/metastore/HMSHandler.java   |  8 ++++----
 .../hadoop/hive/metastore/TestMetaStoreEventListener.java   | 12 +++++++++++-
 .../apache/hadoop/hive/metastore/client/TestDatabases.java  | 13 +++++++++++--
 5 files changed, 29 insertions(+), 10 deletions(-)

diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/StorageBasedAuthorizationProvider.java
 
b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/StorageBasedAuthorizationProvider.java
index 864a69b..56be719 100644
--- 
a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/StorageBasedAuthorizationProvider.java
+++ 
b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/StorageBasedAuthorizationProvider.java
@@ -288,7 +288,7 @@ public class StorageBasedAuthorizationProvider extends 
HiveAuthorizationProvider
     }
   }
 
-  private void checkDeletePermission(Path dataLocation, Configuration conf, 
String userName)
+  protected void checkDeletePermission(Path dataLocation, Configuration conf, 
String userName)
       throws HiveException {
     try {
       FileUtils.checkDeletePermission(dataLocation, conf, userName);
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 6627e25..64b13f0 100644
--- a/ql/src/test/results/clientpositive/beeline/escape_comments.q.out
+++ b/ql/src/test/results/clientpositive/beeline/escape_comments.q.out
@@ -42,14 +42,14 @@ PREHOOK: Input: database:escape_comments_db
 POSTHOOK: query: describe database extended escape_comments_db
 POSTHOOK: type: DESCDATABASE
 POSTHOOK: Input: database:escape_comments_db
-#### A masked pattern was here ####
+escape_comments_db     a\nb    location/in/test                user    USER    
 PREHOOK: query: describe database escape_comments_db
 PREHOOK: type: DESCDATABASE
 PREHOOK: Input: database:escape_comments_db
 POSTHOOK: query: describe database escape_comments_db
 POSTHOOK: type: DESCDATABASE
 POSTHOOK: Input: database:escape_comments_db
-#### A masked pattern was here ####
+escape_comments_db     a\nb    location/in/test                user    USER
 PREHOOK: query: show create table escape_comments_tbl1
 PREHOOK: type: SHOW_CREATETABLE
 PREHOOK: Input: escape_comments_db@escape_comments_tbl1
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 f1d9d7b..3b14869 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
@@ -1644,7 +1644,7 @@ public class HMSHandler extends FacebookBase implements 
IHMSHandler {
     try {
       db = getMS().getDatabase(request.getCatalogName(), request.getName());
       firePreEvent(new PreReadDatabaseEvent(db, this));
-      if (processorCapabilities != null && transformer != null) {
+      if (transformer != null && !isInTest) {
         db = transformer.transformDatabase(db, processorCapabilities, 
processorId);
       }
     } catch (MetaException | NoSuchObjectException e) {
@@ -2150,6 +2150,9 @@ public class HMSHandler extends FacebookBase implements 
IHMSHandler {
     List<String> processorCapabilities = req.getProcessorCapabilities();
     String processorId = req.getProcessorIdentifier();
 
+    if (!tbl.isSetCatName()) {
+      tbl.setCatName(getDefaultCatalog(conf));
+    }
     if (transformer != null && !isInTest) {
       tbl = transformer.transformCreateTable(tbl, processorCapabilities, 
processorId);
     }
@@ -2208,9 +2211,6 @@ public class HMSHandler extends FacebookBase implements 
IHMSHandler {
     Database db = null;
     boolean isReplicated = false;
     try {
-      if (!tbl.isSetCatName()) {
-        tbl.setCatName(getDefaultCatalog(conf));
-      }
       firePreEvent(new PreCreateTableEvent(tbl, this));
 
       ms.openTransaction();
diff --git 
a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/TestMetaStoreEventListener.java
 
b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/TestMetaStoreEventListener.java
index fe64a91..338ca57 100644
--- 
a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/TestMetaStoreEventListener.java
+++ 
b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/TestMetaStoreEventListener.java
@@ -104,6 +104,14 @@ public class TestMetaStoreEventListener {
     MetaStoreTestUtils.setConfForStandloneMode(conf);
     
MetaStoreTestUtils.startMetaStoreWithRetry(HadoopThriftAuthBridge.getBridge(), 
conf);
 
+    
HiveMetaStoreClient.setProcessorIdentifier("test@TestMetaStoreEventListener");
+    HiveMetaStoreClient.setProcessorCapabilities(new String[] {
+        "HIVEFULLACIDREAD",
+        "EXTWRITE",
+        "EXTREAD",
+        "HIVEBUCKET2"
+    });
+
     msc = new HiveMetaStoreClient(conf);
 
     msc.dropDatabase(dbName, true, true, true);
@@ -131,6 +139,8 @@ public class TestMetaStoreEventListener {
   }
 
   private void validateTableInAddPartition(Table expectedTable, Table 
actualTable) {
+    // AccessType is not set on the table object from the event. We want to 
compare everything else.
+    actualTable.setAccessType(expectedTable.getAccessType());
     assertEquals(expectedTable, actualTable);
   }
 
@@ -262,7 +272,7 @@ public class TestMetaStoreEventListener {
     hmsClient.add_partitions(Arrays.asList(partition1, partition2, 
partition3));
     ++listSize;
     AddPartitionEvent multiplePartitionEvent = 
(AddPartitionEvent)(notifyList.get(listSize-1));
-    assertEquals("Unexpected table value.", table, 
multiplePartitionEvent.getTable());
+    validateTableInAddPartition(table, multiplePartitionEvent.getTable());
     List<Partition> multiParts = 
Lists.newArrayList(multiplePartitionEvent.getPartitionIterator());
     assertEquals("Unexpected number of partitions in event!", 3, 
multiParts.size());
     assertEquals("Unexpected partition value.", partition1.getValues(), 
multiParts.get(0).getValues());
diff --git 
a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestDatabases.java
 
b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestDatabases.java
index 9a3bdb1..f1e0e5f 100644
--- 
a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestDatabases.java
+++ 
b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestDatabases.java
@@ -19,6 +19,7 @@
 package org.apache.hadoop.hive.metastore.client;
 
 import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.hive.metastore.HiveMetaStoreClient;
 import org.apache.hadoop.hive.metastore.IMetaStoreClient;
 import org.apache.hadoop.hive.metastore.MetaStoreTestUtils;
 import org.apache.hadoop.hive.metastore.Warehouse;
@@ -76,6 +77,14 @@ public class TestDatabases extends MetaStoreClientTest {
 
   @Before
   public void setUp() throws Exception {
+    HiveMetaStoreClient.setProcessorIdentifier("UnitTest@TestDatabases");
+    HiveMetaStoreClient.setProcessorCapabilities(new String[] {
+        "HIVEFULLACIDREAD",
+        "EXTWRITE",
+        "EXTREAD",
+        "HIVEBUCKET2"
+    } );
+
     // Get new client
     client = metaStore.getClient();
 
@@ -468,7 +477,7 @@ public class TestDatabases extends MetaStoreClientTest {
             .setName(originalDatabase.getName())
             .setOwnerType(PrincipalType.GROUP)
             .setOwnerName("owner2")
-            .setLocation(metaStore.getWarehouseRoot() + "/database_location_2")
+            .setLocation(metaStore.getExternalWarehouseRoot() + 
"/database_location_2")
             .setDescription("dummy description 2")
             .addParam("param_key_1", "param_value_1_2")
             .addParam("param_key_2_3", "param_value_2_3")
@@ -665,7 +674,7 @@ public class TestDatabases extends MetaStoreClientTest {
                .setName("dummy")
                .setOwnerType(PrincipalType.ROLE)
                .setOwnerName("owner")
-               .setLocation(metaStore.getWarehouseRoot() + 
"/database_location")
+               .setLocation(metaStore.getExternalWarehouseRoot() + 
"/database_location")
                .setDescription("dummy description")
                .addParam("param_key_1", "param_value_1")
                .addParam("param_key_2", "param_value_2")

Reply via email to