This is an automated email from the ASF dual-hosted git repository.
mbudiu pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/calcite.git
The following commit(s) were added to refs/heads/main by this push:
new 8c58c0d3ae [CALCITE-7159] LogicalAsofJoin deepEquals can throw for
legal expressions
8c58c0d3ae is described below
commit 8c58c0d3ae43057709ce3bb6778e1a838d1f2f77
Author: Mihai Budiu <[email protected]>
AuthorDate: Thu Sep 4 22:20:57 2025 -0700
[CALCITE-7159] LogicalAsofJoin deepEquals can throw for legal expressions
Signed-off-by: Mihai Budiu <[email protected]>
---
.../apache/calcite/rel/logical/LogicalAsofJoin.java | 5 ++---
.../calcite/rel/logical/ToLogicalConverterTest.java | 19 +++++++++++++++++++
2 files changed, 21 insertions(+), 3 deletions(-)
diff --git
a/core/src/main/java/org/apache/calcite/rel/logical/LogicalAsofJoin.java
b/core/src/main/java/org/apache/calcite/rel/logical/LogicalAsofJoin.java
index 1834adcaac..f6c31282fd 100644
--- a/core/src/main/java/org/apache/calcite/rel/logical/LogicalAsofJoin.java
+++ b/core/src/main/java/org/apache/calcite/rel/logical/LogicalAsofJoin.java
@@ -124,10 +124,9 @@ public LogicalAsofJoin copy(
if (this == obj) {
return true;
}
- LogicalAsofJoin asofObj = requireNonNull((LogicalAsofJoin) obj);
return deepEquals0(obj)
- && matchCondition.equals(asofObj.matchCondition)
- && systemFieldList.equals(asofObj.systemFieldList);
+ && matchCondition.equals(((LogicalAsofJoin) obj).matchCondition)
+ && systemFieldList.equals(((LogicalAsofJoin) obj).systemFieldList);
}
@Override public int deepHashCode() {
diff --git
a/core/src/test/java/org/apache/calcite/rel/logical/ToLogicalConverterTest.java
b/core/src/test/java/org/apache/calcite/rel/logical/ToLogicalConverterTest.java
index accd611a86..062bea6d50 100644
---
a/core/src/test/java/org/apache/calcite/rel/logical/ToLogicalConverterTest.java
+++
b/core/src/test/java/org/apache/calcite/rel/logical/ToLogicalConverterTest.java
@@ -324,6 +324,25 @@ private void verify(RelNode rel, String expectedPhysical,
String expectedLogical
assertThat(rels[0].deepHashCode() == rels[1].deepHashCode(), is(true));
}
+ /** Test case for <a
href="https://issues.apache.org/jira/browse/CALCITE-7159">[CALCITE-7159]
+ * LogicalAsofJoin deepEquals can throw for legal expressions</a>. */
+ @Test void testAsofDeepEquals() {
+ final RelBuilder builder = builder();
+ RelNode[] rels = new RelNode[2];
+ rels[0] = builder.scan("EMP")
+ .scan("DEPT")
+ .asofJoin(JoinRelType.ASOF,
+ builder.equals(
+ builder.field(2, 0, "DEPTNO"),
+ builder.field(2, 1, "DEPTNO")),
+ builder.lessThan(
+ builder.field(2, 1, "DEPTNO"),
+ builder.field(2, 0, "DEPTNO")))
+ .build();
+ rels[1] = builder.scan("EMP").build();
+ assertThat(rels[0].deepEquals(rels[1]), is(false));
+ }
+
@Test void testCorrelation() {
final RelBuilder builder = builder();
final Holder<@Nullable RexCorrelVariable> v = Holder.empty();