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

General improvements for materialized view rewriting rule

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 1.16.0
    • Component/s: core
    • Labels:
      None

      Description

      This issue is for extending AbstractMaterializedViewRule rule:

      • Support for rolling up date nodes. For instance, rewrite in the following case:
        Materialization:
        select "empid", floor(cast('1997-01-20' as timestamp) to month), count(*) + 1 as c, sum("empid") as s
        from "emps" group by "empid", floor(cast('1997-01-20' as timestamp) to month);
        Query:
        select floor(cast('1997-01-20' as timestamp) to year), sum("empid") as s
        from "emps" group by floor(cast('1997-01-20' as timestamp) to year);
        
      • Add flag to enable/disable fast bail out for joins. By default it is true, and thus, we were only creating the rewriting in the minimal subtree of plan operators. For instance:
        View: (A JOIN B) JOIN C
        Query: (((A JOIN B) JOIN D) JOIN C) JOIN E
        

        We produce it at:

        ((A JOIN B) JOIN D) JOIN C
        

        But not at:

        (((A JOIN B) JOIN D) JOIN C) JOIN E
        

        This is important when the rule is used with the Volcano planner together with other rules, e.g. join reordering, as it prevents that the search space grows unnecessarily. However, if we use the rewriting rule in isolation, fast bail out can lead to missing rewriting opportunities (e.g. for bushy join trees).

      • Possibility to provide a HepProgram to optimize query branch in union rewritings. Note that when we produce a partial rewriting with a Union, the branch that will execute the (partial) query can be fully rewritten so we can add the compensation predicate. (We cannot do the same for views because the expression might not be computable if the needed subexpressions are not available in the view output). If we use Volcano with a determined set of rules, this might not be needed, hence providing this program is optional.
      • Multiple small fixes discovered while testing.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                jcamachorodriguez Jesus Camacho Rodriguez
                Reporter:
                jcamachorodriguez Jesus Camacho Rodriguez
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: