diff --git a/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java index 63b0326979..8e424e790b 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java @@ -82,9 +82,9 @@ public abstract class DruidAbstractDataSource extends WrapperAdapter implements public final static int DEFAULT_MIN_IDLE = 0; public final static int DEFAULT_MAX_WAIT = -1; public final static String DEFAULT_VALIDATION_QUERY = null; // - public final static boolean DEFAULT_TEST_ON_BORROW = true; + public final static boolean DEFAULT_TEST_ON_BORROW = false; public final static boolean DEFAULT_TEST_ON_RETURN = false; - public final static boolean DEFAULT_WHILE_IDLE = false; + public final static boolean DEFAULT_WHILE_IDLE = true; public static final long DEFAULT_TIME_BETWEEN_EVICTION_RUNS_MILLIS = -1L; public static final long DEFAULT_TIME_BETWEEN_CONNECT_ERROR_MILLIS = 30 * 1000; public static final int DEFAULT_NUM_TESTS_PER_EVICTION_RUN = 3; diff --git a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java index 8c77c37aec..ffb6c3feac 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java @@ -575,6 +575,10 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat if (!(isTestOnBorrow() || isTestOnReturn() || isTestWhileIdle())) { return; } + + if (this.validConnectionChecker != null) { + return; + } if (this.getValidationQuery() != null && this.getValidationQuery().length() > 0) { return; diff --git a/src/main/java/com/alibaba/druid/pool/vendor/MSSQLValidConnectionChecker.java b/src/main/java/com/alibaba/druid/pool/vendor/MSSQLValidConnectionChecker.java index 5a896018a6..451f39a224 100644 --- a/src/main/java/com/alibaba/druid/pool/vendor/MSSQLValidConnectionChecker.java +++ b/src/main/java/com/alibaba/druid/pool/vendor/MSSQLValidConnectionChecker.java @@ -45,10 +45,6 @@ public class MSSQLValidConnectionChecker implements ValidConnectionChecker, Seri return false; } - if (valiateQuery == null) { - return true; - } - Statement stmt = null; try { diff --git a/src/main/java/com/alibaba/druid/pool/vendor/MySqlValidConnectionChecker.java b/src/main/java/com/alibaba/druid/pool/vendor/MySqlValidConnectionChecker.java index 190718dbd7..44303b63ed 100644 --- a/src/main/java/com/alibaba/druid/pool/vendor/MySqlValidConnectionChecker.java +++ b/src/main/java/com/alibaba/druid/pool/vendor/MySqlValidConnectionChecker.java @@ -61,10 +61,6 @@ public class MySqlValidConnectionChecker implements ValidConnectionChecker, Seri return false; } - if (valiateQuery == null) { - return true; - } - if (driverHasPingMethod) { if (conn instanceof DruidPooledConnection) { conn = ((DruidPooledConnection) conn).getConnection(); diff --git a/src/main/java/com/alibaba/druid/pool/vendor/OracleValidConnectionChecker.java b/src/main/java/com/alibaba/druid/pool/vendor/OracleValidConnectionChecker.java index 9e283b835d..081071a4f8 100644 --- a/src/main/java/com/alibaba/druid/pool/vendor/OracleValidConnectionChecker.java +++ b/src/main/java/com/alibaba/druid/pool/vendor/OracleValidConnectionChecker.java @@ -62,10 +62,6 @@ public class OracleValidConnectionChecker implements ValidConnectionChecker, Ser return false; } - if (valiateQuery == null) { - return true; - } - try { if (conn instanceof DruidPooledConnection) { conn = ((DruidPooledConnection) conn).getConnection(); diff --git a/src/test/java/com/alibaba/druid/bvt/pool/basic/DataSourceTest3.java b/src/test/java/com/alibaba/druid/bvt/pool/basic/DataSourceTest3.java index e0591fc37b..36e51aa321 100644 --- a/src/test/java/com/alibaba/druid/bvt/pool/basic/DataSourceTest3.java +++ b/src/test/java/com/alibaba/druid/bvt/pool/basic/DataSourceTest3.java @@ -21,9 +21,10 @@ import java.util.Properties; import javax.security.auth.callback.PasswordCallback; -import junit.framework.Assert; import junit.framework.TestCase; +import org.junit.Assert; + import com.alibaba.druid.mock.MockDriver; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.pool.DruidPooledConnection; @@ -323,8 +324,17 @@ public class DataSourceTest3 extends TestCase { public void test_error_validateConnection_3() throws Exception { dataSource.setValidationQuery(null); dataSource.setValidConnectionChecker(new MySqlValidConnectionChecker()); - DruidPooledConnection conn = dataSource.getConnection().unwrap(DruidPooledConnection.class); - dataSource.validateConnection(conn); + { + Exception error = null; + try { + DruidPooledConnection conn = dataSource.getConnection().unwrap(DruidPooledConnection.class); + dataSource.validateConnection(conn); + } catch (SQLException ex) { + error = ex; + } + Assert.assertNotNull(error); + } + } } diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlSelectTest_10.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlSelectTest_10.java index 74e760f1c2..9e8a4f1fb8 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlSelectTest_10.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlSelectTest_10.java @@ -54,8 +54,8 @@ public class MySqlSelectTest_10 extends MysqlTest { Assert.assertEquals(1, visitor.getTables().size()); Assert.assertEquals(2, visitor.getColumns().size()); Assert.assertEquals(1, visitor.getConditions().size()); - Assert.assertEquals(0, visitor.getOrderByColumns().size()); + Assert.assertEquals(1, visitor.getOrderByColumns().size()); - Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("group"))); + Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t_department"))); } } diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleSelectTest42.java b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleSelectTest42.java index 5ae58a4974..79ab54ffc9 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleSelectTest42.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleSelectTest42.java @@ -49,9 +49,9 @@ public class OracleSelectTest42 extends OracleTest { System.out.println("relationships : " + visitor.getRelationships()); System.out.println("orderBy : " + visitor.getOrderByColumns()); - Assert.assertEquals(4, visitor.getTables().size()); + Assert.assertEquals(1, visitor.getTables().size()); - Assert.assertEquals(9, visitor.getColumns().size()); + Assert.assertEquals(2, visitor.getColumns().size()); // Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("acduser.vw_acd_info", "xzqh")));