From b0c791e00760488d76b0634c84dc3b5a239ef4ec Mon Sep 17 00:00:00 2001 From: wenshao Date: Wed, 23 Nov 2016 23:45:41 +0800 Subject: [PATCH] bug fixed for sql parser. issue #1507 --- .../odps/ast/OdpsSelectQueryBlock.java | 7 +++--- .../druid/bvt/sql/EqualTest_select.java | 24 +++++++++++++++++++ 2 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/EqualTest_select.java diff --git a/src/main/java/com/alibaba/druid/sql/dialect/odps/ast/OdpsSelectQueryBlock.java b/src/main/java/com/alibaba/druid/sql/dialect/odps/ast/OdpsSelectQueryBlock.java index de48c11635..d7bb59b204 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/odps/ast/OdpsSelectQueryBlock.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/odps/ast/OdpsSelectQueryBlock.java @@ -79,9 +79,10 @@ public class OdpsSelectQueryBlock extends SQLSelectQueryBlock { @Override public boolean equals(Object obj) { - if (this == obj) return true; - if (obj == null) return false; - if (getClass() != obj.getClass()) return false; + if (!super.equals(obj)) { + return false; + } + OdpsSelectQueryBlock other = (OdpsSelectQueryBlock) obj; if (limit == null) { if (other.limit != null) return false; diff --git a/src/test/java/com/alibaba/druid/bvt/sql/EqualTest_select.java b/src/test/java/com/alibaba/druid/bvt/sql/EqualTest_select.java new file mode 100644 index 0000000000..2adb9cb717 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/EqualTest_select.java @@ -0,0 +1,24 @@ +package com.alibaba.druid.bvt.sql; + +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.expr.SQLAnyExpr; +import com.alibaba.druid.sql.ast.statement.SQLSelect; +import com.alibaba.druid.sql.ast.statement.SQLSelectStatement; +import com.alibaba.druid.sql.dialect.oracle.parser.OracleExprParser; +import com.alibaba.druid.util.JdbcConstants; +import junit.framework.TestCase; +import org.junit.Assert; + +import java.util.List; + +public class EqualTest_select extends TestCase { + + public void test_eq_select() throws Exception { + List stmtsA = SQLUtils.parseStatements("select * from a", JdbcConstants.ODPS); + List stmtsB = SQLUtils.parseStatements("select * from b", JdbcConstants.ODPS); + SQLSelect selectA = ((SQLSelectStatement) stmtsA.get(0)).getSelect(); + SQLSelect selectB = ((SQLSelectStatement) stmtsB.get(0)).getSelect(); + boolean eq = selectA.equals(selectB); + assertFalse(eq); + } +}