From fa102ee0a3071837a7beb19a7ca6028075937d73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E9=93=81?= Date: Fri, 11 Mar 2016 11:49:34 +0800 Subject: [PATCH 1/3] changed DruidDataSource discardConnectiion filling logic --- .../java/com/alibaba/druid/pool/DruidAbstractDataSource.java | 4 ++++ src/main/java/com/alibaba/druid/pool/DruidDataSource.java | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java index a4a5f74a91..6a56cb01d9 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java @@ -931,6 +931,10 @@ public abstract class DruidAbstractDataSource extends WrapperAdapter implements if (inited && value > this.maxActive) { throw new IllegalArgumentException("minIdle greater than maxActive, " + maxActive + " < " + this.minIdle); } + + if (minIdle < 0) { + throw new IllegalArgumentException("minIdle must > 0"); + } this.minIdle = value; } diff --git a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java index 9e2abf3bfc..2820c557ae 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java @@ -1059,7 +1059,7 @@ public class DruidDataSource extends DruidAbstractDataSource activeCount--; discardCount++; - if (activeCount <= 0) { + if (activeCount <= minIdle) { emptySignal(); } } finally { From a71eb0b6cf9974ad137deee9cf3ab6cefb4f55a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E9=93=81?= Date: Fri, 11 Mar 2016 11:50:02 +0800 Subject: [PATCH 2/3] fixed testcase --- .../druid/bvt/pool/DruidDataSourceConverterTest.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceConverterTest.java b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceConverterTest.java index 89e3a4a49a..11934b982c 100644 --- a/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceConverterTest.java +++ b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceConverterTest.java @@ -15,10 +15,17 @@ public class DruidDataSourceConverterTest extends TestCase { private DruidDataSource dataSource; protected void setUp() throws Exception { + String osName = System.getProperty("os.name"); + String root = DruidDataSourceConverterTest.class .getResource("/com/alibaba/druid/pool/simplejndi/").toString(); - if (root.startsWith("file:/")) + if (root.startsWith("file:/")) { root = root.substring("file://".length() - 1); + } + + if (osName.toLowerCase().indexOf("win") == -1) { + root = "/" + root; + } Properties props = new Properties(); props.put("org.osjava.sj.root", root); props.put("java.naming.factory.initial", From 64ffb6b6f4feeb61fdc752cd297f54414c8a1df2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E9=93=81?= Date: Fri, 11 Mar 2016 11:50:38 +0800 Subject: [PATCH 3/3] mysql sql parser support unicode alias --- .../druid/sql/dialect/mysql/parser/MySqlLexer.java | 2 +- .../druid/bvt/sql/schemaStat/SchemaStatTest.java | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlLexer.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlLexer.java index b9f266abb6..f6244c205d 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlLexer.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlLexer.java @@ -537,7 +537,7 @@ public class MySqlLexer extends Lexer { if (c <= identifierFlags.length) { return identifierFlags[c]; } - return false; + return c != ' ' && c != ','; } public void scanNumber() { diff --git a/src/test/java/com/alibaba/druid/bvt/sql/schemaStat/SchemaStatTest.java b/src/test/java/com/alibaba/druid/bvt/sql/schemaStat/SchemaStatTest.java index 8c1a355862..facae89ff8 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/schemaStat/SchemaStatTest.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/schemaStat/SchemaStatTest.java @@ -2,11 +2,12 @@ package com.alibaba.druid.bvt.sql.schemaStat; import org.junit.Assert; +import com.alibaba.druid.sql.SQLUtils; import com.alibaba.druid.sql.ast.SQLStatement; -import com.alibaba.druid.sql.dialect.odps.parser.OdpsStatementParser; -import com.alibaba.druid.sql.dialect.odps.visitor.OdpsSchemaStatVisitor; +import com.alibaba.druid.sql.parser.SQLParserUtils; import com.alibaba.druid.sql.parser.SQLStatementParser; import com.alibaba.druid.sql.visitor.SchemaStatVisitor; +import com.alibaba.druid.util.JdbcConstants; import junit.framework.TestCase; @@ -17,10 +18,12 @@ public class SchemaStatTest extends TestCase { + " from alisec_app.adl_tb_wing_rubbish_laidian_new_reason_realname_fdt " + " order by 来电日期 desc limit 30;"; - SQLStatementParser parser = new OdpsStatementParser(sql); + + String dbType = JdbcConstants.ODPS; + SQLStatementParser parser = SQLParserUtils.createSQLStatementParser(sql, dbType); SQLStatement stmt = parser.parseStatementList().get(0); - SchemaStatVisitor statVisitor = new OdpsSchemaStatVisitor(); + SchemaStatVisitor statVisitor = SQLUtils.createSchemaStatVisitor(dbType); stmt.accept(statVisitor); System.out.println(statVisitor.getColumns());