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());
+      }
     }
   }
 

Reply via email to