Here is the gist (https://gist.github.com/milinda/4eca6855e1c491d33d7c) containing the error.
Thanks Milinda On Fri, Sep 4, 2015 at 2:54 PM, Milinda Pathirage <[email protected]> wrote: > Thank you very much Jinfeng for pointing the reason behind the error. I > think gmail truncated the error message. I should have use pastebin or gist. > > Milinda > > On Fri, Sep 4, 2015 at 2:27 PM, Jinfeng Ni <[email protected]> wrote: > >> This means you miss some rule(s) to convert from "None" convention to >> "Logical" convention. >> >> In particular, in the trace you posted: >> >> Set#2, type: RecordType(VARCHAR(10) productId, INTEGER units) >> rel#15:Subset#2.NONE.[], best=null, importance=0.9 >> rel#14:LogicalDelta.NONE.[](input=rel#13:Subset#1.NONE.[]), >> rowcount=100.0, cumulative cost={inf} >> >> >> rel#21:LogicalProject.NONE.[](input=rel#20:Subset#3.NONE.[],productId=$1,units=$2), >> rowcount=100.0, cumulative cost={inf} >> rel#16:Subset#2.LOGICAL.[], best=null, importance=1.0 >> *rel#17:AbstractConverter.LOGICAL.*[](input=*rel#15:Subset#2* >> .NONE.[],convention=LOGICAL,sort=[]), >> rowcount=100.0, cumulative cost={inf} >> >> RelSubSet #16 only has one rel node #17, whose input is rel#15:Subset#2. >> Seems you do not have rule >> to convert LogicalDelta.NONE or LogicalProject.NONE to a RelNode in >> LOGICAL >> convention. As a result, >> the cumulative cost is infinity, and "best" is null. That's why >> VolcanoPlanner will report CanNotPlan error. >> >> btw: the trace you posted seems to be not well formated. >> >> >> >> >> On Fri, Sep 4, 2015 at 11:02 AM, Milinda Pathirage <[email protected] >> > >> wrote: >> >> > Hi Devs, >> > >> > I am getting following error when I tried PlannerImpl#transform with a >> > custom set of rules (but all rules are from Calcite). Please let me >> know if >> > anyone have any ideas about a possible reason for this error. >> > >> > org.apache.calcite.plan.RelOptPlanner$CannotPlanException: Node >> > [rel#16:Subset#2.LOGICAL.[]] could not be implemented; planner state: >> > >> > Root: rel#16:Subset#2.LOGICAL.[] >> > Original rel: >> > >> > Sets: >> > Set#0, type: RecordType(INTEGER id, VARCHAR(10) productId, INTEGER >> > units, TIMESTAMP(0) rowtime) >> > rel#11:Subset#0.NONE.[], best=null, importance=0.7290000000000001 >> > rel#3:LogicalTableScan.NONE.[](table=[KAFKA, ORDERS]), >> rowcount=100.0, >> > cumulative cost={inf} >> > Set#1, type: RecordType(VARCHAR(10) productId, INTEGER units) >> > rel#13:Subset#1.NONE.[], best=null, importance=0.81 >> > >> > >> rel#12:LogicalProject.NONE.[](input=rel#11:Subset#0.NONE.[],productId=$1,units=$2), >> > rowcount=100.0, cumulative cost={inf} >> > Set#2, type: RecordType(VARCHAR(10) productId, INTEGER units) >> > rel#15:Subset#2.NONE.[], best=null, importance=0.9 >> > rel#14:LogicalDelta.NONE.[](input=rel#13:Subset#1.NONE.[]), >> > rowcount=100.0, cumulative cost={inf} >> > >> > >> rel#21:LogicalProject.NONE.[](input=rel#20:Subset#3.NONE.[],productId=$1,units=$2), >> > rowcount=100.0, cumulative cost={inf} >> > rel#16:Subset#2.LOGICAL.[], best=null, importance=1.0 >> > >> > >> rel#17:AbstractConverter.LOGICAL.[](input=rel#15:Subset#2.NONE.[],convention=LOGICAL,sort=[]), >> > rowcount=100.0, cumulative cost={inf} >> > Set#3, type: RecordType(INTEGER id, VARCHAR(10) productId, INTEGER >> > units, TIMESTAMP(0) rowtime) >> > rel#20:Subset#3.NONE.[], best=null, importance=0.81 >> > rel#18:LogicalDelta.NONE.[](input=rel#11:Subset#0.NONE.[]), >> > rowcount=100.0, cumulative cost={inf} >> > rel#22:LogicalTableScan.NONE.[[3]](table=[]), rowcount=100.0, >> > cumulative cost={inf} >> > rel#23:Subset#3.NONE.[3], best=null, importance=0.405 >> > rel#22:LogicalTableScan.NONE.[[3]](table=[]), rowcount=100.0, >> > cumulative cost={inf} >> > at >> > >> > >> org.apache.calcite.plan.volcano.RelSubset$CheapestPlanReplacer.visit(RelSubset.java:473) >> > at >> > >> > >> org.apache.calcite.plan.volcano.RelSubset.buildCheapestPlan(RelSubset.java:317) >> > at >> > >> > >> org.apache.calcite.plan.volcano.VolcanoPlanner.findBestExp(VolcanoPlanner.java:823) >> > at >> > org.apache.calcite.tools.Programs$RuleSetProgram.run(Programs.java:303) >> > at >> > org.apache.calcite.prepare.PlannerImpl.transform(PlannerImpl.java:268) >> > at >> > >> > >> org.apache.samza.sql.planner.QueryPlanner.convertToSamzaRel(QueryPlanner.java:115) >> > at >> > >> > >> org.apache.samza.sql.planner.QueryPlanner.validateAndConvert(QueryPlanner.java:109) >> > at >> > org.apache.samza.sql.planner.QueryPlanner.getPlan(QueryPlanner.java:98) >> > at >> > >> > >> org.apache.samza.sql.planner.TestQueryPlanner.testSimpleProject(TestQueryPlanner.java:108) >> > >> > >> > I haven't seen this before. I got this after I changed my code to use >> > Frameworks#getPlanner. >> > >> > Thanks in advance >> > Milinda >> > >> > -- >> > Milinda Pathirage >> > >> > PhD Student | Research Assistant >> > School of Informatics and Computing | Data to Insight Center >> > Indiana University >> > >> > twitter: milindalakmal >> > skype: milinda.pathirage >> > blog: http://milinda.pathirage.org >> > >> > > > > -- > Milinda Pathirage > > PhD Student | Research Assistant > School of Informatics and Computing | Data to Insight Center > Indiana University > > twitter: milindalakmal > skype: milinda.pathirage > blog: http://milinda.pathirage.org > -- Milinda Pathirage PhD Student | Research Assistant School of Informatics and Computing | Data to Insight Center Indiana University twitter: milindalakmal skype: milinda.pathirage blog: http://milinda.pathirage.org
