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 <[email protected]>
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