mihaibudiu commented on code in PR #5385:
URL: https://github.com/apache/calcite/pull/5385#discussion_r4518535293


##########
core/src/main/java/org/apache/calcite/sql2rel/RelDecorrelator.java:
##########
@@ -464,9 +497,48 @@ public RelNode removeCorrelationViaRule(RelNode root) {
    * {@link org.apache.calcite.rel.core.Correlate}s might be removable in such 
way).
    */
   public RelNode removeCorrelationViaRule(RelNode root, RuleSet ruleSet) {
+    root = prepareCorrelates(root);
     return applyHepProgram(root, ruleSetToHepProgram(ruleSet));
   }
 
+  /** Removes unused RHS computations before matching rules or building frames.
+   * The checked input must also be the input used by the rewrite.
+   */
+  private RelNode prepareCorrelates(RelNode root) {
+    final RelNode prepared = root.accept(new RelHomogeneousShuttle() {
+      @Override public RelNode visit(RelNode other) {
+        final RelNode rel = super.visit(other);
+        if (!(rel instanceof Correlate)) {
+          return rel;
+        }
+        final Correlate correlate = (Correlate) rel;
+        RelNode right = correlate.getRight();
+        if (!isDeterministic(right)) {
+          final RelBuilder trimBuilder = 
relBuilderFactory().create(right.getCluster(), null);
+          final RelNode trimmed = new RelFieldTrimmer(null, 
trimBuilder).trim(right);

Review Comment:
   I am not sure I understand your explanation. If the trimmer converts valid 
queries to valid queries, there is no trimmer bug. Bug you are saying: "a key 
that is unused by the query but needed by the scalar uniqueness check". This 
suggests that there are valid queries that the "scalar uniqueness check" cannot 
correctly analyze.
   
   In principle any analysis should be able to handle any well-formed query; if 
it cannot, it's a bug in that analysis.
   
   These comments are not really related to your PR, which I haven't yet 
re-reviewed.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to