You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "xzh_dz (Jira)" <ji...@apache.org> on 2020/11/14 01:42:00 UTC

[jira] [Updated] (CALCITE-4251) Get the origin column, even if it is derived

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

xzh_dz updated CALCITE-4251:
----------------------------
    Summary: Get the origin column, even if it is derived  (was: Overload RelMetadataQuery#getColumnOrigin method)

> Get the origin column, even if it is derived
> --------------------------------------------
>
>                 Key: CALCITE-4251
>                 URL: https://issues.apache.org/jira/browse/CALCITE-4251
>             Project: Calcite
>          Issue Type: Wish
>            Reporter: xzh_dz
>            Priority: Major
>              Labels: pull-request-available
>          Time Spent: 2h 10m
>  Remaining Estimate: 0h
>
> A case:
> {code:java}
> final String sql1 = ""
>     + "select empno, sum(sal) as all_sal\n"
>     + "from emp\n"
>     + "group by empno";
> {code}
> When i try to get the `all_sal` origin column field,it will return null and it is derived. we always get the origin column although it is derived. We should overload this method and determine whether the column is derived by setting parameters.
>  org.apache.calcite.rel.metadata.RelMetadataQuery#getColumnOrigin
> {code:java}
> // code placeholder
> public RelColumnOrigin getColumnOrigin(RelNode rel, int column) {
>   final Set<RelColumnOrigin> origins = getColumnOrigins(rel, column);
>   if (origins == null || origins.size() != 1) {
>     return null;
>   }
>   final RelColumnOrigin origin = Iterables.getOnlyElement(origins);
>   return origin.isDerived() ? null : origin;
> }
> {code}
>  
>  
>  
>  



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