diff --git a/amoro-ams/pom.xml b/amoro-ams/pom.xml
index 98652eeb5b..650c3be313 100644
--- a/amoro-ams/pom.xml
+++ b/amoro-ams/pom.xml
@@ -228,6 +228,12 @@
derby
+
+ com.dameng
+ DmJdbcDriver18
+ provided
+
+
mysql
mysql-connector-java
@@ -564,6 +570,7 @@
derby/**
mysql/**
postgres/**
+ dameng/**
diff --git a/amoro-ams/src/main/java/org/apache/amoro/server/AmoroManagementConf.java b/amoro-ams/src/main/java/org/apache/amoro/server/AmoroManagementConf.java
index 8ba5439bd7..35fc154385 100644
--- a/amoro-ams/src/main/java/org/apache/amoro/server/AmoroManagementConf.java
+++ b/amoro-ams/src/main/java/org/apache/amoro/server/AmoroManagementConf.java
@@ -535,6 +535,7 @@ public class AmoroManagementConf {
public static final String DB_TYPE_DERBY = "derby";
public static final String DB_TYPE_MYSQL = "mysql";
public static final String DB_TYPE_POSTGRES = "postgres";
+ public static final String DB_TYPE_DAMENG = "dameng";
// terminal config
public static final List TERMINAL_BACKEND_VALUES =
diff --git a/amoro-ams/src/main/java/org/apache/amoro/server/AmoroManagementConfValidator.java b/amoro-ams/src/main/java/org/apache/amoro/server/AmoroManagementConfValidator.java
index bae28f7611..bb6e2d8674 100644
--- a/amoro-ams/src/main/java/org/apache/amoro/server/AmoroManagementConfValidator.java
+++ b/amoro-ams/src/main/java/org/apache/amoro/server/AmoroManagementConfValidator.java
@@ -35,15 +35,17 @@ public static void validateConfig(Configurations configurations) {
AmsUtil.lookForBindHost(configurations.getString(AmoroManagementConf.SERVER_EXPOSE_HOST));
configurations.setString(AmoroManagementConf.SERVER_EXPOSE_HOST, inetAddress.getHostAddress());
- // mysql or postgres config
+ // mysql or postgres or dameng config
if (AmoroManagementConf.DB_TYPE_MYSQL.equalsIgnoreCase(
configurations.getString(AmoroManagementConf.DB_TYPE))
|| AmoroManagementConf.DB_TYPE_POSTGRES.equalsIgnoreCase(
+ configurations.getString(AmoroManagementConf.DB_TYPE))
+ || AmoroManagementConf.DB_TYPE_DAMENG.equalsIgnoreCase(
configurations.getString(AmoroManagementConf.DB_TYPE))) {
if ("".equals(configurations.getString(AmoroManagementConf.DB_PASSWORD))
|| "".equals(configurations.getString(AmoroManagementConf.DB_USER_NAME))) {
throw new IllegalArgumentException(
- "username and password must be configured if the database type is mysql or postgres");
+ "username and password must be configured if the database type is mysql or postgres or dameng ");
}
}
diff --git a/amoro-ams/src/main/java/org/apache/amoro/server/persistence/DataSourceFactory.java b/amoro-ams/src/main/java/org/apache/amoro/server/persistence/DataSourceFactory.java
index 26d1932150..5ac0e19553 100644
--- a/amoro-ams/src/main/java/org/apache/amoro/server/persistence/DataSourceFactory.java
+++ b/amoro-ams/src/main/java/org/apache/amoro/server/persistence/DataSourceFactory.java
@@ -47,6 +47,7 @@ public class DataSourceFactory {
private static final String DERBY_INIT_SQL_SCRIPT = "derby/ams-derby-init.sql";
private static final String MYSQL_INIT_SQL_SCRIPT = "mysql/ams-mysql-init.sql";
private static final String POSTGRES_INIT_SQL_SCRIPT = "postgres/ams-postgres-init.sql";
+ private static final String DAMENG_INIT_SQL_SCRIPT = "dameng/ams-dameng-init.sql";
public static DataSource createDataSource(Configurations config) {
BasicDataSource dataSource = new BasicDataSource();
@@ -54,7 +55,8 @@ public static DataSource createDataSource(Configurations config) {
dataSource.setDriverClassName(config.getString(AmoroManagementConf.DB_DRIVER_CLASS_NAME));
String dbType = config.getString(AmoroManagementConf.DB_TYPE);
if (AmoroManagementConf.DB_TYPE_MYSQL.equals(dbType)
- || AmoroManagementConf.DB_TYPE_POSTGRES.equals(dbType)) {
+ || AmoroManagementConf.DB_TYPE_POSTGRES.equals(dbType)
+ || AmoroManagementConf.DB_TYPE_DAMENG.equals(dbType)) {
dataSource.setUsername(config.getString(AmoroManagementConf.DB_USER_NAME));
dataSource.setPassword(config.getString(AmoroManagementConf.DB_PASSWORD));
}
@@ -104,6 +106,9 @@ private static void createTablesIfNeed(DataSource ds, Configurations config) {
String.format(
"SELECT 1 FROM information_schema.tables WHERE table_schema = %s AND table_name = '%s'",
"current_schema()", "catalog_metadata");
+ } else if (AmoroManagementConf.DB_TYPE_DAMENG.equals(dbTypeConfig)) {
+ query =
+ String.format("SELECT 1 FROM user_tables WHERE table_name = '%s'", "catalog_metadata");
}
LOG.info("Start check table creation, using query: {}", query);
try (ResultSet rs = statement.executeQuery(query)) {
@@ -131,6 +136,8 @@ private static URI getInitSqlScriptPath(String type) throws URISyntaxException {
scriptPath = DERBY_INIT_SQL_SCRIPT;
} else if (type.equals(AmoroManagementConf.DB_TYPE_POSTGRES)) {
scriptPath = POSTGRES_INIT_SQL_SCRIPT;
+ } else if (type.equals(AmoroManagementConf.DB_TYPE_DAMENG)) {
+ scriptPath = DAMENG_INIT_SQL_SCRIPT;
}
URL scriptUrl = ClassLoader.getSystemResource(scriptPath);
if (scriptUrl == null) {
diff --git a/amoro-ams/src/main/java/org/apache/amoro/server/persistence/SqlSessionFactoryProvider.java b/amoro-ams/src/main/java/org/apache/amoro/server/persistence/SqlSessionFactoryProvider.java
index 49eb9f5db5..39834d30c4 100644
--- a/amoro-ams/src/main/java/org/apache/amoro/server/persistence/SqlSessionFactoryProvider.java
+++ b/amoro-ams/src/main/java/org/apache/amoro/server/persistence/SqlSessionFactoryProvider.java
@@ -86,6 +86,7 @@ public void init(DataSource dataSource) throws SQLException {
properties.setProperty("MySQL", "mysql");
properties.setProperty("PostgreSQL", "postgres");
properties.setProperty("Derby", "derby");
+ properties.setProperty("DM DBMS", "dameng");
provider.setProperties(properties);
configuration.setDatabaseId(provider.getDatabaseId(dataSource));
if (sqlSessionFactory == null) {
@@ -101,6 +102,7 @@ private void registerDialectAliases() {
registerDialectAlias("postgres", PostgreSqlDialect.class);
registerDialectAlias("mysql", MySqlDialect.class);
registerDialectAlias("derby", SqlServer2012Dialect.class);
+ registerDialectAlias("dameng", MySqlDialect.class);
}
public SqlSessionFactory get() {
diff --git a/amoro-ams/src/main/java/org/apache/amoro/server/persistence/mapper/TableRuntimeMapper.java b/amoro-ams/src/main/java/org/apache/amoro/server/persistence/mapper/TableRuntimeMapper.java
index 3cfb69f2e9..660a840040 100644
--- a/amoro-ams/src/main/java/org/apache/amoro/server/persistence/mapper/TableRuntimeMapper.java
+++ b/amoro-ams/src/main/java/org/apache/amoro/server/persistence/mapper/TableRuntimeMapper.java
@@ -107,6 +107,7 @@ public interface TableRuntimeMapper {
+ ""
+ ""
+ ""
+ + ""
+ "SELECT r.table_id, group_name, status_code, status_code_update_time, table_config, table_summary, bucket_id FROM "
+ TABLE_NAME
+ " r JOIN table_identifier i "
diff --git a/amoro-ams/src/test/java/org/apache/amoro/server/TestAmoroManagementConfValidator.java b/amoro-ams/src/test/java/org/apache/amoro/server/TestAmoroManagementConfValidator.java
index 8e52f779b8..fc37865c1d 100644
--- a/amoro-ams/src/test/java/org/apache/amoro/server/TestAmoroManagementConfValidator.java
+++ b/amoro-ams/src/test/java/org/apache/amoro/server/TestAmoroManagementConfValidator.java
@@ -46,7 +46,7 @@ public void testValidateServerExposeHost() {
}
public static Stream testValidateDBConfig() {
- return Stream.of(Arguments.of("mysql"), Arguments.of("postgres"));
+ return Stream.of(Arguments.of("mysql"), Arguments.of("postgres"), Arguments.of("dameng"));
}
@ParameterizedTest
diff --git a/charts/amoro/templates/amoro-deployment.yaml b/charts/amoro/templates/amoro-deployment.yaml
index 05d84d2e84..c26d206878 100644
--- a/charts/amoro/templates/amoro-deployment.yaml
+++ b/charts/amoro/templates/amoro-deployment.yaml
@@ -50,7 +50,7 @@ spec: {{/* TODO If Support Replica can be use more than 1 */}}
imagePullPolicy: {{ .Values.image.pullPolicy }}
command: [ "/entrypoint.sh", "ams" ]
env:
- {{- if or (eq .Values.amoroConf.database.type "mysql") (eq .Values.amoroConf.database.type "postgres") }}
+ {{- if or (eq .Values.amoroConf.database.type "mysql") (eq .Values.amoroConf.database.type "postgres") (eq .Values.amoroConf.database.type "dameng") }}
- name: "AMS_DATABASE_USERNAME"
valueFrom:
secretKeyRef:
diff --git a/charts/amoro/templates/amoro-secret.yaml b/charts/amoro/templates/amoro-secret.yaml
index 3beff332b9..022003d012 100644
--- a/charts/amoro/templates/amoro-secret.yaml
+++ b/charts/amoro/templates/amoro-secret.yaml
@@ -27,7 +27,7 @@ data:
AdminUsername: {{ .Values.amoroConf.ams.adminUsername | b64enc | quote }}
AdminPassword: {{ .Values.amoroConf.ams.adminPassword | b64enc | quote }}
- {{- if or (eq .Values.amoroConf.database.type "mysql") (eq .Values.amoroConf.database.type "postgres") }}
+ {{- if or (eq .Values.amoroConf.database.type "mysql") (eq .Values.amoroConf.database.type "postgres") (eq .Values.amoroConf.database.type "dameng") }}
# use helm set database username and password
DatabaseUsername: {{ .Values.amoroConf.database.username | b64enc | quote }}
DatabasePassword: {{ .Values.amoroConf.database.password | b64enc | quote }}
diff --git a/dist/src/main/assemblies/bin.xml b/dist/src/main/assemblies/bin.xml
index e239365127..76156a229b 100644
--- a/dist/src/main/assemblies/bin.xml
+++ b/dist/src/main/assemblies/bin.xml
@@ -113,6 +113,11 @@
conf/derby
0644
+
+ ../amoro-ams/src/main/resources/dameng
+ conf/dameng
+ 0644
+
../amoro-ams/target/amoro-ams-dependency/lib
lib/
diff --git a/dist/src/main/assemblies/release-bin.xml b/dist/src/main/assemblies/release-bin.xml
index 23d8ba12d0..72d0cd0316 100644
--- a/dist/src/main/assemblies/release-bin.xml
+++ b/dist/src/main/assemblies/release-bin.xml
@@ -89,6 +89,11 @@
conf/derby
0644
+
+ ../amoro-ams/src/main/resources/dameng
+ conf/dameng
+ 0644
+
../amoro-ams/target/amoro-ams-dependency/lib
lib/
diff --git a/docker/amoro/Dockerfile b/docker/amoro/Dockerfile
index 8315411c74..c230836ab3 100644
--- a/docker/amoro/Dockerfile
+++ b/docker/amoro/Dockerfile
@@ -58,6 +58,9 @@ WORKDIR ${AMORO_HOME}
RUN cd ${AMORO_HOME}/lib \
&& wget ${MAVEN_MIRROR}/mysql/mysql-connector-java/8.0.30/mysql-connector-java-8.0.30.jar
+RUN cd ${AMORO_HOME}/lib \
+ && wget ${MAVEN_MIRROR}/com/dameng/DmJdbcDriver18/8.1.2.141/DmJdbcDriver18-8.1.2.141.jar
+
ENTRYPOINT ["/entrypoint.sh"]
CMD ["help"]
diff --git a/pom.xml b/pom.xml
index 41c26c4d9f..d8d5ed207d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -138,6 +138,7 @@
2.2
3.5.15
42.7.2
+ 8.1.2.141
10.14.2.0
2.9.0
4.1.128.Final
@@ -787,6 +788,12 @@
${mysql-jdbc.version}
+
+ com.dameng
+ DmJdbcDriver18
+ ${dameng-jdbc.version}
+
+
org.apache.commons
commons-dbcp2