Uploaded image for project: 'Calcite'
  1. Calcite
  2. CALCITE-2912

MaterializedViewAggregateRule.pushFilterToOriginalViewPlan fails to use valid materialization given query with certain kinds of constant filters

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • None
    • None
    • None
    • None

    Description

      This seems to stem from 

      https://github.com/apache/calcite/blob/d6fb6abd9a17b81a5d8d592860ecd5c2f20ce9b1/core/src/main/java/org/apache/calcite/rel/rules/AbstractMaterializedViewRule.java#L1735

      .addRuleInstance(this.aggregateProjectPullUpConstantsRule)

      If commented out, the bug does not occur. Also, when that line is commented out, all tests in `MaterializationTest.java` pass. The following test demonstrates the issue (fails on master, passes with line commented out):

      @Test public void testAggregateMaterializationWithConstantFilter() {
        checkMaterialize(
                "select \"deptno\", \"name\", count(*) as c\n"
                        + "from \"depts\" group by \"name\", \"deptno\"",
                "select \"name\", count(*) as c\n"
                        + "from \"depts\" where \"name\" = 'a_name' group by \"name\"");
      }

      From my understanding, the materialization fails to be used because `aggregateProjectPullUpConstantsRule` rewrites the Aggregate in `topNode` at https://github.com/apache/calcite/blob/d6fb6abd9a17b81a5d8d592860ecd5c2f20ce9b1/core/src/main/java/org/apache/calcite/rel/rules/AbstractMaterializedViewRule.java#L1743 to not include the known constant "name" in its group set, rather groups on just deptno and then projects `'a_name'` as a constant. This make that aggregate no longer a superset of the query aggregate and `rewriteView` then fails to properly match the aggregates.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              swtalbot Steven Talbot
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated: