This is an automated email from the ASF dual-hosted git repository.
dkuzmenko 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 c247adb28b5 HIVE-27633: HMS: MTable to Table process reduces view
related SQL (cxzl25, reviewed by Butao Zhang, Denys Kuzmenko)
c247adb28b5 is described below
commit c247adb28b50452ad3dbc77d2f3ee803990376de
Author: cxzl25 <[email protected]>
AuthorDate: Thu Nov 30 19:05:03 2023 +0800
HIVE-27633: HMS: MTable to Table process reduces view related SQL (cxzl25,
reviewed by Butao Zhang, Denys Kuzmenko)
Closes #4616
---
.../java/org/apache/hadoop/hive/metastore/ObjectStore.java | 11 +++++++++--
.../metastore/client/TestTablesCreateDropAlterTruncate.java | 6 +-----
.../hadoop/hive/metastore/client/TestTablesGetExists.java | 13 +++++++++----
3 files changed, 19 insertions(+), 11 deletions(-)
diff --git
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java
index 98f7f6f85be..436ebd932ac 100644
---
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java
+++
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java
@@ -2303,6 +2303,8 @@ public class ObjectStore implements RawStore,
Configurable {
return null;
}
String tableType = mtbl.getTableType();
+ String viewOriginalText = null;
+ String viewExpandedText = null;
if (tableType == null) {
// for backwards compatibility with old metastore persistence
if (mtbl.getViewOriginalText() != null) {
@@ -2312,14 +2314,19 @@ public class ObjectStore implements RawStore,
Configurable {
} else {
tableType = TableType.MANAGED_TABLE.toString();
}
+ } else {
+ if (tableType.equals(TableType.VIRTUAL_VIEW.toString()) ||
tableType.equals(TableType.MATERIALIZED_VIEW.toString())) {
+ viewOriginalText = mtbl.getViewOriginalText();
+ viewExpandedText = mtbl.getViewExpandedText();
+ }
}
Map<String, String> parameters = convertMap(mtbl.getParameters());
boolean isAcidTable = TxnUtils.isAcidTable(parameters);
final Table t = new Table(mtbl.getTableName(), mtbl.getDatabase() != null
? mtbl.getDatabase().getName() : null,
mtbl.getOwner(), mtbl.getCreateTime(), mtbl.getLastAccessTime(),
mtbl.getRetention(),
convertToStorageDescriptor(mtbl.getSd(), false, isAcidTable),
- convertToFieldSchemas(mtbl.getPartitionKeys()), parameters,
mtbl.getViewOriginalText(),
- mtbl.getViewExpandedText(), tableType);
+ convertToFieldSchemas(mtbl.getPartitionKeys()), parameters,
viewOriginalText,
+ viewExpandedText, tableType);
if (Strings.isNullOrEmpty(mtbl.getOwnerType())) {
// Before the ownerType exists in an old Hive schema, USER was the
default type for owner.
diff --git
a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestTablesCreateDropAlterTruncate.java
b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestTablesCreateDropAlterTruncate.java
index 8dc4d1dfcf0..0d38b628abb 100644
---
a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestTablesCreateDropAlterTruncate.java
+++
b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestTablesCreateDropAlterTruncate.java
@@ -262,10 +262,6 @@ public class TestTablesCreateDropAlterTruncate extends
MetaStoreClientTest {
createdTable.unsetId();
Assert.assertEquals("create/get table data", table, createdTable);
- // Check that the directory is created
- Assert.assertTrue("The directory should not be created",
- metaStore.isPathExists(new Path(createdTable.getSd().getLocation())));
-
client.dropTable(table.getDbName(), table.getTableName(), true, false);
try {
client.getTable(table.getDbName(), table.getTableName());
@@ -1595,7 +1591,7 @@ public class TestTablesCreateDropAlterTruncate extends
MetaStoreClientTest {
.setNumBuckets(4)
.setRetention(30000)
.setRewriteEnabled(true)
- .setType("VIEW")
+ .setType(TableType.VIRTUAL_VIEW.name())
.setViewExpandedText("viewExplainedText")
.setViewOriginalText("viewOriginalText")
.setSerdeLib("serdelib")
diff --git
a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestTablesGetExists.java
b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestTablesGetExists.java
index f2937bc8576..84ac0f87210 100644
---
a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestTablesGetExists.java
+++
b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestTablesGetExists.java
@@ -21,6 +21,7 @@ package org.apache.hadoop.hive.metastore.client;
import org.apache.hadoop.hive.metastore.ColumnType;
import org.apache.hadoop.hive.metastore.IMetaStoreClient;
import org.apache.hadoop.hive.metastore.MetaStoreTestUtils;
+import org.apache.hadoop.hive.metastore.TableType;
import org.apache.hadoop.hive.metastore.annotation.MetastoreCheckinTest;
import org.apache.hadoop.hive.metastore.api.*;
import org.apache.hadoop.hive.metastore.client.builder.CatalogBuilder;
@@ -87,7 +88,7 @@ public class TestTablesGetExists extends MetaStoreClientTest {
.setDbName(DEFAULT_DATABASE)
.setTableName("test_view")
.addCol("test_col", "int")
- .setType("VIEW")
+ .setType(TableType.VIRTUAL_VIEW.name())
.create(client, metaStore.getConf());
testTables[2] =
@@ -102,7 +103,7 @@ public class TestTablesGetExists extends
MetaStoreClientTest {
.setDbName(DEFAULT_DATABASE)
.setTableName("test_table_to_find_2")
.addCol("test_col", "int")
- .setType("VIEW")
+ .setType(TableType.VIRTUAL_VIEW.name())
.create(client, metaStore.getConf());
testTables[4] =
@@ -526,7 +527,7 @@ public class TestTablesGetExists extends
MetaStoreClientTest {
tableNames.add(testTables[1].getTableName());
GetProjectionsSpec projectSpec = (new
GetTableProjectionsSpecBuilder()).includeOwner().includeOwnerType().
- includeSdLocation().build();
+ includeSdLocation().includeTableType().build();
List<Table> tables = client.getTables(null, DEFAULT_DATABASE, tableNames,
projectSpec);
@@ -540,7 +541,11 @@ public class TestTablesGetExists extends
MetaStoreClientTest {
Assert.assertTrue(table.isSetOwnerType());
Assert.assertTrue(table.isSetOwner());
StorageDescriptor sd = table.getSd();
- Assert.assertTrue(sd.isSetLocation());
+ if (TableType.VIRTUAL_VIEW.toString().equals(table.getTableType())) {
+ Assert.assertFalse(sd.isSetLocation());
+ } else {
+ Assert.assertTrue(sd.isSetLocation());
+ }
}
}