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 @@