diff --git a/src/main/java/com/alibaba/druid/sql/ast/SQLExprImpl.java b/src/main/java/com/alibaba/druid/sql/ast/SQLExprImpl.java index 629f1cc133..ba6486b33f 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/SQLExprImpl.java +++ b/src/main/java/com/alibaba/druid/sql/ast/SQLExprImpl.java @@ -22,5 +22,8 @@ public abstract class SQLExprImpl extends SQLObjectImpl implements SQLExpr { public SQLExprImpl(){ } + + public abstract boolean equals(Object o); + public abstract int hashCode(); } diff --git a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLAggregateExpr.java b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLAggregateExpr.java index 48e2989949..be02aab5e3 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLAggregateExpr.java +++ b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLAggregateExpr.java @@ -81,4 +81,46 @@ public class SQLAggregateExpr extends SQLExprImpl implements Serializable { visitor.endVisit(this); } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((arguments == null) ? 0 : arguments.hashCode()); + result = prime * result + ((methodName == null) ? 0 : methodName.hashCode()); + result = prime * result + option; + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + SQLAggregateExpr other = (SQLAggregateExpr) obj; + if (arguments == null) { + if (other.arguments != null) { + return false; + } + } else if (!arguments.equals(other.arguments)) { + return false; + } + if (methodName == null) { + if (other.methodName != null) { + return false; + } + } else if (!methodName.equals(other.methodName)) { + return false; + } + if (option != other.option) { + return false; + } + return true; + } } diff --git a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLAllColumnExpr.java b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLAllColumnExpr.java index d488731795..b9b92a7615 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLAllColumnExpr.java +++ b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLAllColumnExpr.java @@ -21,7 +21,7 @@ import com.alibaba.druid.sql.visitor.SQLASTVisitor; public class SQLAllColumnExpr extends SQLExprImpl { private static final long serialVersionUID = 1L; - + public SQLAllColumnExpr(){ } @@ -34,4 +34,12 @@ public class SQLAllColumnExpr extends SQLExprImpl { visitor.visit(this); visitor.endVisit(this); } + + public int hashCode() { + return 0; + } + + public boolean equals(Object o) { + return o instanceof SQLAllColumnExpr; + } } diff --git a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLAllExpr.java b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLAllExpr.java index 6bc97ab12a..b96f23797e 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLAllExpr.java +++ b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLAllExpr.java @@ -53,4 +53,35 @@ public class SQLAllExpr extends SQLExprImpl { visitor.endVisit(this); } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((subQuery == null) ? 0 : subQuery.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; + } + SQLAllExpr other = (SQLAllExpr) obj; + if (subQuery == null) { + if (other.subQuery != null) { + return false; + } + } else if (!subQuery.equals(other.subQuery)) { + return false; + } + return true; + } + } diff --git a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLAnyExpr.java b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLAnyExpr.java index 59b9fd6802..ff4f10224b 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLAnyExpr.java +++ b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLAnyExpr.java @@ -53,4 +53,34 @@ public class SQLAnyExpr extends SQLExprImpl { visitor.endVisit(this); } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((subQuery == null) ? 0 : subQuery.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; + } + SQLAnyExpr other = (SQLAnyExpr) obj; + if (subQuery == null) { + if (other.subQuery != null) { + return false; + } + } else if (!subQuery.equals(other.subQuery)) { + return false; + } + return true; + } } diff --git a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLBetweenExpr.java b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLBetweenExpr.java index daf0ecca9d..b8023b20a6 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLBetweenExpr.java +++ b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLBetweenExpr.java @@ -99,4 +99,54 @@ public class SQLBetweenExpr extends SQLExprImpl implements Serializable { public void setEndExpr(SQLExpr endExpr) { this.endExpr = endExpr; } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((beginExpr == null) ? 0 : beginExpr.hashCode()); + result = prime * result + ((endExpr == null) ? 0 : endExpr.hashCode()); + result = prime * result + (not ? 1231 : 1237); + result = prime * result + ((testExpr == null) ? 0 : testExpr.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; + } + SQLBetweenExpr other = (SQLBetweenExpr) obj; + if (beginExpr == null) { + if (other.beginExpr != null) { + return false; + } + } else if (!beginExpr.equals(other.beginExpr)) { + return false; + } + if (endExpr == null) { + if (other.endExpr != null) { + return false; + } + } else if (!endExpr.equals(other.endExpr)) { + return false; + } + if (not != other.not) { + return false; + } + if (testExpr == null) { + if (other.testExpr != null) { + return false; + } + } else if (!testExpr.equals(other.testExpr)) { + return false; + } + return true; + } } diff --git a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLBitStringLiteralExpr.java b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLBitStringLiteralExpr.java index 5365729d09..c0362e136f 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLBitStringLiteralExpr.java +++ b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLBitStringLiteralExpr.java @@ -60,4 +60,34 @@ public class SQLBitStringLiteralExpr extends SQLLiteralExpr { } 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; + } + SQLBitStringLiteralExpr other = (SQLBitStringLiteralExpr) 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/SQLCaseExpr.java b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLCaseExpr.java index c17e86662a..2969405125 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLCaseExpr.java +++ b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLCaseExpr.java @@ -134,4 +134,52 @@ public class SQLCaseExpr extends SQLExprImpl implements Serializable { visitor.endVisit(this); } } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((elseExpr == null) ? 0 : elseExpr.hashCode()); + result = prime * result + ((items == null) ? 0 : items.hashCode()); + result = prime * result + ((valueExpr == null) ? 0 : valueExpr.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; + } + SQLCaseExpr other = (SQLCaseExpr) obj; + if (elseExpr == null) { + if (other.elseExpr != null) { + return false; + } + } else if (!elseExpr.equals(other.elseExpr)) { + return false; + } + if (items == null) { + if (other.items != null) { + return false; + } + } else if (!items.equals(other.items)) { + return false; + } + if (valueExpr == null) { + if (other.valueExpr != null) { + return false; + } + } else if (!valueExpr.equals(other.valueExpr)) { + return false; + } + return true; + } + + } diff --git a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLCastExpr.java b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLCastExpr.java index 0d1156e932..790799925b 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLCastExpr.java +++ b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLCastExpr.java @@ -62,4 +62,43 @@ public class SQLCastExpr extends SQLExprImpl { } visitor.endVisit(this); } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((dataType == null) ? 0 : dataType.hashCode()); + result = prime * result + ((expr == null) ? 0 : expr.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; + } + SQLCastExpr other = (SQLCastExpr) obj; + if (dataType == null) { + if (other.dataType != null) { + return false; + } + } else if (!dataType.equals(other.dataType)) { + return false; + } + if (expr == null) { + if (other.expr != null) { + return false; + } + } else if (!expr.equals(other.expr)) { + return false; + } + return true; + } + } diff --git a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLCurrentOfCursorExpr.java b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLCurrentOfCursorExpr.java index 44a8730f79..9c9f0e127f 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLCurrentOfCursorExpr.java +++ b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLCurrentOfCursorExpr.java @@ -51,4 +51,34 @@ public class SQLCurrentOfCursorExpr extends SQLExprImpl { visitor.endVisit(this); } + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((cursorName == null) ? 0 : cursorName.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; + } + SQLCurrentOfCursorExpr other = (SQLCurrentOfCursorExpr) obj; + if (cursorName == null) { + if (other.cursorName != null) { + return false; + } + } else if (!cursorName.equals(other.cursorName)) { + return false; + } + return true; + } + } diff --git a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLDateLiteralExpr.java b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLDateLiteralExpr.java index 3e4be414d1..3e2f021c13 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLDateLiteralExpr.java +++ b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLDateLiteralExpr.java @@ -48,4 +48,34 @@ public class SQLDateLiteralExpr extends SQLLiteralExpr { visitor.endVisit(this); } + @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; + } + SQLDateLiteralExpr other = (SQLDateLiteralExpr) 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/SQLExistsExpr.java b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLExistsExpr.java index ae592ec043..6adc58b58f 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLExistsExpr.java +++ b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLExistsExpr.java @@ -74,4 +74,38 @@ public class SQLExistsExpr extends SQLExprImpl implements Serializable { visitor.endVisit(this); } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + (not ? 1231 : 1237); + result = prime * result + ((subQuery == null) ? 0 : subQuery.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; + } + SQLExistsExpr other = (SQLExistsExpr) obj; + if (not != other.not) { + return false; + } + if (subQuery == null) { + if (other.subQuery != null) { + return false; + } + } else if (!subQuery.equals(other.subQuery)) { + return false; + } + return true; + } } diff --git a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLHexExpr.java b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLHexExpr.java index 6c81e382ac..fed979263c 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLHexExpr.java +++ b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLHexExpr.java @@ -46,4 +46,34 @@ public class SQLHexExpr extends SQLLiteralExpr { visitor.visit(this); visitor.endVisit(this); } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((hex == null) ? 0 : hex.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; + } + SQLHexExpr other = (SQLHexExpr) obj; + if (hex == null) { + if (other.hex != null) { + return false; + } + } else if (!hex.equals(other.hex)) { + return false; + } + return true; + } } 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 index 19e3143adc..e8c97b2308 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLHexStringLiteralExpr.java +++ b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLHexStringLiteralExpr.java @@ -47,4 +47,34 @@ public class SQLHexStringLiteralExpr extends SQLLiteralExpr { 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/SQLInListExpr.java b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLInListExpr.java index e6fb9b7b4b..29eef29237 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLInListExpr.java +++ b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLInListExpr.java @@ -96,4 +96,46 @@ public class SQLInListExpr extends SQLExprImpl implements Serializable { visitor.endVisit(this); } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((expr == null) ? 0 : expr.hashCode()); + result = prime * result + (not ? 1231 : 1237); + result = prime * result + ((targetList == null) ? 0 : targetList.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; + } + SQLInListExpr other = (SQLInListExpr) obj; + if (expr == null) { + if (other.expr != null) { + return false; + } + } else if (!expr.equals(other.expr)) { + return false; + } + if (not != other.not) { + return false; + } + if (targetList == null) { + if (other.targetList != null) { + return false; + } + } else if (!targetList.equals(other.targetList)) { + return false; + } + return true; + } } diff --git a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLInSubQueryExpr.java b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLInSubQueryExpr.java index c2b96faf71..175e4ff594 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLInSubQueryExpr.java +++ b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLInSubQueryExpr.java @@ -76,4 +76,46 @@ public class SQLInSubQueryExpr extends SQLExprImpl implements Serializable { visitor.endVisit(this); } + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((expr == null) ? 0 : expr.hashCode()); + result = prime * result + (not ? 1231 : 1237); + result = prime * result + ((subQuery == null) ? 0 : subQuery.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; + } + SQLInSubQueryExpr other = (SQLInSubQueryExpr) obj; + if (expr == null) { + if (other.expr != null) { + return false; + } + } else if (!expr.equals(other.expr)) { + return false; + } + if (not != other.not) { + return false; + } + if (subQuery == null) { + if (other.subQuery != null) { + return false; + } + } else if (!subQuery.equals(other.subQuery)) { + return false; + } + return true; + } + } diff --git a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLIntegerExpr.java b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLIntegerExpr.java index ad143c3d02..2c657b04b2 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLIntegerExpr.java +++ b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLIntegerExpr.java @@ -49,4 +49,34 @@ public class SQLIntegerExpr extends SQLNumericLiteralExpr { visitor.endVisit(this); } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((number == null) ? 0 : number.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; + } + SQLIntegerExpr other = (SQLIntegerExpr) obj; + if (number == null) { + if (other.number != null) { + return false; + } + } else if (!number.equals(other.number)) { + 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 index 058a894969..57c5f2483a 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLIntervalLiteralExpr.java +++ b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLIntervalLiteralExpr.java @@ -56,4 +56,34 @@ public class SQLIntervalLiteralExpr extends SQLLiteralExpr { 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/SQLListExpr.java b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLListExpr.java index 65db3a1610..fa0c20b955 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLListExpr.java +++ b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLListExpr.java @@ -24,4 +24,35 @@ public class SQLListExpr extends SQLExprImpl { } visitor.endVisit(this); } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((items == null) ? 0 : items.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; + } + SQLListExpr other = (SQLListExpr) obj; + if (items == null) { + if (other.items != null) { + return false; + } + } else if (!items.equals(other.items)) { + return false; + } + return true; + } + } diff --git a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLMethodInvokeExpr.java b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLMethodInvokeExpr.java index 21bf99b8ce..2a6e2c2b0e 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLMethodInvokeExpr.java +++ b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLMethodInvokeExpr.java @@ -101,4 +101,50 @@ public class SQLMethodInvokeExpr extends SQLExprImpl implements Serializable { visitor.endVisit(this); } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((methodName == null) ? 0 : methodName.hashCode()); + result = prime * result + ((owner == null) ? 0 : owner.hashCode()); + result = prime * result + ((parameters == null) ? 0 : parameters.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; + } + SQLMethodInvokeExpr other = (SQLMethodInvokeExpr) obj; + if (methodName == null) { + if (other.methodName != null) { + return false; + } + } else if (!methodName.equals(other.methodName)) { + return false; + } + if (owner == null) { + if (other.owner != null) { + return false; + } + } else if (!owner.equals(other.owner)) { + return false; + } + if (parameters == null) { + if (other.parameters != null) { + return false; + } + } else if (!parameters.equals(other.parameters)) { + return false; + } + return true; + } } diff --git a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLNotExpr.java b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLNotExpr.java index 13a7283da5..7f4fda8df2 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLNotExpr.java +++ b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLNotExpr.java @@ -56,4 +56,34 @@ public class SQLNotExpr extends SQLExprImpl implements Serializable { visitor.endVisit(this); } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((expr == null) ? 0 : expr.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; + } + SQLNotExpr other = (SQLNotExpr) obj; + if (expr == null) { + if (other.expr != null) { + return false; + } + } else if (!expr.equals(other.expr)) { + return false; + } + return true; + } } diff --git a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLNullExpr.java b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLNullExpr.java index 21a29a25c1..b7cf24a92b 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLNullExpr.java +++ b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLNullExpr.java @@ -34,4 +34,12 @@ public class SQLNullExpr extends SQLLiteralExpr { visitor.endVisit(this); } + + public int hashCode() { + return 0; + } + + public boolean equals(Object o) { + return o instanceof SQLNullExpr; + } } diff --git a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLNumberExpr.java b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLNumberExpr.java index e319534fbe..32a3efa3b7 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLNumberExpr.java +++ b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLNumberExpr.java @@ -48,4 +48,34 @@ public class SQLNumberExpr extends SQLNumericLiteralExpr { visitor.visit(this); visitor.endVisit(this); } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((number == null) ? 0 : number.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; + } + SQLNumberExpr other = (SQLNumberExpr) obj; + if (number == null) { + if (other.number != null) { + return false; + } + } else if (!number.equals(other.number)) { + 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 index 9669aea53e..64aa4faba4 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLObjectCreateExpr.java +++ b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLObjectCreateExpr.java @@ -51,4 +51,42 @@ public class SQLObjectCreateExpr extends SQLExprImpl implements Serializable { 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/expr/SQLQueryExpr.java b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLQueryExpr.java index 950259fa98..c8cb5ce54e 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLQueryExpr.java +++ b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLQueryExpr.java @@ -55,4 +55,34 @@ public class SQLQueryExpr extends SQLExprImpl implements Serializable { visitor.endVisit(this); } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((subQuery == null) ? 0 : subQuery.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; + } + SQLQueryExpr other = (SQLQueryExpr) obj; + if (subQuery == null) { + if (other.subQuery != null) { + return false; + } + } else if (!subQuery.equals(other.subQuery)) { + return false; + } + return true; + } } diff --git a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLSomeExpr.java b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLSomeExpr.java index f1ce16b486..fd327c3ee0 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLSomeExpr.java +++ b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLSomeExpr.java @@ -53,4 +53,34 @@ public class SQLSomeExpr extends SQLExprImpl { visitor.endVisit(this); } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((subQuery == null) ? 0 : subQuery.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; + } + SQLSomeExpr other = (SQLSomeExpr) obj; + if (subQuery == null) { + if (other.subQuery != null) { + return false; + } + } else if (!subQuery.equals(other.subQuery)) { + return false; + } + return true; + } } diff --git a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLTextLiteralExpr.java b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLTextLiteralExpr.java index 135901db75..d934212db8 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLTextLiteralExpr.java +++ b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLTextLiteralExpr.java @@ -37,4 +37,34 @@ public abstract class SQLTextLiteralExpr extends SQLLiteralExpr { public void setText(String text) { this.text = text; } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((text == null) ? 0 : text.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; + } + SQLTextLiteralExpr other = (SQLTextLiteralExpr) obj; + if (text == null) { + if (other.text != null) { + return false; + } + } else if (!text.equals(other.text)) { + return false; + } + return true; + } } diff --git a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLUnaryExpr.java b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLUnaryExpr.java index 4da3b0da9b..303c5842a9 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLUnaryExpr.java +++ b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLUnaryExpr.java @@ -65,4 +65,38 @@ public class SQLUnaryExpr extends SQLExprImpl implements Serializable { visitor.endVisit(this); } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((expr == null) ? 0 : expr.hashCode()); + result = prime * result + ((operator == null) ? 0 : operator.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; + } + SQLUnaryExpr other = (SQLUnaryExpr) obj; + if (expr == null) { + if (other.expr != null) { + return false; + } + } else if (!expr.equals(other.expr)) { + return false; + } + if (operator != other.operator) { + return false; + } + return true; + } } diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/expr/MySqlBinaryExpr.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/expr/MySqlBinaryExpr.java index fdf3f1188e..c9e9cdaa94 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/expr/MySqlBinaryExpr.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/expr/MySqlBinaryExpr.java @@ -58,4 +58,36 @@ public class MySqlBinaryExpr extends SQLLiteralExpr implements MySqlExpr { 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; + } + MySqlBinaryExpr other = (MySqlBinaryExpr) 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/dialect/mysql/ast/expr/MySqlBooleanExpr.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/expr/MySqlBooleanExpr.java index 3df54b79ea..393d279276 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/expr/MySqlBooleanExpr.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/expr/MySqlBooleanExpr.java @@ -56,4 +56,32 @@ public class MySqlBooleanExpr extends SQLLiteralExpr implements MySqlExpr { buf.append("x"); buf.append(value ? "TRUE" : "FALSE"); } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + (value ? 1231 : 1237); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + MySqlBooleanExpr other = (MySqlBooleanExpr) obj; + if (value != other.value) { + return false; + } + return true; + } + + } diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/expr/MySqlExtractExpr.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/expr/MySqlExtractExpr.java index c83fcc100f..0ae7c67344 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/expr/MySqlExtractExpr.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/expr/MySqlExtractExpr.java @@ -59,4 +59,38 @@ public class MySqlExtractExpr extends SQLExprImpl implements MySqlExpr { mysqlVisitor.endVisit(this); } + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((unit == null) ? 0 : unit.hashCode()); + 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 (!(obj instanceof MySqlExtractExpr)) { + return false; + } + MySqlExtractExpr other = (MySqlExtractExpr) obj; + if (unit != other.unit) { + return false; + } + 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/dialect/mysql/ast/expr/MySqlIntervalExpr.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/expr/MySqlIntervalExpr.java index 4f5cb76b72..4ceeb6acec 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/expr/MySqlIntervalExpr.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/expr/MySqlIntervalExpr.java @@ -61,4 +61,38 @@ public class MySqlIntervalExpr extends SQLExprImpl implements MySqlExpr { mysqlVisitor.endVisit(this); } + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((unit == null) ? 0 : unit.hashCode()); + 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; + } + MySqlIntervalExpr other = (MySqlIntervalExpr) obj; + if (unit != other.unit) { + return false; + } + 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/dialect/mysql/ast/expr/MySqlMatchAgainstExpr.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/expr/MySqlMatchAgainstExpr.java index 34c6ef1b9c..a19cfd0c6d 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/expr/MySqlMatchAgainstExpr.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/expr/MySqlMatchAgainstExpr.java @@ -82,4 +82,47 @@ public class MySqlMatchAgainstExpr extends SQLExprImpl implements MySqlExpr { } mysqlVisitor.endVisit(this); } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((against == null) ? 0 : against.hashCode()); + result = prime * result + ((columns == null) ? 0 : columns.hashCode()); + result = prime * result + ((searchModifier == null) ? 0 : searchModifier.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; + } + MySqlMatchAgainstExpr other = (MySqlMatchAgainstExpr) obj; + if (against == null) { + if (other.against != null) { + return false; + } + } else if (!against.equals(other.against)) { + return false; + } + if (columns == null) { + if (other.columns != null) { + return false; + } + } else if (!columns.equals(other.columns)) { + return false; + } + if (searchModifier != other.searchModifier) { + return false; + } + return true; + } + } diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/clause/GroupingSetExpr.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/clause/GroupingSetExpr.java index 5662f1e157..62c3ee7064 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/clause/GroupingSetExpr.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/clause/GroupingSetExpr.java @@ -29,4 +29,35 @@ public class GroupingSetExpr extends SQLExprImpl { visitor.endVisit(this); } + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((parameters == null) ? 0 : parameters.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (!(obj instanceof GroupingSetExpr)) { + return false; + } + GroupingSetExpr other = (GroupingSetExpr) obj; + if (parameters == null) { + if (other.parameters != null) { + return false; + } + } else if (!parameters.equals(other.parameters)) { + return false; + } + return true; + } + + } diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleBinaryDoubleExpr.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleBinaryDoubleExpr.java index 14fec9b4fb..88e16a7b0a 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleBinaryDoubleExpr.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleBinaryDoubleExpr.java @@ -42,4 +42,34 @@ public class OracleBinaryDoubleExpr extends SQLNumericLiteralExpr implements Ora visitor.endVisit(this); } + @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; + } + OracleBinaryDoubleExpr other = (OracleBinaryDoubleExpr) 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/dialect/oracle/ast/expr/OracleBinaryFloatExpr.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleBinaryFloatExpr.java index 2a8108d4fd..d548e6e3b4 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleBinaryFloatExpr.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleBinaryFloatExpr.java @@ -42,4 +42,34 @@ public class OracleBinaryFloatExpr extends SQLNumericLiteralExpr implements Orac visitor.endVisit(this); } + @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; + } + OracleBinaryFloatExpr other = (OracleBinaryFloatExpr) 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/dialect/oracle/ast/expr/OracleCursorExpr.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleCursorExpr.java index 781406e8df..8cc355ce00 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleCursorExpr.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleCursorExpr.java @@ -39,4 +39,34 @@ public class OracleCursorExpr extends SQLExprImpl implements OracleExpr { } } + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((query == null) ? 0 : query.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; + } + OracleCursorExpr other = (OracleCursorExpr) obj; + if (query == null) { + if (other.query != null) { + return false; + } + } else if (!query.equals(other.query)) { + return false; + } + return true; + } + } diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleDateExpr.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleDateExpr.java index fc54914175..559f63544c 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleDateExpr.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleDateExpr.java @@ -47,4 +47,34 @@ public class OracleDateExpr extends SQLLiteralExpr implements OracleExpr { visitor.endVisit(this); } + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((literal == null) ? 0 : literal.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; + } + OracleDateExpr other = (OracleDateExpr) obj; + if (literal == null) { + if (other.literal != null) { + return false; + } + } else if (!literal.equals(other.literal)) { + return false; + } + return true; + } + } diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleDbLinkExpr.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleDbLinkExpr.java index db0ad1bce6..69d7768318 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleDbLinkExpr.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleDbLinkExpr.java @@ -65,4 +65,42 @@ public class OracleDbLinkExpr extends SQLExprImpl implements SQLName, OracleExpr 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 + ((expr == null) ? 0 : expr.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; + } + OracleDbLinkExpr other = (OracleDbLinkExpr) obj; + if (dbLink == null) { + if (other.dbLink != null) { + return false; + } + } else if (!dbLink.equals(other.dbLink)) { + return false; + } + if (expr == null) { + if (other.expr != null) { + return false; + } + } else if (!expr.equals(other.expr)) { + return false; + } + return true; + } } diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleExtractExpr.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleExtractExpr.java index fec3988bd4..4a31d97565 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleExtractExpr.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleExtractExpr.java @@ -66,4 +66,39 @@ public class OracleExtractExpr extends SQLExprImpl implements OracleExpr { visitor.endVisit(this); } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((from == null) ? 0 : from.hashCode()); + result = prime * result + ((unit == null) ? 0 : unit.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; + } + OracleExtractExpr other = (OracleExtractExpr) obj; + if (from == null) { + if (other.from != null) { + return false; + } + } else if (!from.equals(other.from)) { + return false; + } + if (unit != other.unit) { + return false; + } + return true; + } + } diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleIntervalExpr.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleIntervalExpr.java index 56ec98f7e0..cfbcfb4ce7 100755 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleIntervalExpr.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleIntervalExpr.java @@ -91,4 +91,67 @@ public class OracleIntervalExpr extends SQLLiteralExpr implements OracleExpr { visitor.visit(this); visitor.endVisit(this); } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((factionalSecondsPrecision == null) ? 0 : factionalSecondsPrecision.hashCode()); + result = prime * result + ((precision == null) ? 0 : precision.hashCode()); + result = prime * result + ((toFactionalSecondsPrecision == null) ? 0 : toFactionalSecondsPrecision.hashCode()); + result = prime * result + ((toType == null) ? 0 : toType.hashCode()); + result = prime * result + ((type == null) ? 0 : type.hashCode()); + 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; + } + OracleIntervalExpr other = (OracleIntervalExpr) obj; + if (factionalSecondsPrecision == null) { + if (other.factionalSecondsPrecision != null) { + return false; + } + } else if (!factionalSecondsPrecision.equals(other.factionalSecondsPrecision)) { + return false; + } + if (precision == null) { + if (other.precision != null) { + return false; + } + } else if (!precision.equals(other.precision)) { + return false; + } + if (toFactionalSecondsPrecision == null) { + if (other.toFactionalSecondsPrecision != null) { + return false; + } + } else if (!toFactionalSecondsPrecision.equals(other.toFactionalSecondsPrecision)) { + return false; + } + if (toType != other.toType) { + return false; + } + if (type != other.type) { + return false; + } + 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/dialect/oracle/ast/expr/OracleIsSetExpr.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleIsSetExpr.java index dcefc82efd..fc87083eb8 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleIsSetExpr.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleIsSetExpr.java @@ -38,4 +38,34 @@ public class OracleIsSetExpr extends SQLExprImpl implements OracleExpr { } } + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((nestedTable == null) ? 0 : nestedTable.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; + } + OracleIsSetExpr other = (OracleIsSetExpr) obj; + if (nestedTable == null) { + if (other.nestedTable != null) { + return false; + } + } else if (!nestedTable.equals(other.nestedTable)) { + return false; + } + return true; + } + } diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleOuterExpr.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleOuterExpr.java index c8c8ad33d5..3d69fe5abf 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleOuterExpr.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleOuterExpr.java @@ -59,4 +59,34 @@ public class OracleOuterExpr extends SQLExprImpl implements OracleExpr { visitor.endVisit(this); } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((expr == null) ? 0 : expr.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; + } + OracleOuterExpr other = (OracleOuterExpr) obj; + if (expr == null) { + if (other.expr != null) { + return false; + } + } else if (!expr.equals(other.expr)) { + return false; + } + return true; + } } diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleTimestampExpr.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleTimestampExpr.java index 38935d006a..ea76b13888 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleTimestampExpr.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleTimestampExpr.java @@ -55,4 +55,43 @@ public class OracleTimestampExpr extends SQLLiteralExpr implements OracleExpr { visitor.endVisit(this); } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((literal == null) ? 0 : literal.hashCode()); + result = prime * result + ((timeZone == null) ? 0 : timeZone.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; + } + OracleTimestampExpr other = (OracleTimestampExpr) obj; + if (literal == null) { + if (other.literal != null) { + return false; + } + } else if (!literal.equals(other.literal)) { + return false; + } + if (timeZone == null) { + if (other.timeZone != null) { + return false; + } + } else if (!timeZone.equals(other.timeZone)) { + return false; + } + return true; + } + } 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 index c77e4ecb3a..d522d5bd7b 100644 --- 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 @@ -91,4 +91,74 @@ public class OracleTableExpr extends SQLExprImpl { 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; + } }