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

jshao pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/gravitino.git


The following commit(s) were added to refs/heads/main by this push:
     new b75d58da7 [#4132] feat(bundled-catalog): remove all propertiesMeta 
from bundled catalog (#4178)
b75d58da7 is described below

commit b75d58da76cfd62e4524645b7bff5fd5a736ad04
Author: FANNG <[email protected]>
AuthorDate: Tue Jul 23 14:54:34 2024 +0800

    [#4132] feat(bundled-catalog): remove all propertiesMeta from bundled 
catalog (#4178)
    
    ### What changes were proposed in this pull request?
    - remove all propertiesMeta from bundled catalog
    - rename `bundled-catalog` to `catalog-common`
    
    ### Why are the changes needed?
    
    Fix: #4132
    
    ### Does this PR introduce _any_ user-facing change?
    no
    
    ### How was this patch tested?
    existing tests
---
 catalogs/bundled-catalog/build.gradle.kts          | 100 ---------------
 .../gravitino/catalog/common/ClassProvider.java    |  85 -------------
 .../build.gradle.kts}                              |  25 +---
 .../gravitino/catalog/hive/HiveConstants.java      |  48 ++++++++
 .../catalog/hive/HiveStorageConstants.java         |  63 ++++++++++
 .../gravitino/catalog/hive/StorageFormat.java      |  83 +++++++++++++
 .../apache/gravitino/catalog/hive/TableType.java}  |  27 ++---
 .../gravitino/catalog/jdbc/JdbcConstants.java}     |  21 +---
 .../lakehouse/iceberg/IcebergConstants.java        |   0
 .../gravitino/catalog/mysql/MysqlConstants.java}   |  26 +---
 .../catalog/property/PropertyConverter.java        |   0
 catalogs/catalog-hive/build.gradle.kts             |   1 +
 .../catalog/hive/HiveCatalogOperations.java        |   1 -
 .../catalog/hive/HiveCatalogPropertiesMeta.java    |  18 +--
 .../catalog/hive/HiveSchemaPropertiesMetadata.java |   2 +-
 .../apache/gravitino/catalog/hive/HiveTable.java   |   9 +-
 .../catalog/hive/HiveTablePropertiesMetadata.java  | 135 +++------------------
 .../hive/integration/test/CatalogHiveIT.java       |  22 ++--
 catalogs/catalog-jdbc-common/build.gradle.kts      |   1 +
 .../catalog/jdbc/JdbcTablePropertiesMetadata.java  |   2 +-
 catalogs/catalog-jdbc-mysql/build.gradle.kts       |   1 +
 .../mysql/MysqlTablePropertiesMetadata.java        |  10 +-
 .../catalog-lakehouse-iceberg/build.gradle.kts     |   2 +-
 flink-connector/build.gradle.kts                   |   2 +-
 .../connector/hive/HivePropertiesConverter.java    |  14 +--
 .../hive/TestHivePropertiesConverter.java          |   5 +-
 .../connector/integration/test/FlinkCommonIT.java  |   4 +-
 .../integration/test/hive/FlinkHiveCatalogIT.java  |   6 +-
 settings.gradle.kts                                |   2 +-
 spark-connector/spark-common/build.gradle.kts      |   2 +-
 .../connector/hive/HivePropertiesConstants.java    |  47 ++++---
 .../connector/hive/HivePropertiesConverter.java    |   5 +-
 spark-connector/v3.3/spark/build.gradle.kts        |   1 +
 spark-connector/v3.4/spark/build.gradle.kts        |   1 +
 spark-connector/v3.5/spark/build.gradle.kts        |   1 +
 trino-connector/build.gradle.kts                   |   2 +-
 .../catalog/hive/HiveSchemaPropertyConverter.java  |   4 +-
 .../catalog/hive/HiveTablePropertyConverter.java   |  26 ++--
 .../jdbc/mysql/MySQLTablePropertyConverter.java    |   7 +-
 .../hive/TestHiveCatalogPropertyConverter.java     |  16 ---
 40 files changed, 329 insertions(+), 498 deletions(-)

diff --git a/catalogs/bundled-catalog/build.gradle.kts 
b/catalogs/bundled-catalog/build.gradle.kts
deleted file mode 100644
index a9cc1141b..000000000
--- a/catalogs/bundled-catalog/build.gradle.kts
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
-
-plugins {
-  id("java")
-  alias(libs.plugins.shadow)
-}
-
-dependencies {
-  implementation(project(":catalogs:catalog-hive"))
-  implementation(project(":catalogs:catalog-jdbc-common"))
-  implementation(project(":catalogs:catalog-jdbc-mysql"))
-  implementation(project(":catalogs:catalog-jdbc-postgresql"))
-  implementation(project(":catalogs:catalog-lakehouse-paimon"))
-  implementation(project(":core"))
-  implementation(libs.slf4j.api)
-}
-
-tasks.withType<ShadowJar>(ShadowJar::class.java) {
-  isZip64 = true
-  configurations = listOf(project.configurations.compileClasspath.get())
-  archiveClassifier.set("")
-
-  dependencies {
-    exclude("javax.*")
-    exclude("org.slf4j.*")
-  }
-
-  exclude("**/package-info.class")
-  exclude("**/*.properties")
-  exclude("**/*.html")
-  exclude("org/slf4j/**")
-  exclude("META-INF")
-  exclude("META-INF/**")
-  exclude("module-info.class")
-  exclude("com/google/**")
-  exclude("com/fasterxml/**")
-  exclude("javax/**")
-  exclude("schema/**")
-  exclude("fr/**")
-  exclude("google/**")
-  exclude("groovy/**")
-  exclude("images/**")
-  exclude("**/*.conf")
-  exclude("**/*.so")
-  exclude("**/*.sxd")
-  exclude("**/*.xsd")
-  exclude("*.ddl")
-  exclude("**/*.txt")
-  exclude("**/*.md")
-  exclude("**/*.dtd")
-  exclude("**/*.thrift")
-  exclude("**/*.jdo")
-  exclude("**/LICENSE")
-  exclude("**/*.MF")
-  exclude("**/*.xml")
-  exclude("*.proto")
-  exclude("*.template")
-  exclude("webapps")
-  exclude("license/*")
-  exclude("*.xml")
-  exclude("*.css")
-  exclude("*.jnilib")
-  exclude("*.dll")
-  exclude("*.jocl")
-  exclude("NOTICE")
-
-  minimize()
-}
-
-tasks.jar {
-  dependsOn(tasks.named("shadowJar"))
-  archiveClassifier.set("empty")
-}
-
-tasks.compileJava {
-  dependsOn(":catalogs:catalog-jdbc-postgresql:runtimeJars")
-  dependsOn(":catalogs:catalog-lakehouse-paimon:runtimeJars")
-  dependsOn(":catalogs:catalog-jdbc-mysql:runtimeJars")
-  dependsOn(":catalogs:catalog-hive:runtimeJars")
-  dependsOn(":catalogs:catalog-hadoop:runtimeJars")
-}
diff --git 
a/catalogs/bundled-catalog/src/main/java/org/apache/gravitino/catalog/common/ClassProvider.java
 
b/catalogs/bundled-catalog/src/main/java/org/apache/gravitino/catalog/common/ClassProvider.java
deleted file mode 100644
index cc09dce2d..000000000
--- 
a/catalogs/bundled-catalog/src/main/java/org/apache/gravitino/catalog/common/ClassProvider.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.gravitino.catalog.common;
-
-import java.util.HashSet;
-import java.util.Set;
-import org.apache.gravitino.catalog.hive.HiveCatalogPropertiesMeta;
-import org.apache.gravitino.catalog.hive.HiveSchemaPropertiesMetadata;
-import org.apache.gravitino.catalog.hive.HiveTablePropertiesMetadata;
-import org.apache.gravitino.catalog.jdbc.JdbcTablePropertiesMetadata;
-import org.apache.gravitino.catalog.mysql.MysqlTablePropertiesMetadata;
-import org.apache.gravitino.connector.BasePropertiesMetadata;
-import org.apache.gravitino.connector.PropertiesMetadata;
-import org.apache.gravitino.connector.PropertyEntry;
-
-/**
- * The {@link ClassProvider} class serves as a container for the necessary 
classes used by the
- * Apache Gravitino query engine, with a primary focus on classes related to 
property metadata.
- *
- * <p>Purpose of this module and class:
- *
- * <pre>
- * - Catalog-related classes are essential for the query engine to directly 
access catalog information.
- * - The query engine should be able to detect catalog changes and 
automatically reload catalog-related
- *   information to ensure synchronization.
- * - Including catalog-related jar packages directly is suboptimal for query 
engines as it may introduce
- *   unnecessary content.
- * </pre>
- *
- * Therefore, this module is used to store the required classes for the query 
engine's
- * functionality.
- */
-@SuppressWarnings("UnusedVariable")
-public class ClassProvider {
-
-  private static final Set<Class<?>> BASE_CLASS =
-      new HashSet<Class<?>>() {
-        {
-          add(BasePropertiesMetadata.class);
-          add(PropertyEntry.class);
-          add(PropertiesMetadata.class);
-        }
-      };
-
-  private static final Set<Class<?>> HIVE_NEED_CLASS =
-      new HashSet<Class<?>>() {
-        {
-          add(HiveTablePropertiesMetadata.class);
-          add(HiveSchemaPropertiesMetadata.class);
-          add(HiveCatalogPropertiesMeta.class);
-        }
-      };
-
-  private static final Set<Class<?>> MYSQL_NEED_CLASS =
-      new HashSet<Class<?>>() {
-        {
-          add(MysqlTablePropertiesMetadata.class);
-          add(JdbcTablePropertiesMetadata.class);
-        }
-      };
-
-  private static final Set<Class<?>> PG_NEED_CLASS =
-      new HashSet<Class<?>>() {
-        {
-          // TODO
-        }
-      };
-}
diff --git 
a/catalogs/catalog-jdbc-common/src/main/java/org/apache/gravitino/catalog/jdbc/JdbcTablePropertiesMetadata.java
 b/catalogs/catalog-common/build.gradle.kts
similarity index 52%
copy from 
catalogs/catalog-jdbc-common/src/main/java/org/apache/gravitino/catalog/jdbc/JdbcTablePropertiesMetadata.java
copy to catalogs/catalog-common/build.gradle.kts
index 75d0458e5..421e8a229 100644
--- 
a/catalogs/catalog-jdbc-common/src/main/java/org/apache/gravitino/catalog/jdbc/JdbcTablePropertiesMetadata.java
+++ b/catalogs/catalog-common/build.gradle.kts
@@ -16,25 +16,12 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.gravitino.catalog.jdbc;
 
-import com.google.common.collect.Maps;
-import java.util.HashMap;
-import java.util.Map;
-import org.apache.gravitino.StringIdentifier;
-import org.apache.gravitino.connector.BasePropertiesMetadata;
-
-public abstract class JdbcTablePropertiesMetadata extends 
BasePropertiesMetadata {
-
-  public static final String COMMENT_KEY = "comment";
-
-  public Map<String, String> transformToJdbcProperties(Map<String, String> 
properties) {
-    HashMap<String, String> resultProperties = Maps.newHashMap(properties);
-    resultProperties.remove(StringIdentifier.ID_KEY);
-    return resultProperties;
-  }
+plugins {
+  id("java")
+}
 
-  public Map<String, String> convertFromJdbcProperties(Map<String, String> 
properties) {
-    return properties;
-  }
+// try avoid add extra dependencies because it is used by catalogs and 
connectors.
+dependencies {
+  implementation(libs.slf4j.api)
 }
diff --git 
a/catalogs/catalog-common/src/main/java/org/apache/gravitino/catalog/hive/HiveConstants.java
 
b/catalogs/catalog-common/src/main/java/org/apache/gravitino/catalog/hive/HiveConstants.java
new file mode 100644
index 000000000..8c88f8b20
--- /dev/null
+++ 
b/catalogs/catalog-common/src/main/java/org/apache/gravitino/catalog/hive/HiveConstants.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.gravitino.catalog.hive;
+
+public class HiveConstants {
+  // Catalog properties
+  public static final String METASTORE_URIS = "metastore.uris";
+  public static final String CLIENT_POOL_SIZE = "client.pool-size";
+  public static final String CLIENT_POOL_CACHE_EVICTION_INTERVAL_MS =
+      "client.pool-cache.eviction-interval-ms";
+  public static final String IMPERSONATION_ENABLE = "impersonation-enable";
+  public static final String KEY_TAB_URI = "kerberos.keytab-uri";
+  public static final String PRINCIPAL = "kerberos.principal";
+  public static final String CHECK_INTERVAL_SEC = 
"kerberos.check-interval-sec";
+  public static final String FETCH_TIMEOUT_SEC = 
"kerberos.keytab-fetch-timeout-sec";
+  public static final String LIST_ALL_TABLES = "list-all-tables";
+
+  // table properties
+  public static final String LOCATION = "location";
+  public static final String COMMENT = "comment";
+  public static final String NUM_FILES = "numFiles";
+  public static final String TOTAL_SIZE = "totalSize";
+  public static final String EXTERNAL = "EXTERNAL";
+  public static final String FORMAT = "format";
+  public static final String TABLE_TYPE = "table-type";
+  public static final String INPUT_FORMAT = "input-format";
+  public static final String OUTPUT_FORMAT = "output-format";
+  public static final String SERDE_NAME = "serde-name";
+  public static final String SERDE_LIB = "serde-lib";
+  public static final String SERDE_PARAMETER_PREFIX = "serde.parameter.";
+  public static final String TRANSIENT_LAST_DDL_TIME = "transient_lastDdlTime";
+}
diff --git 
a/catalogs/catalog-common/src/main/java/org/apache/gravitino/catalog/hive/HiveStorageConstants.java
 
b/catalogs/catalog-common/src/main/java/org/apache/gravitino/catalog/hive/HiveStorageConstants.java
new file mode 100644
index 000000000..1b70d6126
--- /dev/null
+++ 
b/catalogs/catalog-common/src/main/java/org/apache/gravitino/catalog/hive/HiveStorageConstants.java
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.gravitino.catalog.hive;
+
+public class HiveStorageConstants {
+  static final String SEQUENCEFILE_INPUT_FORMAT_CLASS =
+      "org.apache.hadoop.mapred.SequenceFileInputFormat";
+  static final String SEQUENCEFILE_OUTPUT_FORMAT_CLASS =
+      "org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat";
+
+  public static final String ORC_INPUT_FORMAT_CLASS =
+      "org.apache.hadoop.hive.ql.io.orc.OrcInputFormat";
+  public static final String ORC_OUTPUT_FORMAT_CLASS =
+      "org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat";
+  public static final String ORC_SERDE_CLASS = 
"org.apache.hadoop.hive.ql.io.orc.OrcSerde";
+
+  public static final String PARQUET_INPUT_FORMAT_CLASS =
+      "org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat";
+  public static final String PARQUET_OUTPUT_FORMAT_CLASS =
+      "org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat";
+  public static final String PARQUET_SERDE_CLASS =
+      "org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe";
+
+  static final String COLUMNAR_SERDE_CLASS = 
"org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe";
+  static final String RCFILE_INPUT_FORMAT_CLASS = 
"org.apache.hadoop.hive.ql.io.RCFileInputFormat";
+  static final String RCFILE_OUTPUT_FORMAT_CLASS =
+      "org.apache.hadoop.hive.ql.io.RCFileOutputFormat";
+
+  static final String AVRO_INPUT_FORMAT_CLASS =
+      "org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat";
+  static final String AVRO_OUTPUT_FORMAT_CLASS =
+      "org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat";
+  static final String AVRO_SERDE_CLASS = 
"org.apache.hadoop.hive.serde2.avro.AvroSerDe";
+
+  public static final String TEXT_INPUT_FORMAT_CLASS = 
"org.apache.hadoop.mapred.TextInputFormat";
+
+  public static final String IGNORE_KEY_OUTPUT_FORMAT_CLASS =
+      "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat";
+  public static final String LAZY_SIMPLE_SERDE_CLASS =
+      "org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe";
+
+  static final String JSON_SERDE_CLASS = 
"org.apache.hive.hcatalog.data.JsonSerDe";
+
+  public static final String OPENCSV_SERDE_CLASS = 
"org.apache.hadoop.hive.serde2.OpenCSVSerde";
+
+  static final String REGEX_SERDE_CLASS = 
"org.apache.hadoop.hive.serde2.RegexSerDe";
+}
diff --git 
a/catalogs/catalog-common/src/main/java/org/apache/gravitino/catalog/hive/StorageFormat.java
 
b/catalogs/catalog-common/src/main/java/org/apache/gravitino/catalog/hive/StorageFormat.java
new file mode 100644
index 000000000..51b33a74a
--- /dev/null
+++ 
b/catalogs/catalog-common/src/main/java/org/apache/gravitino/catalog/hive/StorageFormat.java
@@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.gravitino.catalog.hive;
+
+public enum StorageFormat {
+  SEQUENCEFILE(
+      HiveStorageConstants.SEQUENCEFILE_INPUT_FORMAT_CLASS,
+      HiveStorageConstants.SEQUENCEFILE_OUTPUT_FORMAT_CLASS,
+      HiveStorageConstants.LAZY_SIMPLE_SERDE_CLASS),
+  TEXTFILE(
+      HiveStorageConstants.TEXT_INPUT_FORMAT_CLASS,
+      HiveStorageConstants.IGNORE_KEY_OUTPUT_FORMAT_CLASS,
+      HiveStorageConstants.LAZY_SIMPLE_SERDE_CLASS),
+  RCFILE(
+      HiveStorageConstants.RCFILE_INPUT_FORMAT_CLASS,
+      HiveStorageConstants.RCFILE_OUTPUT_FORMAT_CLASS,
+      HiveStorageConstants.COLUMNAR_SERDE_CLASS),
+  ORC(
+      HiveStorageConstants.ORC_INPUT_FORMAT_CLASS,
+      HiveStorageConstants.ORC_OUTPUT_FORMAT_CLASS,
+      HiveStorageConstants.ORC_SERDE_CLASS),
+  PARQUET(
+      HiveStorageConstants.PARQUET_INPUT_FORMAT_CLASS,
+      HiveStorageConstants.PARQUET_OUTPUT_FORMAT_CLASS,
+      HiveStorageConstants.PARQUET_SERDE_CLASS),
+  AVRO(
+      HiveStorageConstants.AVRO_INPUT_FORMAT_CLASS,
+      HiveStorageConstants.AVRO_OUTPUT_FORMAT_CLASS,
+      HiveStorageConstants.AVRO_SERDE_CLASS),
+  JSON(
+      HiveStorageConstants.TEXT_INPUT_FORMAT_CLASS,
+      HiveStorageConstants.IGNORE_KEY_OUTPUT_FORMAT_CLASS,
+      HiveStorageConstants.JSON_SERDE_CLASS),
+  CSV(
+      HiveStorageConstants.TEXT_INPUT_FORMAT_CLASS,
+      HiveStorageConstants.IGNORE_KEY_OUTPUT_FORMAT_CLASS,
+      HiveStorageConstants.OPENCSV_SERDE_CLASS),
+  REGEX(
+      HiveStorageConstants.TEXT_INPUT_FORMAT_CLASS,
+      HiveStorageConstants.IGNORE_KEY_OUTPUT_FORMAT_CLASS,
+      HiveStorageConstants.REGEX_SERDE_CLASS);
+
+  private final String inputFormat;
+  private final String outputFormat;
+  private final String serde;
+
+  StorageFormat(String inputFormat, String outputFormat, String serde) {
+    if (inputFormat == null) throw new RuntimeException("inputFormat must not 
be null");
+    if (outputFormat == null) throw new RuntimeException("outputFormat must 
not be null");
+    if (serde == null) throw new RuntimeException("serde must not be null");
+    this.inputFormat = inputFormat;
+    this.outputFormat = outputFormat;
+    this.serde = serde;
+  }
+
+  public String getInputFormat() {
+    return inputFormat;
+  }
+
+  public String getOutputFormat() {
+    return outputFormat;
+  }
+
+  public String getSerde() {
+    return serde;
+  }
+}
diff --git 
a/catalogs/catalog-jdbc-common/src/main/java/org/apache/gravitino/catalog/jdbc/JdbcTablePropertiesMetadata.java
 
b/catalogs/catalog-common/src/main/java/org/apache/gravitino/catalog/hive/TableType.java
similarity index 52%
copy from 
catalogs/catalog-jdbc-common/src/main/java/org/apache/gravitino/catalog/jdbc/JdbcTablePropertiesMetadata.java
copy to 
catalogs/catalog-common/src/main/java/org/apache/gravitino/catalog/hive/TableType.java
index 75d0458e5..f52df1b13 100644
--- 
a/catalogs/catalog-jdbc-common/src/main/java/org/apache/gravitino/catalog/jdbc/JdbcTablePropertiesMetadata.java
+++ 
b/catalogs/catalog-common/src/main/java/org/apache/gravitino/catalog/hive/TableType.java
@@ -16,25 +16,12 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.gravitino.catalog.jdbc;
+package org.apache.gravitino.catalog.hive;
 
-import com.google.common.collect.Maps;
-import java.util.HashMap;
-import java.util.Map;
-import org.apache.gravitino.StringIdentifier;
-import org.apache.gravitino.connector.BasePropertiesMetadata;
-
-public abstract class JdbcTablePropertiesMetadata extends 
BasePropertiesMetadata {
-
-  public static final String COMMENT_KEY = "comment";
-
-  public Map<String, String> transformToJdbcProperties(Map<String, String> 
properties) {
-    HashMap<String, String> resultProperties = Maps.newHashMap(properties);
-    resultProperties.remove(StringIdentifier.ID_KEY);
-    return resultProperties;
-  }
-
-  public Map<String, String> convertFromJdbcProperties(Map<String, String> 
properties) {
-    return properties;
-  }
+public enum TableType {
+  MANAGED_TABLE,
+  EXTERNAL_TABLE,
+  VIRTUAL_VIEW,
+  INDEX_TABLE,
+  VIRTUAL_INDEX,
 }
diff --git 
a/catalogs/catalog-jdbc-common/src/main/java/org/apache/gravitino/catalog/jdbc/JdbcTablePropertiesMetadata.java
 
b/catalogs/catalog-common/src/main/java/org/apache/gravitino/catalog/jdbc/JdbcConstants.java
similarity index 54%
copy from 
catalogs/catalog-jdbc-common/src/main/java/org/apache/gravitino/catalog/jdbc/JdbcTablePropertiesMetadata.java
copy to 
catalogs/catalog-common/src/main/java/org/apache/gravitino/catalog/jdbc/JdbcConstants.java
index 75d0458e5..29fc64dd1 100644
--- 
a/catalogs/catalog-jdbc-common/src/main/java/org/apache/gravitino/catalog/jdbc/JdbcTablePropertiesMetadata.java
+++ 
b/catalogs/catalog-common/src/main/java/org/apache/gravitino/catalog/jdbc/JdbcConstants.java
@@ -18,23 +18,6 @@
  */
 package org.apache.gravitino.catalog.jdbc;
 
-import com.google.common.collect.Maps;
-import java.util.HashMap;
-import java.util.Map;
-import org.apache.gravitino.StringIdentifier;
-import org.apache.gravitino.connector.BasePropertiesMetadata;
-
-public abstract class JdbcTablePropertiesMetadata extends 
BasePropertiesMetadata {
-
-  public static final String COMMENT_KEY = "comment";
-
-  public Map<String, String> transformToJdbcProperties(Map<String, String> 
properties) {
-    HashMap<String, String> resultProperties = Maps.newHashMap(properties);
-    resultProperties.remove(StringIdentifier.ID_KEY);
-    return resultProperties;
-  }
-
-  public Map<String, String> convertFromJdbcProperties(Map<String, String> 
properties) {
-    return properties;
-  }
+public class JdbcConstants {
+  public static final String COMMENT = "comment";
 }
diff --git 
a/catalogs/bundled-catalog/src/main/java/org/apache/gravitino/catalog/lakehouse/iceberg/IcebergConstants.java
 
b/catalogs/catalog-common/src/main/java/org/apache/gravitino/catalog/lakehouse/iceberg/IcebergConstants.java
similarity index 100%
rename from 
catalogs/bundled-catalog/src/main/java/org/apache/gravitino/catalog/lakehouse/iceberg/IcebergConstants.java
rename to 
catalogs/catalog-common/src/main/java/org/apache/gravitino/catalog/lakehouse/iceberg/IcebergConstants.java
diff --git 
a/catalogs/catalog-jdbc-common/src/main/java/org/apache/gravitino/catalog/jdbc/JdbcTablePropertiesMetadata.java
 
b/catalogs/catalog-common/src/main/java/org/apache/gravitino/catalog/mysql/MysqlConstants.java
similarity index 52%
copy from 
catalogs/catalog-jdbc-common/src/main/java/org/apache/gravitino/catalog/jdbc/JdbcTablePropertiesMetadata.java
copy to 
catalogs/catalog-common/src/main/java/org/apache/gravitino/catalog/mysql/MysqlConstants.java
index 75d0458e5..0915f6247 100644
--- 
a/catalogs/catalog-jdbc-common/src/main/java/org/apache/gravitino/catalog/jdbc/JdbcTablePropertiesMetadata.java
+++ 
b/catalogs/catalog-common/src/main/java/org/apache/gravitino/catalog/mysql/MysqlConstants.java
@@ -16,25 +16,11 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.gravitino.catalog.jdbc;
+package org.apache.gravitino.catalog.mysql;
 
-import com.google.common.collect.Maps;
-import java.util.HashMap;
-import java.util.Map;
-import org.apache.gravitino.StringIdentifier;
-import org.apache.gravitino.connector.BasePropertiesMetadata;
-
-public abstract class JdbcTablePropertiesMetadata extends 
BasePropertiesMetadata {
-
-  public static final String COMMENT_KEY = "comment";
-
-  public Map<String, String> transformToJdbcProperties(Map<String, String> 
properties) {
-    HashMap<String, String> resultProperties = Maps.newHashMap(properties);
-    resultProperties.remove(StringIdentifier.ID_KEY);
-    return resultProperties;
-  }
-
-  public Map<String, String> convertFromJdbcProperties(Map<String, String> 
properties) {
-    return properties;
-  }
+public class MysqlConstants {
+  public static final String GRAVITINO_ENGINE_KEY = "engine";
+  public static final String MYSQL_ENGINE_KEY = "ENGINE";
+  public static final String GRAVITINO_AUTO_INCREMENT_OFFSET_KEY = 
"auto-increment-offset";
+  public static final String MYSQL_AUTO_INCREMENT_OFFSET_KEY = 
"AUTO_INCREMENT";
 }
diff --git 
a/catalogs/bundled-catalog/src/main/java/org/apache/gravitino/catalog/property/PropertyConverter.java
 
b/catalogs/catalog-common/src/main/java/org/apache/gravitino/catalog/property/PropertyConverter.java
similarity index 100%
rename from 
catalogs/bundled-catalog/src/main/java/org/apache/gravitino/catalog/property/PropertyConverter.java
rename to 
catalogs/catalog-common/src/main/java/org/apache/gravitino/catalog/property/PropertyConverter.java
diff --git a/catalogs/catalog-hive/build.gradle.kts 
b/catalogs/catalog-hive/build.gradle.kts
index 1a8a9015a..da7284292 100644
--- a/catalogs/catalog-hive/build.gradle.kts
+++ b/catalogs/catalog-hive/build.gradle.kts
@@ -31,6 +31,7 @@ val scalaCollectionCompatVersion: String = 
libs.versions.scala.collection.compat
 
 dependencies {
   implementation(project(":api"))
+  implementation(project(":catalogs:catalog-common"))
   implementation(project(":core"))
 
   implementation(libs.caffeine)
diff --git 
a/catalogs/catalog-hive/src/main/java/org/apache/gravitino/catalog/hive/HiveCatalogOperations.java
 
b/catalogs/catalog-hive/src/main/java/org/apache/gravitino/catalog/hive/HiveCatalogOperations.java
index 572af9fe1..a7f70b97e 100644
--- 
a/catalogs/catalog-hive/src/main/java/org/apache/gravitino/catalog/hive/HiveCatalogOperations.java
+++ 
b/catalogs/catalog-hive/src/main/java/org/apache/gravitino/catalog/hive/HiveCatalogOperations.java
@@ -59,7 +59,6 @@ import org.apache.gravitino.Catalog;
 import org.apache.gravitino.NameIdentifier;
 import org.apache.gravitino.Namespace;
 import org.apache.gravitino.SchemaChange;
-import org.apache.gravitino.catalog.hive.HiveTablePropertiesMetadata.TableType;
 import org.apache.gravitino.connector.CatalogInfo;
 import org.apache.gravitino.connector.CatalogOperations;
 import org.apache.gravitino.connector.HasPropertyMetadata;
diff --git 
a/catalogs/catalog-hive/src/main/java/org/apache/gravitino/catalog/hive/HiveCatalogPropertiesMeta.java
 
b/catalogs/catalog-hive/src/main/java/org/apache/gravitino/catalog/hive/HiveCatalogPropertiesMeta.java
index 1c4548362..a9eb8b0fb 100644
--- 
a/catalogs/catalog-hive/src/main/java/org/apache/gravitino/catalog/hive/HiveCatalogPropertiesMeta.java
+++ 
b/catalogs/catalog-hive/src/main/java/org/apache/gravitino/catalog/hive/HiveCatalogPropertiesMeta.java
@@ -27,30 +27,30 @@ import org.apache.gravitino.connector.PropertyEntry;
 
 public class HiveCatalogPropertiesMeta extends BaseCatalogPropertiesMetadata {
 
-  public static final String CLIENT_POOL_SIZE = "client.pool-size";
+  public static final String CLIENT_POOL_SIZE = HiveConstants.CLIENT_POOL_SIZE;
   public static final int DEFAULT_CLIENT_POOL_SIZE = 1;
 
-  public static final String METASTORE_URIS = "metastore.uris";
+  public static final String METASTORE_URIS = HiveConstants.METASTORE_URIS;
 
   public static final String CLIENT_POOL_CACHE_EVICTION_INTERVAL_MS =
-      "client.pool-cache.eviction-interval-ms";
+      HiveConstants.CLIENT_POOL_CACHE_EVICTION_INTERVAL_MS;
 
   public static final long DEFAULT_CLIENT_POOL_CACHE_EVICTION_INTERVAL_MS =
       TimeUnit.MINUTES.toMillis(5);
 
-  public static final String IMPERSONATION_ENABLE = "impersonation-enable";
+  public static final String IMPERSONATION_ENABLE = 
HiveConstants.IMPERSONATION_ENABLE;
 
   public static final boolean DEFAULT_IMPERSONATION_ENABLE = false;
 
-  public static final String KEY_TAB_URI = "kerberos.keytab-uri";
+  public static final String KEY_TAB_URI = HiveConstants.KEY_TAB_URI;
 
-  public static final String PRINCIPAL = "kerberos.principal";
+  public static final String PRINCIPAL = HiveConstants.PRINCIPAL;
 
-  public static final String CHECK_INTERVAL_SEC = 
"kerberos.check-interval-sec";
+  public static final String CHECK_INTERVAL_SEC = 
HiveConstants.CHECK_INTERVAL_SEC;
 
-  public static final String FETCH_TIMEOUT_SEC = 
"kerberos.keytab-fetch-timeout-sec";
+  public static final String FETCH_TIMEOUT_SEC = 
HiveConstants.FETCH_TIMEOUT_SEC;
 
-  public static final String LIST_ALL_TABLES = "list-all-tables";
+  public static final String LIST_ALL_TABLES = HiveConstants.LIST_ALL_TABLES;
 
   public static final boolean DEFAULT_LIST_ALL_TABLES = false;
 
diff --git 
a/catalogs/catalog-hive/src/main/java/org/apache/gravitino/catalog/hive/HiveSchemaPropertiesMetadata.java
 
b/catalogs/catalog-hive/src/main/java/org/apache/gravitino/catalog/hive/HiveSchemaPropertiesMetadata.java
index 992e273e5..6de5e0dfd 100644
--- 
a/catalogs/catalog-hive/src/main/java/org/apache/gravitino/catalog/hive/HiveSchemaPropertiesMetadata.java
+++ 
b/catalogs/catalog-hive/src/main/java/org/apache/gravitino/catalog/hive/HiveSchemaPropertiesMetadata.java
@@ -28,7 +28,7 @@ import org.apache.gravitino.connector.BasePropertiesMetadata;
 import org.apache.gravitino.connector.PropertyEntry;
 
 public class HiveSchemaPropertiesMetadata extends BasePropertiesMetadata {
-  public static final String LOCATION = "location";
+  public static final String LOCATION = HiveConstants.LOCATION;
   private static final Map<String, PropertyEntry<?>> propertiesMetadata;
 
   static {
diff --git 
a/catalogs/catalog-hive/src/main/java/org/apache/gravitino/catalog/hive/HiveTable.java
 
b/catalogs/catalog-hive/src/main/java/org/apache/gravitino/catalog/hive/HiveTable.java
index faa0d8035..bb5d865e9 100644
--- 
a/catalogs/catalog-hive/src/main/java/org/apache/gravitino/catalog/hive/HiveTable.java
+++ 
b/catalogs/catalog-hive/src/main/java/org/apache/gravitino/catalog/hive/HiveTable.java
@@ -33,7 +33,6 @@ import java.util.stream.Stream;
 import lombok.ToString;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.ArrayUtils;
-import org.apache.gravitino.catalog.hive.HiveTablePropertiesMetadata.TableType;
 import org.apache.gravitino.catalog.hive.converter.HiveDataTypeConverter;
 import org.apache.gravitino.connector.BaseTable;
 import org.apache.gravitino.connector.PropertiesMetadata;
@@ -286,8 +285,8 @@ public class HiveTable extends BaseTable {
         .ifPresent(l -> 
sd.setLocation(properties().get(HiveTablePropertiesMetadata.LOCATION)));
 
     sd.setSerdeInfo(buildSerDeInfo(tablePropertiesMetadata));
-    HiveTablePropertiesMetadata.StorageFormat storageFormat =
-        (HiveTablePropertiesMetadata.StorageFormat)
+    StorageFormat storageFormat =
+        (StorageFormat)
             tablePropertiesMetadata.getOrDefault(properties(), 
HiveTablePropertiesMetadata.FORMAT);
     sd.setInputFormat(storageFormat.getInputFormat());
     sd.setOutputFormat(storageFormat.getOutputFormat());
@@ -321,8 +320,8 @@ public class HiveTable extends BaseTable {
     SerDeInfo serDeInfo = new SerDeInfo();
     
serDeInfo.setName(properties().getOrDefault(HiveTablePropertiesMetadata.SERDE_NAME,
 name()));
 
-    HiveTablePropertiesMetadata.StorageFormat storageFormat =
-        (HiveTablePropertiesMetadata.StorageFormat)
+    StorageFormat storageFormat =
+        (StorageFormat)
             tablePropertiesMetadata.getOrDefault(properties(), 
HiveTablePropertiesMetadata.FORMAT);
     serDeInfo.setSerializationLib(storageFormat.getSerde());
     // Individually specified SERDE_LIB can override the serdeLib of FORMAT
diff --git 
a/catalogs/catalog-hive/src/main/java/org/apache/gravitino/catalog/hive/HiveTablePropertiesMetadata.java
 
b/catalogs/catalog-hive/src/main/java/org/apache/gravitino/catalog/hive/HiveTablePropertiesMetadata.java
index fdc364956..4508e8adc 100644
--- 
a/catalogs/catalog-hive/src/main/java/org/apache/gravitino/catalog/hive/HiveTablePropertiesMetadata.java
+++ 
b/catalogs/catalog-hive/src/main/java/org/apache/gravitino/catalog/hive/HiveTablePropertiesMetadata.java
@@ -18,15 +18,11 @@
  */
 package org.apache.gravitino.catalog.hive;
 
-import static 
org.apache.gravitino.catalog.hive.HiveTablePropertiesMetadata.StorageFormat.TEXTFILE;
-import static 
org.apache.gravitino.catalog.hive.HiveTablePropertiesMetadata.TableType.MANAGED_TABLE;
 import static 
org.apache.gravitino.connector.PropertyEntry.booleanReservedPropertyEntry;
 import static 
org.apache.gravitino.connector.PropertyEntry.enumImmutablePropertyEntry;
 import static 
org.apache.gravitino.connector.PropertyEntry.stringImmutablePropertyEntry;
 import static 
org.apache.gravitino.connector.PropertyEntry.stringReservedPropertyEntry;
 
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Maps;
 import java.util.List;
@@ -35,114 +31,19 @@ import 
org.apache.gravitino.connector.BasePropertiesMetadata;
 import org.apache.gravitino.connector.PropertyEntry;
 
 public class HiveTablePropertiesMetadata extends BasePropertiesMetadata {
-  public static final String COMMENT = "comment";
-  public static final String NUM_FILES = "numFiles";
-  public static final String TOTAL_SIZE = "totalSize";
-  public static final String EXTERNAL = "EXTERNAL";
-  public static final String LOCATION = "location";
-  public static final String FORMAT = "format";
-  public static final String TABLE_TYPE = "table-type";
-  public static final String INPUT_FORMAT = "input-format";
-  public static final String OUTPUT_FORMAT = "output-format";
-  public static final String SERDE_NAME = "serde-name";
-  public static final String SERDE_LIB = "serde-lib";
-  public static final String SERDE_PARAMETER_PREFIX = "serde.parameter.";
-  public static final String TRANSIENT_LAST_DDL_TIME = "transient_lastDdlTime";
-
-  public static final String TEXT_INPUT_FORMAT_CLASS = 
"org.apache.hadoop.mapred.TextInputFormat";
-  public static final String IGNORE_KEY_OUTPUT_FORMAT_CLASS =
-      "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat";
-  public static final String LAZY_SIMPLE_SERDE_CLASS =
-      "org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe";
-
-  private static final String SEQUENCEFILE_INPUT_FORMAT_CLASS =
-      "org.apache.hadoop.mapred.SequenceFileInputFormat";
-  private static final String SEQUENCEFILE_OUTPUT_FORMAT_CLASS =
-      "org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat";
-
-  @VisibleForTesting
-  public static final String ORC_INPUT_FORMAT_CLASS =
-      "org.apache.hadoop.hive.ql.io.orc.OrcInputFormat";
-
-  @VisibleForTesting
-  public static final String ORC_OUTPUT_FORMAT_CLASS =
-      "org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat";
-
-  @VisibleForTesting
-  public static final String ORC_SERDE_CLASS = 
"org.apache.hadoop.hive.ql.io.orc.OrcSerde";
-
-  public static final String PARQUET_INPUT_FORMAT_CLASS =
-      "org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat";
-  public static final String PARQUET_OUTPUT_FORMAT_CLASS =
-      "org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat";
-  public static final String PARQUET_SERDE_CLASS =
-      "org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe";
-  private static final String COLUMNAR_SERDE_CLASS =
-      "org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe";
-  private static final String RCFILE_INPUT_FORMAT_CLASS =
-      "org.apache.hadoop.hive.ql.io.RCFileInputFormat";
-  private static final String RCFILE_OUTPUT_FORMAT_CLASS =
-      "org.apache.hadoop.hive.ql.io.RCFileOutputFormat";
-  private static final String AVRO_INPUT_FORMAT_CLASS =
-      "org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat";
-  private static final String AVRO_OUTPUT_FORMAT_CLASS =
-      "org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat";
-  private static final String AVRO_SERDE_CLASS = 
"org.apache.hadoop.hive.serde2.avro.AvroSerDe";
-  private static final String JSON_SERDE_CLASS = 
"org.apache.hive.hcatalog.data.JsonSerDe";
-
-  @VisibleForTesting
-  public static final String OPENCSV_SERDE_CLASS = 
"org.apache.hadoop.hive.serde2.OpenCSVSerde";
-
-  private static final String REGEX_SERDE_CLASS = 
"org.apache.hadoop.hive.serde2.RegexSerDe";
-
-  public enum TableType {
-    MANAGED_TABLE,
-    EXTERNAL_TABLE,
-    VIRTUAL_VIEW,
-    INDEX_TABLE,
-    VIRTUAL_INDEX,
-  }
-
-  // In embedded test mode, HiveTablePropertiesMetadata will be loaded by 
spark connector which has
-  // different classloaders with Hive catalog. If StorageFormat is package 
scope, it couldn't
-  // be accessed by Hive catalog related classes in same package, so making it 
public.
-  public enum StorageFormat {
-    SEQUENCEFILE(
-        SEQUENCEFILE_INPUT_FORMAT_CLASS, SEQUENCEFILE_OUTPUT_FORMAT_CLASS, 
LAZY_SIMPLE_SERDE_CLASS),
-    TEXTFILE(TEXT_INPUT_FORMAT_CLASS, IGNORE_KEY_OUTPUT_FORMAT_CLASS, 
LAZY_SIMPLE_SERDE_CLASS),
-    RCFILE(RCFILE_INPUT_FORMAT_CLASS, RCFILE_OUTPUT_FORMAT_CLASS, 
COLUMNAR_SERDE_CLASS),
-    ORC(ORC_INPUT_FORMAT_CLASS, ORC_OUTPUT_FORMAT_CLASS, ORC_SERDE_CLASS),
-    PARQUET(PARQUET_INPUT_FORMAT_CLASS, PARQUET_OUTPUT_FORMAT_CLASS, 
PARQUET_SERDE_CLASS),
-    AVRO(AVRO_INPUT_FORMAT_CLASS, AVRO_OUTPUT_FORMAT_CLASS, AVRO_SERDE_CLASS),
-    JSON(TEXT_INPUT_FORMAT_CLASS, IGNORE_KEY_OUTPUT_FORMAT_CLASS, 
JSON_SERDE_CLASS),
-    CSV(TEXT_INPUT_FORMAT_CLASS, IGNORE_KEY_OUTPUT_FORMAT_CLASS, 
OPENCSV_SERDE_CLASS),
-    REGEX(TEXT_INPUT_FORMAT_CLASS, IGNORE_KEY_OUTPUT_FORMAT_CLASS, 
REGEX_SERDE_CLASS);
-
-    private final String inputFormat;
-    private final String outputFormat;
-    private final String serde;
-
-    StorageFormat(String inputFormat, String outputFormat, String serde) {
-      Preconditions.checkArgument(inputFormat != null, "inputFormat must not 
be null");
-      Preconditions.checkArgument(outputFormat != null, "outputFormat must not 
be null");
-      Preconditions.checkArgument(serde != null, "serde must not be null");
-      this.inputFormat = inputFormat;
-      this.outputFormat = outputFormat;
-      this.serde = serde;
-    }
-
-    public String getInputFormat() {
-      return inputFormat;
-    }
-
-    public String getOutputFormat() {
-      return outputFormat;
-    }
-
-    public String getSerde() {
-      return serde;
-    }
-  }
+  public static final String COMMENT = HiveConstants.COMMENT;
+  public static final String NUM_FILES = HiveConstants.NUM_FILES;
+  public static final String TOTAL_SIZE = HiveConstants.TOTAL_SIZE;
+  public static final String EXTERNAL = HiveConstants.EXTERNAL;
+  public static final String LOCATION = HiveConstants.LOCATION;
+  public static final String FORMAT = HiveConstants.FORMAT;
+  public static final String TABLE_TYPE = HiveConstants.TABLE_TYPE;
+  public static final String INPUT_FORMAT = HiveConstants.INPUT_FORMAT;
+  public static final String OUTPUT_FORMAT = HiveConstants.OUTPUT_FORMAT;
+  public static final String SERDE_NAME = HiveConstants.SERDE_NAME;
+  public static final String SERDE_LIB = HiveConstants.SERDE_LIB;
+  public static final String SERDE_PARAMETER_PREFIX = 
HiveConstants.SERDE_PARAMETER_PREFIX;
+  public static final String TRANSIENT_LAST_DDL_TIME = 
HiveConstants.TRANSIENT_LAST_DDL_TIME;
 
   private static final Map<String, PropertyEntry<?>> propertiesMetadata;
 
@@ -166,7 +67,7 @@ public class HiveTablePropertiesMetadata extends 
BasePropertiesMetadata {
                 "Type of the table",
                 false,
                 TableType.class,
-                MANAGED_TABLE,
+                TableType.MANAGED_TABLE,
                 false,
                 false),
             enumImmutablePropertyEntry(
@@ -174,21 +75,21 @@ public class HiveTablePropertiesMetadata extends 
BasePropertiesMetadata {
                 "The table file format",
                 false,
                 StorageFormat.class,
-                TEXTFILE,
+                StorageFormat.TEXTFILE,
                 false,
                 false),
             stringImmutablePropertyEntry(
                 INPUT_FORMAT,
                 "The input format class for the table",
                 false,
-                TEXT_INPUT_FORMAT_CLASS,
+                HiveStorageConstants.TEXT_INPUT_FORMAT_CLASS,
                 false,
                 false),
             stringImmutablePropertyEntry(
                 OUTPUT_FORMAT,
                 "The output format class for the table",
                 false,
-                IGNORE_KEY_OUTPUT_FORMAT_CLASS,
+                HiveStorageConstants.IGNORE_KEY_OUTPUT_FORMAT_CLASS,
                 false,
                 false),
             stringReservedPropertyEntry(TRANSIENT_LAST_DDL_TIME, "Last DDL 
time", false),
@@ -198,7 +99,7 @@ public class HiveTablePropertiesMetadata extends 
BasePropertiesMetadata {
                 SERDE_LIB,
                 "The serde library class for the table",
                 false,
-                LAZY_SIMPLE_SERDE_CLASS,
+                HiveStorageConstants.LAZY_SIMPLE_SERDE_CLASS,
                 false,
                 false));
 
diff --git 
a/catalogs/catalog-hive/src/test/java/org/apache/gravitino/catalog/hive/integration/test/CatalogHiveIT.java
 
b/catalogs/catalog-hive/src/test/java/org/apache/gravitino/catalog/hive/integration/test/CatalogHiveIT.java
index a2d2e9995..64c9f50ee 100644
--- 
a/catalogs/catalog-hive/src/test/java/org/apache/gravitino/catalog/hive/integration/test/CatalogHiveIT.java
+++ 
b/catalogs/catalog-hive/src/test/java/org/apache/gravitino/catalog/hive/integration/test/CatalogHiveIT.java
@@ -22,19 +22,16 @@ import static 
org.apache.gravitino.catalog.hive.HiveCatalogPropertiesMeta.METAST
 import static 
org.apache.gravitino.catalog.hive.HiveTablePropertiesMetadata.COMMENT;
 import static 
org.apache.gravitino.catalog.hive.HiveTablePropertiesMetadata.EXTERNAL;
 import static 
org.apache.gravitino.catalog.hive.HiveTablePropertiesMetadata.FORMAT;
-import static 
org.apache.gravitino.catalog.hive.HiveTablePropertiesMetadata.IGNORE_KEY_OUTPUT_FORMAT_CLASS;
 import static 
org.apache.gravitino.catalog.hive.HiveTablePropertiesMetadata.INPUT_FORMAT;
 import static 
org.apache.gravitino.catalog.hive.HiveTablePropertiesMetadata.LOCATION;
 import static 
org.apache.gravitino.catalog.hive.HiveTablePropertiesMetadata.NUM_FILES;
-import static 
org.apache.gravitino.catalog.hive.HiveTablePropertiesMetadata.OPENCSV_SERDE_CLASS;
 import static 
org.apache.gravitino.catalog.hive.HiveTablePropertiesMetadata.OUTPUT_FORMAT;
 import static 
org.apache.gravitino.catalog.hive.HiveTablePropertiesMetadata.SERDE_LIB;
 import static 
org.apache.gravitino.catalog.hive.HiveTablePropertiesMetadata.TABLE_TYPE;
-import static 
org.apache.gravitino.catalog.hive.HiveTablePropertiesMetadata.TEXT_INPUT_FORMAT_CLASS;
 import static 
org.apache.gravitino.catalog.hive.HiveTablePropertiesMetadata.TOTAL_SIZE;
 import static 
org.apache.gravitino.catalog.hive.HiveTablePropertiesMetadata.TRANSIENT_LAST_DDL_TIME;
-import static 
org.apache.gravitino.catalog.hive.HiveTablePropertiesMetadata.TableType.EXTERNAL_TABLE;
-import static 
org.apache.gravitino.catalog.hive.HiveTablePropertiesMetadata.TableType.MANAGED_TABLE;
+import static org.apache.gravitino.catalog.hive.TableType.EXTERNAL_TABLE;
+import static org.apache.gravitino.catalog.hive.TableType.MANAGED_TABLE;
 import static org.apache.hadoop.hive.serde.serdeConstants.DATE_TYPE_NAME;
 import static org.apache.hadoop.hive.serde.serdeConstants.INT_TYPE_NAME;
 import static org.apache.hadoop.hive.serde.serdeConstants.STRING_TYPE_NAME;
@@ -64,8 +61,9 @@ import org.apache.gravitino.auth.AuthConstants;
 import org.apache.gravitino.catalog.hive.HiveCatalogOperations;
 import org.apache.gravitino.catalog.hive.HiveClientPool;
 import org.apache.gravitino.catalog.hive.HiveSchemaPropertiesMetadata;
+import org.apache.gravitino.catalog.hive.HiveStorageConstants;
 import org.apache.gravitino.catalog.hive.HiveTablePropertiesMetadata;
-import org.apache.gravitino.catalog.hive.HiveTablePropertiesMetadata.TableType;
+import org.apache.gravitino.catalog.hive.TableType;
 import org.apache.gravitino.client.GravitinoMetalake;
 import org.apache.gravitino.connector.BaseCatalog;
 import org.apache.gravitino.exceptions.NoSuchCatalogException;
@@ -594,15 +592,19 @@ public class CatalogHiveIT extends AbstractIT {
                     FORMAT,
                     "textfile",
                     SERDE_LIB,
-                    OPENCSV_SERDE_CLASS),
+                    HiveStorageConstants.OPENCSV_SERDE_CLASS),
                 Transforms.EMPTY_TRANSFORM);
     org.apache.hadoop.hive.metastore.api.Table actualTable2 =
         hiveClientPool.run(client -> client.getTable(schemaName, table2));
 
     Assertions.assertEquals(
-        OPENCSV_SERDE_CLASS, 
actualTable2.getSd().getSerdeInfo().getSerializationLib());
-    Assertions.assertEquals(TEXT_INPUT_FORMAT_CLASS, 
actualTable2.getSd().getInputFormat());
-    Assertions.assertEquals(IGNORE_KEY_OUTPUT_FORMAT_CLASS, 
actualTable2.getSd().getOutputFormat());
+        HiveStorageConstants.OPENCSV_SERDE_CLASS,
+        actualTable2.getSd().getSerdeInfo().getSerializationLib());
+    Assertions.assertEquals(
+        HiveStorageConstants.TEXT_INPUT_FORMAT_CLASS, 
actualTable2.getSd().getInputFormat());
+    Assertions.assertEquals(
+        HiveStorageConstants.IGNORE_KEY_OUTPUT_FORMAT_CLASS,
+        actualTable2.getSd().getOutputFormat());
     Assertions.assertEquals(EXTERNAL_TABLE.name(), 
actualTable2.getTableType());
     Assertions.assertEquals(table2.toLowerCase(), 
actualTable2.getSd().getSerdeInfo().getName());
     Assertions.assertEquals(TABLE_COMMENT, 
actualTable2.getParameters().get(COMMENT));
diff --git a/catalogs/catalog-jdbc-common/build.gradle.kts 
b/catalogs/catalog-jdbc-common/build.gradle.kts
index 05200302d..4f845bad7 100644
--- a/catalogs/catalog-jdbc-common/build.gradle.kts
+++ b/catalogs/catalog-jdbc-common/build.gradle.kts
@@ -39,6 +39,7 @@ artifacts {
 
 dependencies {
   implementation(project(":api"))
+  implementation(project(":catalogs:catalog-common"))
   implementation(project(":common"))
   implementation(project(":core"))
 
diff --git 
a/catalogs/catalog-jdbc-common/src/main/java/org/apache/gravitino/catalog/jdbc/JdbcTablePropertiesMetadata.java
 
b/catalogs/catalog-jdbc-common/src/main/java/org/apache/gravitino/catalog/jdbc/JdbcTablePropertiesMetadata.java
index 75d0458e5..4f7d8a0ad 100644
--- 
a/catalogs/catalog-jdbc-common/src/main/java/org/apache/gravitino/catalog/jdbc/JdbcTablePropertiesMetadata.java
+++ 
b/catalogs/catalog-jdbc-common/src/main/java/org/apache/gravitino/catalog/jdbc/JdbcTablePropertiesMetadata.java
@@ -26,7 +26,7 @@ import org.apache.gravitino.connector.BasePropertiesMetadata;
 
 public abstract class JdbcTablePropertiesMetadata extends 
BasePropertiesMetadata {
 
-  public static final String COMMENT_KEY = "comment";
+  public static final String COMMENT_KEY = JdbcConstants.COMMENT;
 
   public Map<String, String> transformToJdbcProperties(Map<String, String> 
properties) {
     HashMap<String, String> resultProperties = Maps.newHashMap(properties);
diff --git a/catalogs/catalog-jdbc-mysql/build.gradle.kts 
b/catalogs/catalog-jdbc-mysql/build.gradle.kts
index 9be41612a..fbd2cc0aa 100644
--- a/catalogs/catalog-jdbc-mysql/build.gradle.kts
+++ b/catalogs/catalog-jdbc-mysql/build.gradle.kts
@@ -26,6 +26,7 @@ plugins {
 
 dependencies {
   implementation(project(":api"))
+  implementation(project(":catalogs:catalog-common"))
   implementation(project(":catalogs:catalog-jdbc-common"))
   implementation(project(":common"))
   implementation(project(":core"))
diff --git 
a/catalogs/catalog-jdbc-mysql/src/main/java/org/apache/gravitino/catalog/mysql/MysqlTablePropertiesMetadata.java
 
b/catalogs/catalog-jdbc-mysql/src/main/java/org/apache/gravitino/catalog/mysql/MysqlTablePropertiesMetadata.java
index 716372c16..e4de0a0cb 100644
--- 
a/catalogs/catalog-jdbc-mysql/src/main/java/org/apache/gravitino/catalog/mysql/MysqlTablePropertiesMetadata.java
+++ 
b/catalogs/catalog-jdbc-mysql/src/main/java/org/apache/gravitino/catalog/mysql/MysqlTablePropertiesMetadata.java
@@ -31,10 +31,12 @@ import 
org.apache.gravitino.catalog.jdbc.JdbcTablePropertiesMetadata;
 import org.apache.gravitino.connector.PropertyEntry;
 
 public class MysqlTablePropertiesMetadata extends JdbcTablePropertiesMetadata {
-  public static final String GRAVITINO_ENGINE_KEY = "engine";
-  public static final String MYSQL_ENGINE_KEY = "ENGINE";
-  public static final String GRAVITINO_AUTO_INCREMENT_OFFSET_KEY = 
"auto-increment-offset";
-  public static final String MYSQL_AUTO_INCREMENT_OFFSET_KEY = 
"AUTO_INCREMENT";
+  public static final String GRAVITINO_ENGINE_KEY = 
MysqlConstants.GRAVITINO_ENGINE_KEY;
+  public static final String MYSQL_ENGINE_KEY = 
MysqlConstants.MYSQL_ENGINE_KEY;
+  public static final String GRAVITINO_AUTO_INCREMENT_OFFSET_KEY =
+      MysqlConstants.GRAVITINO_AUTO_INCREMENT_OFFSET_KEY;
+  public static final String MYSQL_AUTO_INCREMENT_OFFSET_KEY =
+      MysqlConstants.MYSQL_AUTO_INCREMENT_OFFSET_KEY;
   private static final Map<String, PropertyEntry<?>> PROPERTIES_METADATA =
       createPropertiesMetadata();
 
diff --git a/catalogs/catalog-lakehouse-iceberg/build.gradle.kts 
b/catalogs/catalog-lakehouse-iceberg/build.gradle.kts
index 1d0eb242e..4a241c774 100644
--- a/catalogs/catalog-lakehouse-iceberg/build.gradle.kts
+++ b/catalogs/catalog-lakehouse-iceberg/build.gradle.kts
@@ -32,7 +32,7 @@ val scalaCollectionCompatVersion: String = 
libs.versions.scala.collection.compat
 
 dependencies {
   implementation(project(":api"))
-  implementation(project(":catalogs:bundled-catalog", configuration = 
"shadow"))
+  implementation(project(":catalogs:catalog-common"))
   implementation(project(":common"))
   implementation(project(":core"))
   implementation(project(":server-common"))
diff --git a/flink-connector/build.gradle.kts b/flink-connector/build.gradle.kts
index 456be48ef..6a59ba528 100644
--- a/flink-connector/build.gradle.kts
+++ b/flink-connector/build.gradle.kts
@@ -32,10 +32,10 @@ val artifactName = "gravitino-${project.name}-$scalaVersion"
 
 dependencies {
   implementation(project(":api"))
+  implementation(project(":catalogs:catalog-common"))
   implementation(project(":common"))
   implementation(project(":core"))
   implementation(project(":clients:client-java"))
-  implementation(project(":catalogs:bundled-catalog", configuration = 
"shadow"))
 
   implementation(libs.bundles.log4j)
   implementation(libs.commons.lang3)
diff --git 
a/flink-connector/src/main/java/org/apache/gravitino/flink/connector/hive/HivePropertiesConverter.java
 
b/flink-connector/src/main/java/org/apache/gravitino/flink/connector/hive/HivePropertiesConverter.java
index 9250acdec..180958674 100644
--- 
a/flink-connector/src/main/java/org/apache/gravitino/flink/connector/hive/HivePropertiesConverter.java
+++ 
b/flink-connector/src/main/java/org/apache/gravitino/flink/connector/hive/HivePropertiesConverter.java
@@ -25,8 +25,7 @@ import java.util.Map;
 import java.util.stream.Collectors;
 import org.apache.flink.configuration.Configuration;
 import org.apache.flink.table.catalog.CommonCatalogOptions;
-import org.apache.gravitino.catalog.hive.HiveCatalogPropertiesMeta;
-import org.apache.gravitino.catalog.hive.HiveTablePropertiesMetadata;
+import org.apache.gravitino.catalog.hive.HiveConstants;
 import org.apache.gravitino.flink.connector.PropertiesConverter;
 import org.apache.hadoop.hive.conf.HiveConf;
 
@@ -37,11 +36,9 @@ public class HivePropertiesConverter implements 
PropertiesConverter {
   public static final HivePropertiesConverter INSTANCE = new 
HivePropertiesConverter();
 
   private static final Map<String, String> HIVE_CATALOG_CONFIG_TO_GRAVITINO =
-      ImmutableMap.of(
-          HiveConf.ConfVars.METASTOREURIS.varname, 
HiveCatalogPropertiesMeta.METASTORE_URIS);
+      ImmutableMap.of(HiveConf.ConfVars.METASTOREURIS.varname, 
HiveConstants.METASTORE_URIS);
   private static final Map<String, String> GRAVITINO_CONFIG_TO_HIVE =
-      ImmutableMap.of(
-          HiveCatalogPropertiesMeta.METASTORE_URIS, 
HiveConf.ConfVars.METASTOREURIS.varname);
+      ImmutableMap.of(HiveConstants.METASTORE_URIS, 
HiveConf.ConfVars.METASTOREURIS.varname);
 
   @Override
   public Map<String, String> toGravitinoCatalogProperties(Configuration 
flinkConf) {
@@ -87,9 +84,8 @@ public class HivePropertiesConverter implements 
PropertiesConverter {
                 Collectors.toMap(
                     entry -> {
                       String key = entry.getKey();
-                      if 
(key.startsWith(HiveTablePropertiesMetadata.SERDE_PARAMETER_PREFIX)) {
-                        return key.substring(
-                            
HiveTablePropertiesMetadata.SERDE_PARAMETER_PREFIX.length());
+                      if 
(key.startsWith(HiveConstants.SERDE_PARAMETER_PREFIX)) {
+                        return 
key.substring(HiveConstants.SERDE_PARAMETER_PREFIX.length());
                       } else {
                         return key;
                       }
diff --git 
a/flink-connector/src/test/java/org/apache/gravitino/flink/connector/hive/TestHivePropertiesConverter.java
 
b/flink-connector/src/test/java/org/apache/gravitino/flink/connector/hive/TestHivePropertiesConverter.java
index e60a0b234..7191f0aec 100644
--- 
a/flink-connector/src/test/java/org/apache/gravitino/flink/connector/hive/TestHivePropertiesConverter.java
+++ 
b/flink-connector/src/test/java/org/apache/gravitino/flink/connector/hive/TestHivePropertiesConverter.java
@@ -18,11 +18,10 @@
  */
 package org.apache.gravitino.flink.connector.hive;
 
-import static 
org.apache.gravitino.catalog.hive.HiveCatalogPropertiesMeta.METASTORE_URIS;
-
 import com.google.common.collect.ImmutableMap;
 import java.util.Map;
 import org.apache.flink.configuration.Configuration;
+import org.apache.gravitino.catalog.hive.HiveConstants;
 import org.apache.hadoop.hive.conf.HiveConf;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
@@ -52,7 +51,7 @@ public class TestHivePropertiesConverter {
         "value", properties.get("flink.bypass.key"), "The prefix have already 
existed");
     Assertions.assertEquals(
         "thrift://127.0.0.1:9084",
-        properties.get(METASTORE_URIS),
+        properties.get(HiveConstants.METASTORE_URIS),
         "The key is converted to Gravitino Config");
   }
 
diff --git 
a/flink-connector/src/test/java/org/apache/gravitino/flink/connector/integration/test/FlinkCommonIT.java
 
b/flink-connector/src/test/java/org/apache/gravitino/flink/connector/integration/test/FlinkCommonIT.java
index 8c6791da9..06905fff9 100644
--- 
a/flink-connector/src/test/java/org/apache/gravitino/flink/connector/integration/test/FlinkCommonIT.java
+++ 
b/flink-connector/src/test/java/org/apache/gravitino/flink/connector/integration/test/FlinkCommonIT.java
@@ -36,7 +36,7 @@ import org.apache.flink.types.Row;
 import org.apache.gravitino.Catalog;
 import org.apache.gravitino.NameIdentifier;
 import org.apache.gravitino.Schema;
-import org.apache.gravitino.catalog.hive.HiveSchemaPropertiesMetadata;
+import org.apache.gravitino.catalog.hive.HiveConstants;
 import org.apache.gravitino.flink.connector.integration.test.utils.TestUtils;
 import org.apache.gravitino.rel.Column;
 import org.apache.gravitino.rel.Table;
@@ -91,7 +91,7 @@ public abstract class FlinkCommonIT extends FlinkEnvIT {
             Assertions.assertEquals(2, loadedSchema.properties().size());
             Assertions.assertEquals(propertyValue, 
loadedSchema.properties().get(propertyKey));
             Assertions.assertEquals(
-                location, 
loadedSchema.properties().get(HiveSchemaPropertiesMetadata.LOCATION));
+                location, 
loadedSchema.properties().get(HiveConstants.LOCATION));
           } finally {
             catalog.asSchemas().dropSchema(schema, true);
             Assertions.assertFalse(catalog.asSchemas().schemaExists(schema));
diff --git 
a/flink-connector/src/test/java/org/apache/gravitino/flink/connector/integration/test/hive/FlinkHiveCatalogIT.java
 
b/flink-connector/src/test/java/org/apache/gravitino/flink/connector/integration/test/hive/FlinkHiveCatalogIT.java
index 6964389d5..09c264796 100644
--- 
a/flink-connector/src/test/java/org/apache/gravitino/flink/connector/integration/test/hive/FlinkHiveCatalogIT.java
+++ 
b/flink-connector/src/test/java/org/apache/gravitino/flink/connector/integration/test/hive/FlinkHiveCatalogIT.java
@@ -18,7 +18,6 @@
  */
 package org.apache.gravitino.flink.connector.integration.test.hive;
 
-import static 
org.apache.gravitino.catalog.hive.HiveCatalogPropertiesMeta.METASTORE_URIS;
 import static 
org.apache.gravitino.flink.connector.integration.test.utils.TestUtils.assertColumns;
 
 import com.google.common.base.Preconditions;
@@ -42,6 +41,7 @@ import org.apache.flink.table.catalog.ObjectPath;
 import org.apache.flink.table.catalog.hive.factories.HiveCatalogFactoryOptions;
 import org.apache.flink.types.Row;
 import org.apache.gravitino.NameIdentifier;
+import org.apache.gravitino.catalog.hive.HiveConstants;
 import org.apache.gravitino.flink.connector.PropertiesConverter;
 import org.apache.gravitino.flink.connector.hive.GravitinoHiveCatalog;
 import 
org.apache.gravitino.flink.connector.hive.GravitinoHiveCatalogFactoryOptions;
@@ -109,7 +109,7 @@ public class FlinkHiveCatalogIT extends FlinkCommonIT {
     // Check the catalog properties.
     org.apache.gravitino.Catalog gravitinoCatalog = 
metalake.loadCatalog(catalogName);
     Map<String, String> properties = gravitinoCatalog.properties();
-    Assertions.assertEquals(hiveMetastoreUri, properties.get(METASTORE_URIS));
+    Assertions.assertEquals(hiveMetastoreUri, 
properties.get(HiveConstants.METASTORE_URIS));
     Map<String, String> flinkProperties =
         gravitinoCatalog.properties().entrySet().stream()
             .filter(e -> 
e.getKey().startsWith(PropertiesConverter.FLINK_PROPERTY_PREFIX))
@@ -175,7 +175,7 @@ public class FlinkHiveCatalogIT extends FlinkCommonIT {
     // Check the properties of the created catalog.
     org.apache.gravitino.Catalog gravitinoCatalog = 
metalake.loadCatalog(catalogName);
     Map<String, String> properties = gravitinoCatalog.properties();
-    Assertions.assertEquals(hiveMetastoreUri, properties.get(METASTORE_URIS));
+    Assertions.assertEquals(hiveMetastoreUri, 
properties.get(HiveConstants.METASTORE_URIS));
     Map<String, String> flinkProperties =
         properties.entrySet().stream()
             .filter(e -> 
e.getKey().startsWith(PropertiesConverter.FLINK_PROPERTY_PREFIX))
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 2c9292c62..5cc787807 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -26,7 +26,7 @@ val scalaVersion: String = 
gradle.startParameter.projectProperties["scalaVersion
   ?: settings.extra["defaultScalaVersion"].toString()
 
 include("api", "common", "core", "meta", "server", "integration-test", 
"server-common")
-include("catalogs:bundled-catalog")
+include("catalogs:catalog-common")
 include("catalogs:catalog-hive")
 include("catalogs:catalog-lakehouse-iceberg")
 include("catalogs:catalog-lakehouse-paimon")
diff --git a/spark-connector/spark-common/build.gradle.kts 
b/spark-connector/spark-common/build.gradle.kts
index 65ba1f641..82594c257 100644
--- a/spark-connector/spark-common/build.gradle.kts
+++ b/spark-connector/spark-common/build.gradle.kts
@@ -37,7 +37,7 @@ val scalaJava8CompatVersion: String = 
libs.versions.scala.java.compat.get()
 val scalaCollectionCompatVersion: String = 
libs.versions.scala.collection.compat.get()
 
 dependencies {
-  implementation(project(":catalogs:bundled-catalog", configuration = 
"shadow"))
+  implementation(project(":catalogs:catalog-common"))
   implementation(libs.guava)
 
   compileOnly(project(":clients:client-java-runtime", configuration = 
"shadow"))
diff --git 
a/spark-connector/spark-common/src/main/java/org/apache/gravitino/spark/connector/hive/HivePropertiesConstants.java
 
b/spark-connector/spark-common/src/main/java/org/apache/gravitino/spark/connector/hive/HivePropertiesConstants.java
index ef2881c9d..62cb4f6ce 100644
--- 
a/spark-connector/spark-common/src/main/java/org/apache/gravitino/spark/connector/hive/HivePropertiesConstants.java
+++ 
b/spark-connector/spark-common/src/main/java/org/apache/gravitino/spark/connector/hive/HivePropertiesConstants.java
@@ -18,21 +18,20 @@
 
 package org.apache.gravitino.spark.connector.hive;
 
-import static 
org.apache.gravitino.catalog.hive.HiveTablePropertiesMetadata.TableType.EXTERNAL_TABLE;
-
 import com.google.common.annotations.VisibleForTesting;
-import org.apache.gravitino.catalog.hive.HiveTablePropertiesMetadata;
-import 
org.apache.gravitino.catalog.hive.HiveTablePropertiesMetadata.StorageFormat;
+import org.apache.gravitino.catalog.hive.HiveConstants;
+import org.apache.gravitino.catalog.hive.HiveStorageConstants;
+import org.apache.gravitino.catalog.hive.StorageFormat;
+import org.apache.gravitino.catalog.hive.TableType;
 import org.apache.spark.sql.connector.catalog.TableCatalog;
 
 public class HivePropertiesConstants {
-  public static final String GRAVITINO_HIVE_FORMAT = 
HiveTablePropertiesMetadata.FORMAT;
-  public static final String GRAVITINO_HIVE_INPUT_FORMAT = 
HiveTablePropertiesMetadata.INPUT_FORMAT;
-  public static final String GRAVITINO_HIVE_OUTPUT_FORMAT =
-      HiveTablePropertiesMetadata.OUTPUT_FORMAT;
-  public static final String GRAVITINO_HIVE_SERDE_LIB = 
HiveTablePropertiesMetadata.SERDE_LIB;
+  public static final String GRAVITINO_HIVE_FORMAT = HiveConstants.FORMAT;
+  public static final String GRAVITINO_HIVE_INPUT_FORMAT = 
HiveConstants.INPUT_FORMAT;
+  public static final String GRAVITINO_HIVE_OUTPUT_FORMAT = 
HiveConstants.OUTPUT_FORMAT;
+  public static final String GRAVITINO_HIVE_SERDE_LIB = 
HiveConstants.SERDE_LIB;
   public static final String GRAVITINO_HIVE_SERDE_PARAMETER_PREFIX =
-      HiveTablePropertiesMetadata.SERDE_PARAMETER_PREFIX;
+      HiveConstants.SERDE_PARAMETER_PREFIX;
 
   public static final String GRAVITINO_HIVE_FORMAT_PARQUET = 
StorageFormat.PARQUET.toString();
   public static final String GRAVITINO_HIVE_FORMAT_SEQUENCEFILE =
@@ -43,39 +42,37 @@ public class HivePropertiesConstants {
   public static final String GRAVITINO_HIVE_FORMAT_AVRO = 
StorageFormat.AVRO.toString();
   public static final String GRAVITINO_HIVE_FORMAT_JSON = 
StorageFormat.JSON.toString();
   public static final String GRAVITINO_HIVE_FORMAT_CSV = 
StorageFormat.CSV.toString();
-  public static final String GRAVITINO_HIVE_EXTERNAL_TABLE = 
EXTERNAL_TABLE.name();
-  public static final String GRAVITINO_HIVE_TABLE_TYPE = 
HiveTablePropertiesMetadata.TABLE_TYPE;
-  public static final String GRAVITINO_HIVE_TABLE_LOCATION = 
HiveTablePropertiesMetadata.LOCATION;
+  public static final String GRAVITINO_HIVE_EXTERNAL_TABLE = 
TableType.EXTERNAL_TABLE.name();
+  public static final String GRAVITINO_HIVE_TABLE_TYPE = 
HiveConstants.TABLE_TYPE;
+  public static final String GRAVITINO_HIVE_TABLE_LOCATION = 
HiveConstants.LOCATION;
 
   public static final String SPARK_HIVE_STORED_AS = "hive.stored-as";
-  public static final String SPARK_HIVE_INPUT_FORMAT = "input-format";
-  public static final String SPARK_HIVE_OUTPUT_FORMAT = "output-format";
-  public static final String SPARK_HIVE_SERDE_LIB = "serde-lib";
-  public static final String SPARK_HIVE_EXTERNAL = "external";
+  public static final String SPARK_HIVE_INPUT_FORMAT = 
HiveConstants.INPUT_FORMAT;
+  public static final String SPARK_HIVE_OUTPUT_FORMAT = 
HiveConstants.OUTPUT_FORMAT;
+  public static final String SPARK_HIVE_SERDE_LIB = HiveConstants.SERDE_LIB;
+  public static final String SPARK_HIVE_EXTERNAL = TableCatalog.PROP_EXTERNAL;
   public static final String SPARK_HIVE_LOCATION = TableCatalog.PROP_LOCATION;
 
   @VisibleForTesting
-  public static final String TEXT_INPUT_FORMAT_CLASS =
-      HiveTablePropertiesMetadata.TEXT_INPUT_FORMAT_CLASS;
+  public static final String TEXT_INPUT_FORMAT_CLASS = 
HiveStorageConstants.TEXT_INPUT_FORMAT_CLASS;
 
   @VisibleForTesting
   public static final String IGNORE_KEY_OUTPUT_FORMAT_CLASS =
-      HiveTablePropertiesMetadata.IGNORE_KEY_OUTPUT_FORMAT_CLASS;
+      HiveStorageConstants.IGNORE_KEY_OUTPUT_FORMAT_CLASS;
 
   @VisibleForTesting
-  public static final String LAZY_SIMPLE_SERDE_CLASS =
-      HiveTablePropertiesMetadata.LAZY_SIMPLE_SERDE_CLASS;
+  public static final String LAZY_SIMPLE_SERDE_CLASS = 
HiveStorageConstants.LAZY_SIMPLE_SERDE_CLASS;
 
   @VisibleForTesting
   public static final String PARQUET_INPUT_FORMAT_CLASS =
-      HiveTablePropertiesMetadata.PARQUET_INPUT_FORMAT_CLASS;
+      HiveStorageConstants.PARQUET_INPUT_FORMAT_CLASS;
 
   @VisibleForTesting
   public static final String PARQUET_OUTPUT_FORMAT_CLASS =
-      HiveTablePropertiesMetadata.PARQUET_OUTPUT_FORMAT_CLASS;
+      HiveStorageConstants.PARQUET_OUTPUT_FORMAT_CLASS;
 
   @VisibleForTesting
-  public static final String PARQUET_SERDE_CLASS = 
HiveTablePropertiesMetadata.PARQUET_SERDE_CLASS;
+  public static final String PARQUET_SERDE_CLASS = 
HiveStorageConstants.PARQUET_SERDE_CLASS;
 
   private HivePropertiesConstants() {}
 }
diff --git 
a/spark-connector/spark-common/src/main/java/org/apache/gravitino/spark/connector/hive/HivePropertiesConverter.java
 
b/spark-connector/spark-common/src/main/java/org/apache/gravitino/spark/connector/hive/HivePropertiesConverter.java
index da6039f70..476364196 100644
--- 
a/spark-connector/spark-common/src/main/java/org/apache/gravitino/spark/connector/hive/HivePropertiesConverter.java
+++ 
b/spark-connector/spark-common/src/main/java/org/apache/gravitino/spark/connector/hive/HivePropertiesConverter.java
@@ -27,7 +27,7 @@ import java.util.Map;
 import java.util.Optional;
 import java.util.stream.Collectors;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.gravitino.catalog.hive.HiveTablePropertiesMetadata;
+import org.apache.gravitino.catalog.hive.TableType;
 import org.apache.gravitino.spark.connector.GravitinoSparkConfig;
 import org.apache.gravitino.spark.connector.PropertiesConverter;
 import org.apache.spark.sql.connector.catalog.TableCatalog;
@@ -124,8 +124,7 @@ public class HivePropertiesConverter implements 
PropertiesConverter {
 
     if (isExternal.equalsIgnoreCase("true")) {
       gravitinoTableProperties.put(
-          HivePropertiesConstants.GRAVITINO_HIVE_TABLE_TYPE,
-          HiveTablePropertiesMetadata.TableType.EXTERNAL_TABLE.name());
+          HivePropertiesConstants.GRAVITINO_HIVE_TABLE_TYPE, 
TableType.EXTERNAL_TABLE.name());
     }
 
     sparkToGravitinoPropertyMap.forEach(
diff --git a/spark-connector/v3.3/spark/build.gradle.kts 
b/spark-connector/v3.3/spark/build.gradle.kts
index e9e25d34e..971c9c422 100644
--- a/spark-connector/v3.3/spark/build.gradle.kts
+++ b/spark-connector/v3.3/spark/build.gradle.kts
@@ -150,6 +150,7 @@ tasks.test {
   } else {
     dependsOn(tasks.jar)
     dependsOn(":catalogs:catalog-lakehouse-iceberg:jar")
+    dependsOn(":catalogs:catalog-hive:jar")
 
     doFirst {
       environment("GRAVITINO_CI_HIVE_DOCKER_IMAGE", 
"datastrato/gravitino-ci-hive:0.1.13")
diff --git a/spark-connector/v3.4/spark/build.gradle.kts 
b/spark-connector/v3.4/spark/build.gradle.kts
index fac5b44c7..59539474b 100644
--- a/spark-connector/v3.4/spark/build.gradle.kts
+++ b/spark-connector/v3.4/spark/build.gradle.kts
@@ -150,6 +150,7 @@ tasks.test {
   } else {
     dependsOn(tasks.jar)
     dependsOn(":catalogs:catalog-lakehouse-iceberg:jar")
+    dependsOn(":catalogs:catalog-hive:jar")
 
     doFirst {
       environment("GRAVITINO_CI_HIVE_DOCKER_IMAGE", 
"datastrato/gravitino-ci-hive:0.1.13")
diff --git a/spark-connector/v3.5/spark/build.gradle.kts 
b/spark-connector/v3.5/spark/build.gradle.kts
index 579fe5b46..1e285621d 100644
--- a/spark-connector/v3.5/spark/build.gradle.kts
+++ b/spark-connector/v3.5/spark/build.gradle.kts
@@ -152,6 +152,7 @@ tasks.test {
   } else {
     dependsOn(tasks.jar)
     dependsOn(":catalogs:catalog-lakehouse-iceberg:jar")
+    dependsOn(":catalogs:catalog-hive:jar")
 
     doFirst {
       environment("GRAVITINO_CI_HIVE_DOCKER_IMAGE", 
"datastrato/gravitino-ci-hive:0.1.13")
diff --git a/trino-connector/build.gradle.kts b/trino-connector/build.gradle.kts
index c98ff3cdb..ac60b2164 100644
--- a/trino-connector/build.gradle.kts
+++ b/trino-connector/build.gradle.kts
@@ -27,7 +27,7 @@ repositories {
 }
 
 dependencies {
-  implementation(project(":catalogs:bundled-catalog", configuration = 
"shadow"))
+  implementation(project(":catalogs:catalog-common"))
   implementation(project(":clients:client-java-runtime", configuration = 
"shadow"))
   implementation(libs.airlift.json)
   implementation(libs.bundles.log4j)
diff --git 
a/trino-connector/src/main/java/org/apache/gravitino/trino/connector/catalog/hive/HiveSchemaPropertyConverter.java
 
b/trino-connector/src/main/java/org/apache/gravitino/trino/connector/catalog/hive/HiveSchemaPropertyConverter.java
index 3050e63b0..9c1a2f7f3 100644
--- 
a/trino-connector/src/main/java/org/apache/gravitino/trino/connector/catalog/hive/HiveSchemaPropertyConverter.java
+++ 
b/trino-connector/src/main/java/org/apache/gravitino/trino/connector/catalog/hive/HiveSchemaPropertyConverter.java
@@ -22,7 +22,7 @@ import static 
org.apache.gravitino.trino.connector.catalog.hive.HivePropertyMeta
 
 import com.google.common.collect.ImmutableMap;
 import org.apache.commons.collections4.bidimap.TreeBidiMap;
-import org.apache.gravitino.catalog.hive.HiveSchemaPropertiesMetadata;
+import org.apache.gravitino.catalog.hive.HiveConstants;
 import org.apache.gravitino.catalog.property.PropertyConverter;
 
 public class HiveSchemaPropertyConverter extends PropertyConverter {
@@ -31,7 +31,7 @@ public class HiveSchemaPropertyConverter extends 
PropertyConverter {
   private static final TreeBidiMap<String, String> TRINO_KEY_TO_GRAVITINO_KEY =
       new TreeBidiMap<>(
           new ImmutableMap.Builder<String, String>()
-              .put(HIVE_SCHEMA_LOCATION, HiveSchemaPropertiesMetadata.LOCATION)
+              .put(HIVE_SCHEMA_LOCATION, HiveConstants.LOCATION)
               .build());
 
   @Override
diff --git 
a/trino-connector/src/main/java/org/apache/gravitino/trino/connector/catalog/hive/HiveTablePropertyConverter.java
 
b/trino-connector/src/main/java/org/apache/gravitino/trino/connector/catalog/hive/HiveTablePropertyConverter.java
index 9bd3180d2..650b3a28f 100644
--- 
a/trino-connector/src/main/java/org/apache/gravitino/trino/connector/catalog/hive/HiveTablePropertyConverter.java
+++ 
b/trino-connector/src/main/java/org/apache/gravitino/trino/connector/catalog/hive/HiveTablePropertyConverter.java
@@ -21,7 +21,7 @@ package org.apache.gravitino.trino.connector.catalog.hive;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.collect.ImmutableMap;
 import org.apache.commons.collections4.bidimap.TreeBidiMap;
-import org.apache.gravitino.catalog.hive.HiveTablePropertiesMetadata;
+import org.apache.gravitino.catalog.hive.HiveConstants;
 import org.apache.gravitino.catalog.property.PropertyConverter;
 
 public class HiveTablePropertyConverter extends PropertyConverter {
@@ -31,20 +31,16 @@ public class HiveTablePropertyConverter extends 
PropertyConverter {
   static final TreeBidiMap<String, String> TRINO_KEY_TO_GRAVITINO_KEY =
       new TreeBidiMap<>(
           new ImmutableMap.Builder<String, String>()
-              .put(HivePropertyMeta.HIVE_TABLE_FORMAT, 
HiveTablePropertiesMetadata.FORMAT)
-              .put(HivePropertyMeta.HIVE_TABLE_TOTAL_SIZE, 
HiveTablePropertiesMetadata.TOTAL_SIZE)
-              .put(HivePropertyMeta.HIVE_TABLE_NUM_FILES, 
HiveTablePropertiesMetadata.NUM_FILES)
-              .put(HivePropertyMeta.HIVE_TABLE_EXTERNAL, 
HiveTablePropertiesMetadata.EXTERNAL)
-              .put(HivePropertyMeta.HIVE_TABLE_LOCATION, 
HiveTablePropertiesMetadata.LOCATION)
-              .put(HivePropertyMeta.HIVE_TABLE_TYPE, 
HiveTablePropertiesMetadata.TABLE_TYPE)
-              .put(
-                  HivePropertyMeta.HIVE_TABLE_INPUT_FORMAT,
-                  HiveTablePropertiesMetadata.INPUT_FORMAT)
-              .put(
-                  HivePropertyMeta.HIVE_TABLE_OUTPUT_FORMAT,
-                  HiveTablePropertiesMetadata.OUTPUT_FORMAT)
-              .put(HivePropertyMeta.HIVE_TABLE_SERDE_LIB, 
HiveTablePropertiesMetadata.SERDE_LIB)
-              .put(HivePropertyMeta.HIVE_TABLE_SERDE_NAME, 
HiveTablePropertiesMetadata.SERDE_NAME)
+              .put(HivePropertyMeta.HIVE_TABLE_FORMAT, HiveConstants.FORMAT)
+              .put(HivePropertyMeta.HIVE_TABLE_TOTAL_SIZE, 
HiveConstants.TOTAL_SIZE)
+              .put(HivePropertyMeta.HIVE_TABLE_NUM_FILES, 
HiveConstants.NUM_FILES)
+              .put(HivePropertyMeta.HIVE_TABLE_EXTERNAL, 
HiveConstants.EXTERNAL)
+              .put(HivePropertyMeta.HIVE_TABLE_LOCATION, 
HiveConstants.LOCATION)
+              .put(HivePropertyMeta.HIVE_TABLE_TYPE, HiveConstants.TABLE_TYPE)
+              .put(HivePropertyMeta.HIVE_TABLE_INPUT_FORMAT, 
HiveConstants.INPUT_FORMAT)
+              .put(HivePropertyMeta.HIVE_TABLE_OUTPUT_FORMAT, 
HiveConstants.OUTPUT_FORMAT)
+              .put(HivePropertyMeta.HIVE_TABLE_SERDE_LIB, 
HiveConstants.SERDE_LIB)
+              .put(HivePropertyMeta.HIVE_TABLE_SERDE_NAME, 
HiveConstants.SERDE_NAME)
               .build());
 
   @Override
diff --git 
a/trino-connector/src/main/java/org/apache/gravitino/trino/connector/catalog/jdbc/mysql/MySQLTablePropertyConverter.java
 
b/trino-connector/src/main/java/org/apache/gravitino/trino/connector/catalog/jdbc/mysql/MySQLTablePropertyConverter.java
index c8a3a8677..edabf873d 100644
--- 
a/trino-connector/src/main/java/org/apache/gravitino/trino/connector/catalog/jdbc/mysql/MySQLTablePropertyConverter.java
+++ 
b/trino-connector/src/main/java/org/apache/gravitino/trino/connector/catalog/jdbc/mysql/MySQLTablePropertyConverter.java
@@ -22,7 +22,7 @@ package 
org.apache.gravitino.trino.connector.catalog.jdbc.mysql;
 import com.google.common.annotations.VisibleForTesting;
 import java.util.Map;
 import org.apache.commons.collections4.bidimap.TreeBidiMap;
-import org.apache.gravitino.catalog.mysql.MysqlTablePropertiesMetadata;
+import org.apache.gravitino.catalog.mysql.MysqlConstants;
 import org.apache.gravitino.catalog.property.PropertyConverter;
 import org.apache.gravitino.shaded.com.google.common.collect.ImmutableMap;
 
@@ -32,11 +32,10 @@ public class MySQLTablePropertyConverter extends 
PropertyConverter {
   static final TreeBidiMap<String, String> TRINO_KEY_TO_GRAVITINO_KEY =
       new TreeBidiMap<>(
           new ImmutableMap.Builder<String, String>()
-              .put(
-                  MySQLPropertyMeta.TABLE_ENGINE, 
MysqlTablePropertiesMetadata.GRAVITINO_ENGINE_KEY)
+              .put(MySQLPropertyMeta.TABLE_ENGINE, 
MysqlConstants.GRAVITINO_ENGINE_KEY)
               .put(
                   MySQLPropertyMeta.TABLE_AUTO_INCREMENT_OFFSET,
-                  
MysqlTablePropertiesMetadata.GRAVITINO_AUTO_INCREMENT_OFFSET_KEY)
+                  MysqlConstants.GRAVITINO_AUTO_INCREMENT_OFFSET_KEY)
               .build());
 
   @Override
diff --git 
a/trino-connector/src/test/java/org/apache/gravitino/trino/connector/catalog/hive/TestHiveCatalogPropertyConverter.java
 
b/trino-connector/src/test/java/org/apache/gravitino/trino/connector/catalog/hive/TestHiveCatalogPropertyConverter.java
index 146ef6f72..efccbf676 100644
--- 
a/trino-connector/src/test/java/org/apache/gravitino/trino/connector/catalog/hive/TestHiveCatalogPropertyConverter.java
+++ 
b/trino-connector/src/test/java/org/apache/gravitino/trino/connector/catalog/hive/TestHiveCatalogPropertyConverter.java
@@ -20,11 +20,8 @@
 package org.apache.gravitino.trino.connector.catalog.hive;
 
 import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Sets;
 import java.util.Map;
-import java.util.Set;
 import org.apache.gravitino.Catalog;
-import org.apache.gravitino.catalog.hive.HiveTablePropertiesMetadata;
 import org.apache.gravitino.trino.connector.metadata.GravitinoCatalog;
 import org.apache.gravitino.trino.connector.metadata.TestGravitinoCatalog;
 import org.junit.jupiter.api.Assertions;
@@ -49,19 +46,6 @@ public class TestHiveCatalogPropertyConverter {
     Assertions.assertNull(re.get("hive.unknown-key"));
   }
 
-  // To test whether we load jar `bundled-catalog` successfully.
-  @Test
-  public void testPropertyMetadata() {
-    Set<String> gravitinoHiveKeys =
-        
Sets.newHashSet(HiveTablePropertyConverter.TRINO_KEY_TO_GRAVITINO_KEY.values());
-    Set<String> actualGravitinoKeys =
-        Sets.newHashSet(new 
HiveTablePropertiesMetadata().propertyEntries().keySet());
-
-    // Needs to confirm whether external should be a property key for Trino.
-    gravitinoHiveKeys.remove("external");
-    Assertions.assertTrue(actualGravitinoKeys.containsAll(gravitinoHiveKeys));
-  }
-
   @Test
   @SuppressWarnings("unchecked")
   public void testBuildConnectorProperties() throws Exception {

Reply via email to