Thomas Rebele created CALCITE-4530: -------------------------------------- Summary: 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
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} -- This message was sent by Atlassian Jira (v8.3.4#803005)