You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Enrico Olivelli (Jira)" <ji...@apache.org> on 2020/05/13 13:04:00 UTC
[jira] [Created] (CALCITE-3997) Problem with MERGE JOIN:
java.lang.AssertionError: cannot merge join: left input is not sorted on
left keys
Enrico Olivelli created CALCITE-3997:
----------------------------------------
Summary: Problem with MERGE JOIN: java.lang.AssertionError: cannot merge join: left input is not sorted on left keys
Key: CALCITE-3997
URL: https://issues.apache.org/jira/browse/CALCITE-3997
Project: Calcite
Issue Type: Bug
Components: core
Affects Versions: 1.23.0
Reporter: Enrico Olivelli
I have a couple of problems with HerdDB.
1) JOIN order unsorted columns in presence of a WHERE over other columns
This is my case:
CREATE TABLE tblspace1.table1 (k1 string primary key,n1 int,s1 string)
CREATE TABLE tblspace1.table3 (k1 string primary key,n3 int,s3 string)
SELECT t1.k1 as first, t2.k1 as second
FROM tblspace1.table1 t1
INNER JOIN tblspace1.table3 t2 ON t1.k1=t2.k1
WHERE t1.n1 + 1 = t2.n3
In this case for table1 and table3 no column is physically sorted (no column with a collation)
I have this Planner error:
java.lang.AssertionError: cannot merge join: left input is not sorted on left keys
at org.apache.calcite.rel.metadata.RelMdCollation.mergeJoin(RelMdCollation.java:457)
at org.apache.calcite.rel.metadata.RelMdCollation.collations(RelMdCollation.java:153)
at GeneratedMetadataHandler_Collation.collations_$(Unknown Source)
at GeneratedMetadataHandler_Collation.collations(Unknown Source)
at org.apache.calcite.rel.metadata.RelMetadataQuery.collations(RelMetadataQuery.java:539)
at org.apache.calcite.rel.metadata.RelMdCollation.project(RelMdCollation.java:273)
at org.apache.calcite.rel.logical.LogicalProject.lambda$create$0(LogicalProject.java:122)
at org.apache.calcite.plan.RelTraitSet.replaceIfs(RelTraitSet.java:242)
at org.apache.calcite.rel.logical.LogicalProject.create(LogicalProject.java:121)
at org.apache.calcite.rel.logical.LogicalProject.create(LogicalProject.java:111)
at org.apache.calcite.rel.core.RelFactories$ProjectFactoryImpl.createProject(RelFactories.java:172)
at org.apache.calcite.tools.RelBuilder.project_(RelBuilder.java:1464)
at org.apache.calcite.tools.RelBuilder.project(RelBuilder.java:1258)
at org.apache.calcite.tools.RelBuilder.project(RelBuilder.java:1230)
at org.apache.calcite.tools.RelBuilder.project(RelBuilder.java:1219)
at org.apache.calcite.plan.RelOptUtil.pushDownJoinConditions(RelOptUtil.java:3620)
at org.apache.calcite.rel.rules.JoinPushExpressionsRule.onMatch(JoinPushExpressionsRule.java:59)
at org.apache.calcite.plan.volcano.VolcanoRuleCall.onMatch(VolcanoRuleCall.java:221)
at org.apache.calcite.plan.volcano.VolcanoPlanner.findBestExp(VolcanoPlanner.java:519)
at herddb.sql.CalcitePlanner.runPlanner(CalcitePlanner.java:535)
at herddb.sql.CalcitePlanner.translate(CalcitePlanner.java:292)
If I remove the "WHERE" clause then no error is reported.
we have many other test cases about JOINs and this one is the only one that fails
This is the failing test case on HerdDB
https://github.com/diennea/herddb/blob/vote-calcite-123/herddb-core/src/test/java/herddb/core/SimpleJoinTest.java#L522
We are using the default set of rules Programs.ofRules(Programs.RULE_SET)
--
This message was sent by Atlassian Jira
(v8.3.4#803005)