[ https://issues.apache.org/jira/browse/CALCITE-6089?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17782466#comment-17782466 ]
Ruben Q L commented on CALCITE-6089: ------------------------------------ We can see similar instances of the same exception if we force Calcite tests to run with EnumerableSortedAggregate instead of EnumerableAggregate, e.g. changing {{EnumerableRules#ENUMERABLE_RULES}}: {code} ... // EnumerableRules.ENUMERABLE_AGGREGATE_RULE, EnumerableRules.ENUMERABLE_SORTED_AGGREGATE_RULE, ... {code} And executing {{CalciteSqlOperatorTest}}. > 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 > Priority: Major > > 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)