diff --git a/server/src/main/java/edp/core/common/jdbc/JdbcDataSource.java b/server/src/main/java/edp/core/common/jdbc/JdbcDataSource.java index 543f63272..e0b229e95 100644 --- a/server/src/main/java/edp/core/common/jdbc/JdbcDataSource.java +++ b/server/src/main/java/edp/core/common/jdbc/JdbcDataSource.java @@ -315,15 +315,7 @@ public DruidDataSource getDataSource(JdbcSourceInfo jdbcSourceInfo) throws Sourc } // druid wall filter not support some database so set type mysql - if (DataTypeEnum.MOONBOX == DataTypeEnum.urlOf(jdbcUrl) || - DataTypeEnum.MONGODB == DataTypeEnum.urlOf(jdbcUrl) || - DataTypeEnum.ELASTICSEARCH == DataTypeEnum.urlOf(jdbcUrl) || - DataTypeEnum.CASSANDRA == DataTypeEnum.urlOf(jdbcUrl) || - DataTypeEnum.VERTICA == DataTypeEnum.urlOf(jdbcUrl) || - DataTypeEnum.KYLIN == DataTypeEnum.urlOf(jdbcUrl) || - DataTypeEnum.HANA == DataTypeEnum.urlOf(jdbcUrl) || - DataTypeEnum.IMPALA == DataTypeEnum.urlOf(jdbcUrl) || - DataTypeEnum.TDENGINE == DataTypeEnum.urlOf(jdbcUrl)) { + if (DataTypeEnum.hasMysqlFeature(jdbcUrl)) { wallFilter.setDbType(DataTypeEnum.MYSQL.getFeature()); } diff --git a/server/src/main/java/edp/core/enums/DataTypeEnum.java b/server/src/main/java/edp/core/enums/DataTypeEnum.java index d49bcd119..cc1e8ec73 100644 --- a/server/src/main/java/edp/core/enums/DataTypeEnum.java +++ b/server/src/main/java/edp/core/enums/DataTypeEnum.java @@ -22,6 +22,9 @@ import edp.core.consts.Consts; import edp.core.exception.SourceException; +import java.util.EnumSet; +import java.util.Set; + public enum DataTypeEnum { MYSQL("mysql", "mysql", "com.mysql.cj.jdbc.Driver", "`", "`", "'", "'"), @@ -56,7 +59,9 @@ public enum DataTypeEnum { IMPALA("impala", "impala", "com.cloudera.impala.jdbc41.Driver", "", "", "'", "'"), - TDENGINE("TAOS", "TAOS", "com.taosdata.jdbc.TSDBDriver", "'", "'", "\"", "\""); + TDENGINE("TAOS", "TAOS", "com.taosdata.jdbc.TSDBDriver", "'", "'", "\"", "\""), + + ODPS("odps", "odps", "com.aliyun.odps.jdbc.OdpsDriver", "", "", "`", "`"); private String feature; private String desc; @@ -76,6 +81,9 @@ public enum DataTypeEnum { this.aliasSuffix = aliasSuffix; } + private static Set mysqlTypeDBs = EnumSet.of(MOONBOX, MONGODB, ELASTICSEARCH, + CASSANDRA, VERTICA, KYLIN, HANA, IMPALA, TDENGINE, ODPS); + public static DataTypeEnum urlOf(String jdbcUrl) throws SourceException { String url = jdbcUrl.toLowerCase().trim(); for (DataTypeEnum dataTypeEnum : values()) { @@ -86,6 +94,14 @@ public static DataTypeEnum urlOf(String jdbcUrl) throws SourceException { return null; } + public static boolean hasMysqlFeature(String jdbcUrl) throws SourceException { + DataTypeEnum dataTypeEnum = urlOf(jdbcUrl); + if (dataTypeEnum != null && mysqlTypeDBs.contains(dataTypeEnum)) { + return true; + } + return false; + } + public String getFeature() { return feature; }