guihui123456 opened a new issue, #2588: URL: https://github.com/apache/drill/issues/2588
**Describe the bug** ERROR o.a.d.e.p.s.h.DefaultSqlHandler - There are not enough rules to produce a node with desired properties: convention=PHYSICAL, DrillDistributionTraitDef=SINGLETON([]), sort=[]. Missing conversion is VertexDrel[convention: LOGICAL -> PHYSICAL, DrillDistributionTraitDef: ANY([]) -> SINGLETON([])] Graphviz: digraph G { root [style=filled,label="Root"]; subgraph cluster10{ label="Set 10 RecordType(INTEGER L_ORDERKEY)"; rel6 [label="rel#6:JdbcTableScan\ntable=[mysql, guihui, lineitem]\nrows=100.0, cost={100.0 rows, 101.0 cpu, 0.0 io, 0.0 network, 0.0 memory}",color=blue,shape=box] rel529 [label="rel#529:VertexDrel\ninput=RelSubset#506\nrows=100.0, cost={200.0 rows, 201.0 cpu, 0.0 io, 0.0 network, 0.0 memory}",color=blue,shape=box] rel533 [label="rel#533:AbstractConverter\ninput=RelSubset#532,convention=JDBC.mysql,DrillDistributionTraitDef=ANY([]),sort=[]\nrows=100.0, cost={inf}",shape=box] rel534 [label="rel#534:AbstractConverter\ninput=RelSubset#532,convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[]\nrows=100.0, cost={inf}",shape=box] rel531 [label="rel#531:JdbcIntermediatePrel\ninput=RelSubset#506\nrows=100.0, cost={200.0 rows, 201.0 cpu, 0.0 io, 0.0 network, 0.0 memory}",color=blue,shape=box] subset506 [label="rel#506:Subset#10.JDBC.mysql.ANY([]).[]"] subset530 [label="rel#530:Subset#10.LOGICAL.ANY([]).[]"] subset532 [label="rel#532:Subset#10.PHYSICAL.ANY([]).[]"] } subgraph cluster11{ label="Set 11 RecordType(INTEGER L_ORDERKEY)"; rel507 [label="rel#507:DrillFilterRel\ninput=RelSubset#506,condition==($0, 1)\nrows=15.0, cost={200.0 rows, 561.0 cpu, 0.0 io, 0.0 network, 0.0 memory}",color=blue,shape=box] rel563 [label="rel#563:AbstractConverter\ninput=RelSubset#562,convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[]\nrows=15.0, cost={inf}",shape=box] rel561 [label="rel#561:FilterPrel\ninput=RelSubset#532,condition==($0, 1)\nrows=15.0, cost={300.0 rows, 661.0 cpu, 0.0 io, 0.0 network, 0.0 memory}",color=blue,shape=box] subset508 [label="rel#508:Subset#11.LOGICAL.ANY([]).[]"] subset562 [label="rel#562:Subset#11.PHYSICAL.ANY([]).[]"] } subgraph cluster12{ label="Set 12 RecordType(INTEGER O_ORDERKEY)"; rel7 [label="rel#7:JdbcTableScan\ntable=[mysql, guihui, orders]\nrows=100.0, cost={100.0 rows, 101.0 cpu, 0.0 io, 0.0 network, 0.0 memory}",color=blue,shape=box] rel520 [label="rel#520:VertexDrel\ninput=RelSubset#509\nrows=100.0, cost={200.0 rows, 201.0 cpu, 0.0 io, 0.0 network, 0.0 memory}",color=blue,shape=box] rel524 [label="rel#524:AbstractConverter\ninput=RelSubset#523,convention=JDBC.mysql,DrillDistributionTraitDef=ANY([]),sort=[]\nrows=100.0, cost={inf}",shape=box] rel525 [label="rel#525:AbstractConverter\ninput=RelSubset#523,convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[]\nrows=100.0, cost={inf}",shape=box] rel522 [label="rel#522:JdbcIntermediatePrel\ninput=RelSubset#509\nrows=100.0, cost={200.0 rows, 201.0 cpu, 0.0 io, 0.0 network, 0.0 memory}",color=blue,shape=box] subset509 [label="rel#509:Subset#12.JDBC.mysql.ANY([]).[]"] subset521 [label="rel#521:Subset#12.LOGICAL.ANY([]).[]"] subset523 [label="rel#523:Subset#12.PHYSICAL.ANY([]).[]"] } subgraph cluster13{ label="Set 13 RecordType(INTEGER L_ORDERKEY, INTEGER O_ORDERKEY)"; rel510 [label="rel#510:JdbcJoin\nleft=RelSubset#508,right=RelSubset#509,condition==($0, $1),joinType=inner\nrows=100.0, cost={301.0 rows, 663.0 cpu, 0.0 io, 0.0 network, 0.0 memory}",color=blue,shape=box] rel542 [label="rel#542:VertexDrel\ninput=RelSubset#511\nrows=100.0, cost={401.0 rows, 763.0 cpu, 0.0 io, 0.0 network, 0.0 memory}",color=blue,shape=box] rel546 [label="rel#546:AbstractConverter\ninput=RelSubset#545,convention=JDBC.mysql,DrillDistributionTraitDef=ANY([]),sort=[]\nrows=100.0, cost={inf}",shape=box] rel547 [label="rel#547:AbstractConverter\ninput=RelSubset#545,convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[]\nrows=100.0, cost={inf}",shape=box] rel544 [label="rel#544:JdbcIntermediatePrel\ninput=RelSubset#511\nrows=100.0, cost={401.0 rows, 763.0 cpu, 0.0 io, 0.0 network, 0.0 memory}",color=blue,shape=box] subset511 [label="rel#511:Subset#13.JDBC.mysql.ANY([]).[]"] subset543 [label="rel#543:Subset#13.LOGICAL.ANY([]).[]"] subset545 [label="rel#545:Subset#13.PHYSICAL.ANY([]).[]"] } subgraph cluster14{ label="Set 14 RecordType(INTEGER L_ORDERKEY, INTEGER O_ORDERKEY)"; rel512 [label="rel#512:DrillProjectRel\ninput=RelSubset#511,L_ORDERKEY=CAST($0):INTEGER,O_ORDERKEY=$1\nrows=100.0, cost={401.0 rows, 1163.0 cpu, 0.0 io, 0.0 network, 0.0 memory}",color=blue,shape=box] rel559 [label="rel#559:AbstractConverter\ninput=RelSubset#558,convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[]\nrows=100.0, cost={inf}",shape=box] rel557 [label="rel#557:ProjectPrel\ninput=RelSubset#545,L_ORDERKEY=CAST($0):INTEGER,O_ORDERKEY=$1\nrows=100.0, cost={501.0 rows, 1263.0 cpu, 0.0 io, 0.0 network, 0.0 memory}",color=blue,shape=box] subset513 [label="rel#513:Subset#14.LOGICAL.ANY([]).[]"] subset558 [label="rel#558:Subset#14.PHYSICAL.RANDOM_DISTRIBUTED([]).[]"] } subgraph cluster15{ label="Set 15 RecordType(INTEGER L_ORDERKEY, INTEGER O_ORDERKEY)"; rel514 [label="rel#514:VertexDrel\ninput=RelSubset#513\nrows=100.0, cost={501.0 rows, 1263.0 cpu, 0.0 io, 0.0 network, 0.0 memory}",color=blue,shape=box] rel554 [label="rel#554:AbstractConverter\ninput=RelSubset#553,convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[]\nrows=100.0, cost={inf}",shape=box] subset515 [label="rel#515:Subset#15.LOGICAL.ANY([]).[]"] subset553 [label="rel#553:Subset#15.PHYSICAL.SINGLETON([]).[]",color=red] } subgraph cluster16{ label="Set 16 RecordType(INTEGER L_ORDERKEY, INTEGER O_ORDERKEY)"; rel516 [label="rel#516:DrillScreenRel\ninput=RelSubset#515\nrows=100.0, cost={511.0 rows, 1273.0 cpu, 0.0 io, 0.0 network, 0.0 memory}",color=blue,shape=box] rel519 [label="rel#519:AbstractConverter\ninput=RelSubset#518,convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[]\nrows=100.0, cost={inf}",shape=box] rel555 [label="rel#555:ScreenPrel\ninput=RelSubset#553\nrows=100.0, cost={inf}",shape=box] subset517 [label="rel#517:Subset#16.LOGICAL.ANY([]).[]"] subset518 [label="rel#518:Subset#16.PHYSICAL.SINGLETON([]).[]"] } root -> subset518; subset506 -> rel6[color=blue]; subset530 -> rel529[color=blue]; rel529 -> subset506[color=blue]; subset506 -> rel533; rel533 -> subset532; subset530 -> rel534; rel534 -> subset532; subset532 -> rel531[color=blue]; rel531 -> subset506[color=blue]; subset508 -> rel507[color=blue]; rel507 -> subset506[color=blue]; subset508 -> rel563; rel563 -> subset562; subset562 -> rel561[color=blue]; rel561 -> subset532[color=blue]; subset509 -> rel7[color=blue]; subset521 -> rel520[color=blue]; rel520 -> subset509[color=blue]; subset509 -> rel524; rel524 -> subset523; subset521 -> rel525; rel525 -> subset523; subset523 -> rel522[color=blue]; rel522 -> subset509[color=blue]; subset511 -> rel510[color=blue]; rel510 -> subset508[color=blue,label="0"]; rel510 -> subset509[color=blue,label="1"]; subset543 -> rel542[color=blue]; rel542 -> subset511[color=blue]; subset511 -> rel546; rel546 -> subset545; subset543 -> rel547; rel547 -> subset545; subset545 -> rel544[color=blue]; rel544 -> subset511[color=blue]; subset513 -> rel512[color=blue]; rel512 -> subset511[color=blue]; subset513 -> rel559; rel559 -> subset558; subset558 -> rel557[color=blue]; rel557 -> subset545[color=blue]; subset515 -> rel514[color=blue]; rel514 -> subset513[color=blue]; subset515 -> rel554; rel554 -> subset553; subset517 -> rel516[color=blue]; rel516 -> subset515[color=blue]; subset517 -> rel519; rel519 -> subset518; subset518 -> rel555; rel555 -> subset553; } 2022-07-08 03:06:52,474 [1d3860bd-8e96-1d99-3b73-378c343f5fc8:foreman] TRACE o.apache.calcite.plan.RelOptPlanner - Caught exception in class=org.apache.calcite.plan.volcano.RelSubset$CheapestPlanReplacer, method=visit org.apache.calcite.plan.RelOptPlanner$CannotPlanException: There are not enough rules to produce a node with desired properties: convention=PHYSICAL, DrillDistributionTraitDef=SINGLETON([]), sort=[]. Missing conversion is VertexDrel[convention: LOGICAL -> PHYSICAL, DrillDistributionTraitDef: ANY([]) -> SINGLETON([])] There is 1 empty subset: rel#553:Subset#15.PHYSICAL.SINGLETON([]).[], the relevant part of the original plan is as follows 514:VertexDrel 512:DrillProjectRel(subset=[rel#513:Subset#14.LOGICAL.ANY([]).[]], L_ORDERKEY=[CAST($0):INTEGER], O_ORDERKEY=[$1]) 510:JdbcJoin(subset=[rel#511:Subset#13.JDBC.mysql.ANY([]).[]], condition=[=($0, $1)], joinType=[inner]) 507:DrillFilterRel(subset=[rel#508:Subset#11.LOGICAL.ANY([]).[]], condition=[=($0, 1)]) 6:JdbcTableScan(subset=[rel#506:Subset#10.JDBC.mysql.ANY([]).[]], table=[[mysql, guihui, lineitem]]) 7:JdbcTableScan(subset=[rel#509:Subset#12.JDBC.mysql.ANY([]).[]], table=[[mysql, guihui, orders]]) **To Reproduce** Steps to reproduce the behavior: 1. CREATE TABLE ORDERS ( O_ORDERKEY INTEGER NOT NULL); 2. CREATE TABLE LINEITEM ( L_ORDERKEY INTEGER NOT NULL); 3. select L_ORDERKEY,O_ORDERKEY from lineitem right join orders on L_ORDERKEY = O_ORDERKEY where L_ORDERKEY = 1 ; 4. See error **Expected behavior** Execute correctly. **Desktop (please complete the following information):** - OS: [Centos7] - Version [drill-1.21] -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: dev-unsubscr...@drill.apache.org.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org