apache / apache/drill

There are not enough rules to produce a node with desired properties

Open
#2,623 6 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
2k
Forks
990
Avg merge
1d 8h
Merged PRs (30d)
5

Description

**Describe the bug**
The drill report a exception since a query running,
report msg:There are not enough rules to produce a node with desired properties

**To Reproduce**
CREATE TABLE ORDERS ( O_ORDERKEY INTEGER NOT NULL,
O_CUSTKEY INTEGER NOT NULL,
O_ORDERSTATUS CHAR(1) NOT NULL,
O_TOTALPRICE DECIMAL(15,2) NOT NULL,
O_ORDERDATE DATE NOT NULL,
O_ORDERPRIORITY CHAR(15) NOT NULL,
O_CLERK CHAR(15) NOT NULL,
O_SHIPPRIORITY INTEGER NOT NULL,
O_COMMENT VARCHAR(79) NOT NULL);

CREATE TABLE LINEITEM ( L_ORDERKEY INTEGER NOT NULL,
L_PARTKEY INTEGER NOT NULL,
L_SUPPKEY INTEGER NOT NULL,
L_LINENUMBER INTEGER NOT NULL,
L_QUANTITY DECIMAL(15,2) NOT NULL,
L_EXTENDEDPRICE DECIMAL(15,2) NOT NULL,
L_DISCOUNT DECIMAL(15,2) NOT NULL,
L_TAX DECIMAL(15,2) NOT NULL,
L_RETURNFLAG CHAR(1) NOT NULL,
L_LINESTATUS CHAR(1) NOT NULL,
L_SHIPDATE DATE NOT NULL,
L_COMMITDATE DATE NOT NULL,
L_RECEIPTDATE DATE NOT NULL,
L_SHIPINSTRUCT CHAR(25) NOT NULL,
L_SHIPMODE CHAR(10) NOT NULL,
L_COMMENT VARCHAR(44) NOT NULL);

select L_ORDERKEY,O_ORDERKEY from lineitem right join orders on O_ORDERKEY = L_ORDERKEY where L_ORDERKEY = 1 ;

**Expected behavior**

The query should be running normally

**Screenshots**

Error: SYSTEM ERROR: 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#3618:Subset#15.PHYSICAL.SINGLETON([]).[], the relevant part of the original plan is as follows
3579:VertexDrel
3577:DrillProjectRel(subset=[rel#3578:Subset#14.LOGICAL.ANY([]).[]], L_ORDERKEY=[CAST($0):INTEGER], O_ORDERKEY=[$1])
3575:JdbcJoin(subset=[rel#3576:Subset#13.JDBC.mysql.ANY([]).[]], condition=[=($1, $0)], joinType=[inner])
3572:DrillFilterRel(subset=[rel#3573:Subset#11.LOGICAL.ANY([]).[]], condition=[=($0, 1)])
3306:JdbcTableScan(subset=[rel#3571:Subset#10.JDBC.mysql.ANY([]).[]], table=[[mysql, test, lineitem]])
3307:JdbcTableScan(subset=[rel#3574:Subset#12.JDBC.mysql.ANY([]).[]], table=[[mysql, test, orders]])

Root: rel#3583:Subset#16.PHYSICAL.SINGLETON([]).[]
Original rel:
LogicalProject(subset=[rel#3356:Subset#4.LOGICAL.ANY([]).[]], L_ORDERKEY=[$0], O_ORDERKEY=[$1]): rowcount = 225.0, cumulative cost = {225.0 rows, 450.0 cpu, 0.0 io, 0.0 network, 0.0 memory}, id = 3354
LogicalFilter(subset=[rel#3353:Subset#3.NONE.ANY([]).[]], condition=[=($0, 1)]): rowcount = 225.0, cumulative cost = {225.0 rows, 1500.0 cpu, 0.0 io, 0.0 network, 0.0 memory}, id = 3352
LogicalJoin(subset=[rel#3351:Subset#2.NONE.ANY([]).[]], condition=[=($1, $0)], joinType=[right]): rowcount = 1500.0, cumulative cost = {1500.0 rows, 0.0 cpu, 0.0 io, 0.0 network, 0.0 memory}, id = 3350
JdbcTableScan(subset=[rel#3348:Subset#0.JDBC.mysql.ANY([]).[]], table=[[mysql, test, lineitem]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io, 0.0 network, 0.0 memory}, id = 3306
JdbcTableScan(subset=[rel#3349:Subset#1.JDBC.mysql.ANY([]).[]], table=[[mysql, test, orders]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io, 0.0 network, 0.0 memory}, id = 3307

**Additional context**
Add any other context about the problem here.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.