diff --git a/pom.xml b/pom.xml
index aeec50adef..6b5a4bd6e0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -650,7 +650,7 @@
com.alibaba
fastjson
- 1.2.36
+ 1.2.67
test
diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLSelect.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLSelect.java
index 690a715ca4..c0625dc2cd 100644
--- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLSelect.java
+++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLSelect.java
@@ -247,9 +247,7 @@ public class SQLSelect extends SQLObjectImpl {
}
if (this.hints != null) {
- for (SQLHint hint : this.hints) {
- x.hints.add(hint);
- }
+ x.hints.addAll(this.hints);
}
x.forBrowse = forBrowse;
diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLSelectQueryBlock.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLSelectQueryBlock.java
index 033df7524d..3a4cbbb9a2 100644
--- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLSelectQueryBlock.java
+++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLSelectQueryBlock.java
@@ -166,9 +166,7 @@ public class SQLSelectQueryBlock extends SQLObjectImpl implements SQLSelectQuery
SQLInListExpr inListItem = (SQLInListExpr) item;
if (inListExpr.getExpr().equals(inListItem.getExpr())) {
TreeSet set = new TreeSet();
- for (SQLExpr itemItem : inListItem.getTargetList()) {
- set.add(itemItem);
- }
+ set.addAll(inListItem.getTargetList());
List andList = new ArrayList();
for (SQLExpr exprItem : inListExpr.getTargetList()) {
diff --git a/src/main/java/com/alibaba/druid/sql/builder/SQLSelectBuilder.java b/src/main/java/com/alibaba/druid/sql/builder/SQLSelectBuilder.java
index 60057402b9..5d919b098f 100644
--- a/src/main/java/com/alibaba/druid/sql/builder/SQLSelectBuilder.java
+++ b/src/main/java/com/alibaba/druid/sql/builder/SQLSelectBuilder.java
@@ -47,5 +47,6 @@ public interface SQLSelectBuilder {
SQLSelectBuilder whereOr(String sql);
+ @Override
String toString();
}
diff --git a/src/main/java/com/alibaba/druid/sql/builder/impl/SQLDeleteBuilderImpl.java b/src/main/java/com/alibaba/druid/sql/builder/impl/SQLDeleteBuilderImpl.java
index 8cbdd19b4e..83ffeb1ca8 100644
--- a/src/main/java/com/alibaba/druid/sql/builder/impl/SQLDeleteBuilderImpl.java
+++ b/src/main/java/com/alibaba/druid/sql/builder/impl/SQLDeleteBuilderImpl.java
@@ -139,6 +139,7 @@ public class SQLDeleteBuilderImpl implements SQLDeleteBuilder {
return new SQLDeleteStatement();
}
+ @Override
public String toString() {
return SQLUtils.toSQLString(stmt, dbType);
}
diff --git a/src/main/java/com/alibaba/druid/sql/builder/impl/SQLSelectBuilderImpl.java b/src/main/java/com/alibaba/druid/sql/builder/impl/SQLSelectBuilderImpl.java
index 802354e59a..fe7e992ff0 100644
--- a/src/main/java/com/alibaba/druid/sql/builder/impl/SQLSelectBuilderImpl.java
+++ b/src/main/java/com/alibaba/druid/sql/builder/impl/SQLSelectBuilderImpl.java
@@ -81,6 +81,7 @@ public class SQLSelectBuilderImpl implements SQLSelectBuilder {
return stmt;
}
+ @Override
public SQLSelectBuilderImpl select(String... columns) {
SQLSelectQueryBlock queryBlock = getQueryBlock();
@@ -267,6 +268,7 @@ public class SQLSelectBuilderImpl implements SQLSelectBuilder {
return new SQLSelectGroupByClause();
}
+ @Override
public String toString() {
return SQLUtils.toSQLString(stmt, dbType);
}
diff --git a/src/main/java/com/alibaba/druid/sql/builder/impl/SQLUpdateBuilderImpl.java b/src/main/java/com/alibaba/druid/sql/builder/impl/SQLUpdateBuilderImpl.java
index 26b0dc81f2..08b002beef 100644
--- a/src/main/java/com/alibaba/druid/sql/builder/impl/SQLUpdateBuilderImpl.java
+++ b/src/main/java/com/alibaba/druid/sql/builder/impl/SQLUpdateBuilderImpl.java
@@ -119,6 +119,7 @@ public class SQLUpdateBuilderImpl extends SQLBuilderImpl implements SQLUpdateBui
return this;
}
+ @Override
public SQLUpdateBuilderImpl set(String... items) {
SQLUpdateStatement update = getSQLUpdateStatement();
for (String item : items) {
@@ -178,6 +179,7 @@ public class SQLUpdateBuilderImpl extends SQLBuilderImpl implements SQLUpdateBui
return new SQLUpdateStatement();
}
+ @Override
public String toString() {
return SQLUtils.toSQLString(stmt, dbType);
}
diff --git a/src/main/java/com/alibaba/druid/util/OracleUtils.java b/src/main/java/com/alibaba/druid/util/OracleUtils.java
index 7ac4a9699e..8a1c49a9fb 100644
--- a/src/main/java/com/alibaba/druid/util/OracleUtils.java
+++ b/src/main/java/com/alibaba/druid/util/OracleUtils.java
@@ -38,6 +38,7 @@ import com.alibaba.druid.support.logging.LogFactory;
import oracle.jdbc.OracleConnection;
import oracle.jdbc.OracleResultSet;
import oracle.jdbc.OracleStatement;
+import oracle.jdbc.driver.T4CXAConnection;
import oracle.jdbc.internal.OraclePreparedStatement;
import oracle.jdbc.xa.client.OracleXAConnection;
import oracle.sql.ROWID;
@@ -47,7 +48,12 @@ public class OracleUtils {
private final static Log LOG = LogFactory.getLog(OracleUtils.class);
public static XAConnection OracleXAConnection(Connection oracleConnection) throws XAException {
- return new OracleXAConnection(oracleConnection);
+ String oracleConnectionClassName = oracleConnection.getClass().getName();
+ if ("oracle.jdbc.driver.T4CConnection".equals(oracleConnectionClassName)) {
+ return new T4CXAConnection(oracleConnection);
+ } else {
+ return new OracleXAConnection(oracleConnection);
+ }
}
public static int getRowPrefetch(PreparedStatement stmt) throws SQLException {
diff --git a/src/main/resources/support/http/resources/datasource.html b/src/main/resources/support/http/resources/datasource.html
index f1d6922fb0..e6b1fadc0e 100644
--- a/src/main/resources/support/http/resources/datasource.html
+++ b/src/main/resources/support/http/resources/datasource.html
@@ -25,14 +25,16 @@