You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@calcite.apache.org by "Ruben Q L (Jira)" <ji...@apache.org> on 2023/11/03 08:44:00 UTC

[jira] [Created] (CALCITE-6089) EnumerableSortedAggregate fails with ClassCastException: class X cannot be cast to class org.apache.calcite.runtime.FlatLists$ComparableList

Ruben Q L created CALCITE-6089:
----------------------------------

             Summary: EnumerableSortedAggregate fails with ClassCastException: class X cannot be cast to class org.apache.calcite.runtime.FlatLists$ComparableList
                 Key: CALCITE-6089
                 URL: https://issues.apache.org/jira/browse/CALCITE-6089
             Project: Calcite
          Issue Type: Bug
          Components: core
    Affects Versions: 1.35.0
            Reporter: Ruben Q L


The problem can be reproduced with this test (to be added e.g. into {{EnumerableSortedAggregateTest.java}}):

{code}
  @Test void sortedAggCountUnion() {
    tester(false, new HrSchema())
        .query(
            "select count(*) as c from ( "
                + "select * from emps where deptno=10 "
                + "union all "
                + "select * from emps where deptno=20)")
        .withHook(Hook.PLANNER, (Consumer<RelOptPlanner>) planner -> {
          planner.removeRule(EnumerableRules.ENUMERABLE_AGGREGATE_RULE);
          planner.addRule(EnumerableRules.ENUMERABLE_SORTED_AGGREGATE_RULE);
        })
        .explainContains(
            "EnumerableSortedAggregate(group=[{}], c=[COUNT()])\n"
            + "  EnumerableUnion(all=[true])\n"
            + "    EnumerableCalc(expr#0..4=[{inputs}], expr#5=[CAST($t1):INTEGER NOT NULL], expr#6=[10], expr#7=[=($t5, $t6)], commission=[$t4], $condition=[$t7])\n"
            + "      EnumerableTableScan(table=[[s, emps]])\n"
            + "    EnumerableCalc(expr#0..4=[{inputs}], expr#5=[CAST($t1):INTEGER NOT NULL], expr#6=[20], expr#7=[=($t5, $t6)], commission=[$t4], $condition=[$t7])\n"
            + "      EnumerableTableScan(table=[[s, emps]])")
        .returnsOrdered(
            "c=4");
  }
{code}

Which fails with:
{noformat}
...
Caused by: java.lang.ClassCastException: class java.lang.Integer cannot be cast to class org.apache.calcite.runtime.FlatLists$ComparableList (java.lang.Integer is in module java.base of loader 'bootstrap'; org.apache.calcite.runtime.FlatLists$ComparableList is in unnamed module of loader 'app')
	at Baz$6.compare(Unknown Source)
	at org.apache.calcite.linq4j.EnumerableDefaults$SortedAggregateEnumerator.moveNext(EnumerableDefaults.java:938)
	at org.apache.calcite.linq4j.Linq4j$EnumeratorIterator.<init>(Linq4j.java:679)
	at org.apache.calcite.linq4j.Linq4j.enumeratorIterator(Linq4j.java:97)
...
{noformat}

The same test with EnumerableAggregate (instead of EnumerableSortedAggregate) will execute the query correctly.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)