[
https://issues.apache.org/jira/browse/CALCITE-3997?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17108262#comment-17108262
]
Ruben Q L commented on CALCITE-3997:
------------------------------------
Thanks [~hyuan], the quickfix should work fine.
I admit that my EnumerableCalc generation is a bit unconventional. Initially I
have two LogicalProject, and one of them (due to some unrelated transformations
/ optimizations) goes directly LogicalProject -> EnumerableCalc. The other one
follows the "traditional" conversion path of LogicalProject -> LogicalCalc ->
EnumerableCalc. So they do not have a chance of being merged as LogicalCalcs,
but they can (and should) be merged as EnumerableCalcs. As you say, once you
applied the quickfix, please create another Jira and we can continue the
discussion there.
> 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 20m
> 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)