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")