This is an automated email from the ASF dual-hosted git repository.

jinsongzhou pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/amoro.git


The following commit(s) were added to refs/heads/master by this push:
     new decd55dec [AMORO-3389][improvement]support add comment to mixed_hive 
table (#3389)
decd55dec is described below

commit decd55dec29e253d81e29ee960244d2999996432
Author: Wang Tao <wtrunw...@gmail.com>
AuthorDate: Mon Jan 20 19:58:37 2025 +0800

    [AMORO-3389][improvement]support add comment to mixed_hive table (#3389)
    
    * [improvement]support add comment to hive table
    
    * add ut
---
 .../apache/amoro/hive/catalog/MixedHiveTables.java |  8 +++-
 .../suites/sql/TestMixedFormatSessionCatalog.java  | 44 +++++++++++++++-------
 2 files changed, 37 insertions(+), 15 deletions(-)

diff --git 
a/amoro-format-mixed/amoro-mixed-hive/src/main/java/org/apache/amoro/hive/catalog/MixedHiveTables.java
 
b/amoro-format-mixed/amoro-mixed-hive/src/main/java/org/apache/amoro/hive/catalog/MixedHiveTables.java
index d4ac4a8c9..bf07b2f37 100644
--- 
a/amoro-format-mixed/amoro-mixed-hive/src/main/java/org/apache/amoro/hive/catalog/MixedHiveTables.java
+++ 
b/amoro-format-mixed/amoro-mixed-hive/src/main/java/org/apache/amoro/hive/catalog/MixedHiveTables.java
@@ -59,6 +59,7 @@ import org.slf4j.LoggerFactory;
 import java.util.HashMap;
 import java.util.Locale;
 import java.util.Map;
+import java.util.Optional;
 
 public class MixedHiveTables {
 
@@ -510,6 +511,11 @@ public class MixedHiveTables {
       TableMeta meta, Schema schema, PartitionSpec partitionSpec) {
     final long currentTimeMillis = System.currentTimeMillis();
 
+    // set table comment here!
+    Map<String, String> parameters = new HashMap<>();
+    Optional<String> comment = 
Optional.ofNullable(meta.getProperties().get("comment"));
+    comment.ifPresent(val -> parameters.put("comment", val));
+
     org.apache.hadoop.hive.metastore.api.Table newTable =
         new org.apache.hadoop.hive.metastore.api.Table(
             meta.getTableIdentifier().getTableName(),
@@ -521,7 +527,7 @@ public class MixedHiveTables {
             Integer.MAX_VALUE,
             null,
             HiveSchemaUtil.hivePartitionFields(schema, partitionSpec),
-            new HashMap<>(),
+            parameters,
             null,
             null,
             TableType.EXTERNAL_TABLE.toString());
diff --git 
a/amoro-format-mixed/amoro-mixed-spark/v3.3/amoro-mixed-spark-3.3/src/test/java/org/apache/amoro/spark/test/suites/sql/TestMixedFormatSessionCatalog.java
 
b/amoro-format-mixed/amoro-mixed-spark/v3.3/amoro-mixed-spark-3.3/src/test/java/org/apache/amoro/spark/test/suites/sql/TestMixedFormatSessionCatalog.java
index dec6d8a7d..f1b414e24 100644
--- 
a/amoro-format-mixed/amoro-mixed-spark/v3.3/amoro-mixed-spark-3.3/src/test/java/org/apache/amoro/spark/test/suites/sql/TestMixedFormatSessionCatalog.java
+++ 
b/amoro-format-mixed/amoro-mixed-spark/v3.3/amoro-mixed-spark-3.3/src/test/java/org/apache/amoro/spark/test/suites/sql/TestMixedFormatSessionCatalog.java
@@ -43,6 +43,7 @@ import org.junit.platform.commons.util.StringUtils;
 
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.stream.Stream;
 
 public class TestMixedFormatSessionCatalog extends MixedTableTestBase {
@@ -57,16 +58,16 @@ public class TestMixedFormatSessionCatalog extends 
MixedTableTestBase {
 
   public static Stream<Arguments> testCreateTable() {
     return Stream.of(
-        Arguments.arguments("arctic", true, ""),
-        Arguments.arguments("arctic", false, "pt"),
-        Arguments.arguments("arctic", true, "pt"),
-        Arguments.arguments("parquet", false, "pt"),
-        Arguments.arguments("parquet", false, "dt string"));
+        Arguments.arguments("arctic", true, "", "hive comment"),
+        Arguments.arguments("arctic", false, "pt", "hive comment"),
+        Arguments.arguments("arctic", true, "pt", "hive comment"),
+        Arguments.arguments("parquet", false, "pt", null),
+        Arguments.arguments("parquet", false, "dt string", null));
   }
 
-  @ParameterizedTest(name = "{index} USING {0} WITH PK {1} PARTITIONED BY 
({2})")
+  @ParameterizedTest(name = "{index} USING {0} WITH PK {1} PARTITIONED BY 
({2}) COMMENT {3}")
   @MethodSource
-  public void testCreateTable(String provider, boolean pk, String pt) {
+  public void testCreateTable(String provider, boolean pk, String pt, String 
comment) {
 
     String sqlText = "CREATE TABLE " + target() + "(" + " id INT, data string, 
pt string ";
     if (pk) {
@@ -78,6 +79,10 @@ public class TestMixedFormatSessionCatalog extends 
MixedTableTestBase {
       sqlText += " PARTITIONED BY (" + pt + ")";
     }
 
+    if (StringUtils.isNotBlank(comment)) {
+      sqlText += " COMMENT  '" + comment + "'";
+    }
+
     sql(sqlText);
 
     if ("arctic".equalsIgnoreCase(provider)) {
@@ -86,6 +91,9 @@ public class TestMixedFormatSessionCatalog extends 
MixedTableTestBase {
 
     Table hiveTable = loadHiveTable();
     Assertions.assertNotNull(hiveTable);
+
+    String hiveComment = hiveTable.getParameters().get("comment");
+    Assertions.assertTrue(Objects.equals(hiveComment, comment));
   }
 
   static final Schema SCHEMA =
@@ -105,17 +113,17 @@ public class TestMixedFormatSessionCatalog extends 
MixedTableTestBase {
 
   public static Stream<Arguments> testCreateTableAsSelect() {
     return Stream.of(
-        Arguments.arguments("arctic", true, "", true),
-        Arguments.arguments("arctic", false, "pt", true),
-        Arguments.arguments("arctic", true, "pt", false),
-        Arguments.arguments("parquet", false, "pt", false),
-        Arguments.arguments("parquet", false, "", false));
+        Arguments.arguments("arctic", true, "", true, "hive comment"),
+        Arguments.arguments("arctic", false, "pt", true, "hive comment"),
+        Arguments.arguments("arctic", true, "pt", false, "hive comment"),
+        Arguments.arguments("parquet", false, "pt", false, "hive comment"),
+        Arguments.arguments("parquet", false, "", false, "hive comment"));
   }
 
-  @ParameterizedTest(name = "{index} USING {0} WITH PK {1} PARTITIONED BY 
({2})")
+  @ParameterizedTest(name = "{index} USING {0} WITH PK {1} PARTITIONED BY 
({2}) COMMENT {3}")
   @MethodSource
   public void testCreateTableAsSelect(
-      String provider, boolean pk, String pt, boolean duplicateCheck) {
+      String provider, boolean pk, String pt, boolean duplicateCheck, String 
comment) {
     spark().conf().set(SparkSQLProperties.CHECK_SOURCE_DUPLICATES_ENABLE, 
duplicateCheck);
     createViewSource(SCHEMA, source);
     String sqlText = "CREATE TABLE " + target();
@@ -126,6 +134,11 @@ public class TestMixedFormatSessionCatalog extends 
MixedTableTestBase {
     if (StringUtils.isNotBlank(pt)) {
       sqlText += " PARTITIONED BY (" + pt + ")";
     }
+
+    if (StringUtils.isNotBlank(comment)) {
+      sqlText += " COMMENT  '" + comment + "'";
+    }
+
     sqlText += " AS SELECT * FROM " + source();
 
     sql(sqlText);
@@ -135,6 +148,9 @@ public class TestMixedFormatSessionCatalog extends 
MixedTableTestBase {
 
     Table hiveTable = loadHiveTable();
     Assertions.assertNotNull(hiveTable);
+
+    String hiveComment = hiveTable.getParameters().get("comment");
+    Assertions.assertTrue(Objects.equals(hiveComment, comment));
   }
 
   @Test

Reply via email to