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

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

commit da7f4ab37f2cc82874dcf030fb739893ad689d9f
Author: geyanggang <[email protected]>
AuthorDate: Wed Jan 28 20:31:30 2026 +0800

    [#126] Add skeleton for MaxComputer catalog. (#127)
    
    * Add skeleton for MaxComputer catalog.
    
    * Add skeleton for MaxComputer catalog.
    
    * Add skeleton for MaxComputer catalog.
---
 catalogs/catalog-jdbc-maxcompute/build.gradle.kts  | 105 +++++++++++++++++++++
 .../catalog/maxcompute/MaxComputeCatalog.java      |  94 ++++++++++++++++++
 .../maxcompute/MaxComputeCatalogCapability.java    |  24 +++++
 .../MaxComputeSchemaPropertiesMetadata.java        |  33 +++++++
 .../MaxComputeTablePropertiesMetadata.java         |  33 +++++++
 .../MaxComputeColumnDefaultValueConverter.java     |  24 +++++
 .../converter/MaxComputeExceptionConverter.java    |  33 +++++++
 .../converter/MaxComputeTypeConverter.java         |  36 +++++++
 .../operation/MaxComputeDatabaseOperations.java    |  49 ++++++++++
 .../operation/MaxComputeTableOperations.java       |  64 +++++++++++++
 .../services/org.apache.gravitino.CatalogProvider  |  19 ++++
 .../src/main/resources/jdbc-maxcompute.conf        |  22 +++++
 .../catalog/maxcompute/TestMaxComputeCatalog.java  |  42 +++++++++
 settings.gradle.kts                                |   1 +
 14 files changed, 579 insertions(+)

diff --git a/catalogs/catalog-jdbc-maxcompute/build.gradle.kts 
b/catalogs/catalog-jdbc-maxcompute/build.gradle.kts
new file mode 100644
index 0000000000..270eb50a97
--- /dev/null
+++ b/catalogs/catalog-jdbc-maxcompute/build.gradle.kts
@@ -0,0 +1,105 @@
+/*
+ * 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.
+ */
+description = "catalog-jdbc-maxcompute"
+
+plugins {
+  `maven-publish`
+  id("java")
+  id("idea")
+}
+
+dependencies {
+  implementation(project(":api")) {
+    exclude(group = "*")
+  }
+  implementation(project(":catalogs:catalog-jdbc-common")) {
+    exclude(group = "*")
+  }
+  implementation(project(":common")) {
+    exclude(group = "*")
+  }
+  implementation(project(":core")) {
+    exclude(group = "*")
+  }
+
+  implementation(libs.bundles.log4j)
+  implementation(libs.commons.collections4)
+  implementation(libs.commons.lang3)
+  implementation(libs.guava)
+
+  testImplementation(project(":catalogs:catalog-jdbc-common", "testArtifacts"))
+  testImplementation(project(":clients:client-java"))
+  testImplementation(project(":integration-test-common", "testArtifacts"))
+  testImplementation(project(":server"))
+  testImplementation(project(":server-common"))
+
+  testImplementation(libs.junit.jupiter.api)
+  testImplementation(libs.junit.jupiter.params)
+  testImplementation(libs.mockito.core)
+  testImplementation(libs.testcontainers)
+
+  testRuntimeOnly(libs.junit.jupiter.engine)
+}
+
+tasks {
+  register("runtimeJars", Copy::class) {
+    from(configurations.runtimeClasspath)
+    into("build/libs")
+  }
+  val copyCatalogLibs by registering(Copy::class) {
+    dependsOn("jar", "runtimeJars")
+    from("build/libs") {
+      exclude("guava-*.jar")
+      exclude("log4j-*.jar")
+      exclude("slf4j-*.jar")
+    }
+    into("$rootDir/distribution/package/catalogs/jdbc-maxcompute/libs")
+  }
+
+  val copyCatalogConfig by registering(Copy::class) {
+    from("src/main/resources")
+    into("$rootDir/distribution/package/catalogs/jdbc-maxcompute/conf")
+
+    include("jdbc-maxcompute.conf")
+
+    exclude { details ->
+      details.file.isDirectory()
+    }
+
+    fileMode = 0b111101101
+  }
+
+  register("copyLibAndConfig", Copy::class) {
+    dependsOn(copyCatalogLibs, copyCatalogConfig)
+  }
+}
+
+tasks.test {
+  val skipITs = project.hasProperty("skipITs")
+  if (skipITs) {
+    // Exclude integration tests
+    exclude("**/integration/test/**")
+  } else {
+    dependsOn(tasks.jar)
+  }
+}
+
+tasks.getByName("generateMetadataFileForMavenJavaPublication") {
+  dependsOn("runtimeJars")
+}
diff --git 
a/catalogs/catalog-jdbc-maxcompute/src/main/java/org/apache/gravitino/catalog/maxcompute/MaxComputeCatalog.java
 
b/catalogs/catalog-jdbc-maxcompute/src/main/java/org/apache/gravitino/catalog/maxcompute/MaxComputeCatalog.java
new file mode 100644
index 0000000000..8d19d65b61
--- /dev/null
+++ 
b/catalogs/catalog-jdbc-maxcompute/src/main/java/org/apache/gravitino/catalog/maxcompute/MaxComputeCatalog.java
@@ -0,0 +1,94 @@
+/*
+ * 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.maxcompute;
+
+import java.util.Map;
+import org.apache.gravitino.catalog.jdbc.JdbcCatalog;
+import org.apache.gravitino.catalog.jdbc.JdbcCatalogOperations;
+import 
org.apache.gravitino.catalog.jdbc.converter.JdbcColumnDefaultValueConverter;
+import org.apache.gravitino.catalog.jdbc.converter.JdbcExceptionConverter;
+import org.apache.gravitino.catalog.jdbc.converter.JdbcTypeConverter;
+import org.apache.gravitino.catalog.jdbc.operation.JdbcDatabaseOperations;
+import org.apache.gravitino.catalog.jdbc.operation.JdbcTableOperations;
+import 
org.apache.gravitino.catalog.maxcompute.converter.MaxComputeColumnDefaultValueConverter;
+import 
org.apache.gravitino.catalog.maxcompute.converter.MaxComputeExceptionConverter;
+import 
org.apache.gravitino.catalog.maxcompute.converter.MaxComputeTypeConverter;
+import 
org.apache.gravitino.catalog.maxcompute.operation.MaxComputeDatabaseOperations;
+import 
org.apache.gravitino.catalog.maxcompute.operation.MaxComputeTableOperations;
+import org.apache.gravitino.connector.CatalogOperations;
+import org.apache.gravitino.connector.PropertiesMetadata;
+import org.apache.gravitino.connector.capability.Capability;
+
+/** MaxCompute catalog implementation. */
+public class MaxComputeCatalog extends JdbcCatalog {
+
+  public static final MaxComputeTablePropertiesMetadata 
MAXCOMPUTE_TABLE_PROPERTIES_META =
+      new MaxComputeTablePropertiesMetadata();
+
+  @Override
+  public String shortName() {
+    return "jdbc-maxcompute";
+  }
+
+  @Override
+  protected CatalogOperations newOps(Map<String, String> config) {
+    JdbcTypeConverter jdbcTypeConverter = createJdbcTypeConverter();
+    return new JdbcCatalogOperations(
+        createExceptionConverter(),
+        jdbcTypeConverter,
+        createJdbcDatabaseOperations(),
+        createJdbcTableOperations(),
+        createJdbcColumnDefaultValueConverter());
+  }
+
+  @Override
+  public Capability newCapability() {
+    return new MaxComputeCatalogCapability();
+  }
+
+  @Override
+  protected JdbcExceptionConverter createExceptionConverter() {
+    return new MaxComputeExceptionConverter();
+  }
+
+  @Override
+  protected JdbcTypeConverter createJdbcTypeConverter() {
+    return new MaxComputeTypeConverter();
+  }
+
+  @Override
+  protected JdbcDatabaseOperations createJdbcDatabaseOperations() {
+    return new MaxComputeDatabaseOperations();
+  }
+
+  @Override
+  protected JdbcTableOperations createJdbcTableOperations() {
+    return new MaxComputeTableOperations();
+  }
+
+  @Override
+  protected JdbcColumnDefaultValueConverter 
createJdbcColumnDefaultValueConverter() {
+    return new MaxComputeColumnDefaultValueConverter();
+  }
+
+  @Override
+  public PropertiesMetadata tablePropertiesMetadata() throws 
UnsupportedOperationException {
+    return MAXCOMPUTE_TABLE_PROPERTIES_META;
+  }
+}
diff --git 
a/catalogs/catalog-jdbc-maxcompute/src/main/java/org/apache/gravitino/catalog/maxcompute/MaxComputeCatalogCapability.java
 
b/catalogs/catalog-jdbc-maxcompute/src/main/java/org/apache/gravitino/catalog/maxcompute/MaxComputeCatalogCapability.java
new file mode 100644
index 0000000000..f4f0311dbb
--- /dev/null
+++ 
b/catalogs/catalog-jdbc-maxcompute/src/main/java/org/apache/gravitino/catalog/maxcompute/MaxComputeCatalogCapability.java
@@ -0,0 +1,24 @@
+/*
+ * 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.maxcompute;
+
+import org.apache.gravitino.connector.capability.Capability;
+
+/** Capability for MaxCompute catalog. */
+public class MaxComputeCatalogCapability implements Capability {}
diff --git 
a/catalogs/catalog-jdbc-maxcompute/src/main/java/org/apache/gravitino/catalog/maxcompute/MaxComputeSchemaPropertiesMetadata.java
 
b/catalogs/catalog-jdbc-maxcompute/src/main/java/org/apache/gravitino/catalog/maxcompute/MaxComputeSchemaPropertiesMetadata.java
new file mode 100644
index 0000000000..b244e2ef7c
--- /dev/null
+++ 
b/catalogs/catalog-jdbc-maxcompute/src/main/java/org/apache/gravitino/catalog/maxcompute/MaxComputeSchemaPropertiesMetadata.java
@@ -0,0 +1,33 @@
+/*
+ * 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.maxcompute;
+
+import com.google.common.collect.ImmutableMap;
+import java.util.Map;
+import org.apache.gravitino.catalog.jdbc.JdbcSchemaPropertiesMetadata;
+import org.apache.gravitino.connector.PropertyEntry;
+
+/** Schema properties metadata for MaxCompute. */
+public class MaxComputeSchemaPropertiesMetadata extends 
JdbcSchemaPropertiesMetadata {
+
+  @Override
+  protected Map<String, PropertyEntry<?>> specificPropertyEntries() {
+    return ImmutableMap.of();
+  }
+}
diff --git 
a/catalogs/catalog-jdbc-maxcompute/src/main/java/org/apache/gravitino/catalog/maxcompute/MaxComputeTablePropertiesMetadata.java
 
b/catalogs/catalog-jdbc-maxcompute/src/main/java/org/apache/gravitino/catalog/maxcompute/MaxComputeTablePropertiesMetadata.java
new file mode 100644
index 0000000000..e7ad112b31
--- /dev/null
+++ 
b/catalogs/catalog-jdbc-maxcompute/src/main/java/org/apache/gravitino/catalog/maxcompute/MaxComputeTablePropertiesMetadata.java
@@ -0,0 +1,33 @@
+/*
+ * 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.maxcompute;
+
+import com.google.common.collect.ImmutableMap;
+import java.util.Map;
+import org.apache.gravitino.catalog.jdbc.JdbcTablePropertiesMetadata;
+import org.apache.gravitino.connector.PropertyEntry;
+
+/** Table properties metadata for MaxCompute. */
+public class MaxComputeTablePropertiesMetadata extends 
JdbcTablePropertiesMetadata {
+
+  @Override
+  protected Map<String, PropertyEntry<?>> specificPropertyEntries() {
+    return ImmutableMap.of();
+  }
+}
diff --git 
a/catalogs/catalog-jdbc-maxcompute/src/main/java/org/apache/gravitino/catalog/maxcompute/converter/MaxComputeColumnDefaultValueConverter.java
 
b/catalogs/catalog-jdbc-maxcompute/src/main/java/org/apache/gravitino/catalog/maxcompute/converter/MaxComputeColumnDefaultValueConverter.java
new file mode 100644
index 0000000000..3b9c7ab4d4
--- /dev/null
+++ 
b/catalogs/catalog-jdbc-maxcompute/src/main/java/org/apache/gravitino/catalog/maxcompute/converter/MaxComputeColumnDefaultValueConverter.java
@@ -0,0 +1,24 @@
+/*
+ * 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.maxcompute.converter;
+
+import 
org.apache.gravitino.catalog.jdbc.converter.JdbcColumnDefaultValueConverter;
+
+/** Column default value converter for MaxCompute. */
+public class MaxComputeColumnDefaultValueConverter extends 
JdbcColumnDefaultValueConverter {}
diff --git 
a/catalogs/catalog-jdbc-maxcompute/src/main/java/org/apache/gravitino/catalog/maxcompute/converter/MaxComputeExceptionConverter.java
 
b/catalogs/catalog-jdbc-maxcompute/src/main/java/org/apache/gravitino/catalog/maxcompute/converter/MaxComputeExceptionConverter.java
new file mode 100644
index 0000000000..abc69e8de9
--- /dev/null
+++ 
b/catalogs/catalog-jdbc-maxcompute/src/main/java/org/apache/gravitino/catalog/maxcompute/converter/MaxComputeExceptionConverter.java
@@ -0,0 +1,33 @@
+/*
+ * 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.maxcompute.converter;
+
+import java.sql.SQLException;
+import org.apache.gravitino.catalog.jdbc.converter.JdbcExceptionConverter;
+import org.apache.gravitino.exceptions.GravitinoRuntimeException;
+
+/** Exception converter for MaxCompute. */
+public class MaxComputeExceptionConverter extends JdbcExceptionConverter {
+
+  @SuppressWarnings("FormatStringAnnotation")
+  @Override
+  public GravitinoRuntimeException toGravitinoException(SQLException se) {
+    return new GravitinoRuntimeException(se, se.getMessage());
+  }
+}
diff --git 
a/catalogs/catalog-jdbc-maxcompute/src/main/java/org/apache/gravitino/catalog/maxcompute/converter/MaxComputeTypeConverter.java
 
b/catalogs/catalog-jdbc-maxcompute/src/main/java/org/apache/gravitino/catalog/maxcompute/converter/MaxComputeTypeConverter.java
new file mode 100644
index 0000000000..2df35ff88e
--- /dev/null
+++ 
b/catalogs/catalog-jdbc-maxcompute/src/main/java/org/apache/gravitino/catalog/maxcompute/converter/MaxComputeTypeConverter.java
@@ -0,0 +1,36 @@
+/*
+ * 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.maxcompute.converter;
+
+import org.apache.gravitino.catalog.jdbc.converter.JdbcTypeConverter;
+import org.apache.gravitino.rel.types.Type;
+
+/** Type converter for MaxCompute. */
+public class MaxComputeTypeConverter extends JdbcTypeConverter {
+
+  @Override
+  public Type toGravitino(JdbcTypeBean typeBean) {
+    throw new UnsupportedOperationException("Not implemented yet");
+  }
+
+  @Override
+  public String fromGravitino(Type type) {
+    throw new UnsupportedOperationException("Not implemented yet");
+  }
+}
diff --git 
a/catalogs/catalog-jdbc-maxcompute/src/main/java/org/apache/gravitino/catalog/maxcompute/operation/MaxComputeDatabaseOperations.java
 
b/catalogs/catalog-jdbc-maxcompute/src/main/java/org/apache/gravitino/catalog/maxcompute/operation/MaxComputeDatabaseOperations.java
new file mode 100644
index 0000000000..86312413dd
--- /dev/null
+++ 
b/catalogs/catalog-jdbc-maxcompute/src/main/java/org/apache/gravitino/catalog/maxcompute/operation/MaxComputeDatabaseOperations.java
@@ -0,0 +1,49 @@
+/*
+ * 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.maxcompute.operation;
+
+import com.google.common.collect.ImmutableSet;
+import java.util.Map;
+import java.util.Set;
+import org.apache.gravitino.catalog.jdbc.operation.JdbcDatabaseOperations;
+
+/** Database operations for MaxCompute. */
+public class MaxComputeDatabaseOperations extends JdbcDatabaseOperations {
+
+  @Override
+  public String generateCreateDatabaseSql(
+      String databaseName, String comment, Map<String, String> properties) {
+    throw new UnsupportedOperationException("Not implemented yet");
+  }
+
+  @Override
+  public String generateDropDatabaseSql(String databaseName, boolean cascade) {
+    throw new UnsupportedOperationException("Not implemented yet");
+  }
+
+  @Override
+  protected boolean supportSchemaComment() {
+    return false;
+  }
+
+  @Override
+  protected Set<String> createSysDatabaseNameSet() {
+    return ImmutableSet.of("information_schema");
+  }
+}
diff --git 
a/catalogs/catalog-jdbc-maxcompute/src/main/java/org/apache/gravitino/catalog/maxcompute/operation/MaxComputeTableOperations.java
 
b/catalogs/catalog-jdbc-maxcompute/src/main/java/org/apache/gravitino/catalog/maxcompute/operation/MaxComputeTableOperations.java
new file mode 100644
index 0000000000..bf6ee4fed6
--- /dev/null
+++ 
b/catalogs/catalog-jdbc-maxcompute/src/main/java/org/apache/gravitino/catalog/maxcompute/operation/MaxComputeTableOperations.java
@@ -0,0 +1,64 @@
+/*
+ * 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.maxcompute.operation;
+
+import java.util.Map;
+import org.apache.gravitino.catalog.jdbc.JdbcColumn;
+import org.apache.gravitino.catalog.jdbc.operation.JdbcTableOperations;
+import org.apache.gravitino.rel.TableChange;
+import org.apache.gravitino.rel.expressions.distributions.Distribution;
+import org.apache.gravitino.rel.expressions.transforms.Transform;
+import org.apache.gravitino.rel.indexes.Index;
+
+/** Table operations for MaxCompute. */
+public class MaxComputeTableOperations extends JdbcTableOperations {
+
+  @Override
+  protected String generateCreateTableSql(
+      String tableName,
+      JdbcColumn[] columns,
+      String comment,
+      Map<String, String> properties,
+      Transform[] partitioning,
+      Distribution distribution,
+      Index[] indexes) {
+    throw new UnsupportedOperationException("Not implemented yet");
+  }
+
+  @Override
+  protected String generateAlterTableSql(
+      String databaseName, String tableName, TableChange... changes) {
+    throw new UnsupportedOperationException("Not implemented yet");
+  }
+
+  @Override
+  protected String generateRenameTableSql(String oldTableName, String 
newTableName) {
+    throw new UnsupportedOperationException("Not implemented yet");
+  }
+
+  @Override
+  protected String generateDropTableSql(String tableName) {
+    throw new UnsupportedOperationException("Not implemented yet");
+  }
+
+  @Override
+  protected String generatePurgeTableSql(String tableName) {
+    throw new UnsupportedOperationException("Not implemented yet");
+  }
+}
diff --git 
a/catalogs/catalog-jdbc-maxcompute/src/main/resources/META-INF/services/org.apache.gravitino.CatalogProvider
 
b/catalogs/catalog-jdbc-maxcompute/src/main/resources/META-INF/services/org.apache.gravitino.CatalogProvider
new file mode 100644
index 0000000000..877730cdf0
--- /dev/null
+++ 
b/catalogs/catalog-jdbc-maxcompute/src/main/resources/META-INF/services/org.apache.gravitino.CatalogProvider
@@ -0,0 +1,19 @@
+#
+# 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.
+#
+org.apache.gravitino.catalog.maxcompute.MaxComputeCatalog
diff --git 
a/catalogs/catalog-jdbc-maxcompute/src/main/resources/jdbc-maxcompute.conf 
b/catalogs/catalog-jdbc-maxcompute/src/main/resources/jdbc-maxcompute.conf
new file mode 100644
index 0000000000..be566a5920
--- /dev/null
+++ b/catalogs/catalog-jdbc-maxcompute/src/main/resources/jdbc-maxcompute.conf
@@ -0,0 +1,22 @@
+#
+# 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.
+#
+# jdbc-url = 
jdbc:odps:http://service.cn-hangzhou.maxcompute.aliyun.com/api?project=your_project
+# jdbc-user = your_access_key_id
+# jdbc-password = your_access_key_secret
+# jdbc-driver = com.aliyun.odps.jdbc.OdpsDriver
diff --git 
a/catalogs/catalog-jdbc-maxcompute/src/test/java/org/apache/gravitino/catalog/maxcompute/TestMaxComputeCatalog.java
 
b/catalogs/catalog-jdbc-maxcompute/src/test/java/org/apache/gravitino/catalog/maxcompute/TestMaxComputeCatalog.java
new file mode 100644
index 0000000000..f444fa4ae6
--- /dev/null
+++ 
b/catalogs/catalog-jdbc-maxcompute/src/test/java/org/apache/gravitino/catalog/maxcompute/TestMaxComputeCatalog.java
@@ -0,0 +1,42 @@
+/*
+ * 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.maxcompute;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import org.junit.jupiter.api.Test;
+
+/** Unit tests for MaxComputeCatalog. */
+class TestMaxComputeCatalog {
+
+  @Test
+  void testShortName() {
+    MaxComputeCatalog catalog = new MaxComputeCatalog();
+    assertEquals("jdbc-maxcompute", catalog.shortName());
+  }
+
+  @Test
+  void testNewCapability() {
+    MaxComputeCatalog catalog = new MaxComputeCatalog();
+    assertNotNull(catalog.newCapability());
+    assertTrue(catalog.newCapability() instanceof MaxComputeCatalogCapability);
+  }
+}
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 3d11606aad..20829568e1 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -38,6 +38,7 @@ include(
   "catalogs:catalog-jdbc-common",
   "catalogs:catalog-jdbc-bigquery",
   "catalogs:catalog-jdbc-doris",
+  "catalogs:catalog-jdbc-maxcompute",
   "catalogs:catalog-jdbc-mysql",
   "catalogs:catalog-jdbc-postgresql",
   "catalogs:catalog-jdbc-oceanbase",

Reply via email to