You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by vl...@apache.org on 2018/08/28 12:06:57 UTC
[2/2] calcite git commit: [CALCITE-2494] RexFieldAccess should
implement equals/hashCode
[CALCITE-2494] RexFieldAccess should implement equals/hashCode
Project: http://git-wip-us.apache.org/repos/asf/calcite/repo
Commit: http://git-wip-us.apache.org/repos/asf/calcite/commit/6b2b9ffd
Tree: http://git-wip-us.apache.org/repos/asf/calcite/tree/6b2b9ffd
Diff: http://git-wip-us.apache.org/repos/asf/calcite/diff/6b2b9ffd
Branch: refs/heads/master
Commit: 6b2b9ffd7e620696e7e7cf34e38641d1817f0fd9
Parents: 9f7e565
Author: Vladimir Sitnikov <si...@gmail.com>
Authored: Tue Aug 28 12:29:18 2018 +0300
Committer: Vladimir Sitnikov <si...@gmail.com>
Committed: Tue Aug 28 15:06:33 2018 +0300
----------------------------------------------------------------------
.../org/apache/calcite/rex/RexFieldAccess.java | 19 +++++++++++++++++++
.../org/apache/calcite/test/RexProgramTest.java | 13 +++++++++++++
2 files changed, 32 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/calcite/blob/6b2b9ffd/core/src/main/java/org/apache/calcite/rex/RexFieldAccess.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rex/RexFieldAccess.java b/core/src/main/java/org/apache/calcite/rex/RexFieldAccess.java
index cf731d2..6de5548 100644
--- a/core/src/main/java/org/apache/calcite/rex/RexFieldAccess.java
+++ b/core/src/main/java/org/apache/calcite/rex/RexFieldAccess.java
@@ -91,6 +91,25 @@ public class RexFieldAccess extends RexNode {
public RexNode getReferenceExpr() {
return expr;
}
+
+ @Override public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+
+ RexFieldAccess that = (RexFieldAccess) o;
+
+ return field.equals(that.field) && expr.equals(that.expr);
+ }
+
+ @Override public int hashCode() {
+ int result = expr.hashCode();
+ result = 31 * result + field.hashCode();
+ return result;
+ }
}
// End RexFieldAccess.java
http://git-wip-us.apache.org/repos/asf/calcite/blob/6b2b9ffd/core/src/test/java/org/apache/calcite/test/RexProgramTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/calcite/test/RexProgramTest.java b/core/src/test/java/org/apache/calcite/test/RexProgramTest.java
index 990afb6..25c99e5 100644
--- a/core/src/test/java/org/apache/calcite/test/RexProgramTest.java
+++ b/core/src/test/java/org/apache/calcite/test/RexProgramTest.java
@@ -70,6 +70,8 @@ import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.nullValue;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertThat;
/**
@@ -1559,6 +1561,17 @@ public class RexProgramTest extends RexProgramBuilderBase {
"false");
}
+ @Test public void fieldAccessEqualsHashCode() {
+ assertEquals("vBool() instances should be equal", vBool(), vBool());
+ assertEquals("vBool().hashCode()", vBool().hashCode(), vBool().hashCode());
+ assertNotSame("vBool() is expected to produce new RexFieldAccess", vBool(), vBool());
+ assertNotEquals("vBool(0) != vBool(1)", vBool(0), vBool(1));
+ }
+
+ @Test public void testSimplifyDynamicParam() {
+ checkSimplify2(or(vBool(), vBool()), "?0.bool0", "?0.bool0");
+ }
+
/** Unit test for
* <a href="https://issues.apache.org/jira/browse/CALCITE-1289">[CALCITE-1289]
* RexUtil.simplifyCase() should account for nullability</a>. */