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

Thomas Rebele closed CALCITE-4530.
----------------------------------
    Resolution: Won't Fix

If the solution is to write custom code to fix the row type of the window, then 
it would be nice to do so without a bridge. I've created CALCITE-4540 for that 
discussion.

> EnumerableWindow.copy(...) should adapt the rowType
> ---------------------------------------------------
>
>                 Key: CALCITE-4530
>                 URL: https://issues.apache.org/jira/browse/CALCITE-4530
>             Project: Calcite
>          Issue Type: Bug
>    Affects Versions: 1.26.0
>            Reporter: Thomas Rebele
>            Priority: Minor
>         Attachments: copy-methods-084d608.zip
>
>
> The method EnumerableWindow.copy(RelTraitSet, List<RelNode>) copies the row 
> type. However, if some input fields have changed their type, then the row 
> type of the new EnumerableWindow instance will be wrong.
> The following snippet provides a workaround:
> {code:java}
> private RelNode fixEnumerableWindowType(EnumerableWindow win, List<RelNode> 
> newInputs)
> {
>       RelDataType winType = win.getRowType();
>       RelDataType newType = newInputs.get(0).getRowType();
>       RelDataTypeFactory.Builder typeBuilder = new 
> RelDataTypeFactory.Builder(win.getCluster().getTypeFactory());
>       typeBuilder.addAll(newType.getFieldList());
>       for (int i = newType.getFieldCount(); i < 
> win.getRowType().getFieldCount(); i++)
>       {
>               typeBuilder.add(winType.getFieldList().get(i));
>       }
>       return RelBridge.createWindow(win.getCluster(), win.getTraitSet(), 
> newInputs.get(0), win.constants,
>               typeBuilder.build(), win.groups);
> }
> {code}
> (The implementation of RelBridge.createWindow is trivial).



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

Reply via email to