Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
1.0.0-incubating
-
None
-
None
Description
If a subquery has an ORDER BY on a column that is not in the SELECT list and the outer query does another ORDER BY, Calcite encounters an ArrayIndexOutOfBoundException when deducing collation.
In PlannerTest, I created a simple test by first adding the following traits:
List<RelTraitDef> traitDefs = new ArrayList<RelTraitDef>();
traitDefs.add(ConventionTraitDef.INSTANCE);
traitDefs.add(RelCollationTraitDef.INSTANCE);
And ran the following query:
select t.psPartkey from (select ps.psPartkey from `tpch`.`partsupp` ps order by ps.psSupplyCost) t order by t.psPartkey"
java.lang.ArrayIndexOutOfBoundsException: -1 at org.apache.calcite.rex.RexProgram.deduceCollations(RexProgram.java:589) at org.apache.calcite.rex.RexProgram.getCollations(RexProgram.java:558) at org.apache.calcite.plan.RelOptUtil.createProject(RelOptUtil.java:2685) at org.apache.calcite.plan.RelOptUtil.createProject(RelOptUtil.java:2623) at org.apache.calcite.sql2rel.SqlToRelConverter.convertSelectList(SqlToRelConverter.java:3571) at org.apache.calcite.sql2rel.SqlToRelConverter.convertSelectImpl(SqlToRelConverter.java:613) at org.apache.calcite.sql2rel.SqlToRelConverter.convertSelect(SqlToRelConverter.java:568) at org.apache.calcite.sql2rel.SqlToRelConverter.convertQueryRecursive(SqlToRelConverter.java:2929) at org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:526) at org.apache.calcite.prepare.PlannerImpl.convert(PlannerImpl.java:189)
Attachments
Attachments
Issue Links
- is related to
-
CALCITE-526 Add EnumerableMergeJoin, which exploits sorted inputs
- Closed