You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@calcite.apache.org by "Enze Liu (Jira)" <ji...@apache.org> on 2021/08/13 03:17:00 UTC

[jira] [Created] (CALCITE-4733) `MaterializedViewAggregateRule` should not rewrite top level name alias in project.

Enze Liu created CALCITE-4733:
---------------------------------

             Summary: `MaterializedViewAggregateRule` should not rewrite top level name alias in project.
                 Key: CALCITE-4733
                 URL: https://issues.apache.org/jira/browse/CALCITE-4733
             Project: Calcite
          Issue Type: Bug
          Components: core
    Affects Versions: 1.27.0
            Reporter: Enze Liu


We use `MaterializedViewAggregateRule` to do optimize. 

the original sql is : 
{code:java}
SELECT (intDiv(ts/1000, 60) * 60) * 1000 as t, source_idc, dest_idc, sum(jitter200)/sum(total) as `jitter200_rate` FROM metricsdb.test_table WHERE ts/1000 >= 1627874961 AND source_idc in ('xxx') AND dest_idc IN ('xxx') GROUP BY t,source_idc,dest_idc ORDER BY t
{code}
after optimize, the sql is : 
{code:java}
SELECT `intDiv`(`ts` / 1000, 60) * 60 * 1000 AS `$f14`, `source_idc`, `dest_idc`, SUM(`jitter200`) / SUM(`total`) AS `$f3` FROM `metricsdb`.`s2s_idc2idc_jitter_mv_all` WHERE `ts` / 1000 >= 1627874961 AND `source_idc` IN ('xxx') AND `dest_idc` IN ('xxx') GROUP BY `source_idc`, `dest_idc`, `intDiv`(`ts` / 1000, 60) * 60 * 1000 ORDER BY `intDiv`(`ts` / 1000, 60) * 60 * 1000
{code}
we expected it to be : 
{code:java}
`intDiv`(`ts` / 1000, 60) * 60 * 1000 AS `t`{code}
, not
{code:java}
`intDiv`(`ts` / 1000, 60) * 60 * 1000 AS `$f14`{code}
 

After examine the code , we found in  `rewriteView` of `MaterializedViewAggregateRule`
{code:java}
    return relBuilder
        .project(rewrittenExprs)
        .convert(topRowType, false) // this means do not compare the names.
        .build();
{code}
when change it to true, everything goes as expected.

 

I think the rewrite rule should maintain then same type and name , not just type.  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)