From da433839eead0c530af5a54c8d96f9217f5317f3 Mon Sep 17 00:00:00 2001 From: wenshao Date: Sun, 16 Jun 2013 08:51:51 +0800 Subject: [PATCH] add testcase & remove unused code --- .../java/com/alibaba/druid/mock/MockBlob.java | 6 +- .../java/com/alibaba/druid/mock/MockClob.java | 2 +- .../com/alibaba/druid/mock/MockResultSet.java | 10 +- .../pool/ValidConnectionCheckerAdapter.java | 2 +- .../pool/vendor/SybaseExceptionSorter.java | 10 +- .../druid/sql/ast/expr/SQLBinaryOpExpr.java | 6 +- .../sql/ast/expr/SQLHexStringLiteralExpr.java | 81 --------- .../sql/ast/expr/SQLIntervalLiteralExpr.java | 90 ---------- .../sql/ast/expr/SQLObjectCreateExpr.java | 92 ---------- .../ast/statement/SQLColumnUniqueIndex.java | 32 ---- .../ast/statement/SQLSelectQueryBlock.java | 3 + .../sql/ast/statement/SQLSelectUnionType.java | 22 --- .../MySqlCreateDatabaseStatement.java | 21 --- .../mysql/parser/MySqlCreateTableParser.java | 2 +- .../dialect/mysql/parser/MySqlExprParser.java | 2 +- .../mysql/parser/MySqlStatementParser.java | 1 - .../oracle/ast/stmt/OracleTableExpr.java | 164 ------------------ .../ast/stmt/OracleUpdateSetClause.java | 27 --- .../ast/stmt/OracleUpdateSetListClause.java | 44 ----- .../ast/stmt/OracleUpdateSetListItem.java | 27 --- .../OracleUpdateSetListMultiColumnItem.java | 59 ------- .../OracleUpdateSetListSingleColumnItem.java | 56 ------ .../oracle/visitor/OracleASTVisitor.java | 30 ---- .../visitor/OracleASTVisitorAdapter.java | 84 +-------- .../oracle/visitor/OracleOutputVisitor.java | 139 +++------------ .../visitor/OracleSchemaStatVisitor.java | 85 +-------- .../postgresql/ast/PGAnalyticWindowing.java | 66 ------- .../postgresql/ast/expr/PGAnalytic.java | 63 ------- .../ast/stmt/PGSQLStatementImpl.java | 25 --- .../postgresql/visitor/PGASTVisitor.java | 5 - .../visitor/PGASTVisitorAdapter.java | 11 -- .../postgresql/visitor/PGOutputVisitor.java | 26 --- .../visitor/PGSchemaStatVisitor.java | 11 -- .../alibaba/druid/sql/parser/Keywords.java | 2 + .../druid/sql/parser/SQLStatementParser.java | 5 + .../ParameterizedOutputVisitorUtils.java | 6 + .../sql/visitor/SQLASTOutputVisitor.java | 12 -- .../druid/sql/visitor/SQLASTVisitor.java | 15 -- .../sql/visitor/SQLASTVisitorAdapter.java | 26 --- .../sql/visitor/SQLEvalVisitorUtils.java | 74 ++++---- .../druid/sql/visitor/SQLShardingVisitor.java | 32 ---- .../logging/JakartaCommonsLoggingImpl.java | 13 +- .../support/logging/Jdk14LoggingImpl.java | 9 + .../alibaba/druid/support/logging/Log.java | 3 + .../druid/support/logging/Log4jImpl.java | 12 +- .../druid/support/logging/NoLoggingImpl.java | 9 + .../druid/support/logging/SLF4JImpl.java | 8 + .../druid/util/ConcurrentIdentityHashMap.java | 40 ----- .../druid/util/DaemonThreadFactory.java | 3 +- .../bvt/filter/wall/SQLServerWallTest_8.java} | 76 ++++---- .../vendor/InformixExceptionSorterTest.java | 36 ++++ .../vendor/SybaseExceptionSorterTest.java | 32 ++++ .../ValidConnectionCheckerAdapterTest.java | 16 ++ .../bvt/spring/SqlMapExecutorWrapperTest.java | 64 +++++++ .../bvt/sql/SQLCommentStatementTest.java | 23 +++ .../druid/bvt/sql/eval/EvalBetweenTest.java | 3 +- .../druid/bvt/sql/eval/EvalConcatTest.java | 3 +- .../druid/bvt/sql/eval/EvalMethodAbsTest.java | 10 +- .../bvt/sql/eval/EvalMethodAcosTest.java | 3 +- .../druid/bvt/sql/eval/EvalMethodCosTest.java | 17 ++ .../bvt/sql/eval/EvalMethodLog10Test.java | 17 ++ .../druid/bvt/sql/eval/EvalMethodLogTest.java | 17 ++ .../bvt/sql/eval/EvalMethodPowerTest.java | 17 ++ .../druid/bvt/sql/eval/EvalMethodRandom.java | 15 ++ .../druid/bvt/sql/eval/EvalMethodSinTest.java | 18 ++ .../bvt/sql/eval/EvalMethodSqrtTest.java | 17 ++ .../druid/bvt/sql/eval/EvalMethodTanTest.java | 17 ++ .../druid/bvt/sql/eval/EvalTest_add.java | 23 +++ .../druid/bvt/sql/eval/EvalTest_add_long.java | 23 +++ .../bvt/sql/eval/EvalTest_add_short.java | 23 +++ .../druid/bvt/sql/eval/EvalTest_div.java | 46 +++++ .../druid/bvt/sql/eval/EvalTest_gt.java | 50 ++++++ .../druid/bvt/sql/eval/EvalTest_lt.java | 50 ++++++ .../druid/bvt/sql/eval/EvalTest_lteq.java | 50 ++++++ .../MySqlParameterizedOutputVisitorTest.java | 6 +- .../bvt/sql/mysql/MySqlUpdateTest_2.java | 58 +++++++ .../bvt/sql/oracle/OracleSelectTest43.java | 59 +++++++ .../bvt/sql/oracle/OracleUpdateTest2.java | 2 +- .../PGExportParameterVisitorTest.java | 29 ++++ .../PGExportParameterVisitorTest1.java | 29 ++++ ...MSSQLServerExportParameterVisitorTest.java | 29 ++++ .../sql/sqlserver/SQLServerInsertTest2.java | 3 +- ...LServerParameterizedOutputVisitorTest.java | 60 +++++++ .../sql/sqlserver/SQLServerSelectTest1.java | 3 +- .../ibatis/DruidDataSourceFactoryTest.java | 20 +++ .../JakartaCommonsLoggingImplTest.java | 30 ++++ .../support/logging/Jdk14LoggingImplTest.java | 30 ++++ .../bvt/support/logging/Log4jImplTest.java | 30 ++++ .../support/logging/NoLoggingImplTest.java | 30 ++++ .../bvt/support/logging/SLF4JImplTest.java | 6 + .../support/spring/DruidLobHandlerTest.java | 48 +++++ .../utils/ConcurrentIdentityHashMapTest.java | 3 +- .../utils/ConcurrentIdentityHashMapTest2.java | 63 +++++++ .../utils/ConcurrentIdentityHashMapTest3.java | 39 +++++ .../bvt/utils/DaemonThreadFactoryTest.java | 21 +++ .../druid/bvt/utils/LocalResultSetTest.java | 27 +++ .../druid/bvt/utils/MySqlUtilsTest.java | 17 ++ src/test/resources/bvt/parser/mysql-9.txt | 2 +- 98 files changed, 1424 insertions(+), 1459 deletions(-) delete mode 100644 src/main/java/com/alibaba/druid/sql/ast/expr/SQLHexStringLiteralExpr.java delete mode 100644 src/main/java/com/alibaba/druid/sql/ast/expr/SQLIntervalLiteralExpr.java delete mode 100644 src/main/java/com/alibaba/druid/sql/ast/expr/SQLObjectCreateExpr.java delete mode 100644 src/main/java/com/alibaba/druid/sql/ast/statement/SQLColumnUniqueIndex.java delete mode 100644 src/main/java/com/alibaba/druid/sql/ast/statement/SQLSelectUnionType.java delete mode 100644 src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/statement/MySqlCreateDatabaseStatement.java delete mode 100644 src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleTableExpr.java delete mode 100644 src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleUpdateSetClause.java delete mode 100644 src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleUpdateSetListClause.java delete mode 100644 src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleUpdateSetListItem.java delete mode 100644 src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleUpdateSetListMultiColumnItem.java delete mode 100644 src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleUpdateSetListSingleColumnItem.java delete mode 100644 src/main/java/com/alibaba/druid/sql/dialect/postgresql/ast/PGAnalyticWindowing.java delete mode 100644 src/main/java/com/alibaba/druid/sql/dialect/postgresql/ast/expr/PGAnalytic.java delete mode 100644 src/main/java/com/alibaba/druid/sql/dialect/postgresql/ast/stmt/PGSQLStatementImpl.java delete mode 100644 src/main/java/com/alibaba/druid/sql/visitor/SQLShardingVisitor.java rename src/{main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleUpdateSetValueClause.java => test/java/com/alibaba/druid/bvt/filter/wall/SQLServerWallTest_8.java} (51%) create mode 100644 src/test/java/com/alibaba/druid/bvt/pool/vendor/InformixExceptionSorterTest.java create mode 100644 src/test/java/com/alibaba/druid/bvt/pool/vendor/SybaseExceptionSorterTest.java create mode 100644 src/test/java/com/alibaba/druid/bvt/pool/vendor/ValidConnectionCheckerAdapterTest.java create mode 100644 src/test/java/com/alibaba/druid/bvt/spring/SqlMapExecutorWrapperTest.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/SQLCommentStatementTest.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodCosTest.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodLog10Test.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodLogTest.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodPowerTest.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodRandom.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodSinTest.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodSqrtTest.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodTanTest.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/eval/EvalTest_add.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/eval/EvalTest_add_long.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/eval/EvalTest_add_short.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/eval/EvalTest_div.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/eval/EvalTest_gt.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/eval/EvalTest_lt.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/eval/EvalTest_lteq.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlUpdateTest_2.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleSelectTest43.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/postgresql/PGExportParameterVisitorTest.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/postgresql/PGExportParameterVisitorTest1.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/sqlserver/MSSQLServerExportParameterVisitorTest.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerParameterizedOutputVisitorTest.java create mode 100644 src/test/java/com/alibaba/druid/bvt/support/ibatis/DruidDataSourceFactoryTest.java create mode 100644 src/test/java/com/alibaba/druid/bvt/support/logging/JakartaCommonsLoggingImplTest.java create mode 100644 src/test/java/com/alibaba/druid/bvt/support/logging/Jdk14LoggingImplTest.java create mode 100644 src/test/java/com/alibaba/druid/bvt/support/logging/Log4jImplTest.java create mode 100644 src/test/java/com/alibaba/druid/bvt/support/logging/NoLoggingImplTest.java create mode 100644 src/test/java/com/alibaba/druid/bvt/support/spring/DruidLobHandlerTest.java create mode 100644 src/test/java/com/alibaba/druid/bvt/utils/ConcurrentIdentityHashMapTest2.java create mode 100644 src/test/java/com/alibaba/druid/bvt/utils/ConcurrentIdentityHashMapTest3.java create mode 100644 src/test/java/com/alibaba/druid/bvt/utils/DaemonThreadFactoryTest.java create mode 100644 src/test/java/com/alibaba/druid/bvt/utils/LocalResultSetTest.java create mode 100644 src/test/java/com/alibaba/druid/bvt/utils/MySqlUtilsTest.java diff --git a/src/main/java/com/alibaba/druid/mock/MockBlob.java b/src/main/java/com/alibaba/druid/mock/MockBlob.java index 7d092d8585..b79d936321 100644 --- a/src/main/java/com/alibaba/druid/mock/MockBlob.java +++ b/src/main/java/com/alibaba/druid/mock/MockBlob.java @@ -23,8 +23,7 @@ import java.sql.Blob; import java.sql.SQLException; public class MockBlob implements Blob { - - private ByteArrayOutputStream out = new ByteArrayOutputStream(); + private final ByteArrayOutputStream out = new ByteArrayOutputStream(); @Override public long length() throws SQLException { @@ -34,7 +33,8 @@ public class MockBlob implements Blob { @Override public byte[] getBytes(long pos, int length) throws SQLException { byte[] bytes = new byte[length]; - System.arraycopy(out.toByteArray(), (int) pos, bytes, 0, length); + byte[] outBytes = out.toByteArray(); + System.arraycopy(outBytes, (int) (pos - 1), bytes, 0, length); return bytes; } diff --git a/src/main/java/com/alibaba/druid/mock/MockClob.java b/src/main/java/com/alibaba/druid/mock/MockClob.java index 85a1cd0f3d..62f0a6127b 100644 --- a/src/main/java/com/alibaba/druid/mock/MockClob.java +++ b/src/main/java/com/alibaba/druid/mock/MockClob.java @@ -42,7 +42,7 @@ public class MockClob implements Clob { @Override public String getSubString(long pos, int length) throws SQLException { - return new String(bytes, (int) pos, length); + return new String(bytes, (int) (pos - 1), length); } @Override diff --git a/src/main/java/com/alibaba/druid/mock/MockResultSet.java b/src/main/java/com/alibaba/druid/mock/MockResultSet.java index f2ae9a8bfb..92cb3f825e 100644 --- a/src/main/java/com/alibaba/druid/mock/MockResultSet.java +++ b/src/main/java/com/alibaba/druid/mock/MockResultSet.java @@ -26,11 +26,16 @@ import com.alibaba.druid.util.jdbc.ResultSetBase; public class MockResultSet extends ResultSetBase implements ResultSet { - private int rowIndex = -1; - private List rows = new ArrayList(); + private int rowIndex = -1; + private List rows; public MockResultSet(Statement statement){ + this(statement, new ArrayList()); + } + + public MockResultSet(Statement statement, List rows){ super(statement); + this.rows = rows; super.metaData = new MockResultSetMetaData(); } @@ -51,7 +56,6 @@ public class MockResultSet extends ResultSetBase implements ResultSet { return false; } - @Override public ResultSetMetaData getMetaData() throws SQLException { if (closed) { diff --git a/src/main/java/com/alibaba/druid/pool/ValidConnectionCheckerAdapter.java b/src/main/java/com/alibaba/druid/pool/ValidConnectionCheckerAdapter.java index 96e669a215..c3c433bc1c 100644 --- a/src/main/java/com/alibaba/druid/pool/ValidConnectionCheckerAdapter.java +++ b/src/main/java/com/alibaba/druid/pool/ValidConnectionCheckerAdapter.java @@ -26,7 +26,7 @@ public class ValidConnectionCheckerAdapter implements ValidConnectionChecker { @Override public boolean isValidConnection(Connection c, String query, int validationQueryTimeout) { - return false; + return true; } @Override diff --git a/src/main/java/com/alibaba/druid/pool/vendor/SybaseExceptionSorter.java b/src/main/java/com/alibaba/druid/pool/vendor/SybaseExceptionSorter.java index 996c4cb31f..93508383e1 100644 --- a/src/main/java/com/alibaba/druid/pool/vendor/SybaseExceptionSorter.java +++ b/src/main/java/com/alibaba/druid/pool/vendor/SybaseExceptionSorter.java @@ -24,11 +24,19 @@ import com.alibaba.druid.pool.ExceptionSorter; public class SybaseExceptionSorter implements ExceptionSorter, Serializable { private static final long serialVersionUID = 2742592563671255116L; + + public SybaseExceptionSorter() { + this.configFromProperties(System.getProperties()); + } public boolean isExceptionFatal(SQLException e) { boolean result = false; - String errorText = (e.getMessage()).toUpperCase(); + String errorText = e.getMessage(); + if (errorText == null) { + return false; + } + errorText = errorText.toUpperCase(); if ((errorText.indexOf("JZ0C0") > -1) || // ERR_CONNECTION_DEAD (errorText.indexOf("JZ0C1") > -1) // ERR_IOE_KILLED_CONNECTION diff --git a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLBinaryOpExpr.java b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLBinaryOpExpr.java index dd87f215e7..db2a2435e8 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLBinaryOpExpr.java +++ b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLBinaryOpExpr.java @@ -24,9 +24,9 @@ import com.alibaba.druid.sql.visitor.SQLASTVisitor; public class SQLBinaryOpExpr extends SQLExprImpl implements Serializable { private static final long serialVersionUID = 1L; - public SQLExpr left; - public SQLExpr right; - public SQLBinaryOperator operator; + private SQLExpr left; + private SQLExpr right; + private SQLBinaryOperator operator; public SQLBinaryOpExpr(){ diff --git a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLHexStringLiteralExpr.java b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLHexStringLiteralExpr.java deleted file mode 100644 index 247b11a5fb..0000000000 --- a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLHexStringLiteralExpr.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 1999-2011 Alibaba Group Holding Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.alibaba.druid.sql.ast.expr; - -import com.alibaba.druid.sql.ast.SQLExprImpl; -import com.alibaba.druid.sql.visitor.SQLASTVisitor; - -public class SQLHexStringLiteralExpr extends SQLExprImpl implements SQLLiteralExpr { - - private static final long serialVersionUID = 1L; - - private String value; - - public SQLHexStringLiteralExpr(){ - - } - - public String getValue() { - return value; - } - - public void setValue(String value) { - this.value = value; - } - - @Override - protected void accept0(SQLASTVisitor visitor) { - visitor.visit(this); - - visitor.endVisit(this); - } - - public void output(StringBuffer buf) { - buf.append("x'"); - buf.append(value); - buf.append("'"); - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((value == null) ? 0 : value.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - SQLHexStringLiteralExpr other = (SQLHexStringLiteralExpr) obj; - if (value == null) { - if (other.value != null) { - return false; - } - } else if (!value.equals(other.value)) { - return false; - } - return true; - } -} diff --git a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLIntervalLiteralExpr.java b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLIntervalLiteralExpr.java deleted file mode 100644 index 7e367e5637..0000000000 --- a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLIntervalLiteralExpr.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 1999-2011 Alibaba Group Holding Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.alibaba.druid.sql.ast.expr; - -import com.alibaba.druid.sql.ast.SQLExprImpl; -import com.alibaba.druid.sql.visitor.SQLASTVisitor; - -/** - * TODO - * - * @author WENSHAO - */ -public class SQLIntervalLiteralExpr extends SQLExprImpl implements SQLLiteralExpr { - - private static final long serialVersionUID = 1L; - - private Character sign = null; - - public Character getSign() { - return sign; - } - - public void setSign(Character sign) { - this.sign = sign; - } - - public SQLIntervalLiteralExpr(){ - - } - - @Override - public void output(StringBuffer buf) { - buf.append("INTERVAL"); - if (sign != null) { - buf.append(sign.charValue()); - } - throw new RuntimeException("TODO"); - } - - @Override - protected void accept0(SQLASTVisitor visitor) { - visitor.visit(this); - - visitor.endVisit(this); - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((sign == null) ? 0 : sign.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - SQLIntervalLiteralExpr other = (SQLIntervalLiteralExpr) obj; - if (sign == null) { - if (other.sign != null) { - return false; - } - } else if (!sign.equals(other.sign)) { - return false; - } - return true; - } - -} diff --git a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLObjectCreateExpr.java b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLObjectCreateExpr.java deleted file mode 100644 index 17f03897d2..0000000000 --- a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLObjectCreateExpr.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright 1999-2011 Alibaba Group Holding Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.alibaba.druid.sql.ast.expr; - -import java.io.Serializable; -import java.util.ArrayList; -import java.util.List; - -import com.alibaba.druid.sql.ast.SQLExpr; -import com.alibaba.druid.sql.ast.SQLExprImpl; -import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; -import com.alibaba.druid.sql.visitor.SQLASTVisitor; - -public class SQLObjectCreateExpr extends SQLExprImpl implements Serializable { - - private static final long serialVersionUID = 1L; - public String objType; - public final List paramList = new ArrayList(); - - public SQLObjectCreateExpr(){ - - } - - public SQLObjectCreateExpr(String objType){ - - this.objType = objType; - } - - @Override - protected void accept0(SQLASTVisitor visitor) { - this.accept0((OracleASTVisitor) visitor); - } - - protected void accept0(OracleASTVisitor visitor) { - if (visitor.visit(this)) { - acceptChild(visitor, this.paramList); - } - - visitor.endVisit(this); - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((objType == null) ? 0 : objType.hashCode()); - result = prime * result + ((paramList == null) ? 0 : paramList.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - SQLObjectCreateExpr other = (SQLObjectCreateExpr) obj; - if (objType == null) { - if (other.objType != null) { - return false; - } - } else if (!objType.equals(other.objType)) { - return false; - } - if (paramList == null) { - if (other.paramList != null) { - return false; - } - } else if (!paramList.equals(other.paramList)) { - return false; - } - return true; - } -} diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLColumnUniqueIndex.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLColumnUniqueIndex.java deleted file mode 100644 index 271fd3e927..0000000000 --- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLColumnUniqueIndex.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 1999-2011 Alibaba Group Holding Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.alibaba.druid.sql.ast.statement; - -import com.alibaba.druid.sql.visitor.SQLASTVisitor; - -public class SQLColumnUniqueIndex extends SQLConstaintImpl implements SQLColumnConstraint { - - private static final long serialVersionUID = 1L; - - @Override - protected void accept0(SQLASTVisitor visitor) { - if (visitor.visit(this)) { - acceptChild(visitor, this.getName()); - } - visitor.endVisit(this); - } - -} 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 30abaf4596..afaa708fd5 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 @@ -66,6 +66,9 @@ public class SQLSelectQueryBlock extends SQLSelectQuery { } public void setWhere(SQLExpr where) { + if (where != null) { + where.setParent(this); + } this.where = where; } diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLSelectUnionType.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLSelectUnionType.java deleted file mode 100644 index 16b59edca4..0000000000 --- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLSelectUnionType.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright 1999-2011 Alibaba Group Holding Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.alibaba.druid.sql.ast.statement; - -public class SQLSelectUnionType { - - public final static int ALL = 0; - public final static int DISTINCT = 1; -} diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/statement/MySqlCreateDatabaseStatement.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/statement/MySqlCreateDatabaseStatement.java deleted file mode 100644 index 8465cb67d8..0000000000 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/statement/MySqlCreateDatabaseStatement.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 1999-2011 Alibaba Group Holding Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.alibaba.druid.sql.dialect.mysql.ast.statement; - - -public class MySqlCreateDatabaseStatement { - -} diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlCreateTableParser.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlCreateTableParser.java index 6e2cbc3451..c44303f7c0 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlCreateTableParser.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlCreateTableParser.java @@ -203,7 +203,7 @@ public class MySqlCreateTableParser extends SQLCreateTableParser { continue; } - if (identifierEquals("COMMENT")) { + if (lexer.token() == Token.COMMENT) { lexer.nextToken(); if (lexer.token() == Token.EQ) { lexer.nextToken(); diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlExprParser.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlExprParser.java index ad4abceac8..a3a5777e93 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlExprParser.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlExprParser.java @@ -553,7 +553,7 @@ public class MySqlExprParser extends SQLExprParser { throw new ParserException("syntax error " + lexer.token() + " " + lexer.stringVal()); } - if (identifierEquals("COMMENT")) { + if (lexer.token() == Token.COMMENT) { lexer.nextToken(); column.setComment(lexer.stringVal()); accept(Token.LITERAL_CHARS); diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlStatementParser.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlStatementParser.java index 1d43e03f4a..cdc7763d1b 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlStatementParser.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlStatementParser.java @@ -2400,7 +2400,6 @@ public class MySqlStatementParser extends SQLStatementParser { throw new ParserException("TODO " + lexer.token() + " " + lexer.stringVal()); } else if (identifierEquals("COALESCE")) { throw new ParserException("TODO " + lexer.token() + " " + lexer.stringVal()); - } else if (identifierEquals("REORGANIZE")) { throw new ParserException("TODO " + lexer.token() + " " + lexer.stringVal()); } else if (identifierEquals("EXCHANGE")) { diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleTableExpr.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleTableExpr.java deleted file mode 100644 index 646f61cad0..0000000000 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleTableExpr.java +++ /dev/null @@ -1,164 +0,0 @@ -/* - * Copyright 1999-2011 Alibaba Group Holding Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.alibaba.druid.sql.dialect.oracle.ast.stmt; - -import java.util.ArrayList; -import java.util.List; - -import com.alibaba.druid.sql.ast.SQLExpr; -import com.alibaba.druid.sql.ast.SQLExprImpl; -import com.alibaba.druid.sql.ast.SQLName; -import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; -import com.alibaba.druid.sql.visitor.SQLASTVisitor; - -public class OracleTableExpr extends SQLExprImpl { - - private static final long serialVersionUID = 1L; - - private SQLExpr table; - private String dbLink; - private SQLName partition; - private SQLName subPartition; - private final List partitionFor = new ArrayList(1); - private final List subPartitionFor = new ArrayList(1); - - public OracleTableExpr(){ - - } - - public SQLName getPartition() { - return this.partition; - } - - public void setPartition(SQLName partition) { - this.partition = partition; - } - - public SQLName getSubPartition() { - return this.subPartition; - } - - public void setSubPartition(SQLName subPartition) { - this.subPartition = subPartition; - } - - public List getSubPartitionFor() { - return this.subPartitionFor; - } - - public List getPartitionFor() { - return this.partitionFor; - } - - public SQLExpr getTable() { - return this.table; - } - - public void setTable(SQLExpr table) { - this.table = table; - } - - public String getDbLink() { - return this.dbLink; - } - - public void setDbLink(String dbLink) { - this.dbLink = dbLink; - } - - @Override - protected void accept0(SQLASTVisitor visitor) { - this.accept0((OracleASTVisitor) visitor); - } - - protected void accept0(OracleASTVisitor visitor) { - if (visitor.visit(this)) { - acceptChild(visitor, this.table); - } - - visitor.endVisit(this); - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((dbLink == null) ? 0 : dbLink.hashCode()); - result = prime * result + ((partition == null) ? 0 : partition.hashCode()); - result = prime * result + ((partitionFor == null) ? 0 : partitionFor.hashCode()); - result = prime * result + ((subPartition == null) ? 0 : subPartition.hashCode()); - result = prime * result + ((subPartitionFor == null) ? 0 : subPartitionFor.hashCode()); - result = prime * result + ((table == null) ? 0 : table.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - OracleTableExpr other = (OracleTableExpr) obj; - if (dbLink == null) { - if (other.dbLink != null) { - return false; - } - } else if (!dbLink.equals(other.dbLink)) { - return false; - } - if (partition == null) { - if (other.partition != null) { - return false; - } - } else if (!partition.equals(other.partition)) { - return false; - } - if (partitionFor == null) { - if (other.partitionFor != null) { - return false; - } - } else if (!partitionFor.equals(other.partitionFor)) { - return false; - } - if (subPartition == null) { - if (other.subPartition != null) { - return false; - } - } else if (!subPartition.equals(other.subPartition)) { - return false; - } - if (subPartitionFor == null) { - if (other.subPartitionFor != null) { - return false; - } - } else if (!subPartitionFor.equals(other.subPartitionFor)) { - return false; - } - if (table == null) { - if (other.table != null) { - return false; - } - } else if (!table.equals(other.table)) { - return false; - } - return true; - } -} diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleUpdateSetClause.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleUpdateSetClause.java deleted file mode 100644 index e65836d0b7..0000000000 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleUpdateSetClause.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 1999-2011 Alibaba Group Holding Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.alibaba.druid.sql.dialect.oracle.ast.stmt; - -import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObjectImpl; - -public abstract class OracleUpdateSetClause extends OracleSQLObjectImpl { - - private static final long serialVersionUID = 1L; - - public OracleUpdateSetClause(){ - - } -} diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleUpdateSetListClause.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleUpdateSetListClause.java deleted file mode 100644 index 72e7ef8128..0000000000 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleUpdateSetListClause.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 1999-2011 Alibaba Group Holding Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.alibaba.druid.sql.dialect.oracle.ast.stmt; - -import java.util.ArrayList; -import java.util.List; - -import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; - -public class OracleUpdateSetListClause extends OracleUpdateSetClause { - - private static final long serialVersionUID = 1L; - - private final List items = new ArrayList(); - - public OracleUpdateSetListClause(){ - - } - - public List getItems() { - return this.items; - } - - public void accept0(OracleASTVisitor visitor) { - if (visitor.visit(this)) { - acceptChild(visitor, this.items); - } - - visitor.endVisit(this); - } -} diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleUpdateSetListItem.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleUpdateSetListItem.java deleted file mode 100644 index c720e3ee2b..0000000000 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleUpdateSetListItem.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 1999-2011 Alibaba Group Holding Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.alibaba.druid.sql.dialect.oracle.ast.stmt; - -import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObjectImpl; - -public abstract class OracleUpdateSetListItem extends OracleSQLObjectImpl { - - private static final long serialVersionUID = 1L; - - public OracleUpdateSetListItem(){ - - } -} diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleUpdateSetListMultiColumnItem.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleUpdateSetListMultiColumnItem.java deleted file mode 100644 index 7be1270ffa..0000000000 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleUpdateSetListMultiColumnItem.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 1999-2011 Alibaba Group Holding Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.alibaba.druid.sql.dialect.oracle.ast.stmt; - -import java.util.ArrayList; -import java.util.List; - -import com.alibaba.druid.sql.ast.SQLName; -import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; - -public class OracleUpdateSetListMultiColumnItem extends OracleUpdateSetListItem { - - private static final long serialVersionUID = 1L; - - private final List columns = new ArrayList(); - private OracleSelect subQuery; - - public OracleUpdateSetListMultiColumnItem(){ - - } - - public OracleUpdateSetListMultiColumnItem(OracleSelect subQuery){ - - this.subQuery = subQuery; - } - - public void accept0(OracleASTVisitor visitor) { - if (visitor.visit(this)) { - acceptChild(visitor, this.subQuery); - } - - visitor.endVisit(this); - } - - public OracleSelect getSubQuery() { - return this.subQuery; - } - - public void setSubQuery(OracleSelect subQuery) { - this.subQuery = subQuery; - } - - public List getColumns() { - return this.columns; - } -} diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleUpdateSetListSingleColumnItem.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleUpdateSetListSingleColumnItem.java deleted file mode 100644 index d5db78f3d0..0000000000 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleUpdateSetListSingleColumnItem.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 1999-2011 Alibaba Group Holding Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.alibaba.druid.sql.dialect.oracle.ast.stmt; - -import com.alibaba.druid.sql.ast.SQLExpr; -import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; - -public class OracleUpdateSetListSingleColumnItem extends OracleUpdateSetListItem { - - private static final long serialVersionUID = 1L; - - private SQLExpr column; - private SQLExpr value; - - public OracleUpdateSetListSingleColumnItem(){ - - } - - public void accept0(OracleASTVisitor visitor) { - if (visitor.visit(this)) { - acceptChild(visitor, this.column); - acceptChild(visitor, this.value); - } - - visitor.endVisit(this); - } - - public SQLExpr getColumn() { - return this.column; - } - - public void setColumn(SQLExpr column) { - this.column = column; - } - - public SQLExpr getValue() { - return this.value; - } - - public void setValue(SQLExpr value) { - this.value = value; - } -} diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleASTVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleASTVisitor.java index ddcecf2a1a..961cd5e0ec 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleASTVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleASTVisitor.java @@ -15,7 +15,6 @@ */ package com.alibaba.druid.sql.dialect.oracle.visitor; -import com.alibaba.druid.sql.ast.expr.SQLObjectCreateExpr; import com.alibaba.druid.sql.dialect.oracle.ast.OracleDataTypeIntervalDay; import com.alibaba.druid.sql.dialect.oracle.ast.OracleDataTypeIntervalYear; import com.alibaba.druid.sql.dialect.oracle.ast.OracleDataTypeTimestamp; @@ -117,12 +116,7 @@ import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSelectSubqueryTableSo import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSelectTableReference; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSelectUnPivot; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSetTransactionStatement; -import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleTableExpr; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleTruncateStatement; -import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleUpdateSetListClause; -import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleUpdateSetListMultiColumnItem; -import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleUpdateSetListSingleColumnItem; -import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleUpdateSetValueClause; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleUpdateStatement; import com.alibaba.druid.sql.visitor.SQLASTVisitor; @@ -148,8 +142,6 @@ public interface OracleASTVisitor extends SQLASTVisitor { void endVisit(OracleIntervalExpr x); - void endVisit(SQLObjectCreateExpr x); - void endVisit(OracleOrderBy x); void endVisit(OracleOuterExpr x); @@ -174,18 +166,8 @@ public interface OracleASTVisitor extends SQLASTVisitor { void endVisit(OracleSelectUnPivot x); - void endVisit(OracleTableExpr x); - void endVisit(OracleTimestampExpr x); - void endVisit(OracleUpdateSetListClause x); - - void endVisit(OracleUpdateSetListMultiColumnItem x); - - void endVisit(OracleUpdateSetListSingleColumnItem x); - - void endVisit(OracleUpdateSetValueClause x); - void endVisit(OracleUpdateStatement x); boolean visit(OracleAggregateExpr astNode); @@ -208,8 +190,6 @@ public interface OracleASTVisitor extends SQLASTVisitor { boolean visit(OracleIntervalExpr x); - boolean visit(SQLObjectCreateExpr x); - boolean visit(OracleOrderBy x); boolean visit(OracleOuterExpr x); @@ -234,18 +214,8 @@ public interface OracleASTVisitor extends SQLASTVisitor { boolean visit(OracleSelectUnPivot x); - boolean visit(OracleTableExpr x); - boolean visit(OracleTimestampExpr x); - boolean visit(OracleUpdateSetListClause x); - - boolean visit(OracleUpdateSetListMultiColumnItem x); - - boolean visit(OracleUpdateSetListSingleColumnItem x); - - boolean visit(OracleUpdateSetValueClause x); - boolean visit(OracleUpdateStatement x); boolean visit(SampleClause x); diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleASTVisitorAdapter.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleASTVisitorAdapter.java index 32152d5101..48c450e33b 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleASTVisitorAdapter.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleASTVisitorAdapter.java @@ -15,7 +15,6 @@ */ package com.alibaba.druid.sql.dialect.oracle.visitor; -import com.alibaba.druid.sql.ast.expr.SQLObjectCreateExpr; import com.alibaba.druid.sql.dialect.oracle.ast.OracleDataTypeIntervalDay; import com.alibaba.druid.sql.dialect.oracle.ast.OracleDataTypeIntervalYear; import com.alibaba.druid.sql.dialect.oracle.ast.OracleDataTypeTimestamp; @@ -129,12 +128,7 @@ import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSelectSubqueryTableSo import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSelectTableReference; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSelectUnPivot; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSetTransactionStatement; -import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleTableExpr; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleTruncateStatement; -import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleUpdateSetListClause; -import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleUpdateSetListMultiColumnItem; -import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleUpdateSetListSingleColumnItem; -import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleUpdateSetValueClause; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleUpdateStatement; import com.alibaba.druid.sql.visitor.SQLASTVisitorAdapter; @@ -197,11 +191,6 @@ public class OracleASTVisitorAdapter extends SQLASTVisitorAdapter implements Ora } - @Override - public void endVisit(SQLObjectCreateExpr x) { - - } - @Override public void endVisit(OracleOrderBy x) { @@ -262,36 +251,11 @@ public class OracleASTVisitorAdapter extends SQLASTVisitorAdapter implements Ora } - @Override - public void endVisit(OracleTableExpr x) { - - } - @Override public void endVisit(OracleTimestampExpr x) { } - @Override - public void endVisit(OracleUpdateSetListClause x) { - - } - - @Override - public void endVisit(OracleUpdateSetListMultiColumnItem x) { - - } - - @Override - public void endVisit(OracleUpdateSetListSingleColumnItem x) { - - } - - @Override - public void endVisit(OracleUpdateSetValueClause x) { - - } - @Override public void endVisit(OracleUpdateStatement x) { @@ -357,12 +321,6 @@ public class OracleASTVisitorAdapter extends SQLASTVisitorAdapter implements Ora return true; } - @Override - public boolean visit(SQLObjectCreateExpr x) { - - return true; - } - @Override public boolean visit(OracleOrderBy x) { @@ -435,42 +393,12 @@ public class OracleASTVisitorAdapter extends SQLASTVisitorAdapter implements Ora return true; } - @Override - public boolean visit(OracleTableExpr x) { - - return true; - } - @Override public boolean visit(OracleTimestampExpr x) { return true; } - @Override - public boolean visit(OracleUpdateSetListClause x) { - - return true; - } - - @Override - public boolean visit(OracleUpdateSetListMultiColumnItem x) { - - return true; - } - - @Override - public boolean visit(OracleUpdateSetListSingleColumnItem x) { - - return true; - } - - @Override - public boolean visit(OracleUpdateSetValueClause x) { - - return true; - } - @Override public boolean visit(OracleUpdateStatement x) { @@ -1384,7 +1312,7 @@ public class OracleASTVisitorAdapter extends SQLASTVisitorAdapter implements Ora @Override public void endVisit(OracleCreateDatabaseDbLinkStatement x) { - + } @Override @@ -1394,7 +1322,7 @@ public class OracleASTVisitorAdapter extends SQLASTVisitorAdapter implements Ora @Override public void endVisit(OracleDropDatabaseLinkStatement x) { - + } @Override @@ -1404,7 +1332,7 @@ public class OracleASTVisitorAdapter extends SQLASTVisitorAdapter implements Ora @Override public void endVisit(OracleDataTypeTimestamp x) { - + } @Override @@ -1414,7 +1342,7 @@ public class OracleASTVisitorAdapter extends SQLASTVisitorAdapter implements Ora @Override public void endVisit(OracleDataTypeIntervalYear x) { - + } @Override @@ -1424,7 +1352,7 @@ public class OracleASTVisitorAdapter extends SQLASTVisitorAdapter implements Ora @Override public void endVisit(OracleDataTypeIntervalDay x) { - + } @Override @@ -1434,7 +1362,7 @@ public class OracleASTVisitorAdapter extends SQLASTVisitorAdapter implements Ora @Override public void endVisit(OracleDropSequenceStatement x) { - + } } diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java index 6d6bf7f68c..8455055e38 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java @@ -19,7 +19,6 @@ import java.util.List; import com.alibaba.druid.sql.ast.SQLExpr; import com.alibaba.druid.sql.ast.SQLHint; -import com.alibaba.druid.sql.ast.SQLName; import com.alibaba.druid.sql.ast.SQLObject; import com.alibaba.druid.sql.ast.SQLSetQuantifier; import com.alibaba.druid.sql.ast.SQLStatement; @@ -27,7 +26,6 @@ import com.alibaba.druid.sql.ast.expr.SQLAllColumnExpr; import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr; import com.alibaba.druid.sql.ast.expr.SQLLiteralExpr; import com.alibaba.druid.sql.ast.expr.SQLMethodInvokeExpr; -import com.alibaba.druid.sql.ast.expr.SQLObjectCreateExpr; import com.alibaba.druid.sql.ast.expr.SQLQueryExpr; import com.alibaba.druid.sql.ast.statement.SQLAlterTableItem; import com.alibaba.druid.sql.ast.statement.SQLCharactorDataType; @@ -159,12 +157,7 @@ import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSelectSubqueryTableSo import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSelectTableReference; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSelectUnPivot; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSetTransactionStatement; -import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleTableExpr; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleTruncateStatement; -import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleUpdateSetListClause; -import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleUpdateSetListMultiColumnItem; -import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleUpdateSetListSingleColumnItem; -import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleUpdateSetValueClause; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleUpdateStatement; import com.alibaba.druid.sql.visitor.SQLASTOutputVisitor; @@ -752,35 +745,6 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS return false; } - public boolean visit(OracleTableExpr x) { - x.getTable().accept(this); - - if (x.getPartition() != null) { - print(" PARTITION ("); - x.getPartition().accept(this); - print(")"); - } else { - if (x.getPartitionFor().size() > 0) { - print(" PARTITION FOR ("); - for (int i = 0, size = x.getPartitionFor().size(); i < size; ++i) { - ((SQLName) x.getPartitionFor().get(i)).accept(this); - } - print(")"); - } else if (x.getSubPartition() != null) { - print(" SUBPARTITION ("); - x.getSubPartition().accept(this); - print(")"); - } else if (x.getSubPartitionFor().size() > 0) { - print(" SUBPARTITION FOR ("); - for (int i = 0, size = x.getSubPartitionFor().size(); i < size; ++i) { - ((SQLName) x.getSubPartitionFor().get(i)).accept(this); - } - print(")"); - } - } - return false; - } - public boolean visit(OracleTimestampExpr x) { print("TIMESTAMP '"); @@ -796,32 +760,6 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS return false; } - public boolean visit(OracleUpdateSetListClause x) { - print("SET "); - printAndAccept(x.getItems(), ", "); - return false; - } - - public boolean visit(OracleUpdateSetListMultiColumnItem x) { - print("("); - printAndAccept(x.getColumns(), ", "); - print(") = ("); - x.getSubQuery().accept(this); - print(")"); - return false; - } - - public boolean visit(OracleUpdateSetListSingleColumnItem x) { - x.getColumn().accept(this); - print(" = "); - x.getValue().accept(this); - return false; - } - - public boolean visit(OracleUpdateSetValueClause x) { - throw new UnsupportedOperationException(); - } - public boolean visit(OracleUpdateStatement x) { print("UPDATE "); printHints(x.getHints()); @@ -921,11 +859,6 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS } - @Override - public void endVisit(SQLObjectCreateExpr x) { - - } - @Override public void endVisit(OracleOrderBy x) { @@ -986,36 +919,12 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS } - @Override - public void endVisit(OracleTableExpr x) { - - } @Override public void endVisit(OracleTimestampExpr x) { } - @Override - public void endVisit(OracleUpdateSetListClause x) { - - } - - @Override - public void endVisit(OracleUpdateSetListMultiColumnItem x) { - - } - - @Override - public void endVisit(OracleUpdateSetListSingleColumnItem x) { - - } - - @Override - public void endVisit(OracleUpdateSetValueClause x) { - - } - @Override public void endVisit(OracleUpdateStatement x) { @@ -3040,25 +2949,25 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS if (x.isShared()) { print("SHARE "); } - + if (x.isPublic()) { print("PUBLIC "); } - + print("DATABASE LINK "); - + x.getName().accept(this); - + if (x.getUser() != null) { print(" CONNECT TO "); x.getUser().accept(this); - + if (x.getPassword() != null) { print(" IDENTIFIED BY "); print(x.getPassword()); } } - + if (x.getAuthenticatedUser() != null) { print(" AUTHENTICATED BY "); x.getAuthenticatedUser().accept(this); @@ -3067,18 +2976,18 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS print(x.getAuthenticatedPassword()); } } - + if (x.getUsing() != null) { print(" USING "); x.getUsing().accept(this); } - + return false; } @Override public void endVisit(OracleCreateDatabaseDbLinkStatement x) { - + } @Override @@ -3089,15 +2998,15 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS } print("DATABASE LINK "); x.getName().accept(this); - + return false; } @Override public void endVisit(OracleDropDatabaseLinkStatement x) { - + } - + public boolean visit(SQLCharactorDataType x) { print(x.getName()); if (x.getArguments().size() > 0) { @@ -3120,19 +3029,19 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS x.getArguments().get(0).accept(this); print(")"); } - + if (x.isWithTimeZone()) { print(" WITH TIME ZONE"); } else if (x.isWithLocalTimeZone()) { print(" WITH LOCAL TIME ZONE"); } - + return false; } @Override public void endVisit(OracleDataTypeTimestamp x) { - + } @Override @@ -3143,15 +3052,15 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS x.getArguments().get(0).accept(this); print(")"); } - + print(" TO MONTH"); - + return false; } @Override public void endVisit(OracleDataTypeIntervalYear x) { - + } @Override @@ -3162,23 +3071,23 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS x.getArguments().get(0).accept(this); print(")"); } - + print(" TO SECOND"); - + if (x.getFractionalSeconds().size() > 0) { print("("); x.getFractionalSeconds().get(0).accept(this); print(")"); } - + return false; } @Override public void endVisit(OracleDataTypeIntervalDay x) { - + } - + @Override public boolean visit(OracleDropSequenceStatement x) { print("DROP SEQUENCE "); @@ -3188,6 +3097,6 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public void endVisit(OracleDropSequenceStatement x) { - + } } diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleSchemaStatVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleSchemaStatVisitor.java index da30c98718..8278187b43 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleSchemaStatVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleSchemaStatVisitor.java @@ -26,7 +26,6 @@ import com.alibaba.druid.sql.ast.SQLOrderBy; import com.alibaba.druid.sql.ast.expr.SQLAggregateExpr; import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr; import com.alibaba.druid.sql.ast.expr.SQLMethodInvokeExpr; -import com.alibaba.druid.sql.ast.expr.SQLObjectCreateExpr; import com.alibaba.druid.sql.ast.expr.SQLPropertyExpr; import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition; import com.alibaba.druid.sql.ast.statement.SQLCreateTableStatement; @@ -150,12 +149,7 @@ import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSelectSubqueryTableSo import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSelectTableReference; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSelectUnPivot; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSetTransactionStatement; -import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleTableExpr; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleTruncateStatement; -import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleUpdateSetListClause; -import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleUpdateSetListMultiColumnItem; -import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleUpdateSetListSingleColumnItem; -import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleUpdateSetValueClause; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleUpdateStatement; import com.alibaba.druid.sql.visitor.SchemaStatVisitor; import com.alibaba.druid.stat.TableStat; @@ -447,11 +441,6 @@ public class OracleSchemaStatVisitor extends SchemaStatVisitor implements Oracle } - @Override - public void endVisit(SQLObjectCreateExpr x) { - - } - @Override public void endVisit(OracleOrderBy x) { @@ -512,36 +501,11 @@ public class OracleSchemaStatVisitor extends SchemaStatVisitor implements Oracle } - @Override - public void endVisit(OracleTableExpr x) { - - } - @Override public void endVisit(OracleTimestampExpr x) { } - @Override - public void endVisit(OracleUpdateSetListClause x) { - - } - - @Override - public void endVisit(OracleUpdateSetListMultiColumnItem x) { - - } - - @Override - public void endVisit(OracleUpdateSetListSingleColumnItem x) { - - } - - @Override - public void endVisit(OracleUpdateSetValueClause x) { - - } - @Override public boolean visit(OracleConstraintState astNode) { @@ -590,12 +554,6 @@ public class OracleSchemaStatVisitor extends SchemaStatVisitor implements Oracle return true; } - @Override - public boolean visit(SQLObjectCreateExpr x) { - - return true; - } - @Override public boolean visit(OracleOrderBy x) { return this.visit((SQLOrderBy) x); @@ -718,39 +676,8 @@ public class OracleSchemaStatVisitor extends SchemaStatVisitor implements Oracle return true; } - @Override - public boolean visit(OracleTableExpr x) { - - return true; - } - @Override public boolean visit(OracleTimestampExpr x) { - - return true; - } - - @Override - public boolean visit(OracleUpdateSetListClause x) { - - return true; - } - - @Override - public boolean visit(OracleUpdateSetListMultiColumnItem x) { - - return true; - } - - @Override - public boolean visit(OracleUpdateSetListSingleColumnItem x) { - - return true; - } - - @Override - public boolean visit(OracleUpdateSetValueClause x) { - return true; } @@ -1824,7 +1751,7 @@ public class OracleSchemaStatVisitor extends SchemaStatVisitor implements Oracle @Override public void endVisit(OracleDropDatabaseLinkStatement x) { - + } @Override @@ -1834,7 +1761,7 @@ public class OracleSchemaStatVisitor extends SchemaStatVisitor implements Oracle @Override public void endVisit(OracleDataTypeTimestamp x) { - + } @Override @@ -1844,7 +1771,7 @@ public class OracleSchemaStatVisitor extends SchemaStatVisitor implements Oracle @Override public void endVisit(OracleDataTypeIntervalYear x) { - + } @Override @@ -1854,9 +1781,9 @@ public class OracleSchemaStatVisitor extends SchemaStatVisitor implements Oracle @Override public void endVisit(OracleDataTypeIntervalDay x) { - + } - + @Override public boolean visit(OracleDropSequenceStatement x) { return false; @@ -1864,6 +1791,6 @@ public class OracleSchemaStatVisitor extends SchemaStatVisitor implements Oracle @Override public void endVisit(OracleDropSequenceStatement x) { - + } } diff --git a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/ast/PGAnalyticWindowing.java b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/ast/PGAnalyticWindowing.java deleted file mode 100644 index 1fb292fc06..0000000000 --- a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/ast/PGAnalyticWindowing.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 1999-2011 Alibaba Group Holding Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.alibaba.druid.sql.dialect.postgresql.ast; - -import com.alibaba.druid.sql.ast.SQLExpr; -import com.alibaba.druid.sql.ast.SQLObjectImpl; -import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGExpr; -import com.alibaba.druid.sql.dialect.postgresql.visitor.PGASTVisitor; -import com.alibaba.druid.sql.visitor.SQLASTVisitor; - -@SuppressWarnings("serial") -public class PGAnalyticWindowing extends SQLObjectImpl implements PGExpr { - - private Type type; - private SQLExpr expr; - - public PGAnalyticWindowing(){ - - } - - @Override - protected void accept0(SQLASTVisitor visitor) { - this.accept0((PGASTVisitor) visitor); - } - - public void accept0(PGASTVisitor visitor) { - //TODO -// if (visitor.visit(this)) { -// acceptChild(visitor, this.expr); -// } -// visitor.endVisit(this); - } - - public SQLExpr getExpr() { - return this.expr; - } - - public void setExpr(SQLExpr expr) { - this.expr = expr; - } - - public Type getType() { - return this.type; - } - - public void setType(Type type) { - this.type = type; - } - - public static enum Type { - ROWS, RANGE; - } -} diff --git a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/ast/expr/PGAnalytic.java b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/ast/expr/PGAnalytic.java deleted file mode 100644 index 41649f0954..0000000000 --- a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/ast/expr/PGAnalytic.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 1999-2011 Alibaba Group Holding Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.alibaba.druid.sql.dialect.postgresql.ast.expr; - -import java.util.ArrayList; -import java.util.List; - -import com.alibaba.druid.sql.ast.SQLExpr; -import com.alibaba.druid.sql.ast.SQLObjectImpl; -import com.alibaba.druid.sql.dialect.postgresql.ast.PGOrderBy; -import com.alibaba.druid.sql.dialect.postgresql.visitor.PGASTVisitor; -import com.alibaba.druid.sql.visitor.SQLASTVisitor; - -public class PGAnalytic extends SQLObjectImpl implements PGExpr { - - private static final long serialVersionUID = 1L; - private final List partitionBy = new ArrayList(); - private PGOrderBy orderBy; - - - public PGOrderBy getOrderBy() { - return orderBy; - } - - public void setOrderBy(PGOrderBy orderBy) { - this.orderBy = orderBy; - } - - public PGAnalytic(){ - - } - - @Override - protected void accept0(SQLASTVisitor visitor) { - this.accept0((PGASTVisitor) visitor); - } - - public void accept0(PGASTVisitor visitor) { - if (visitor.visit(this)) { - acceptChild(visitor, this.partitionBy); - acceptChild(visitor, this.orderBy); - } - visitor.endVisit(this); - } - - - public List getPartitionBy() { - return this.partitionBy; - } -} diff --git a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/ast/stmt/PGSQLStatementImpl.java b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/ast/stmt/PGSQLStatementImpl.java deleted file mode 100644 index 5c9bb014d0..0000000000 --- a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/ast/stmt/PGSQLStatementImpl.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 1999-2011 Alibaba Group Holding Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.alibaba.druid.sql.dialect.postgresql.ast.stmt; - -import com.alibaba.druid.sql.dialect.postgresql.ast.PGSQLObjectImpl; - - -public abstract class PGSQLStatementImpl extends PGSQLObjectImpl implements PGSQLStatement { - - private static final long serialVersionUID = 1L; - -} diff --git a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGASTVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGASTVisitor.java index 195b6a35e3..3137e0c8de 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGASTVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGASTVisitor.java @@ -17,7 +17,6 @@ package com.alibaba.druid.sql.dialect.postgresql.visitor; import com.alibaba.druid.sql.dialect.postgresql.ast.PGWithClause; import com.alibaba.druid.sql.dialect.postgresql.ast.PGWithQuery; -import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGAnalytic; import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGParameter; import com.alibaba.druid.sql.dialect.postgresql.ast.stmt.PGDeleteStatement; import com.alibaba.druid.sql.dialect.postgresql.ast.stmt.PGFunctionTableSource; @@ -74,10 +73,6 @@ public interface PGASTVisitor extends SQLASTVisitor { boolean visit(PGUpdateStatement x); - void endVisit(PGAnalytic x); - - boolean visit(PGAnalytic x); - void endVisit(PGParameter x); boolean visit(PGParameter x); diff --git a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGASTVisitorAdapter.java b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGASTVisitorAdapter.java index 62da7ab822..349c380584 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGASTVisitorAdapter.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGASTVisitorAdapter.java @@ -17,7 +17,6 @@ package com.alibaba.druid.sql.dialect.postgresql.visitor; import com.alibaba.druid.sql.dialect.postgresql.ast.PGWithClause; import com.alibaba.druid.sql.dialect.postgresql.ast.PGWithQuery; -import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGAnalytic; import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGParameter; import com.alibaba.druid.sql.dialect.postgresql.ast.stmt.PGDeleteStatement; import com.alibaba.druid.sql.dialect.postgresql.ast.stmt.PGFunctionTableSource; @@ -150,16 +149,6 @@ public class PGASTVisitorAdapter extends SQLASTVisitorAdapter implements PGASTVi return true; } - @Override - public void endVisit(PGAnalytic x) { - } - - @Override - public boolean visit(PGAnalytic x) { - - return true; - } - @Override public void endVisit(PGParameter x) { diff --git a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGOutputVisitor.java index 4dc3121670..6da0e8fba9 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGOutputVisitor.java @@ -15,12 +15,10 @@ */ package com.alibaba.druid.sql.dialect.postgresql.visitor; -import com.alibaba.druid.sql.ast.SQLExpr; import com.alibaba.druid.sql.ast.SQLSetQuantifier; import com.alibaba.druid.sql.ast.statement.SQLSelectStatement; import com.alibaba.druid.sql.dialect.postgresql.ast.PGWithClause; import com.alibaba.druid.sql.dialect.postgresql.ast.PGWithQuery; -import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGAnalytic; import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGParameter; import com.alibaba.druid.sql.dialect.postgresql.ast.stmt.PGDeleteStatement; import com.alibaba.druid.sql.dialect.postgresql.ast.stmt.PGFunctionTableSource; @@ -439,30 +437,6 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor } - @Override - public void endVisit(PGAnalytic x) { - - } - - @Override - public boolean visit(PGAnalytic x) { - print(" OVER ("); - if (x.getPartitionBy().size() > 0) { - int mark = 0; - for (SQLExpr e : x.getPartitionBy()) { - if (mark++ != 0) { - print(", "); - } - e.accept(this); - } - } - if (x.getOrderBy() != null) { - x.getOrderBy().accept(this); - } - print(")"); - return false; - } - @Override public void endVisit(PGParameter x) { diff --git a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGSchemaStatVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGSchemaStatVisitor.java index 9b31a744e5..a898bf1968 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGSchemaStatVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGSchemaStatVisitor.java @@ -24,7 +24,6 @@ import com.alibaba.druid.sql.ast.statement.SQLSelectStatement; import com.alibaba.druid.sql.ast.statement.SQLTruncateStatement; import com.alibaba.druid.sql.dialect.postgresql.ast.PGWithClause; import com.alibaba.druid.sql.dialect.postgresql.ast.PGWithQuery; -import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGAnalytic; import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGParameter; import com.alibaba.druid.sql.dialect.postgresql.ast.stmt.PGDeleteStatement; import com.alibaba.druid.sql.dialect.postgresql.ast.stmt.PGFunctionTableSource; @@ -259,16 +258,6 @@ public class PGSchemaStatVisitor extends SchemaStatVisitor implements PGASTVisit return this.visit((SQLSelectQueryBlock) x); } - @Override - public void endVisit(PGAnalytic x) { - - } - - @Override - public boolean visit(PGAnalytic x) { - return false; - } - @Override public void endVisit(PGParameter x) { diff --git a/src/main/java/com/alibaba/druid/sql/parser/Keywords.java b/src/main/java/com/alibaba/druid/sql/parser/Keywords.java index 5abf4068bb..9c70988c64 100644 --- a/src/main/java/com/alibaba/druid/sql/parser/Keywords.java +++ b/src/main/java/com/alibaba/druid/sql/parser/Keywords.java @@ -116,6 +116,8 @@ public class Keywords { map.put("USE", Token.USE); map.put("REPLACE", Token.REPLACE); + + map.put("COMMENT", Token.COMMENT); DEFAULT_KEYWORDS = new Keywords(map); } diff --git a/src/main/java/com/alibaba/druid/sql/parser/SQLStatementParser.java b/src/main/java/com/alibaba/druid/sql/parser/SQLStatementParser.java index 7ec6b19d2b..b067a9296a 100644 --- a/src/main/java/com/alibaba/druid/sql/parser/SQLStatementParser.java +++ b/src/main/java/com/alibaba/druid/sql/parser/SQLStatementParser.java @@ -228,6 +228,11 @@ public class SQLStatementParser extends SQLParser { lexer.nextToken(); continue; } + + if (lexer.token() == Token.COMMENT) { + statementList.add(this.parseComment()); + continue; + } throw new ParserException("syntax error, " + lexer.token() + " " + lexer.stringVal() + ", pos " + lexer.pos()); diff --git a/src/main/java/com/alibaba/druid/sql/visitor/ParameterizedOutputVisitorUtils.java b/src/main/java/com/alibaba/druid/sql/visitor/ParameterizedOutputVisitorUtils.java index 311e642d59..823bc6c903 100644 --- a/src/main/java/com/alibaba/druid/sql/visitor/ParameterizedOutputVisitorUtils.java +++ b/src/main/java/com/alibaba/druid/sql/visitor/ParameterizedOutputVisitorUtils.java @@ -18,6 +18,7 @@ package com.alibaba.druid.sql.visitor; import java.util.List; import com.alibaba.druid.sql.ast.SQLExpr; +import com.alibaba.druid.sql.ast.SQLObject; import com.alibaba.druid.sql.ast.SQLStatement; import com.alibaba.druid.sql.ast.expr.SQLBinaryOpExpr; import com.alibaba.druid.sql.ast.expr.SQLBinaryOperator; @@ -93,6 +94,7 @@ public class ParameterizedOutputVisitorUtils { } public static SQLBinaryOpExpr merge(SQLBinaryOpExpr x) { + SQLObject parent = x.getParent(); if (x.getLeft() instanceof SQLLiteralExpr && x.getRight() instanceof SQLLiteralExpr) { if (x.getOperator() == SQLBinaryOperator.Equality || x.getOperator() == SQLBinaryOperator.NotEqual) { x.getLeft().getAttributes().put(ATTR_PARAMS_SKIP, true); @@ -103,10 +105,12 @@ public class ParameterizedOutputVisitorUtils { if (x.getRight() instanceof SQLLiteralExpr) { x = new SQLBinaryOpExpr(x.getLeft(), x.getOperator(), new SQLVariantRefExpr("?")); + x.setParent(parent); } if (x.getLeft() instanceof SQLLiteralExpr) { x = new SQLBinaryOpExpr(new SQLVariantRefExpr("?"), x.getOperator(), x.getRight()); + x.setParent(parent); } for (;;) { @@ -119,6 +123,7 @@ public class ParameterizedOutputVisitorUtils { } } x = new SQLBinaryOpExpr(x.getLeft(), x.getOperator(), merge((SQLBinaryOpExpr) x.getRight())); + x.setParent(parent); } break; @@ -126,6 +131,7 @@ public class ParameterizedOutputVisitorUtils { if (x.getLeft() instanceof SQLBinaryOpExpr) { x = new SQLBinaryOpExpr(merge((SQLBinaryOpExpr) x.getLeft()), x.getOperator(), x.getRight()); + x.setParent(parent); } // ID = ? OR ID = ? => ID = ? diff --git a/src/main/java/com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java index 36ea07a12e..0608dce45a 100644 --- a/src/main/java/com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java @@ -58,7 +58,6 @@ import com.alibaba.druid.sql.ast.expr.SQLNCharExpr; import com.alibaba.druid.sql.ast.expr.SQLNotExpr; import com.alibaba.druid.sql.ast.expr.SQLNullExpr; import com.alibaba.druid.sql.ast.expr.SQLNumberExpr; -import com.alibaba.druid.sql.ast.expr.SQLObjectCreateExpr; import com.alibaba.druid.sql.ast.expr.SQLPropertyExpr; import com.alibaba.druid.sql.ast.expr.SQLQueryExpr; import com.alibaba.druid.sql.ast.expr.SQLSomeExpr; @@ -88,7 +87,6 @@ import com.alibaba.druid.sql.ast.statement.SQLColumnCheck; import com.alibaba.druid.sql.ast.statement.SQLColumnConstraint; import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition; import com.alibaba.druid.sql.ast.statement.SQLColumnPrimaryKey; -import com.alibaba.druid.sql.ast.statement.SQLColumnUniqueIndex; import com.alibaba.druid.sql.ast.statement.SQLCommentStatement; import com.alibaba.druid.sql.ast.statement.SQLCreateDatabaseStatement; import com.alibaba.druid.sql.ast.statement.SQLCreateTableStatement; @@ -554,10 +552,6 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter { return false; } - public boolean visit(SQLObjectCreateExpr x) { - throw new UnsupportedOperationException(); - } - public boolean visit(SQLPropertyExpr x) { x.getOwner().accept(this); print("."); @@ -1352,12 +1346,6 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter { return false; } - @Override - public boolean visit(SQLColumnUniqueIndex x) { - print(" UNIQUE INDEX"); - return false; - } - @Override public boolean visit(SQLWithSubqueryClause x) { print("WITH"); diff --git a/src/main/java/com/alibaba/druid/sql/visitor/SQLASTVisitor.java b/src/main/java/com/alibaba/druid/sql/visitor/SQLASTVisitor.java index 55e57becd4..eb0fa11ebe 100644 --- a/src/main/java/com/alibaba/druid/sql/visitor/SQLASTVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/visitor/SQLASTVisitor.java @@ -33,12 +33,10 @@ import com.alibaba.druid.sql.ast.expr.SQLCurrentOfCursorExpr; import com.alibaba.druid.sql.ast.expr.SQLDefaultExpr; import com.alibaba.druid.sql.ast.expr.SQLExistsExpr; import com.alibaba.druid.sql.ast.expr.SQLHexExpr; -import com.alibaba.druid.sql.ast.expr.SQLHexStringLiteralExpr; import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr; import com.alibaba.druid.sql.ast.expr.SQLInListExpr; import com.alibaba.druid.sql.ast.expr.SQLInSubQueryExpr; import com.alibaba.druid.sql.ast.expr.SQLIntegerExpr; -import com.alibaba.druid.sql.ast.expr.SQLIntervalLiteralExpr; import com.alibaba.druid.sql.ast.expr.SQLListExpr; import com.alibaba.druid.sql.ast.expr.SQLMethodInvokeExpr; import com.alibaba.druid.sql.ast.expr.SQLNCharExpr; @@ -72,7 +70,6 @@ import com.alibaba.druid.sql.ast.statement.SQLCheck; import com.alibaba.druid.sql.ast.statement.SQLColumnCheck; import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition; import com.alibaba.druid.sql.ast.statement.SQLColumnPrimaryKey; -import com.alibaba.druid.sql.ast.statement.SQLColumnUniqueIndex; import com.alibaba.druid.sql.ast.statement.SQLCommentStatement; import com.alibaba.druid.sql.ast.statement.SQLCreateDatabaseStatement; import com.alibaba.druid.sql.ast.statement.SQLCreateTableStatement; @@ -207,10 +204,6 @@ public interface SQLASTVisitor { void endVisit(SQLHexExpr x); - boolean visit(SQLHexStringLiteralExpr x); - - void endVisit(SQLHexStringLiteralExpr x); - boolean visit(SQLSelect x); void endVisit(SQLSelect select); @@ -223,10 +216,6 @@ public interface SQLASTVisitor { void endVisit(SQLExprTableSource x); - boolean visit(SQLIntervalLiteralExpr x); - - void endVisit(SQLIntervalLiteralExpr x); - boolean visit(SQLOrderBy x); void endVisit(SQLOrderBy x); @@ -411,10 +400,6 @@ public interface SQLASTVisitor { boolean visit(SQLColumnPrimaryKey x); - void endVisit(SQLColumnUniqueIndex x); - - boolean visit(SQLColumnUniqueIndex x); - void endVisit(SQLWithSubqueryClause x); boolean visit(SQLWithSubqueryClause x); diff --git a/src/main/java/com/alibaba/druid/sql/visitor/SQLASTVisitorAdapter.java b/src/main/java/com/alibaba/druid/sql/visitor/SQLASTVisitorAdapter.java index b9af2c5b13..66ad3a9bd6 100644 --- a/src/main/java/com/alibaba/druid/sql/visitor/SQLASTVisitorAdapter.java +++ b/src/main/java/com/alibaba/druid/sql/visitor/SQLASTVisitorAdapter.java @@ -33,12 +33,10 @@ import com.alibaba.druid.sql.ast.expr.SQLCurrentOfCursorExpr; import com.alibaba.druid.sql.ast.expr.SQLDefaultExpr; import com.alibaba.druid.sql.ast.expr.SQLExistsExpr; import com.alibaba.druid.sql.ast.expr.SQLHexExpr; -import com.alibaba.druid.sql.ast.expr.SQLHexStringLiteralExpr; import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr; import com.alibaba.druid.sql.ast.expr.SQLInListExpr; import com.alibaba.druid.sql.ast.expr.SQLInSubQueryExpr; import com.alibaba.druid.sql.ast.expr.SQLIntegerExpr; -import com.alibaba.druid.sql.ast.expr.SQLIntervalLiteralExpr; import com.alibaba.druid.sql.ast.expr.SQLListExpr; import com.alibaba.druid.sql.ast.expr.SQLMethodInvokeExpr; import com.alibaba.druid.sql.ast.expr.SQLNCharExpr; @@ -72,7 +70,6 @@ import com.alibaba.druid.sql.ast.statement.SQLCheck; import com.alibaba.druid.sql.ast.statement.SQLColumnCheck; import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition; import com.alibaba.druid.sql.ast.statement.SQLColumnPrimaryKey; -import com.alibaba.druid.sql.ast.statement.SQLColumnUniqueIndex; import com.alibaba.druid.sql.ast.statement.SQLCommentStatement; import com.alibaba.druid.sql.ast.statement.SQLCreateDatabaseStatement; import com.alibaba.druid.sql.ast.statement.SQLCreateTableStatement; @@ -268,13 +265,6 @@ public class SQLASTVisitorAdapter implements SQLASTVisitor { public void endVisit(SQLQueryExpr x) { } - public boolean visit(SQLHexStringLiteralExpr x) { - return true; - } - - public void endVisit(SQLHexStringLiteralExpr x) { - } - public boolean visit(SQLSelect x) { return true; } @@ -296,13 +286,6 @@ public class SQLASTVisitorAdapter implements SQLASTVisitor { public void endVisit(SQLExprTableSource x) { } - public boolean visit(SQLIntervalLiteralExpr x) { - return true; - } - - public void endVisit(SQLIntervalLiteralExpr x) { - } - public boolean visit(SQLOrderBy x) { return true; } @@ -726,15 +709,6 @@ public class SQLASTVisitorAdapter implements SQLASTVisitor { return true; } - @Override - public void endVisit(SQLColumnUniqueIndex x) { - } - - @Override - public boolean visit(SQLColumnUniqueIndex x) { - return true; - } - @Override public void endVisit(SQLWithSubqueryClause x) { } diff --git a/src/main/java/com/alibaba/druid/sql/visitor/SQLEvalVisitorUtils.java b/src/main/java/com/alibaba/druid/sql/visitor/SQLEvalVisitorUtils.java index 1afb0b87db..fd2558a5b1 100644 --- a/src/main/java/com/alibaba/druid/sql/visitor/SQLEvalVisitorUtils.java +++ b/src/main/java/com/alibaba/druid/sql/visitor/SQLEvalVisitorUtils.java @@ -107,7 +107,13 @@ public class SQLEvalVisitorUtils { } public static Object eval(String dbType, SQLObject sqlObject, Object... parameters) { - return eval(dbType, sqlObject, Arrays.asList(parameters)); + Object value = eval(dbType, sqlObject, Arrays.asList(parameters)); + + if (value == EVAL_VALUE_NULL) { + value = null; + } + + return value; } public static Object getValue(SQLObject sqlObject) { @@ -383,7 +389,7 @@ public class SQLEvalVisitorUtils { } double doubleValue = castToDouble(paramValue); - int result = (int) Math.cos(doubleValue); + double result = Math.cos(doubleValue); if (Double.isNaN(result)) { x.putAttribute(EVAL_VALUE, null); @@ -404,7 +410,7 @@ public class SQLEvalVisitorUtils { } double doubleValue = castToDouble(paramValue); - int result = (int) Math.sin(doubleValue); + double result = Math.sin(doubleValue); if (Double.isNaN(result)) { x.putAttribute(EVAL_VALUE, null); @@ -425,7 +431,7 @@ public class SQLEvalVisitorUtils { } double doubleValue = castToDouble(paramValue); - int result = (int) Math.log(doubleValue); + double result = Math.log(doubleValue); if (Double.isNaN(result)) { x.putAttribute(EVAL_VALUE, null); @@ -446,7 +452,7 @@ public class SQLEvalVisitorUtils { } double doubleValue = castToDouble(paramValue); - int result = (int) Math.log10(doubleValue); + double result = Math.log10(doubleValue); if (Double.isNaN(result)) { x.putAttribute(EVAL_VALUE, null); @@ -467,7 +473,7 @@ public class SQLEvalVisitorUtils { } double doubleValue = castToDouble(paramValue); - int result = (int) Math.tan(doubleValue); + double result = Math.tan(doubleValue); if (Double.isNaN(result)) { x.putAttribute(EVAL_VALUE, null); @@ -488,14 +494,14 @@ public class SQLEvalVisitorUtils { } double doubleValue = castToDouble(paramValue); - int result = (int) Math.sqrt(doubleValue); + double result = Math.sqrt(doubleValue); if (Double.isNaN(result)) { x.putAttribute(EVAL_VALUE, null); } else { x.putAttribute(EVAL_VALUE, result); } - } else if ("power".equals(methodName)) { + } else if ("power".equals(methodName) || "pow".equals(methodName)) { if (x.getParameters().size() != 2) { return false; } @@ -992,6 +998,10 @@ public class SQLEvalVisitorUtils { return (Byte) val; } + if (val instanceof String) { + return Byte.parseByte((String) val); + } + return ((Number) val).byteValue(); } @@ -1171,42 +1181,6 @@ public class SQLEvalVisitorUtils { return BigDecimal.valueOf(((Number) val).longValue()); } - public static Object sum(Object a, Object b) { - if (a == null) { - return b; - } - - if (b == null) { - return a; - } - - if (a instanceof BigDecimal || b instanceof BigDecimal) { - return castToDecimal(a).add(castToDecimal(b)); - } - - if (a instanceof BigInteger || b instanceof BigInteger) { - return castToBigInteger(a).add(castToBigInteger(b)); - } - - if (a instanceof Long || b instanceof Long) { - return castToLong(a) + castToLong(b); - } - - if (a instanceof Integer || b instanceof Integer) { - return castToInteger(a) + castToInteger(b); - } - - if (a instanceof Short || b instanceof Short) { - return castToShort(a) + castToShort(b); - } - - if (a instanceof Byte || b instanceof Byte) { - return castToByte(a) + castToByte(b); - } - - throw new IllegalArgumentException(a.getClass() + " and " + b.getClass() + " not supported."); - } - public static Object div(Object a, Object b) { if (a == null || b == null) { return null; @@ -1216,6 +1190,14 @@ public class SQLEvalVisitorUtils { return castToDecimal(a).divide(castToDecimal(b)); } + if (a instanceof Double || b instanceof Double) { + return castToDouble(a) / (castToDouble(b)); + } + + if (a instanceof Float || b instanceof Float) { + return castToFloat(a) / (castToFloat(b)); + } + if (a instanceof BigInteger || b instanceof BigInteger) { return castToBigInteger(a).divide(castToBigInteger(b)); } @@ -1445,6 +1427,10 @@ public class SQLEvalVisitorUtils { return a; } + if (a == EVAL_VALUE_NULL || b == EVAL_VALUE_NULL) { + return EVAL_VALUE_NULL; + } + if (a instanceof BigDecimal || b instanceof BigDecimal) { return castToDecimal(a).add(castToDecimal(b)); } diff --git a/src/main/java/com/alibaba/druid/sql/visitor/SQLShardingVisitor.java b/src/main/java/com/alibaba/druid/sql/visitor/SQLShardingVisitor.java deleted file mode 100644 index ccbac87d4e..0000000000 --- a/src/main/java/com/alibaba/druid/sql/visitor/SQLShardingVisitor.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 1999-2011 Alibaba Group Holding Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.alibaba.druid.sql.visitor; - -import com.alibaba.druid.sql.ast.SQLObject; -import com.alibaba.druid.sql.ast.statement.SQLInsertStatement; - -public class SQLShardingVisitor extends SQLASTVisitorAdapter { - - public void postVisit(SQLObject x) { - } - - public void preVisit(SQLObject x) { - } - - public boolean visit(SQLInsertStatement x) { - return false; - } -} diff --git a/src/main/java/com/alibaba/druid/support/logging/JakartaCommonsLoggingImpl.java b/src/main/java/com/alibaba/druid/support/logging/JakartaCommonsLoggingImpl.java index 9588f4d3fa..a2ff46898b 100644 --- a/src/main/java/com/alibaba/druid/support/logging/JakartaCommonsLoggingImpl.java +++ b/src/main/java/com/alibaba/druid/support/logging/JakartaCommonsLoggingImpl.java @@ -25,12 +25,13 @@ public class JakartaCommonsLoggingImpl implements com.alibaba.druid.support.logg private int errorCount; private int warnCount; private int infoCount; - + private int debugCount; + /** * @since 0.2.1 * @param log */ - public JakartaCommonsLoggingImpl(Log log) { + public JakartaCommonsLoggingImpl(Log log){ this.log = log; } @@ -53,10 +54,12 @@ public class JakartaCommonsLoggingImpl implements com.alibaba.druid.support.logg } public void debug(String s) { + debugCount++; log.debug(s); } public void debug(String s, Throwable e) { + debugCount++; log.debug(s, e); } @@ -85,6 +88,7 @@ public class JakartaCommonsLoggingImpl implements com.alibaba.druid.support.logg errorCount = 0; warnCount = 0; infoCount = 0; + debugCount++; } @Override @@ -107,4 +111,9 @@ public class JakartaCommonsLoggingImpl implements com.alibaba.druid.support.logg public boolean isWarnEnabled() { return log.isWarnEnabled(); } + + public int getDebugCount() { + return debugCount; + } + } diff --git a/src/main/java/com/alibaba/druid/support/logging/Jdk14LoggingImpl.java b/src/main/java/com/alibaba/druid/support/logging/Jdk14LoggingImpl.java index 2b6004f75d..e56dea302e 100644 --- a/src/main/java/com/alibaba/druid/support/logging/Jdk14LoggingImpl.java +++ b/src/main/java/com/alibaba/druid/support/logging/Jdk14LoggingImpl.java @@ -25,6 +25,7 @@ public class Jdk14LoggingImpl implements Log { private int errorCount; private int warnCount; private int infoCount; + private int debugCount; private String loggerName; @@ -48,10 +49,12 @@ public class Jdk14LoggingImpl implements Log { } public void debug(String s) { + debugCount++; log.logp(Level.FINE, loggerName, Thread.currentThread().getStackTrace()[1].getMethodName(), s); } public void debug(String s, Throwable e) { + debugCount++; log.logp(Level.FINE, loggerName, Thread.currentThread().getStackTrace()[1].getMethodName(), s, e); } @@ -80,6 +83,7 @@ public class Jdk14LoggingImpl implements Log { errorCount = 0; warnCount = 0; infoCount = 0; + debugCount = 0; } @Override @@ -102,4 +106,9 @@ public class Jdk14LoggingImpl implements Log { public boolean isWarnEnabled() { return log.isLoggable(Level.WARNING); } + + public int getDebugCount() { + return debugCount; + } + } diff --git a/src/main/java/com/alibaba/druid/support/logging/Log.java b/src/main/java/com/alibaba/druid/support/logging/Log.java index 6400018d18..1508360b0d 100644 --- a/src/main/java/com/alibaba/druid/support/logging/Log.java +++ b/src/main/java/com/alibaba/druid/support/logging/Log.java @@ -43,5 +43,8 @@ public interface Log { int getInfoCount(); + int getDebugCount(); + void resetStat(); + } diff --git a/src/main/java/com/alibaba/druid/support/logging/Log4jImpl.java b/src/main/java/com/alibaba/druid/support/logging/Log4jImpl.java index e9d7a0bc84..7b63281283 100644 --- a/src/main/java/com/alibaba/druid/support/logging/Log4jImpl.java +++ b/src/main/java/com/alibaba/druid/support/logging/Log4jImpl.java @@ -27,12 +27,13 @@ public class Log4jImpl implements Log { private int errorCount; private int warnCount; private int infoCount; - + private int debugCount; + /** * @since 0.2.21 * @param log */ - public Log4jImpl(Logger log) { + public Log4jImpl(Logger log){ this.log = log; } @@ -55,10 +56,12 @@ public class Log4jImpl implements Log { } public void debug(String s) { + debugCount++; log.log(callerFQCN, Level.DEBUG, s, null); } public void debug(String s, Throwable e) { + debugCount++; log.log(callerFQCN, Level.DEBUG, s, e); } @@ -84,6 +87,11 @@ public class Log4jImpl implements Log { errorCount = 0; warnCount = 0; infoCount = 0; + debugCount = 0; + } + + public int getDebugCount() { + return debugCount; } public boolean isInfoEnabled() { diff --git a/src/main/java/com/alibaba/druid/support/logging/NoLoggingImpl.java b/src/main/java/com/alibaba/druid/support/logging/NoLoggingImpl.java index c239bb53bc..dcbd47e22a 100644 --- a/src/main/java/com/alibaba/druid/support/logging/NoLoggingImpl.java +++ b/src/main/java/com/alibaba/druid/support/logging/NoLoggingImpl.java @@ -20,6 +20,7 @@ public class NoLoggingImpl implements Log { private int infoCount; private int errorCount; private int warnCount; + private int debugCount; private String loggerName; public NoLoggingImpl(String loggerName){ @@ -50,9 +51,11 @@ public class NoLoggingImpl implements Log { } public void debug(String s) { + debugCount++; } public void debug(String s, Throwable e) { + debugCount++; } public void warn(String s) { @@ -78,6 +81,7 @@ public class NoLoggingImpl implements Log { errorCount = 0; warnCount = 0; infoCount = 0; + debugCount = 0; } @Override @@ -98,4 +102,9 @@ public class NoLoggingImpl implements Log { public int getInfoCount() { return infoCount; } + + public int getDebugCount() { + return debugCount; + } + } diff --git a/src/main/java/com/alibaba/druid/support/logging/SLF4JImpl.java b/src/main/java/com/alibaba/druid/support/logging/SLF4JImpl.java index b9e6b4a32e..4da60b7aab 100644 --- a/src/main/java/com/alibaba/druid/support/logging/SLF4JImpl.java +++ b/src/main/java/com/alibaba/druid/support/logging/SLF4JImpl.java @@ -33,6 +33,7 @@ public class SLF4JImpl implements Log { private int errorCount; private int warnCount; private int infoCount; + private int debugCount; private LocationAwareLogger log; public SLF4JImpl(LocationAwareLogger log){ @@ -73,11 +74,13 @@ public class SLF4JImpl implements Log { @Override public void debug(String msg) { + debugCount++; log.log(null, callerFQCN, LocationAwareLogger.DEBUG_INT, msg, null, null); } @Override public void debug(String msg, Throwable e) { + debugCount++; log.log(null, callerFQCN, LocationAwareLogger.ERROR_INT, msg, null, e); } @@ -113,11 +116,16 @@ public class SLF4JImpl implements Log { return infoCount; } + public int getDebugCount() { + return debugCount; + } + @Override public void resetStat() { errorCount = 0; warnCount = 0; infoCount = 0; + debugCount = 0; } } diff --git a/src/main/java/com/alibaba/druid/util/ConcurrentIdentityHashMap.java b/src/main/java/com/alibaba/druid/util/ConcurrentIdentityHashMap.java index 1b7b8ca1da..2acb46d964 100644 --- a/src/main/java/com/alibaba/druid/util/ConcurrentIdentityHashMap.java +++ b/src/main/java/com/alibaba/druid/util/ConcurrentIdentityHashMap.java @@ -578,20 +578,6 @@ public class ConcurrentIdentityHashMap extends AbstractMap implement } } - /** - * Creates a new, empty map with the specified initial capacity and load factor and with the default reference types - * (weak keys, strong values), and concurrencyLevel (16). - * - * @param initialCapacity The implementation performs internal sizing to accommodate this many elements. - * @param loadFactor the load factor threshold, used to control resizing. Resizing may be performed when the average - * number of elements per bin exceeds this threshold. - * @throws IllegalArgumentException if the initial capacity of elements is negative or the load factor is - * nonpositive - */ - public ConcurrentIdentityHashMap(int initialCapacity, float loadFactor){ - this(initialCapacity, loadFactor, DEFAULT_CONCURRENCY_LEVEL); - } - /** * Creates a new, empty map with the specified initial capacity, and with default reference types (weak keys, strong * values), load factor (0.75) and concurrencyLevel (16). @@ -612,19 +598,6 @@ public class ConcurrentIdentityHashMap extends AbstractMap implement this(DEFAULT_INITIAL_CAPACITY, DEFAULT_LOAD_FACTOR, DEFAULT_CONCURRENCY_LEVEL); } - /** - * Creates a new map with the same mappings as the given map. The map is created with a capacity of 1.5 times the - * number of mappings in the given map or 16 (whichever is greater), and a default load factor (0.75) and - * concurrencyLevel (16). - * - * @param m the map - */ - public ConcurrentIdentityHashMap(Map m){ - this(Math.max((int) (m.size() / DEFAULT_LOAD_FACTOR) + 1, DEFAULT_INITIAL_CAPACITY), DEFAULT_LOAD_FACTOR, - DEFAULT_CONCURRENCY_LEVEL); - putAll(m); - } - /** * Returns true if this map contains no key-value mappings. * @@ -846,19 +819,6 @@ public class ConcurrentIdentityHashMap extends AbstractMap implement return segmentFor(hash).put(key, hash, value, true); } - /** - * Copies all of the mappings from the specified map to this one. These mappings replace any mappings that this map - * had for any of the keys currently in the specified map. - * - * @param m mappings to be stored in this map - */ - @Override - public final void putAll(Map m) { - for (Map.Entry e : m.entrySet()) { - put(e.getKey(), e.getValue()); - } - } - /** * Removes the key (and its corresponding value) from this map. This method does nothing if the key is not in the * map. diff --git a/src/main/java/com/alibaba/druid/util/DaemonThreadFactory.java b/src/main/java/com/alibaba/druid/util/DaemonThreadFactory.java index 5dc2d07416..04a803860a 100644 --- a/src/main/java/com/alibaba/druid/util/DaemonThreadFactory.java +++ b/src/main/java/com/alibaba/druid/util/DaemonThreadFactory.java @@ -32,7 +32,8 @@ public class DaemonThreadFactory implements ThreadFactory { } public Thread newThread(Runnable r) { - Thread newThread = new Thread(r, nameStart + threadNo.getAndIncrement() + nameEnd); + String threadName = nameStart + threadNo.getAndIncrement() + nameEnd; + Thread newThread = new Thread(r, threadName); newThread.setDaemon(true); if (newThread.getPriority() != Thread.NORM_PRIORITY) { newThread.setPriority(Thread.NORM_PRIORITY); diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleUpdateSetValueClause.java b/src/test/java/com/alibaba/druid/bvt/filter/wall/SQLServerWallTest_8.java similarity index 51% rename from src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleUpdateSetValueClause.java rename to src/test/java/com/alibaba/druid/bvt/filter/wall/SQLServerWallTest_8.java index ce09897fcb..4173628596 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleUpdateSetValueClause.java +++ b/src/test/java/com/alibaba/druid/bvt/filter/wall/SQLServerWallTest_8.java @@ -1,33 +1,43 @@ -/* - * Copyright 1999-2011 Alibaba Group Holding Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.alibaba.druid.sql.dialect.oracle.ast.stmt; - -import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; - -public class OracleUpdateSetValueClause extends OracleUpdateSetClause { - - private static final long serialVersionUID = 1L; - - public OracleUpdateSetValueClause(){ - - } - - public void accept0(OracleASTVisitor visitor) { - visitor.visit(this); - - visitor.endVisit(this); - } -} +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.filter.wall; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.wall.WallProvider; +import com.alibaba.druid.wall.spi.SQLServerWallProvider; + +/** + * SQLServerWallTest + * + * @author RaymondXiu + * @version 1.0, 2012-3-18 + * @see + */ +public class SQLServerWallTest_8 extends TestCase { + + public void test_true() throws Exception { + WallProvider provider = new SQLServerWallProvider(); + + provider.getConfig().setMustParameterized(true); + + Assert.assertFalse(provider.checkValid("select * from t where fid = 1")); + + } + +} diff --git a/src/test/java/com/alibaba/druid/bvt/pool/vendor/InformixExceptionSorterTest.java b/src/test/java/com/alibaba/druid/bvt/pool/vendor/InformixExceptionSorterTest.java new file mode 100644 index 0000000000..abe3b0528e --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/pool/vendor/InformixExceptionSorterTest.java @@ -0,0 +1,36 @@ +package com.alibaba.druid.bvt.pool.vendor; + +import java.sql.SQLException; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.pool.vendor.InformixExceptionSorter; + +public class InformixExceptionSorterTest extends TestCase { + + public void test_informix() throws Exception { + InformixExceptionSorter sorter = new InformixExceptionSorter(); + Assert.assertEquals(false, sorter.isExceptionFatal(new SQLException())); + + Assert.assertEquals(true, sorter.isExceptionFatal(new SQLException("", "", -710))); + Assert.assertEquals(true, sorter.isExceptionFatal(new SQLException("", "", -79716))); + Assert.assertEquals(true, sorter.isExceptionFatal(new SQLException("", "", -79730))); + Assert.assertEquals(true, sorter.isExceptionFatal(new SQLException("", "", -79734))); + Assert.assertEquals(true, sorter.isExceptionFatal(new SQLException("", "", -79735))); + Assert.assertEquals(true, sorter.isExceptionFatal(new SQLException("", "", -79736))); + Assert.assertEquals(true, sorter.isExceptionFatal(new SQLException("", "", -79756))); + Assert.assertEquals(true, sorter.isExceptionFatal(new SQLException("", "", -79757))); + Assert.assertEquals(true, sorter.isExceptionFatal(new SQLException("", "", -79758))); + Assert.assertEquals(true, sorter.isExceptionFatal(new SQLException("", "", -79759))); + Assert.assertEquals(true, sorter.isExceptionFatal(new SQLException("", "", -79760))); + Assert.assertEquals(true, sorter.isExceptionFatal(new SQLException("", "", -79788))); + Assert.assertEquals(true, sorter.isExceptionFatal(new SQLException("", "", -79811))); + Assert.assertEquals(true, sorter.isExceptionFatal(new SQLException("", "", -79812))); + Assert.assertEquals(true, sorter.isExceptionFatal(new SQLException("", "", -79836))); + Assert.assertEquals(true, sorter.isExceptionFatal(new SQLException("", "", -79837))); + Assert.assertEquals(true, sorter.isExceptionFatal(new SQLException("", "", -79879))); + Assert.assertEquals(false, sorter.isExceptionFatal(new SQLException("", "", 100))); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/pool/vendor/SybaseExceptionSorterTest.java b/src/test/java/com/alibaba/druid/bvt/pool/vendor/SybaseExceptionSorterTest.java new file mode 100644 index 0000000000..49241f0cbf --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/pool/vendor/SybaseExceptionSorterTest.java @@ -0,0 +1,32 @@ +package com.alibaba.druid.bvt.pool.vendor; + +import java.sql.SQLException; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.pool.vendor.SybaseExceptionSorter; + +public class SybaseExceptionSorterTest extends TestCase { + + public void test_false() throws Exception { + SybaseExceptionSorter sorter = new SybaseExceptionSorter(); + Assert.assertFalse(sorter.isExceptionFatal(new SQLException())); + } + + public void test_false_2() throws Exception { + SybaseExceptionSorter sorter = new SybaseExceptionSorter(); + Assert.assertFalse(sorter.isExceptionFatal(new SQLException("xxx"))); + } + + public void test_true() throws Exception { + SybaseExceptionSorter sorter = new SybaseExceptionSorter(); + Assert.assertTrue(sorter.isExceptionFatal(new SQLException("JZ0C0"))); + } + + public void test_true_1() throws Exception { + SybaseExceptionSorter sorter = new SybaseExceptionSorter(); + Assert.assertTrue(sorter.isExceptionFatal(new SQLException("JZ0C1"))); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/pool/vendor/ValidConnectionCheckerAdapterTest.java b/src/test/java/com/alibaba/druid/bvt/pool/vendor/ValidConnectionCheckerAdapterTest.java new file mode 100644 index 0000000000..037a7afadb --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/pool/vendor/ValidConnectionCheckerAdapterTest.java @@ -0,0 +1,16 @@ +package com.alibaba.druid.bvt.pool.vendor; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.pool.ValidConnectionCheckerAdapter; + + +public class ValidConnectionCheckerAdapterTest extends TestCase { + public void test_adapter() throws Exception { + ValidConnectionCheckerAdapter adapter = new ValidConnectionCheckerAdapter(); + adapter.configFromProperties(System.getProperties()); + Assert.assertTrue(adapter.isValidConnection(null, null, 10)); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/spring/SqlMapExecutorWrapperTest.java b/src/test/java/com/alibaba/druid/bvt/spring/SqlMapExecutorWrapperTest.java new file mode 100644 index 0000000000..6ed337b5db --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/spring/SqlMapExecutorWrapperTest.java @@ -0,0 +1,64 @@ +package com.alibaba.druid.bvt.spring; + +import java.sql.Connection; + +import junit.framework.TestCase; + +import org.junit.Assert; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +import com.alibaba.druid.support.ibatis.SqlMapClientWrapper; +import com.ibatis.sqlmap.engine.impl.SqlMapClientImpl; + +public class SqlMapExecutorWrapperTest extends TestCase { + + private ClassPathXmlApplicationContext context = null; + + protected void setUp() throws Exception { + context = new ClassPathXmlApplicationContext("com/alibaba/druid/pool/ibatis/spring-config-ibatis.xml"); + } + + protected void tearDown() throws Exception { + context.close(); + } + + @SuppressWarnings("deprecation") + public void test_wrap() throws Exception { + SqlMapClientImpl client = (SqlMapClientImpl) context.getBean("master-sqlMapClient"); + Assert.assertNotNull(client); + + SqlMapClientWrapper wrapper = new SqlMapClientWrapper(client); + wrapper.getClient(); + wrapper.startTransaction(); + wrapper.endTransaction(); + wrapper.startTransaction(Connection.TRANSACTION_NONE); + wrapper.endTransaction(); + wrapper.setUserConnection(wrapper.getUserConnection()); + wrapper.getCurrentConnection(); + wrapper.getDataSource(); + wrapper.openSession().close(); + wrapper.openSession(wrapper.getCurrentConnection()).close(); + wrapper.getSession(); + wrapper.flushDataCache(); + Exception error = null; + try { + wrapper.flushDataCache(null); + } catch (Exception ex) { + error = ex; + } + Assert.assertNotNull(error); + wrapper.startTransaction(); + wrapper.commitTransaction(); + + wrapper.getMappedStatement("Sequence.getValue"); + + wrapper.isEnhancementEnabled(); + wrapper.isLazyLoadingEnabled(); + + wrapper.getSqlExecutor(); + + wrapper.getDelegate(); + + wrapper.getResultObjectFactory(); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/SQLCommentStatementTest.java b/src/test/java/com/alibaba/druid/bvt/sql/SQLCommentStatementTest.java new file mode 100644 index 0000000000..890e16224a --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/SQLCommentStatementTest.java @@ -0,0 +1,23 @@ +package com.alibaba.druid.bvt.sql; + +import org.junit.Assert; + +import junit.framework.TestCase; + +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.parser.SQLStatementParser; +import com.alibaba.druid.sql.test.TestUtils; + +public class SQLCommentStatementTest extends TestCase { + + public void test_0() throws Exception { + String sql = "COMMENT on table t1 IS 'xxx'"; + + SQLStatementParser parser = new SQLStatementParser(sql); + SQLStatement stmt = parser.parseStatementList().get(0); + + String text = TestUtils.outputSqlServer(stmt); + + Assert.assertEquals("COMMENT ON TABLE t1 IS 'xxx'", text); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalBetweenTest.java b/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalBetweenTest.java index d8db36bdd5..4b4a1e4220 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalBetweenTest.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalBetweenTest.java @@ -1,8 +1,9 @@ package com.alibaba.druid.bvt.sql.eval; -import junit.framework.Assert; import junit.framework.TestCase; +import org.junit.Assert; + import com.alibaba.druid.sql.visitor.SQLEvalVisitorUtils; import com.alibaba.druid.util.JdbcConstants; diff --git a/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalConcatTest.java b/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalConcatTest.java index 067577a40e..1e9a853eeb 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalConcatTest.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalConcatTest.java @@ -1,8 +1,9 @@ package com.alibaba.druid.bvt.sql.eval; -import junit.framework.Assert; import junit.framework.TestCase; +import org.junit.Assert; + import com.alibaba.druid.sql.visitor.SQLEvalVisitorUtils; import com.alibaba.druid.util.JdbcConstants; diff --git a/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodAbsTest.java b/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodAbsTest.java index f434bca1cb..de68ce0bcd 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodAbsTest.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodAbsTest.java @@ -1,15 +1,21 @@ package com.alibaba.druid.bvt.sql.eval; -import junit.framework.Assert; import junit.framework.TestCase; +import org.junit.Assert; + import com.alibaba.druid.sql.visitor.SQLEvalVisitorUtils; import com.alibaba.druid.util.JdbcConstants; public class EvalMethodAbsTest extends TestCase { - public void test_reverse() throws Exception { + public void test_abs_int() throws Exception { Assert.assertEquals(12, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "abs(-12)")); Assert.assertEquals(12, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "abs(12)")); } + + public void test_abs_long() throws Exception { + Assert.assertEquals(12L, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "abs(?)", 12L)); + Assert.assertEquals(12L, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "abs(?)", -12L)); + } } diff --git a/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodAcosTest.java b/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodAcosTest.java index 5cd4fee34c..eac80aec6f 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodAcosTest.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodAcosTest.java @@ -1,8 +1,9 @@ package com.alibaba.druid.bvt.sql.eval; -import junit.framework.Assert; import junit.framework.TestCase; +import org.junit.Assert; + import com.alibaba.druid.sql.visitor.SQLEvalVisitorUtils; import com.alibaba.druid.util.JdbcConstants; diff --git a/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodCosTest.java b/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodCosTest.java new file mode 100644 index 0000000000..91ff8bb44e --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodCosTest.java @@ -0,0 +1,17 @@ +package com.alibaba.druid.bvt.sql.eval; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.sql.visitor.SQLEvalVisitorUtils; +import com.alibaba.druid.util.JdbcConstants; + + +public class EvalMethodCosTest extends TestCase { + public void test_reverse() throws Exception { + Assert.assertEquals(Math.cos(1), SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "cos(1)")); + Assert.assertEquals(Math.cos(1.001), SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "cos(1.001)")); + Assert.assertEquals(Math.cos(0), SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "cos(0)")); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodLog10Test.java b/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodLog10Test.java new file mode 100644 index 0000000000..0fa7c815e5 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodLog10Test.java @@ -0,0 +1,17 @@ +package com.alibaba.druid.bvt.sql.eval; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.sql.visitor.SQLEvalVisitorUtils; +import com.alibaba.druid.util.JdbcConstants; + + +public class EvalMethodLog10Test extends TestCase { + public void test_reverse() throws Exception { + Assert.assertEquals(Math.log10(1), SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "log10(1)")); + Assert.assertEquals(Math.log10(1.001), SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "log10(1.001)")); + Assert.assertEquals(Math.log10(0), SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "log10(0)")); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodLogTest.java b/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodLogTest.java new file mode 100644 index 0000000000..cfc527ea48 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodLogTest.java @@ -0,0 +1,17 @@ +package com.alibaba.druid.bvt.sql.eval; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.sql.visitor.SQLEvalVisitorUtils; +import com.alibaba.druid.util.JdbcConstants; + + +public class EvalMethodLogTest extends TestCase { + public void test_reverse() throws Exception { + Assert.assertEquals(Math.log(1), SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "log(1)")); + Assert.assertEquals(Math.log(1.001), SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "log(1.001)")); + Assert.assertEquals(Math.log(0), SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "log(0)")); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodPowerTest.java b/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodPowerTest.java new file mode 100644 index 0000000000..33495a3aa3 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodPowerTest.java @@ -0,0 +1,17 @@ +package com.alibaba.druid.bvt.sql.eval; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.sql.visitor.SQLEvalVisitorUtils; +import com.alibaba.druid.util.JdbcConstants; + + +public class EvalMethodPowerTest extends TestCase { + public void test_reverse() throws Exception { + Assert.assertEquals(Math.pow(1, 2), SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "power(1, 2)")); + Assert.assertEquals(Math.pow(3, 4), SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "power(3, 4)")); + Assert.assertEquals(Math.pow(4, 5), SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "pow(4, 5)")); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodRandom.java b/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodRandom.java new file mode 100644 index 0000000000..f4d866b4f1 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodRandom.java @@ -0,0 +1,15 @@ +package com.alibaba.druid.bvt.sql.eval; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.sql.visitor.SQLEvalVisitorUtils; +import com.alibaba.druid.util.JdbcConstants; + + +public class EvalMethodRandom extends TestCase { + public void test_reverse() throws Exception { + Assert.assertNotNull(SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "rand()")); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodSinTest.java b/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodSinTest.java new file mode 100644 index 0000000000..b651586ba6 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodSinTest.java @@ -0,0 +1,18 @@ +package com.alibaba.druid.bvt.sql.eval; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.sql.visitor.SQLEvalVisitorUtils; +import com.alibaba.druid.util.JdbcConstants; + + +public class EvalMethodSinTest extends TestCase { + public void test_reverse() throws Exception { + Assert.assertEquals(Math.sin(1), SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "sin(1)")); + Assert.assertEquals(Math.sin(1.001), SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "sin(1.001)")); + Assert.assertEquals(Math.sin(0), SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "sin(0)")); + Assert.assertEquals(Math.sin(2), SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "sin(2)")); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodSqrtTest.java b/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodSqrtTest.java new file mode 100644 index 0000000000..f9959aa9aa --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodSqrtTest.java @@ -0,0 +1,17 @@ +package com.alibaba.druid.bvt.sql.eval; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.sql.visitor.SQLEvalVisitorUtils; +import com.alibaba.druid.util.JdbcConstants; + + +public class EvalMethodSqrtTest extends TestCase { + public void test_reverse() throws Exception { + Assert.assertEquals(Math.sqrt(1), SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "sqrt(1)")); + Assert.assertEquals(Math.sqrt(1.001), SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "sqrt(1.001)")); + Assert.assertEquals(Math.sqrt(0), SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "sqrt(0)")); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodTanTest.java b/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodTanTest.java new file mode 100644 index 0000000000..b124c8d107 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalMethodTanTest.java @@ -0,0 +1,17 @@ +package com.alibaba.druid.bvt.sql.eval; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.sql.visitor.SQLEvalVisitorUtils; +import com.alibaba.druid.util.JdbcConstants; + + +public class EvalMethodTanTest extends TestCase { + public void test_reverse() throws Exception { + Assert.assertEquals(Math.tan(1), SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "tan(1)")); + Assert.assertEquals(Math.tan(1.001), SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "tan(1.001)")); + Assert.assertEquals(Math.tan(0), SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "tan(0)")); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalTest_add.java b/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalTest_add.java new file mode 100644 index 0000000000..b427e4a71c --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalTest_add.java @@ -0,0 +1,23 @@ +package com.alibaba.druid.bvt.sql.eval; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.sql.visitor.SQLEvalVisitorUtils; +import com.alibaba.druid.util.JdbcConstants; + + +public class EvalTest_add extends TestCase { + public void test_byte() throws Exception { + Assert.assertEquals(3, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "? + ?", (byte) 1, (byte) 2)); + } + + public void test_byte_1() throws Exception { + Assert.assertEquals(3, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "? + ?", (byte) 1, "2")); + } + + public void test_byte_2() throws Exception { + Assert.assertEquals(null, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "? + ?", (byte) 1, null)); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalTest_add_long.java b/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalTest_add_long.java new file mode 100644 index 0000000000..6ed2243384 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalTest_add_long.java @@ -0,0 +1,23 @@ +package com.alibaba.druid.bvt.sql.eval; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.sql.visitor.SQLEvalVisitorUtils; +import com.alibaba.druid.util.JdbcConstants; + + +public class EvalTest_add_long extends TestCase { + public void test_byte() throws Exception { + Assert.assertEquals(3L, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "? + ?", (long) 1, (byte) 2)); + } + + public void test_byte_1() throws Exception { + Assert.assertEquals(3L, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "? + ?", (long) 1, "2")); + } + + public void test_byte_2() throws Exception { + Assert.assertEquals(null, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "? + ?", (long) 1, null)); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalTest_add_short.java b/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalTest_add_short.java new file mode 100644 index 0000000000..13ac3947bf --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalTest_add_short.java @@ -0,0 +1,23 @@ +package com.alibaba.druid.bvt.sql.eval; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.sql.visitor.SQLEvalVisitorUtils; +import com.alibaba.druid.util.JdbcConstants; + + +public class EvalTest_add_short extends TestCase { + public void test_byte() throws Exception { + Assert.assertEquals(3, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "? + ?", (short) 1, (byte) 2)); + } + + public void test_byte_1() throws Exception { + Assert.assertEquals(3, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "? + ?", (short) 1, "2")); + } + + public void test_byte_2() throws Exception { + Assert.assertEquals(null, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "? + ?", (short) 1, null)); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalTest_div.java b/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalTest_div.java new file mode 100644 index 0000000000..0748f49d87 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalTest_div.java @@ -0,0 +1,46 @@ +package com.alibaba.druid.bvt.sql.eval; + +import java.math.BigDecimal; +import java.math.BigInteger; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.sql.visitor.SQLEvalVisitorUtils; +import com.alibaba.druid.util.JdbcConstants; + + +public class EvalTest_div extends TestCase { + public void test_long() throws Exception { + Assert.assertEquals(0L, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "?/?", (long) 1, (byte) 2)); + } + + public void test_int() throws Exception { + Assert.assertEquals(0, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "?/?", (int) 1, (byte) 2)); + } + + public void test_short() throws Exception { + Assert.assertEquals(0, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "?/?", (short) 1, (byte) 2)); + } + + public void test_byte() throws Exception { + Assert.assertEquals(0, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "?/?", (byte) 1, (byte) 2)); + } + + public void test_BigInteger() throws Exception { + Assert.assertEquals(BigInteger.ZERO, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "?/?", BigInteger.ONE, (byte) 2)); + } + + public void test_BigDecimal() throws Exception { + Assert.assertEquals(new BigDecimal("0.5"), SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "?/?", BigDecimal.ONE, (byte) 2)); + } + + public void test_float() throws Exception { + Assert.assertEquals(0.5F, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "?/?", (float) 1, (byte) 2)); + } + + public void test_double() throws Exception { + Assert.assertEquals(0.5D, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "?/?", (double) 1, (byte) 2)); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalTest_gt.java b/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalTest_gt.java new file mode 100644 index 0000000000..7a50c507c2 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalTest_gt.java @@ -0,0 +1,50 @@ +package com.alibaba.druid.bvt.sql.eval; + +import java.math.BigDecimal; +import java.math.BigInteger; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.sql.visitor.SQLEvalVisitorUtils; +import com.alibaba.druid.util.JdbcConstants; + + +public class EvalTest_gt extends TestCase { + public void test_long() throws Exception { + Assert.assertEquals(false, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "? > ?", (long) 1, (byte) 2)); + } + + public void test_int() throws Exception { + Assert.assertEquals(false, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "? > ?", (int) 1, (byte) 2)); + } + + public void test_short() throws Exception { + Assert.assertEquals(false, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "? > ?", (short) 1, (byte) 2)); + } + + public void test_byte() throws Exception { + Assert.assertEquals(false, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "? > ?", (byte) 1, (byte) 2)); + } + + public void test_BigInteger() throws Exception { + Assert.assertEquals(false, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "?>?", BigInteger.ONE, (byte) 2)); + } + + public void test_BigDecimal() throws Exception { + Assert.assertEquals(false, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "?>?", BigDecimal.ONE, (byte) 2)); + } + + public void test_float() throws Exception { + Assert.assertEquals(false, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "?>?", (float) 1, (byte) 2)); + } + + public void test_double() throws Exception { + Assert.assertEquals(false, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "?>?", (double) 1, (byte) 2)); + } + + public void test_String() throws Exception { + Assert.assertEquals(false, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "?>?", "1", "2")); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalTest_lt.java b/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalTest_lt.java new file mode 100644 index 0000000000..ffab2615ca --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalTest_lt.java @@ -0,0 +1,50 @@ +package com.alibaba.druid.bvt.sql.eval; + +import java.math.BigDecimal; +import java.math.BigInteger; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.sql.visitor.SQLEvalVisitorUtils; +import com.alibaba.druid.util.JdbcConstants; + + +public class EvalTest_lt extends TestCase { + public void test_long() throws Exception { + Assert.assertEquals(true, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "? < ?", (long) 1, (byte) 2)); + } + + public void test_int() throws Exception { + Assert.assertEquals(true, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "? < ?", (int) 1, (byte) 2)); + } + + public void test_short() throws Exception { + Assert.assertEquals(true, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "? < ?", (short) 1, (byte) 2)); + } + + public void test_byte() throws Exception { + Assert.assertEquals(true, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "? < ?", (byte) 1, (byte) 2)); + } + + public void test_BigInteger() throws Exception { + Assert.assertEquals(true, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "? statementList = parser.parseStatementList(); + SQLStatement statemen = statementList.get(0); + print(statementList); + + Assert.assertEquals(1, statementList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + statemen.accept(visitor); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(1, visitor.getTables().size()); + Assert.assertEquals(2, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + + Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("z_code"))); + + Assert.assertTrue(visitor.getColumns().contains(new Column("z_code", "f1"))); + Assert.assertTrue(visitor.getColumns().contains(new Column("z_code", "f2"))); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleSelectTest43.java b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleSelectTest43.java new file mode 100644 index 0000000000..6b15ddc36a --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleSelectTest43.java @@ -0,0 +1,59 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.oracle; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.OracleTest; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.oracle.parser.OracleStatementParser; +import com.alibaba.druid.sql.dialect.oracle.visitor.OracleSchemaStatVisitor; + +public class OracleSelectTest43 extends OracleTest { + + public void test_0() throws Exception { + String sql = // + "SELECT * FROM table(t_department) " + // + "WHERE name IN ('0000','4444') " + // + "ORDER BY name ASC"; // + + OracleStatementParser parser = new OracleStatementParser(sql); + List statementList = parser.parseStatementList(); + SQLStatement statemen = statementList.get(0); + print(statementList); + + Assert.assertEquals(1, statementList.size()); + + OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor(); + statemen.accept(visitor); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("relationships : " + visitor.getRelationships()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(1, visitor.getTables().size()); + + Assert.assertEquals(1, visitor.getColumns().size()); + + // Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("acduser.vw_acd_info", "xzqh"))); + + // Assert.assertTrue(visitor.getOrderByColumns().contains(new TableStat.Column("employees", "last_name"))); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleUpdateTest2.java b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleUpdateTest2.java index 453a10d235..651ec8a859 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleUpdateTest2.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleUpdateTest2.java @@ -17,7 +17,7 @@ package com.alibaba.druid.bvt.sql.oracle; import java.util.List; -import junit.framework.Assert; +import org.junit.Assert; import com.alibaba.druid.sql.OracleTest; import com.alibaba.druid.sql.ast.SQLStatement; diff --git a/src/test/java/com/alibaba/druid/bvt/sql/postgresql/PGExportParameterVisitorTest.java b/src/test/java/com/alibaba/druid/bvt/sql/postgresql/PGExportParameterVisitorTest.java new file mode 100644 index 0000000000..76fc2223ab --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/postgresql/PGExportParameterVisitorTest.java @@ -0,0 +1,29 @@ +package com.alibaba.druid.bvt.sql.postgresql; + +import java.util.ArrayList; +import java.util.List; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.postgresql.parser.PGSQLStatementParser; +import com.alibaba.druid.sql.dialect.postgresql.visitor.PGExportParameterVisitor; + + +public class PGExportParameterVisitorTest extends TestCase { + public void test_pg() throws Exception { + String sql = "select fname, count(*) from t where fid = 1 group by fname order by 1"; + + PGSQLStatementParser parser = new PGSQLStatementParser(sql); + SQLStatement stmt = parser.parseStatementList().get(0); + + List parameters = new ArrayList(); + PGExportParameterVisitor visitor = new PGExportParameterVisitor(parameters); + stmt.accept(visitor); + + Assert.assertEquals(1, parameters.size()); + Assert.assertEquals(1, parameters.get(0)); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/postgresql/PGExportParameterVisitorTest1.java b/src/test/java/com/alibaba/druid/bvt/sql/postgresql/PGExportParameterVisitorTest1.java new file mode 100644 index 0000000000..1bb100cf1a --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/postgresql/PGExportParameterVisitorTest1.java @@ -0,0 +1,29 @@ +package com.alibaba.druid.bvt.sql.postgresql; + +import java.util.List; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.postgresql.parser.PGSQLStatementParser; +import com.alibaba.druid.sql.dialect.postgresql.visitor.PGExportParameterVisitor; + + +public class PGExportParameterVisitorTest1 extends TestCase { + public void test_pg() throws Exception { + String sql = "select fname, count(*) from t where fid = 1 group by fname order by 1"; + + PGSQLStatementParser parser = new PGSQLStatementParser(sql); + SQLStatement stmt = parser.parseStatementList().get(0); + + PGExportParameterVisitor visitor = new PGExportParameterVisitor(); + stmt.accept(visitor); + + List parameters = visitor.getParameters(); + + Assert.assertEquals(1, parameters.size()); + Assert.assertEquals(1, parameters.get(0)); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/MSSQLServerExportParameterVisitorTest.java b/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/MSSQLServerExportParameterVisitorTest.java new file mode 100644 index 0000000000..a89a145476 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/MSSQLServerExportParameterVisitorTest.java @@ -0,0 +1,29 @@ +package com.alibaba.druid.bvt.sql.sqlserver; + +import java.util.ArrayList; +import java.util.List; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.sqlserver.parser.SQLServerStatementParser; +import com.alibaba.druid.sql.dialect.sqlserver.visitor.MSSQLServerExportParameterVisitor; + +public class MSSQLServerExportParameterVisitorTest extends TestCase { + + public void test_sqlserver() throws Exception { + String sql = "select fname, count(*) from t where fid = 1 group by fname order by 1"; + + SQLServerStatementParser parser = new SQLServerStatementParser(sql); + SQLStatement stmt = parser.parseStatementList().get(0); + + List parameters = new ArrayList(); + MSSQLServerExportParameterVisitor visitor = new MSSQLServerExportParameterVisitor(parameters); + stmt.accept(visitor); + + Assert.assertEquals(1, parameters.size()); + Assert.assertEquals(1, parameters.get(0)); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerInsertTest2.java b/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerInsertTest2.java index 620f413bfe..9106c24c9c 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerInsertTest2.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerInsertTest2.java @@ -15,9 +15,10 @@ */ package com.alibaba.druid.bvt.sql.sqlserver; -import junit.framework.Assert; import junit.framework.TestCase; +import org.junit.Assert; + import com.alibaba.druid.sql.ast.SQLStatement; import com.alibaba.druid.sql.dialect.sqlserver.parser.SQLServerStatementParser; import com.alibaba.druid.sql.test.TestUtils; diff --git a/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerParameterizedOutputVisitorTest.java b/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerParameterizedOutputVisitorTest.java new file mode 100644 index 0000000000..c646ef0e83 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerParameterizedOutputVisitorTest.java @@ -0,0 +1,60 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.sqlserver; + +import java.util.List; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.sqlserver.parser.SQLServerStatementParser; +import com.alibaba.druid.sql.dialect.sqlserver.visitor.SQLServerOutputVisitor; +import com.alibaba.druid.sql.dialect.sqlserver.visitor.SQLServerParameterizedOutputVisitor; + +public class SQLServerParameterizedOutputVisitorTest extends TestCase { + + public void test_simple() throws Exception { + String sql = "select GEN_VAL " + // + "from ID_GENERATOR with (updlock, rowlock) " + // + "where GEN_NAME = 'T_USERS' AND FID = 3 AND FSTATE IN (1, 2, 3)"; // + + String expect = "SELECT GEN_VAL" + // + "\nFROM ID_GENERATOR WITH (updlock, rowlock)" + // + "\nWHERE GEN_NAME = ?" + + "\n\tAND FID = ?" + + "\n\tAND FSTATE IN (?)"; + + SQLServerStatementParser parser = new SQLServerStatementParser(sql); + List stmtList = parser.parseStatementList(); + + String text = outputSqlServer(stmtList); + + Assert.assertEquals(expect, text); + } + + public static String outputSqlServer(List stmtList) { + StringBuilder out = new StringBuilder(); + SQLServerOutputVisitor visitor = new SQLServerParameterizedOutputVisitor(out); + + for (SQLStatement stmt : stmtList) { + stmt.accept(visitor); + } + + return out.toString(); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerSelectTest1.java b/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerSelectTest1.java index 2cb0db0d2c..37ed085ea2 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerSelectTest1.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerSelectTest1.java @@ -15,9 +15,10 @@ */ package com.alibaba.druid.bvt.sql.sqlserver; -import junit.framework.Assert; import junit.framework.TestCase; +import org.junit.Assert; + import com.alibaba.druid.sql.ast.SQLStatement; import com.alibaba.druid.sql.dialect.sqlserver.parser.SQLServerStatementParser; import com.alibaba.druid.sql.test.TestUtils; diff --git a/src/test/java/com/alibaba/druid/bvt/support/ibatis/DruidDataSourceFactoryTest.java b/src/test/java/com/alibaba/druid/bvt/support/ibatis/DruidDataSourceFactoryTest.java new file mode 100644 index 0000000000..a04dcf08a8 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/support/ibatis/DruidDataSourceFactoryTest.java @@ -0,0 +1,20 @@ +package com.alibaba.druid.bvt.support.ibatis; + +import java.util.Properties; + +import junit.framework.TestCase; + +import com.alibaba.druid.pool.DruidDataSource; +import com.alibaba.druid.support.ibatis.DruidDataSourceFactory; + + +public class DruidDataSourceFactoryTest extends TestCase { + public void test_facttory() throws Exception { + DruidDataSourceFactory factory = new DruidDataSourceFactory(); + Properties properties = new Properties(); + properties.setProperty("url", "jdbc:mock:xx"); + factory.initialize(properties); + DruidDataSource dataSource = (DruidDataSource) factory.getDataSource(); + dataSource.close(); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/support/logging/JakartaCommonsLoggingImplTest.java b/src/test/java/com/alibaba/druid/bvt/support/logging/JakartaCommonsLoggingImplTest.java new file mode 100644 index 0000000000..add1133cad --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/support/logging/JakartaCommonsLoggingImplTest.java @@ -0,0 +1,30 @@ +package com.alibaba.druid.bvt.support.logging; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.pool.DruidDataSource; +import com.alibaba.druid.support.logging.JakartaCommonsLoggingImpl; + +public class JakartaCommonsLoggingImplTest extends TestCase { + + public void test_0() throws Exception { + JakartaCommonsLoggingImpl impl = new JakartaCommonsLoggingImpl(DruidDataSource.class.getName()); + + impl.isDebugEnabled(); + impl.isInfoEnabled(); + impl.isWarnEnabled(); + impl.debug(""); + impl.debug("", new Exception()); + impl.info(""); + impl.warn(""); + impl.warn("", new Exception()); + impl.error(""); + impl.error("", new Exception()); + Assert.assertEquals(1, impl.getInfoCount()); + Assert.assertEquals(2, impl.getErrorCount()); + Assert.assertEquals(2, impl.getWarnCount()); + Assert.assertEquals(1, impl.getInfoCount()); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/support/logging/Jdk14LoggingImplTest.java b/src/test/java/com/alibaba/druid/bvt/support/logging/Jdk14LoggingImplTest.java new file mode 100644 index 0000000000..f383b86e99 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/support/logging/Jdk14LoggingImplTest.java @@ -0,0 +1,30 @@ +package com.alibaba.druid.bvt.support.logging; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.pool.DruidDataSource; +import com.alibaba.druid.support.logging.Jdk14LoggingImpl; + +public class Jdk14LoggingImplTest extends TestCase { + + public void test_0() throws Exception { + Jdk14LoggingImpl impl = new Jdk14LoggingImpl(DruidDataSource.class.getName()); + + impl.isDebugEnabled(); + impl.isInfoEnabled(); + impl.isWarnEnabled(); + impl.debug(""); + impl.debug("", new Exception()); + impl.info(""); + impl.warn(""); + impl.warn("", new Exception()); + impl.error(""); + impl.error("", new Exception()); + Assert.assertEquals(1, impl.getInfoCount()); + Assert.assertEquals(2, impl.getErrorCount()); + Assert.assertEquals(2, impl.getWarnCount()); + Assert.assertEquals(1, impl.getInfoCount()); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/support/logging/Log4jImplTest.java b/src/test/java/com/alibaba/druid/bvt/support/logging/Log4jImplTest.java new file mode 100644 index 0000000000..e9ee13c584 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/support/logging/Log4jImplTest.java @@ -0,0 +1,30 @@ +package com.alibaba.druid.bvt.support.logging; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.pool.DruidDataSource; +import com.alibaba.druid.support.logging.Log4jImpl; + +public class Log4jImplTest extends TestCase { + + public void test_0() throws Exception { + Log4jImpl impl = new Log4jImpl(DruidDataSource.class.getName()); + + impl.isDebugEnabled(); + impl.isInfoEnabled(); + impl.isWarnEnabled(); + impl.debug(""); + impl.debug("", new Exception()); + impl.info(""); + impl.warn(""); + impl.warn("", new Exception()); + impl.error(""); + impl.error("", new Exception()); + Assert.assertEquals(1, impl.getInfoCount()); + Assert.assertEquals(2, impl.getErrorCount()); + Assert.assertEquals(2, impl.getWarnCount()); + Assert.assertEquals(1, impl.getInfoCount()); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/support/logging/NoLoggingImplTest.java b/src/test/java/com/alibaba/druid/bvt/support/logging/NoLoggingImplTest.java new file mode 100644 index 0000000000..4e8ed0e957 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/support/logging/NoLoggingImplTest.java @@ -0,0 +1,30 @@ +package com.alibaba.druid.bvt.support.logging; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.pool.DruidDataSource; +import com.alibaba.druid.support.logging.NoLoggingImpl; + +public class NoLoggingImplTest extends TestCase { + + public void test_0() throws Exception { + NoLoggingImpl impl = new NoLoggingImpl(DruidDataSource.class.getName()); + + impl.isDebugEnabled(); + impl.isInfoEnabled(); + impl.isWarnEnabled(); + impl.debug(""); + impl.debug("", new Exception()); + impl.info(""); + impl.warn(""); + impl.warn("", new Exception()); + impl.error(""); + impl.error("", new Exception()); + Assert.assertEquals(1, impl.getInfoCount()); + Assert.assertEquals(2, impl.getErrorCount()); + Assert.assertEquals(2, impl.getWarnCount()); + Assert.assertEquals(1, impl.getInfoCount()); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/support/logging/SLF4JImplTest.java b/src/test/java/com/alibaba/druid/bvt/support/logging/SLF4JImplTest.java index 5e9d684bb2..6a95464cf3 100644 --- a/src/test/java/com/alibaba/druid/bvt/support/logging/SLF4JImplTest.java +++ b/src/test/java/com/alibaba/druid/bvt/support/logging/SLF4JImplTest.java @@ -2,6 +2,8 @@ package com.alibaba.druid.bvt.support.logging; import junit.framework.TestCase; +import org.junit.Assert; + import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.support.logging.SLF4JImpl; @@ -20,5 +22,9 @@ public class SLF4JImplTest extends TestCase { impl.warn("", new Exception()); impl.error(""); impl.error("", new Exception()); + Assert.assertEquals(1, impl.getInfoCount()); + Assert.assertEquals(2, impl.getErrorCount()); + Assert.assertEquals(2, impl.getWarnCount()); + Assert.assertEquals(1, impl.getInfoCount()); } } diff --git a/src/test/java/com/alibaba/druid/bvt/support/spring/DruidLobHandlerTest.java b/src/test/java/com/alibaba/druid/bvt/support/spring/DruidLobHandlerTest.java new file mode 100644 index 0000000000..2556f27f64 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/support/spring/DruidLobHandlerTest.java @@ -0,0 +1,48 @@ +package com.alibaba.druid.bvt.support.spring; + +import java.util.ArrayList; +import java.util.List; + +import junit.framework.TestCase; + +import com.alibaba.druid.mock.MockBlob; +import com.alibaba.druid.mock.MockClob; +import com.alibaba.druid.mock.MockResultSet; +import com.alibaba.druid.support.spring.DruidLobHandler; + +public class DruidLobHandlerTest extends TestCase { + + public void test_0() throws Exception { + DruidLobHandler handler = new DruidLobHandler(); + List rows = new ArrayList(); + rows.add(new Object[] { null, new MockBlob(), new MockClob() }); + MockResultSet rs = new MockResultSet(null, rows); + rs.next(); + + handler.getBlobAsBinaryStream(rs, 1); + handler.getBlobAsBinaryStream(rs, "1"); + handler.getBlobAsBytes(rs, 1); + handler.getBlobAsBytes(rs, "1"); + + handler.getBlobAsBinaryStream(rs, 2); + handler.getBlobAsBinaryStream(rs, "2"); + handler.getBlobAsBytes(rs, 2); + handler.getBlobAsBytes(rs, "2"); + + handler.getClobAsAsciiStream(rs, 1); + handler.getClobAsAsciiStream(rs, "1"); + handler.getClobAsCharacterStream(rs, 1); + handler.getClobAsCharacterStream(rs, "1"); + handler.getClobAsString(rs, 1); + handler.getClobAsString(rs, "1"); + + handler.getClobAsAsciiStream(rs, 3); + handler.getClobAsAsciiStream(rs, "3"); + handler.getClobAsCharacterStream(rs, 3); + handler.getClobAsCharacterStream(rs, "3"); + handler.getClobAsString(rs, 3); + handler.getClobAsString(rs, "3"); + + handler.getLobCreator(); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/utils/ConcurrentIdentityHashMapTest.java b/src/test/java/com/alibaba/druid/bvt/utils/ConcurrentIdentityHashMapTest.java index ce18c60443..9b26d9e364 100644 --- a/src/test/java/com/alibaba/druid/bvt/utils/ConcurrentIdentityHashMapTest.java +++ b/src/test/java/com/alibaba/druid/bvt/utils/ConcurrentIdentityHashMapTest.java @@ -1,8 +1,9 @@ package com.alibaba.druid.bvt.utils; -import junit.framework.Assert; import junit.framework.TestCase; +import org.junit.Assert; + import com.alibaba.druid.util.ConcurrentIdentityHashMap; public class ConcurrentIdentityHashMapTest extends TestCase { diff --git a/src/test/java/com/alibaba/druid/bvt/utils/ConcurrentIdentityHashMapTest2.java b/src/test/java/com/alibaba/druid/bvt/utils/ConcurrentIdentityHashMapTest2.java new file mode 100644 index 0000000000..d841978f5b --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/utils/ConcurrentIdentityHashMapTest2.java @@ -0,0 +1,63 @@ +package com.alibaba.druid.bvt.utils; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.util.ConcurrentIdentityHashMap; + +public class ConcurrentIdentityHashMapTest2 extends TestCase { + + public void test_0() throws Exception { + ConcurrentIdentityHashMap map = new ConcurrentIdentityHashMap(); + map.put(Integer.valueOf(1), ""); + Assert.assertEquals(map.get(Integer.valueOf(1)), ""); + Assert.assertEquals(map.get(new Integer(1)), null); + + Assert.assertTrue(map.containsValue("")); + + { + Exception error = null; + try { + map.containsValue(null); + } catch (NullPointerException ex) { + error = ex; + } + Assert.assertNotNull(error); + } + { + Exception error = null; + try { + map.put(Integer.valueOf(1), null); + } catch (NullPointerException ex) { + error = ex; + } + Assert.assertNotNull(error); + } + { + Exception error = null; + try { + map.putIfAbsent(Integer.valueOf(1), null); + } catch (NullPointerException ex) { + error = ex; + } + Assert.assertNotNull(error); + } + + map.put(Integer.valueOf(1), "123"); + Assert.assertEquals(map.get(Integer.valueOf(1)), "123"); + Assert.assertEquals(map.get(new Integer(1)), null); + + map.putIfAbsent(Integer.valueOf(1), "234"); + Assert.assertEquals(map.get(Integer.valueOf(1)), "123"); + Assert.assertEquals(map.get(new Integer(1)), null); + + map.remove(new Integer(1)); + Assert.assertEquals(map.get(Integer.valueOf(1)), "123"); + Assert.assertFalse(map.isEmpty()); + + map.remove(Integer.valueOf(1)); + Assert.assertEquals(map.get(Integer.valueOf(1)), null); + Assert.assertTrue(map.isEmpty()); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/utils/ConcurrentIdentityHashMapTest3.java b/src/test/java/com/alibaba/druid/bvt/utils/ConcurrentIdentityHashMapTest3.java new file mode 100644 index 0000000000..6ebf723770 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/utils/ConcurrentIdentityHashMapTest3.java @@ -0,0 +1,39 @@ +package com.alibaba.druid.bvt.utils; + +import java.util.Map; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.util.ConcurrentIdentityHashMap; + +public class ConcurrentIdentityHashMapTest3 extends TestCase { + + public void test_0() throws Exception { + ConcurrentIdentityHashMap map = new ConcurrentIdentityHashMap(16, 0.75f, 2); + + Integer[] keys = new Integer[10000]; + for (int i = 0; i < keys.length; ++i) { + keys[i] = i; + } + for (int i = 0; i < keys.length; ++i) { + map.put(keys[i], ""); + } + Assert.assertEquals(keys.length, map.size()); + for (int i = 0; i < keys.length; ++i) { + map.put(keys[i], ""); + } + for (Map.Entry entry : map.entrySet()) { + entry.getKey(); + entry.getValue(); + } + Assert.assertEquals(keys.length, map.size()); + for (int i = 0; i < keys.length; ++i) { + map.remove(keys[i]); + } + Assert.assertEquals(0, map.size()); + map.keys(); + map.entrySet(); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/utils/DaemonThreadFactoryTest.java b/src/test/java/com/alibaba/druid/bvt/utils/DaemonThreadFactoryTest.java new file mode 100644 index 0000000000..4a450e4b96 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/utils/DaemonThreadFactoryTest.java @@ -0,0 +1,21 @@ +package com.alibaba.druid.bvt.utils; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.util.DaemonThreadFactory; + + +public class DaemonThreadFactoryTest extends TestCase { + public void test_0 () throws Exception { + Runnable task = new Runnable() { + public void run() { + + } + }; + DaemonThreadFactory factory = new DaemonThreadFactory("test"); + Assert.assertEquals("[test-1]", factory.newThread(task).getName()); + Assert.assertEquals("[test-2]", factory.newThread(task).getName()); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/utils/LocalResultSetTest.java b/src/test/java/com/alibaba/druid/bvt/utils/LocalResultSetTest.java new file mode 100644 index 0000000000..cdac5d4986 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/utils/LocalResultSetTest.java @@ -0,0 +1,27 @@ +package com.alibaba.druid.bvt.utils; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.util.jdbc.LocalResultSet; + +public class LocalResultSetTest extends TestCase { + + public void test_0() throws Exception { + LocalResultSet rs = new LocalResultSet(null); + rs.getRows().add(new Object[1]); + rs.getRows().add(new Object[1]); + Assert.assertTrue(rs.next()); + Assert.assertTrue(rs.next()); + Assert.assertFalse(rs.next()); + Assert.assertTrue(rs.previous()); + Assert.assertFalse(rs.previous()); + rs.getInt(1); + Assert.assertTrue(rs.wasNull()); + rs.updateObject(1, 2); + Assert.assertEquals(2, rs.getInt(1)); + Assert.assertFalse(rs.wasNull()); + rs.close(); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/utils/MySqlUtilsTest.java b/src/test/java/com/alibaba/druid/bvt/utils/MySqlUtilsTest.java new file mode 100644 index 0000000000..82390e3688 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/utils/MySqlUtilsTest.java @@ -0,0 +1,17 @@ +package com.alibaba.druid.bvt.utils; + +import java.lang.reflect.Constructor; + +import com.alibaba.druid.util.MySqlUtils; +import com.mysql.jdbc.ConnectionImpl; + +import junit.framework.TestCase; + +public class MySqlUtilsTest extends TestCase { + public void test_() throws Exception { + Constructor constructor = ConnectionImpl.class.getDeclaredConstructor(); + constructor.setAccessible(true); + ConnectionImpl conn = constructor.newInstance(); + MySqlUtils.createXAConnection(conn); + } +} diff --git a/src/test/resources/bvt/parser/mysql-9.txt b/src/test/resources/bvt/parser/mysql-9.txt index e0418033ed..cb1682acad 100644 --- a/src/test/resources/bvt/parser/mysql-9.txt +++ b/src/test/resources/bvt/parser/mysql-9.txt @@ -108,6 +108,6 @@ FROM mi_alarm_rule_status d AND b.hostname = c.hostname LEFT JOIN app a ON a.number = b.app_num WHERE 1 = 0 -OR a.id = ? + OR a.id = ? ORDER BY lastChangeTimeOfAlarmRule DESC LIMIT ?, ?