[
https://issues.apache.org/jira/browse/CALCITE-3997?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17108191#comment-17108191
]
Ruben Q L commented on CALCITE-3997:
------------------------------------
I observe a potential regression after this change in one of the tests in my
downstream project.
Before, the following plan was generated for this test:
{code}
EnumerableCalc(expr#0..7=[{inputs}], OID=[$t0], ENUM=[$t3])
MyConventionToEnumerableConverter
MyScan
{code}
After this change, I can see two EnumerableCalcs, one of them (the one on the
bottom) is generating a expression (EXPR$2) which is actually not needed (and
which was previously "discarded" from the plan):
{code}
EnumerableCalc(expr#0..2=[{inputs}], proj#0..1=[{exprs}])
EnumerableCalc(expr#0..7=[{inputs}], expr#8=[?0], expr#9=['xyz'],
expr#10=[myFunc($t8, $t9, $t3, $t7)], OID=[$t0], ENUM=[$t3], EXPR$2=[$t10])
MyConventionToEnumerableConverter
MyScan
{code}
The rule set has not changed in between. It would look like the
ProjectMergerRule or the CalcMergerRule is not working as before. Maybe the
issue is on my side. I'll continue digging.
> 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)