[
https://issues.apache.org/jira/browse/CALCITE-2179?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jesus Camacho Rodriguez resolved CALCITE-2179.
----------------------------------------------
Resolution: Fixed
Fixed in http://git-wip-us.apache.org/repos/asf/calcite/commit/aa25dcb . I will
tackle any possible additional work in follow-up issues.
> General improvements for materialized view rewriting rule
> ---------------------------------------------------------
>
> Key: CALCITE-2179
> URL: https://issues.apache.org/jira/browse/CALCITE-2179
> Project: Calcite
> Issue Type: Improvement
> Components: core
> Reporter: Jesus Camacho Rodriguez
> Assignee: Jesus Camacho Rodriguez
> Priority: Major
> Fix For: 1.16.0
>
>
> This issue is for extending {{AbstractMaterializedViewRule}} rule:
> - Support for rolling up date nodes. For instance, rewrite in the following
> case:
> {code}
> 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);
> {code}
> - 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:
> {code}
> View: (A JOIN B) JOIN C
> Query: (((A JOIN B) JOIN D) JOIN C) JOIN E
> {code}
> We produce it at:
> {code}
> ((A JOIN B) JOIN D) JOIN C
> {code}
> But not at:
> {code}
> (((A JOIN B) JOIN D) JOIN C) JOIN E
> {code}
> 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.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)