rubenada commented on code in PR #6523:
URL: https://github.com/apache/hive/pull/6523#discussion_r3612808424


##########
ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/views/HiveMaterializedViewRule.java:
##########
@@ -145,31 +153,142 @@ public HiveMaterializedViewOnlyAggregateRule(
       super(relBuilderFactory, generateUnionRewriting, 
unionRewritingPullProgram);
     }
 
+    // Overridden to avoid CALCITE-7641; TODO remove this once fixed.
+    @Override protected @Nullable RelNode rewriteQuery(
+        RelBuilder relBuilder,
+        RexBuilder rexBuilder,
+        RexSimplify simplify,
+        RelMetadataQuery mq,
+        RexNode compensationColumnsEquiPred,
+        RexNode otherCompensationPred,
+        @Nullable Project topProject,
+        RelNode node,
+        BiMap<RexTableInputRef.RelTableRef, RexTableInputRef.RelTableRef> 
queryToViewTableMapping,
+        EquivalenceClasses viewEC, EquivalenceClasses queryEC) {
+      if (Bug.CALCITE_7641_FIXED) {
+        throw new AssertionError("Overriding should be removed");
+      }
+      RelNode unwrappedNode = HiveCalciteUtil.stripHepVertices(node);
+      return super.rewriteQuery(relBuilder, rexBuilder, simplify, mq, 
compensationColumnsEquiPred,
+          otherCompensationPred, topProject, unwrappedNode, 
queryToViewTableMapping, viewEC, queryEC);
+    }
+
     @Override
     protected SqlFunction getFloorSqlFunction(TimeUnitRange flag) {
       return HiveRelBuilder.getFloorSqlFunction(flag);
     }
   }
 
-  /**
-   * This rule is used within the PROGRAM that rewrites the query for
-   * partial rewritings. Its goal is to extract the RelNode from the
-   * HepRelVertex node so the rest of the rules in the PROGRAM can be
-   * applied correctly.
-   */
-  private static class HiveHepExtractRelNodeRule extends RelOptRule {
+  protected static class HiveMaterializedViewProjectFilterRule extends 
MaterializedViewProjectFilterRule {
+    public HiveMaterializedViewProjectFilterRule(RelBuilderFactory 
relBuilderFactory,
+        boolean generateUnionRewriting, HepProgram unionRewritingPullProgram,
+        boolean fastBailOut) {
+      super(relBuilderFactory, generateUnionRewriting, 
unionRewritingPullProgram, fastBailOut);
+    }
+
+    // Overridden to avoid CALCITE-7641; TODO remove this once fixed.
+    @Override protected @Nullable RelNode rewriteQuery(
+        RelBuilder relBuilder,
+        RexBuilder rexBuilder,
+        RexSimplify simplify,
+        RelMetadataQuery mq,
+        RexNode compensationColumnsEquiPred,
+        RexNode otherCompensationPred,
+        @Nullable Project topProject,
+        RelNode node,
+        BiMap<RexTableInputRef.RelTableRef, RexTableInputRef.RelTableRef> 
viewToQueryTableMapping,
+        EquivalenceClasses viewEC, EquivalenceClasses queryEC) {
+      if (Bug.CALCITE_7641_FIXED) {
+        throw new AssertionError("Overriding should be removed");
+      }
+      RelNode unwrappedNode = HiveCalciteUtil.stripHepVertices(node);
+      return super.rewriteQuery(relBuilder, rexBuilder, simplify, mq, 
compensationColumnsEquiPred,
+          otherCompensationPred, topProject, unwrappedNode, 
viewToQueryTableMapping, viewEC, queryEC);
+    }
+  }
+
+  protected static class HiveMaterializedViewOnlyFilterRule extends 
MaterializedViewOnlyFilterRule {
+    public HiveMaterializedViewOnlyFilterRule(RelBuilderFactory 
relBuilderFactory,
+        boolean generateUnionRewriting, HepProgram unionRewritingPullProgram,
+        boolean fastBailOut) {
+      super(relBuilderFactory, generateUnionRewriting, 
unionRewritingPullProgram, fastBailOut);
+    }
 
-    private static final HiveHepExtractRelNodeRule INSTANCE =
-        new HiveHepExtractRelNodeRule();
+    // Overridden to avoid CALCITE-7641; TODO remove this once fixed.
+    @Override protected @Nullable RelNode rewriteQuery(
+        RelBuilder relBuilder,
+        RexBuilder rexBuilder,
+        RexSimplify simplify,
+        RelMetadataQuery mq,
+        RexNode compensationColumnsEquiPred,
+        RexNode otherCompensationPred,
+        @Nullable Project topProject,
+        RelNode node,
+        BiMap<RexTableInputRef.RelTableRef, RexTableInputRef.RelTableRef> 
viewToQueryTableMapping,
+        EquivalenceClasses viewEC, EquivalenceClasses queryEC) {
+      if (Bug.CALCITE_7641_FIXED) {
+        throw new AssertionError("Overriding should be removed");
+      }
+      RelNode unwrappedNode = HiveCalciteUtil.stripHepVertices(node);
+      return super.rewriteQuery(relBuilder, rexBuilder, simplify, mq, 
compensationColumnsEquiPred,
+          otherCompensationPred, topProject, unwrappedNode, 
viewToQueryTableMapping, viewEC, queryEC);
+    }
+  }
 
-    private HiveHepExtractRelNodeRule() {
-      super(operand(HepRelVertex.class, any()));
+  protected static class HiveMaterializedViewProjectJoinRule extends 
MaterializedViewProjectJoinRule {
+    public HiveMaterializedViewProjectJoinRule(RelBuilderFactory 
relBuilderFactory,
+        boolean generateUnionRewriting, HepProgram unionRewritingPullProgram,
+        boolean fastBailOut) {
+      super(relBuilderFactory, generateUnionRewriting, 
unionRewritingPullProgram, fastBailOut);
     }
 
-    @Override
-    public void onMatch(RelOptRuleCall call) {
-      final HepRelVertex rel = call.rel(0);
-      call.transformTo(rel.getCurrentRel());
+    // Overridden to avoid CALCITE-7641; TODO remove this once fixed.
+    @Override protected @Nullable RelNode rewriteQuery(
+        RelBuilder relBuilder,
+        RexBuilder rexBuilder,
+        RexSimplify simplify,
+        RelMetadataQuery mq,
+        RexNode compensationColumnsEquiPred,
+        RexNode otherCompensationPred,
+        @Nullable Project topProject,
+        RelNode node,
+        BiMap<RexTableInputRef.RelTableRef, RexTableInputRef.RelTableRef> 
viewToQueryTableMapping,
+        EquivalenceClasses viewEC, EquivalenceClasses queryEC) {
+      if (Bug.CALCITE_7641_FIXED) {
+        throw new AssertionError("Overriding should be removed");
+      }
+      RelNode unwrappedNode = HiveCalciteUtil.stripHepVertices(node);
+      return super.rewriteQuery(relBuilder, rexBuilder, simplify, mq, 
compensationColumnsEquiPred,
+          otherCompensationPred, topProject, unwrappedNode, 
viewToQueryTableMapping, viewEC, queryEC);
+    }
+  }
+
+  protected static class HiveMaterializedViewOnlyJoinRule extends 
MaterializedViewOnlyJoinRule {
+    public HiveMaterializedViewOnlyJoinRule(RelBuilderFactory 
relBuilderFactory,
+        boolean generateUnionRewriting, HepProgram unionRewritingPullProgram,
+        boolean fastBailOut) {
+      super(relBuilderFactory, generateUnionRewriting, 
unionRewritingPullProgram, fastBailOut);
+    }
+
+    // Overridden to avoid CALCITE-7641; TODO remove this once fixed.

Review Comment:
   TODOs removed.



-- 
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]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to