diff --git a/README.md b/README.md
new file mode 100644
index 0000000000..e0e971d22a
--- /dev/null
+++ b/README.md
@@ -0,0 +1,4 @@
+druid
+========
+
+Already moved to https://github.com/alibaba/druid !
diff --git a/pom.xml b/pom.xml
index d4bee6fefb..c18ad79e56 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
com.alibaba
druid
- 0.2.12-SNAPSHOT
+ 0.2.12
jar
druid
@@ -16,7 +16,7 @@
3.1.1.RELEASE
4.11
- true
+ false
UTF-8
1.6
diff --git a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java
index 4cda1552a8..b287fc917e 100644
--- a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java
+++ b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java
@@ -875,7 +875,7 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat
}
}
this.discardConnection(holder.getConnection());
- pooledConnection.disable();
+ pooledConnection.disable(t);
}
throw sqlEx;
diff --git a/src/main/java/com/alibaba/druid/pool/DruidPooledConnection.java b/src/main/java/com/alibaba/druid/pool/DruidPooledConnection.java
index 4557d28468..e99ecb205d 100644
--- a/src/main/java/com/alibaba/druid/pool/DruidPooledConnection.java
+++ b/src/main/java/com/alibaba/druid/pool/DruidPooledConnection.java
@@ -53,24 +53,26 @@ import com.alibaba.druid.support.logging.LogFactory;
*/
public class DruidPooledConnection extends PoolableWrapper implements javax.sql.PooledConnection, Connection {
- private final static Log LOG = LogFactory.getLog(DruidPooledConnection.class);
+ private final static Log LOG = LogFactory.getLog(DruidPooledConnection.class);
protected Connection conn;
protected volatile DruidConnectionHolder holder;
protected TransactionInfo transactionInfo;
private final boolean dupCloseLogEnable;
- private volatile boolean traceEnable = false;
- private boolean disable = false;
- private boolean closed = false;
+ private volatile boolean traceEnable = false;
+ private boolean disable = false;
+ private boolean closed = false;
private final Thread ownerThread;
private long connectedTimeNano;
- private volatile boolean running = false;
+ private volatile boolean running = false;
- private volatile boolean abandoned = false;
+ private volatile boolean abandoned = false;
private StackTraceElement[] connectStackTrace;
+ private Throwable disableError = null;
+
public DruidPooledConnection(DruidConnectionHolder holder){
super(holder.getConnection());
@@ -148,7 +150,7 @@ public class DruidPooledConnection extends PoolableWrapper implements javax.sql.
if (rawStatement.getConnection().isClosed()) {
return;
}
-
+
LOG.error("clear parameter error", ex);
}
}
@@ -179,10 +181,15 @@ public class DruidPooledConnection extends PoolableWrapper implements javax.sql.
}
public void disable() {
+ disable(null);
+ }
+
+ public void disable(Throwable error) {
this.traceEnable = false;
this.holder = null;
this.transactionInfo = null;
this.disable = true;
+ this.disableError = error;
}
public boolean isDisable() {
@@ -1012,8 +1019,16 @@ public class DruidPooledConnection extends PoolableWrapper implements javax.sql.
}
public void checkState() throws SQLException {
- if (holder == null || closed || disable) {
- throw new SQLException("connection is closed");
+ if (holder == null) {
+ throw new SQLException("connection holder is null");
+ }
+
+ if (closed) {
+ throw new SQLException("connection closed");
+ }
+
+ if (disable) {
+ throw new SQLException("connection disabled", disableError);
}
}
diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLWithSubqueryClause.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLWithSubqueryClause.java
index afc34684ad..b198529845 100644
--- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLWithSubqueryClause.java
+++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLWithSubqueryClause.java
@@ -55,7 +55,7 @@ public class SQLWithSubqueryClause extends SQLObjectImpl {
private static final long serialVersionUID = 1L;
protected SQLIdentifierExpr name;
protected final List columns = new ArrayList();
- protected SQLSelectQuery subQuery;
+ protected SQLSelect subQuery;
@Override
protected void accept0(SQLASTVisitor visitor) {
@@ -75,11 +75,11 @@ public class SQLWithSubqueryClause extends SQLObjectImpl {
this.name = name;
}
- public SQLSelectQuery getSubQuery() {
+ public SQLSelect getSubQuery() {
return subQuery;
}
- public void setSubQuery(SQLSelectQuery subQuery) {
+ public void setSubQuery(SQLSelect subQuery) {
this.subQuery = subQuery;
}
diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlOutputVisitor.java
index 5afba62eb8..7b3b9d6e2c 100644
--- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlOutputVisitor.java
+++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlOutputVisitor.java
@@ -15,6 +15,7 @@
*/
package com.alibaba.druid.sql.dialect.mysql.visitor;
+import java.util.List;
import java.util.Map;
import com.alibaba.druid.sql.ast.SQLCommentHint;
@@ -342,7 +343,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV
printAndAccept(x.getArguments(), ", ");
print(")");
}
-
+
if (x.getCharSetName() != null) {
print(" CHARACTER SET ");
print(x.getCharSetName());
@@ -521,6 +522,17 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV
}
public boolean visit(SQLVariantRefExpr x) {
+ {
+ List