You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Julian Hyde (JIRA)" <ji...@apache.org> on 2015/07/22 00:03:07 UTC

[jira] [Resolved] (CALCITE-808) Optimize ProjectMergeRule

     [ https://issues.apache.org/jira/browse/CALCITE-808?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Julian Hyde resolved CALCITE-808.
---------------------------------
       Resolution: Fixed
    Fix Version/s: 1.4.0-incubating

Fixed in http://git-wip-us.apache.org/repos/asf/incubator-calcite/commit/b550ff88.

> Optimize ProjectMergeRule
> -------------------------
>
>                 Key: CALCITE-808
>                 URL: https://issues.apache.org/jira/browse/CALCITE-808
>             Project: Calcite
>          Issue Type: Bug
>            Reporter: Julian Hyde
>            Assignee: Julian Hyde
>             Fix For: 1.4.0-incubating
>
>
> Optimize ProjectMergeRule to use RelOptUtil.pushPastProject rather than creating two RexPrograms and merging them. The current approach generates a lot of gc pressure.
> One side effect will be to remove some identity projects. ProjectMergeRule currently refuses to reduce identity projects if the fields have different names.
> For instance suppose you have a table Dept (deptno, name) and the algebra
> {noformat}
>   2: Project($1 as X, $0 as Y)
>     1: Project($1, $0)
>       0: Scan(Dept)
> {noformat}
> Observe that if you combine projects #1 and #2 you end up with
> {noformat}
>   3: Project($0 as X, $1 as Y)
>     0: Scan(Dept)
> {noformat}
> Although the new project (#3) is an identity, it renames the fields. ProjectMergeRule will return the new project (#3), but it could return Scan(Dept) (#0). I think the latter is better, so that will be the new behavior.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)