[
https://issues.apache.org/jira/browse/CALCITE-3997?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17108256#comment-17108256
]
Haisheng Yuan commented on CALCITE-3997:
----------------------------------------
Thanks for confirming, [~rubenql].
As a quick fix, I will remove TransformationRule from CalcMergeRule.
But how is your EnumerableCalc generated? Isn't it generated from LogicalCalc?
If it is, the two LogicalCalc should be combined into a single LogicalCal and
then converted to a single EnumerableCalc. We can create another JIRA to
discuss this and add TransformationRule back to it later, if we can find the
root cause.
> 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
> Priority: Blocker
> Fix For: 1.23.0
>
> Time Spent: 2h 10m
> Remaining Estimate: 0h
>
> 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)