This is an automated email from the ASF dual-hosted git repository.

rubenql 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 4a01c99e9d [CALCITE-5177] Query loses hint after decorrelation (minor 
follow-up)
4a01c99e9d is described below

commit 4a01c99e9d1fdf8742e909159a2a0292d8519e7e
Author: rubenada <rube...@gmail.com>
AuthorDate: Mon Jun 13 09:57:55 2022 +0100

    [CALCITE-5177] Query loses hint after decorrelation (minor follow-up)
---
 core/src/main/java/org/apache/calcite/plan/RelOptUtil.java         | 4 ++++
 core/src/main/java/org/apache/calcite/sql2rel/RelFieldTrimmer.java | 2 +-
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/core/src/main/java/org/apache/calcite/plan/RelOptUtil.java 
b/core/src/main/java/org/apache/calcite/plan/RelOptUtil.java
index c7b5c7cbcc..0b5f1ddd12 100644
--- a/core/src/main/java/org/apache/calcite/plan/RelOptUtil.java
+++ b/core/src/main/java/org/apache/calcite/plan/RelOptUtil.java
@@ -475,6 +475,10 @@ public abstract class RelOptUtil {
    * or {@code newRel} directly if one of them are not {@link Hintable}
    */
   public static RelNode copyRelHints(RelNode originalRel, RelNode newRel, 
boolean filterHints) {
+    if (originalRel == newRel && !filterHints) {
+      return originalRel;
+    }
+
     if (originalRel instanceof Hintable
         && newRel instanceof Hintable
         && ((Hintable) originalRel).getHints().size() > 0) {
diff --git a/core/src/main/java/org/apache/calcite/sql2rel/RelFieldTrimmer.java 
b/core/src/main/java/org/apache/calcite/sql2rel/RelFieldTrimmer.java
index 3790026bf7..1862725f84 100644
--- a/core/src/main/java/org/apache/calcite/sql2rel/RelFieldTrimmer.java
+++ b/core/src/main/java/org/apache/calcite/sql2rel/RelFieldTrimmer.java
@@ -297,7 +297,7 @@ public class RelFieldTrimmer implements ReflectiveVisitor {
       assert newFieldCount > 0 : "rel has no fields after trim: " + rel;
     }
     if (newRel.equals(rel)) {
-      return result(rel, mapping, rel);
+      return result(rel, mapping);
     }
     return trimResult;
   }

Reply via email to