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();

Reply via email to