From 10f84b4eda55bf9e794e5f9111fd39a5349f8728 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E9=93=81?= Date: Tue, 3 Nov 2020 11:29:04 +0800 Subject: [PATCH] bug fixed for dbType compare, fix #4005 --- src/main/java/com/alibaba/druid/DbType.java | 4 ++++ .../alibaba/druid/pool/DruidAbstractDataSource.java | 2 +- .../com/alibaba/druid/pool/DruidConnectionHolder.java | 10 ++++++---- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/alibaba/druid/DbType.java b/src/main/java/com/alibaba/druid/DbType.java index 629b44ed9e..4544237e06 100644 --- a/src/main/java/com/alibaba/druid/DbType.java +++ b/src/main/java/com/alibaba/druid/DbType.java @@ -99,4 +99,8 @@ public enum DbType { return null; } } + + public final boolean equals(String other) { + return this == of(other); + } } diff --git a/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java index 1a043c8eb0..74622ad7f6 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java @@ -867,7 +867,7 @@ public abstract class DruidAbstractDataSource extends WrapperAdapter implements } public void setValidationQueryTimeout(int validationQueryTimeout) { - if (validationQueryTimeout < 0 && JdbcConstants.SQL_SERVER.equals(dbTypeName)) { + if (validationQueryTimeout < 0 && DbType.of(dbTypeName) == DbType.sqlserver) { LOG.error("validationQueryTimeout should be >= 0"); } this.validationQueryTimeout = validationQueryTimeout; diff --git a/src/main/java/com/alibaba/druid/pool/DruidConnectionHolder.java b/src/main/java/com/alibaba/druid/pool/DruidConnectionHolder.java index b754af1d13..9e049f6eda 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidConnectionHolder.java +++ b/src/main/java/com/alibaba/druid/pool/DruidConnectionHolder.java @@ -29,6 +29,7 @@ import java.util.concurrent.locks.ReentrantLock; import javax.sql.ConnectionEventListener; import javax.sql.StatementEventListener; +import com.alibaba.druid.DbType; import com.alibaba.druid.pool.DruidAbstractDataSource.PhysicalConnectionInfo; import com.alibaba.druid.proxy.jdbc.WrapperProxy; import com.alibaba.druid.support.logging.Log; @@ -112,10 +113,11 @@ public final class DruidConnectionHolder { { boolean initUnderlyHoldability = !holdabilityUnsupported; - if (JdbcConstants.SYBASE.equals(dataSource.dbTypeName) // - || JdbcConstants.DB2.equals(dataSource.dbTypeName) // - || JdbcConstants.HIVE.equals(dataSource.dbTypeName) // - || JdbcConstants.ODPS.equals(dataSource.dbTypeName) // + DbType dbType = DbType.of(dataSource.dbTypeName); + if (dbType == DbType.sybase // + || dbType == DbType.db2 // + || dbType == DbType.hive // + || dbType == DbType.odps // ) { initUnderlyHoldability = false; }