[jira] [Updated] (CALCITE-5967) UnsupportedOperationException while implementing a call that requires a special collator
[ https://issues.apache.org/jira/browse/CALCITE-5967?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] ASF GitHub Bot updated CALCITE-5967: Labels: pull-request-available (was: ) > UnsupportedOperationException while implementing a call that requires a > special collator > > > Key: CALCITE-5967 > URL: https://issues.apache.org/jira/browse/CALCITE-5967 > Project: Calcite > Issue Type: Bug > Components: core >Reporter: Ruben Q L >Assignee: Ruben Q L >Priority: Major > Labels: pull-request-available > Fix For: 1.36.0 > > > Regression introduced by a minor change within CALCITE-5914, detected while > testing a downstream project with the latest Calcite main. > CALCITE-5914 (see > [2a96512c|https://github.com/apache/calcite/commit/2a96512c352bda4a5d9c0c80730f5c115ac363d6]) > introduced this apparently innocuous change in > {{RexImpTable#AbstractRexCallImplementor#unboxIfNecessary}}: > {code} > // old > argValueList.stream() > .map(AbstractRexCallImplementor::unboxExpression) > .collect(Collectors.toList()); > => > // new > Util.transform(argValueList, > AbstractRexCallImplementor::unboxExpression); > {code} > Both expressions seem equivalent, however there is a subtle difference: the > old one returns an {{ArrayList}} (where we can add new elements); whereas the > new one returns a {{TransformingList}} that extends {{AbstractList}} and that > does not support {{List#add}}. > After calling {{unboxIfNecessary}}, we might need to modify the argument list > if we need a special collator to perform the operation: > {code} > private ParameterExpression genValueStatement(...) { > ... > optimizedArgValueList = unboxIfNecessary(optimizedArgValueList); > final Expression callValue = > implementSafe(translator, call, optimizedArgValueList); > ... > } > @Override Expression implementSafe(...) { > ... > final Expression fieldComparator = > generateCollatorExpression(relDataType0.getCollation()); > if (fieldComparator != null) { > argValueList.add(fieldComparator); // <--- > UnsupportedOperationException! > } > ... > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Updated] (CALCITE-5967) UnsupportedOperationException while implementing a call that requires a special collator
[ https://issues.apache.org/jira/browse/CALCITE-5967?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ruben Q L updated CALCITE-5967: --- Summary: UnsupportedOperationException while implementing a call that requires a special collator (was: UnsupportedOperationException while implementing a call that requires a special collator ) > UnsupportedOperationException while implementing a call that requires a > special collator > > > Key: CALCITE-5967 > URL: https://issues.apache.org/jira/browse/CALCITE-5967 > Project: Calcite > Issue Type: Bug > Components: core >Reporter: Ruben Q L >Assignee: Ruben Q L >Priority: Major > Fix For: 1.36.0 > > > Regression introduced by a minor change within CALCITE-5914, detected while > testing a downstream project with the latest Calcite main. > CALCITE-5914 (see > [2a96512c|https://github.com/apache/calcite/commit/2a96512c352bda4a5d9c0c80730f5c115ac363d6]) > introduced this apparently innocuous change in > {{RexImpTable#AbstractRexCallImplementor#unboxIfNecessary}}: > {code} > // old > argValueList.stream() > .map(AbstractRexCallImplementor::unboxExpression) > .collect(Collectors.toList()); > => > // new > Util.transform(argValueList, > AbstractRexCallImplementor::unboxExpression); > {code} > Both expressions seem equivalent, however there is a subtle difference: the > old one returns an {{ArrayList}} (where we can add new elements); whereas the > new one returns a {{TransformingList}} that extends {{AbstractList}} and that > does not support {{List#add}}. > After calling {{unboxIfNecessary}}, we might need to modify the argument list > if we need a special collator to perform the operation: > {code} > private ParameterExpression genValueStatement(...) { > ... > optimizedArgValueList = unboxIfNecessary(optimizedArgValueList); > final Expression callValue = > implementSafe(translator, call, optimizedArgValueList); > ... > } > @Override Expression implementSafe(...) { > ... > final Expression fieldComparator = > generateCollatorExpression(relDataType0.getCollation()); > if (fieldComparator != null) { > argValueList.add(fieldComparator); // <--- > UnsupportedOperationException! > } > ... > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Updated] (CALCITE-5967) UnsupportedOperationException while implementing a call that requires a special collator
[ https://issues.apache.org/jira/browse/CALCITE-5967?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ruben Q L updated CALCITE-5967: --- Summary: UnsupportedOperationException while implementing a call that requires a special collator (was: UnsupportedOperationException while implementing call that requires a special collator ) > UnsupportedOperationException while implementing a call that requires a > special collator > - > > Key: CALCITE-5967 > URL: https://issues.apache.org/jira/browse/CALCITE-5967 > Project: Calcite > Issue Type: Bug > Components: core >Reporter: Ruben Q L >Assignee: Ruben Q L >Priority: Major > Fix For: 1.36.0 > > > Regression introduced by a minor change within CALCITE-5914, detected while > testing a downstream project with the latest Calcite main. > CALCITE-5914 (see > [2a96512c|https://github.com/apache/calcite/commit/2a96512c352bda4a5d9c0c80730f5c115ac363d6]) > introduced this apparently innocuous change in > {{RexImpTable#AbstractRexCallImplementor#unboxIfNecessary}}: > {code} > // old > argValueList.stream() > .map(AbstractRexCallImplementor::unboxExpression) > .collect(Collectors.toList()); > => > // new > Util.transform(argValueList, > AbstractRexCallImplementor::unboxExpression); > {code} > Both expressions seem equivalent, however there is a subtle difference: the > old one returns an {{ArrayList}} (where we can add new elements); whereas the > new one returns a {{TransformingList}} that extends {{AbstractList}} and that > does not support {{List#add}}. > After calling {{unboxIfNecessary}}, we might need to modify the argument list > if we need a special collator to perform the operation: > {code} > private ParameterExpression genValueStatement(...) { > ... > optimizedArgValueList = unboxIfNecessary(optimizedArgValueList); > final Expression callValue = > implementSafe(translator, call, optimizedArgValueList); > ... > } > @Override Expression implementSafe(...) { > ... > final Expression fieldComparator = > generateCollatorExpression(relDataType0.getCollation()); > if (fieldComparator != null) { > argValueList.add(fieldComparator); // <--- > UnsupportedOperationException! > } > ... > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)