support mariadb java client

This commit is contained in:
wenshao
2013-05-03 16:44:32 +08:00
parent 650a5b451a
commit e4ba0b7a0d
9 changed files with 55 additions and 34 deletions
@@ -405,7 +405,8 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat
filter.init(this);
}
if (this.dbType == JdbcConstants.MYSQL) {
if (JdbcConstants.MYSQL.equals(this.dbType) || //
JdbcConstants.MARIADB.equals(this.dbType)) {
boolean cacheServerConfigurationSet = false;
if (this.connectProperties.containsKey("cacheServerConfiguration")) {
cacheServerConfigurationSet = true;
@@ -544,7 +545,6 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat
createConnectionThread.start();
}
/**
* load filters from SPI ServiceLoader
*
@@ -94,7 +94,9 @@ public class PagerUtils {
private static String limitQueryBlock(SQLSelect select, String dbType, int offset, int count) {
SQLSelectQueryBlock queryBlock = (SQLSelectQueryBlock) select.getQuery();
if (JdbcConstants.MYSQL.equals(dbType)) {
if (JdbcConstants.MYSQL.equals(dbType) || //
JdbcConstants.MARIADB.equals(dbType) || //
JdbcConstants.H2.equals(dbType)) {
return limitMySqlQueryBlock((MySqlSelectQueryBlock) queryBlock, dbType, offset, count);
}
@@ -205,6 +207,14 @@ public class PagerUtils {
return new MySqlSelectQueryBlock();
}
if (JdbcConstants.MARIADB.equals(dbType)) {
return new MySqlSelectQueryBlock();
}
if (JdbcConstants.H2.equals(dbType)) {
return new MySqlSelectQueryBlock();
}
if (JdbcConstants.ORACLE.equals(dbType)) {
return new OracleSelectQueryBlock();
}
@@ -45,11 +45,9 @@ public class SQLUtils {
private final static Log LOG = LogFactory.getLog(SQLUtils.class);
public static String toSQLString(SQLObject sqlObject, String dbType) {
if (JdbcUtils.MYSQL.equals(dbType)) {
return toMySqlString(sqlObject);
}
if (JdbcUtils.H2.equals(dbType)) {
if (JdbcUtils.MYSQL.equals(dbType) || //
JdbcUtils.MARIADB.equals(dbType) || //
JdbcUtils.H2.equals(dbType)) {
return toMySqlString(sqlObject);
}
@@ -139,7 +137,7 @@ public class SQLUtils {
public static SQLExpr toSQLExpr(String sql) {
return toSQLExpr(sql, null);
}
public static String format(String sql, String dbType) {
return format(sql, dbType, null);
}
@@ -158,7 +156,7 @@ public class SQLUtils {
public static String toSQLString(List<SQLStatement> statementList, String dbType) {
return toSQLString(statementList, dbType, null);
}
public static String toSQLString(List<SQLStatement> statementList, String dbType, List<Object> parameters) {
StringBuilder out = new StringBuilder();
SQLASTOutputVisitor visitor = createFormatOutputVisitor(out, statementList, dbType);
@@ -183,7 +181,9 @@ public class SQLUtils {
}
}
if (JdbcUtils.MYSQL.equals(dbType)) {
if (JdbcUtils.MYSQL.equals(dbType) || //
JdbcUtils.MARIADB.equals(dbType) || //
JdbcUtils.H2.equals(dbType)) {
return new MySqlOutputVisitor(out);
}
@@ -194,15 +194,11 @@ public class SQLUtils {
if (JdbcUtils.SQL_SERVER.equals(dbType)) {
return new SQLServerOutputVisitor(out);
}
if (JdbcUtils.JTDS.equals(dbType)) {
return new SQLServerOutputVisitor(out);
}
if (JdbcUtils.H2.equals(dbType)) {
return new MySqlOutputVisitor(out);
}
return new SQLASTOutputVisitor(out);
}
@@ -215,7 +211,9 @@ public class SQLUtils {
}
}
if (JdbcUtils.MYSQL.equals(dbType)) {
if (JdbcUtils.MYSQL.equals(dbType) || //
JdbcUtils.MARIADB.equals(dbType) || //
JdbcUtils.H2.equals(dbType)) {
return new MySqlSchemaStatVisitor();
}
@@ -226,15 +224,11 @@ public class SQLUtils {
if (JdbcUtils.SQL_SERVER.equals(dbType)) {
return new SQLServerSchemaStatVisitor();
}
if (JdbcUtils.JTDS.equals(dbType)) {
return new SQLServerSchemaStatVisitor();
}
if (JdbcUtils.H2.equals(dbType)) {
return new MySqlSchemaStatVisitor();
}
return new SchemaStatVisitor();
}
@@ -36,6 +36,10 @@ public class SQLParserUtils {
return new MySqlStatementParser(sql);
}
if (JdbcUtils.MARIADB.equals(dbType)) {
return new MySqlStatementParser(sql);
}
if (JdbcUtils.POSTGRESQL.equals(dbType)) {
return new PGSQLStatementParser(sql);
}
@@ -43,7 +47,7 @@ public class SQLParserUtils {
if (JdbcUtils.SQL_SERVER.equals(dbType)) {
return new SQLServerStatementParser(sql);
}
if (JdbcUtils.JTDS.equals(dbType)) {
return new SQLServerStatementParser(sql);
}
@@ -60,11 +64,9 @@ public class SQLParserUtils {
return new OracleExprParser(sql);
}
if (JdbcUtils.H2.equals(dbType)) {
return new MySqlExprParser(sql);
}
if (JdbcUtils.MYSQL.equals(dbType)) {
if (JdbcUtils.MYSQL.equals(dbType) || //
JdbcUtils.MARIADB.equals(dbType) || //
JdbcUtils.H2.equals(dbType)) {
return new MySqlExprParser(sql);
}
@@ -75,7 +77,7 @@ public class SQLParserUtils {
if (JdbcUtils.SQL_SERVER.equals(dbType)) {
return new SQLServerExprParser(sql);
}
if (JdbcUtils.JTDS.equals(dbType)) {
return new SQLServerExprParser(sql);
}
@@ -56,6 +56,10 @@ public class ParameterizedOutputVisitorUtils {
if (JdbcUtils.MYSQL.equals(dbType)) {
return new MySqlParameterizedOutputVisitor(out);
}
if (JdbcUtils.MARIADB.equals(dbType)) {
return new MySqlParameterizedOutputVisitor(out);
}
if (JdbcUtils.H2.equals(dbType)) {
return new MySqlParameterizedOutputVisitor(out);
@@ -139,6 +139,10 @@ public class SQLEvalVisitorUtils {
if (JdbcUtils.MYSQL.equals(dbType)) {
return new MySqlEvalVisitorImpl();
}
if (JdbcUtils.MARIADB.equals(dbType)) {
return new MySqlEvalVisitorImpl();
}
if (JdbcUtils.H2.equals(dbType)) {
return new MySqlEvalVisitorImpl();
@@ -34,16 +34,17 @@ public interface JdbcConstants {
public static final String SQL_SERVER = "sqlserver";
public static final String ORACLE = "oracle";
public static final String ALI_ORACLE = "AliOracle";
public static final String ORACLE_DRIVER = "oracle.jdbc.driver.OracleDriver";
public static final String ALI_ORACLE = "AliOracle";
public static final String ALI_ORACLE_DRIVER = "com.alibaba.jdbc.AlibabaDriver";
public static final String MYSQL = "mysql";
public static final String MYSQL_DRIVER = "com.mysql.jdbc.Driver";
public static final String MARIADB = "mariadb";
public static final String MARIADB_DRIVER = "org.mariadb.jdbc.Driver";
public static final String DERBY = "derby";
public static final String HBASE = "hbase";
@@ -348,6 +348,8 @@ public final class JdbcUtils implements JdbcConstants {
return "org.apache.derby.jdbc.EmbeddedDriver";
} else if (rawUrl.startsWith("jdbc:mysql:")) {
return MYSQL_DRIVER;
} else if (rawUrl.startsWith("jdbc:mariadb:")) {
return MARIADB_DRIVER;
} else if (rawUrl.startsWith("jdbc:oracle:")) {
return ORACLE_DRIVER;
} else if (rawUrl.startsWith("jdbc:alibaba:oracle:")) {
@@ -414,6 +416,8 @@ public final class JdbcUtils implements JdbcConstants {
return DERBY;
} else if (rawUrl.startsWith("jdbc:mysql:")) {
return MYSQL;
} else if (rawUrl.startsWith("jdbc:mariadb:")) {
return MARIADB;
} else if (rawUrl.startsWith("jdbc:oracle:")) {
return ORACLE;
} else if (rawUrl.startsWith("jdbc:alibaba:oracle:")) {
@@ -72,7 +72,9 @@ public class WallFilter extends FilterAdapter implements WallFilterMBean {
dbType = JdbcUtils.getDbType(dataSource.getUrl(), null);
}
if (JdbcUtils.MYSQL.equals(dbType) || JdbcUtils.H2.equals(dbType)) {
if (JdbcUtils.MYSQL.equals(dbType) || //
JdbcUtils.MARIADB.equals(dbType) || //
JdbcUtils.H2.equals(dbType)) {
if (config == null) {
config = new WallConfig(MySqlWallProvider.DEFAULT_CONFIG_DIR);
}
@@ -541,7 +543,7 @@ public class WallFilter extends FilterAdapter implements WallFilterMBean {
if (sqlStat == null) {
return;
}
Map<String, WallSqlTableStat> sqlTableStats = sqlStat.getTableStats();
if (sqlTableStats == null) {
return;