Thanks for the check XXX, ~

You are right, in CALCITE-3769, we have deprecated the TableScanRule, the 
RelBuilder#scan and sql-to-rel conversion would always invokes 
RelOptTable#toRel, so there expects to  have some plan changes for the 
TableScan node.

We have moved the physical logic from RelOptTable#toRel to 
EnumerableTableScanRule which would invokes RelOptTable#getExpression -> 
QueryableTable#getExpression, so for your case, returns null is the right way 
to go.

As for the Join failure, I didn’t see the stack trace, can you give more 
details ?

[1] https://issues.apache.org/jira/browse/CALCITE-3769

Best,
Danny Chan
在 2020年2月24日 +0800 PM9:55,Enrico Olivelli <eolive...@gmail.com>,写道:
> Danny,
> We are testing HerdDB with 1.22.0rc0 tag and we are seeing problems with 
> Joins.
>
> We were still on 1.19.0 and in December we created a test branch
> against current Calcite's master.
> Unfortunately during the past few weeks we stopped checking
> continuously that branch and we missed the commit id on Calcite that
> introduced these failures.
>
> All failures are about JOIN conditions that seem not to be applied correctly.
>
> This is my test branch with the upgrade from 1.19 to 1.22.0rc0:
> https://github.com/diennea/herddb/pull/563
>
> We are investigating, hopefully is only a bug in our changes.
> Since 1.19.0 the management of JOINs has been changed a lot in Calcite
> so probably we missed something.
>
> I also had to implement QueryableTable#getExpression that wasn't
> required before, I have implemented it with a "return null"
>
> This was the error:
> java.lang.RuntimeException: Error while applying rule
> EnumerableTableScanRule(in:NONE,out:ENUMERABLE), args
> [rel#26:LogicalTableScan.NONE.[](table=[tblspace1, tsql])]
> at 
> org.apache.calcite.plan.volcano.VolcanoRuleCall.onMatch(VolcanoRuleCall.java:244)
> at 
> org.apache.calcite.plan.volcano.VolcanoPlanner.findBestExp(VolcanoPlanner.java:636)
> at herddb.sql.CalcitePlanner.runPlanner(CalcitePlanner.java:523)
> at herddb.sql.CalcitePlanner.translate(CalcitePlanner.java:291)
> at herddb.core.RawSQLTest.cacheStatement(RawSQLTest.java:96)
> at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)
> at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.base/java.lang.reflect.Method.invoke(Method.java:567)
> at 
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
> at 
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
> at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
> at 
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
> at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
> at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
> at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
> at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
> at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
> at 
> org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365)
> at 
> org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:273)
> at 
> org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
> at 
> org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159)
> at 
> org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:384)
> at 
> org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:345)
> at 
> org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:126)
> at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:418)
> Caused by: java.lang.RuntimeException: getExpression is not implemented
> at herddb.sql.CalcitePlanner$TableImpl.getExpression(CalcitePlanner.java:1377)
> at 
> org.apache.calcite.prepare.RelOptTableImpl.lambda$getClassExpressionFunction$2(RelOptTableImpl.java:165)
> at 
> org.apache.calcite.prepare.RelOptTableImpl.getExpression(RelOptTableImpl.java:214)
> at 
> org.apache.calcite.adapter.enumerable.EnumerableTableScanRule.convert(EnumerableTableScanRule.java:63)
> at 
> org.apache.calcite.rel.convert.ConverterRule.onMatch(ConverterRule.java:144)
> at 
> org.apache.calcite.plan.volcano.VolcanoRuleCall.onMatch(VolcanoRuleCall.java:217)
>
> Best regards
>
> Enrico
>
> Il giorno lun 24 feb 2020 alle ore 11:38 Danny Chan
> <yuzhao....@gmail.com> ha scritto:
> >
> > Just to note that, I have updated the release note though, so the 
> > history.md has diff for
> > tar.gz in 
> > https://dist.apache.org/repos/dist/dev/calcite/apache-calcite-1.22.0-rc0/ 
> > and
> > the source tag calcite-1.22.0.
> >
> > Best,
> > Danny Chan
> > 在 2020年2月24日 +0800 PM6:34,Danny Chan <yuzhao....@gmail.com>,写道:
> > > Hi all,
> > >
> > > I have created a build for Apache Calcite 1.22.0, release candidate 0.
> > >
> > > Thanks to everyone who has contributed to this release.
> > > <Further details about release.> You can read the release notes here:
> > > https://github.com/apache/calcite/blob/calcite-1.22.0/site/_docs/history.md
> > >
> > > The commit to be voted upon:
> > > https://gitbox.apache.org/repos/asf?p=calcite.git;a=commit;h=c6d55f13e4a6c2f53c13474e3e86a5a21834f9ed
> > >
> > > Its hash is c6d55f13e4a6c2f53c13474e3e86a5a21834f9ed.
> > >
> > > The artifacts to be voted on are located here:
> > > https://dist.apache.org/repos/dist/dev/calcite/apache-calcite-1.22.0-rc0/
> > >
> > > The hashes of the artifacts are as follows:
> > > src.tar.gz.sha512
> > >
> > > 4169d0a5db187582f92f6e78044fab8ae60b049caaed5b85b5873b761a2ed9e396da227f4594cacec53e19b41e455c2dff267119eb5447be4e58b5ef0564ef02
> > >  *apache-calcite-1.22.0-src.tar.gz
> > >
> > > A staged Maven repository is available for review at:
> > > https://repository.apache.org/content/repositories/orgapachecalcite-1076
> > >
> > > Release artifacts are signed with the following key:
> > > https://people.apache.org/keys/committer/danny0405.asc
> > >
> > > Please vote on releasing this package as Apache Calcite 1.22.0.
> > >
> > > The vote is open for the next 72 hours and passes if a majority of
> > > at least three +1 PMC votes are cast.
> > >
> > > [ ] +1 Release this package as Apache Calcite X.Y.Z
> > > [ ] 0 I don't feel strongly about it, but I'm okay with the release
> > > [ ] -1 Do not release this package because...
> > >
> > >
> > > Here is my vote:
> > >
> > > +1 (binding)
> > >
> > > Best,
> > > Danny Chan

Reply via email to