[
https://issues.apache.org/jira/browse/CALCITE-7367?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
ASF GitHub Bot updated CALCITE-7367:
------------------------------------
Labels: pull-request-available (was: )
> NULLS FIRST throws ClassCastException when sorting arrays
> ---------------------------------------------------------
>
> Key: CALCITE-7367
> URL: https://issues.apache.org/jira/browse/CALCITE-7367
> Project: Calcite
> Issue Type: Bug
> Components: core
> Affects Versions: 1.41.0
> Reporter: Zhen Chen
> Assignee: Zhen Chen
> Priority: Major
> Labels: pull-request-available
> Fix For: 1.42.0
>
>
> The following SQL statement should produce the following result, but it will
> throw an error when executed. NULLS LAST works normally, but NULLS FIRST will
> throw an error.
> {code:java}
> select * from
> (values
> (2, array[null, 3]),
> (3, array[3, 4]),
> (1, array[1, 2]),
> (4, array[4, 5]),
> (5, cast(null as integer array))) as t(id, arr)
> order by arr nulls first;
> +----+-----------+
> | ID | ARR |
> +----+-----------+
> | 5 | |
> | 1 | [1, 2] |
> | 3 | [3, 4] |
> | 4 | [4, 5] |
> | 2 | [null, 3] |
> +----+-----------+
> (5 rows)
> !ok {code}
> Error message:
> > Caused by: java.lang.ClassCastException: class java.util.ArrayList cannot
> > be cast to class java.lang.Comparable (java.util.ArrayList and
> > java.lang.Comparable are in module java.base of loader 'bootstrap')
> > at
> > org.apache.calcite.linq4j.function.Functions$NullsFirstComparator.compare(Functions.java:539)
> > at java.base/java.util.TreeMap.compare(TreeMap.java:1570)
> > at java.base/java.util.TreeMap.addEntryToEmptyMap(TreeMap.java:776)
> > at java.base/java.util.TreeMap.put(TreeMap.java:785)
> > at java.base/java.util.TreeMap.put(TreeMap.java:534)
> > at
> > org.apache.calcite.linq4j.EnumerableDefaults.toLookup_(EnumerableDefaults.java:3818)
> > at
> > org.apache.calcite.linq4j.EnumerableDefaults$15.enumerator(EnumerableDefaults.java:2857)
> > at
> > org.apache.calcite.linq4j.AbstractEnumerable.iterator(AbstractEnumerable.java:33)
> > at org.apache.calcite.avatica.MetaImpl.createCursor(MetaImpl.java:91)
> > at
> > org.apache.calcite.avatica.AvaticaResultSet.execute(AvaticaResultSet.java:186)
> > at
> > org.apache.calcite.jdbc.CalciteResultSet.execute(CalciteResultSet.java:64)
> > at
> > org.apache.calcite.jdbc.CalciteResultSet.execute(CalciteResultSet.java:43)
> > at
> > org.apache.calcite.avatica.AvaticaConnection$1.execute(AvaticaConnection.java:669)
> > at
> > org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(CalciteMetaImpl.java:669)
> > at
> > org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:677)
> > at
> > org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:157)
--
This message was sent by Atlassian Jira
(v8.20.10#820010)