Skip to content

Commit 93d8588

Browse files
author
linjianchang
committed
[AMORO-3989] Amoro's support for the domestic database Damang
1 parent f41f68b commit 93d8588

File tree

12 files changed

+42
-6
lines changed

12 files changed

+42
-6
lines changed

amoro-ams/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,11 @@
228228
<artifactId>derby</artifactId>
229229
</dependency>
230230

231+
<dependency>
232+
<groupId>com.dameng</groupId>
233+
<artifactId>DmJdbcDriver18</artifactId>
234+
</dependency>
235+
231236
<dependency>
232237
<groupId>mysql</groupId>
233238
<artifactId>mysql-connector-java</artifactId>
@@ -536,6 +541,7 @@
536541
<exclude>derby/**</exclude>
537542
<exclude>mysql/**</exclude>
538543
<exclude>postgres/**</exclude>
544+
<exclude>dameng/**</exclude>
539545
</excludes>
540546
</configuration>
541547
</plugin>

amoro-ams/src/main/java/org/apache/amoro/server/AmoroManagementConf.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -516,6 +516,7 @@ public class AmoroManagementConf {
516516
public static final String DB_TYPE_DERBY = "derby";
517517
public static final String DB_TYPE_MYSQL = "mysql";
518518
public static final String DB_TYPE_POSTGRES = "postgres";
519+
public static final String DB_TYPE_DAMENG = "dameng";
519520

520521
// terminal config
521522
public static final List<String> TERMINAL_BACKEND_VALUES =

amoro-ams/src/main/java/org/apache/amoro/server/AmoroManagementConfValidator.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,17 @@ public static void validateConfig(Configurations configurations) {
3535
AmsUtil.lookForBindHost(configurations.getString(AmoroManagementConf.SERVER_EXPOSE_HOST));
3636
configurations.setString(AmoroManagementConf.SERVER_EXPOSE_HOST, inetAddress.getHostAddress());
3737

38-
// mysql or postgres config
38+
// mysql or postgres or dameng config
3939
if (AmoroManagementConf.DB_TYPE_MYSQL.equalsIgnoreCase(
4040
configurations.getString(AmoroManagementConf.DB_TYPE))
4141
|| AmoroManagementConf.DB_TYPE_POSTGRES.equalsIgnoreCase(
42+
configurations.getString(AmoroManagementConf.DB_TYPE))
43+
|| AmoroManagementConf.DB_TYPE_DAMENG.equalsIgnoreCase(
4244
configurations.getString(AmoroManagementConf.DB_TYPE))) {
4345
if ("".equals(configurations.getString(AmoroManagementConf.DB_PASSWORD))
4446
|| "".equals(configurations.getString(AmoroManagementConf.DB_USER_NAME))) {
4547
throw new IllegalArgumentException(
46-
"username and password must be configured if the database type is mysql or postgres");
48+
"username and password must be configured if the database type is mysql or postgres or dameng");
4749
}
4850
}
4951

amoro-ams/src/main/java/org/apache/amoro/server/persistence/DataSourceFactory.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,16 @@ public class DataSourceFactory {
4747
private static final String DERBY_INIT_SQL_SCRIPT = "derby/ams-derby-init.sql";
4848
private static final String MYSQL_INIT_SQL_SCRIPT = "mysql/ams-mysql-init.sql";
4949
private static final String POSTGRES_INIT_SQL_SCRIPT = "postgres/ams-postgres-init.sql";
50+
private static final String DAMENG_INIT_SQL_SCRIPT = "dameng/ams-dameng-init.sql";
5051

5152
public static DataSource createDataSource(Configurations config) {
5253
BasicDataSource dataSource = new BasicDataSource();
5354
dataSource.setUrl(config.getString(AmoroManagementConf.DB_CONNECTION_URL));
5455
dataSource.setDriverClassName(config.getString(AmoroManagementConf.DB_DRIVER_CLASS_NAME));
5556
String dbType = config.getString(AmoroManagementConf.DB_TYPE);
5657
if (AmoroManagementConf.DB_TYPE_MYSQL.equals(dbType)
57-
|| AmoroManagementConf.DB_TYPE_POSTGRES.equals(dbType)) {
58+
|| AmoroManagementConf.DB_TYPE_POSTGRES.equals(dbType)
59+
|| AmoroManagementConf.DB_TYPE_DAMENG.equals(dbType)) {
5860
dataSource.setUsername(config.getString(AmoroManagementConf.DB_USER_NAME));
5961
dataSource.setPassword(config.getString(AmoroManagementConf.DB_PASSWORD));
6062
}
@@ -104,6 +106,9 @@ private static void createTablesIfNeed(DataSource ds, Configurations config) {
104106
String.format(
105107
"SELECT 1 FROM information_schema.tables WHERE table_schema = %s AND table_name = '%s'",
106108
"current_schema()", "catalog_metadata");
109+
} else if (AmoroManagementConf.DB_TYPE_DAMENG.equals(dbTypeConfig)) {
110+
query =
111+
String.format("SELECT 1 FROM user_tables WHERE table_name = '%s'", "catalog_metadata");
107112
}
108113
LOG.info("Start check table creation, using query: {}", query);
109114
try (ResultSet rs = statement.executeQuery(query)) {
@@ -131,6 +136,8 @@ private static URI getInitSqlScriptPath(String type) throws URISyntaxException {
131136
scriptPath = DERBY_INIT_SQL_SCRIPT;
132137
} else if (type.equals(AmoroManagementConf.DB_TYPE_POSTGRES)) {
133138
scriptPath = POSTGRES_INIT_SQL_SCRIPT;
139+
} else if (type.equals(AmoroManagementConf.DB_TYPE_DAMENG)) {
140+
scriptPath = DAMENG_INIT_SQL_SCRIPT;
134141
}
135142
URL scriptUrl = ClassLoader.getSystemResource(scriptPath);
136143
if (scriptUrl == null) {

amoro-ams/src/main/java/org/apache/amoro/server/persistence/SqlSessionFactoryProvider.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ public void init(DataSource dataSource) throws SQLException {
8686
properties.setProperty("MySQL", "mysql");
8787
properties.setProperty("PostgreSQL", "postgres");
8888
properties.setProperty("Derby", "derby");
89+
properties.setProperty("DM DBMS", "dameng");
8990
provider.setProperties(properties);
9091
configuration.setDatabaseId(provider.getDatabaseId(dataSource));
9192
if (sqlSessionFactory == null) {
@@ -101,6 +102,7 @@ private void registerDialectAliases() {
101102
registerDialectAlias("postgres", PostgreSqlDialect.class);
102103
registerDialectAlias("mysql", MySqlDialect.class);
103104
registerDialectAlias("derby", SqlServer2012Dialect.class);
105+
registerDialectAlias("dameng", MySqlDialect.class);
104106
}
105107

106108
public SqlSessionFactory get() {

amoro-ams/src/main/java/org/apache/amoro/server/persistence/mapper/TableRuntimeMapper.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ public interface TableRuntimeMapper {
107107
+ "<bind name=\"isMySQL\" value=\"_databaseId == 'mysql'\" />"
108108
+ "<bind name=\"isPostgreSQL\" value=\"_databaseId == 'postgres'\" />"
109109
+ "<bind name=\"isDerby\" value=\"_databaseId == 'derby'\" />"
110+
+ "<bind name=\"isDerby\" value=\"_databaseId == 'dameng'\" />"
110111
+ "SELECT r.table_id, group_name, status_code, status_code_update_time, table_config, table_summary, bucket_id FROM "
111112
+ TABLE_NAME
112113
+ " r JOIN table_identifier i "

amoro-ams/src/test/java/org/apache/amoro/server/TestAmoroManagementConfValidator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public void testValidateServerExposeHost() {
4646
}
4747

4848
public static Stream<Arguments> testValidateDBConfig() {
49-
return Stream.of(Arguments.of("mysql"), Arguments.of("postgres"));
49+
return Stream.of(Arguments.of("mysql"), Arguments.of("postgres"), Arguments.of("dameng"));
5050
}
5151

5252
@ParameterizedTest

charts/amoro/templates/amoro-deployment.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ spec: {{/* TODO If Support Replica can be use more than 1 */}}
5050
imagePullPolicy: {{ .Values.image.pullPolicy }}
5151
command: [ "/entrypoint.sh", "ams" ]
5252
env:
53-
{{- if or (eq .Values.amoroConf.database.type "mysql") (eq .Values.amoroConf.database.type "postgres") }}
53+
{{- if or (eq .Values.amoroConf.database.type "mysql") (eq .Values.amoroConf.database.type "postgres") (eq .Values.amoroConf.database.type "dameng") }}
5454
- name: "AMS_DATABASE_USERNAME"
5555
valueFrom:
5656
secretKeyRef:

charts/amoro/templates/amoro-secret.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ data:
2727
AdminUsername: {{ .Values.amoroConf.ams.adminUsername | b64enc | quote }}
2828
AdminPassword: {{ .Values.amoroConf.ams.adminPassword | b64enc | quote }}
2929

30-
{{- if or (eq .Values.amoroConf.database.type "mysql") (eq .Values.amoroConf.database.type "postgres") }}
30+
{{- if or (eq .Values.amoroConf.database.type "mysql") (eq .Values.amoroConf.database.type "postgres") (eq .Values.amoroConf.database.type "dameng") }}
3131
# use helm set database username and password
3232
DatabaseUsername: {{ .Values.amoroConf.database.username | b64enc | quote }}
3333
DatabasePassword: {{ .Values.amoroConf.database.password | b64enc | quote }}

dist/src/main/assemblies/bin.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,11 @@
113113
<outputDirectory>conf/derby</outputDirectory>
114114
<fileMode>0644</fileMode>
115115
</fileSet>
116+
<fileSet>
117+
<directory>../amoro-ams/src/main/resources/dameng</directory>
118+
<outputDirectory>conf/dameng</outputDirectory>
119+
<fileMode>0644</fileMode>
120+
</fileSet>
116121
<fileSet>
117122
<directory>../amoro-ams/target/amoro-ams-dependency/lib</directory>
118123
<outputDirectory>lib/</outputDirectory>

0 commit comments

Comments
 (0)