[ https://issues.apache.org/jira/browse/KYLIN-2777?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16542436#comment-16542436 ]
翟娜 commented on KYLIN-2777: --------------------------- SQL like: select sum(v_revenue) from ssb.p_lineorder left join ssb.dates on lo_orderdate = d_datekey and d_year = 1993 with the sql statements above, I got the following error message. *version 2.2.X:* Error while applying rule OLAPJoinRule, args [rel#85:LogicalJoin.NONE.[](left=rel#83:Subset#0.OLAP.[],right=rel#84:Subset#1.OLAP.[],condition=AND(=($2, $5), =($6, 1993)),joinType=left)] while executing SQL: "select sum(v_revenue) from ssb.p_lineorder left join ssb.dates on lo_orderdate = d_datekey and d_year = 1993 LIMIT 50000" *version 2.3.X:* 2 while executing SQL: "select sum(v_revenue) from ssb.p_lineorder left join ssb.dates on lo_orderdate = d_datekey and d_year = 1993" *version 2.4.X:* Node [rel#418:Subset#4.ENUMERABLE.[]] could not be implemented; planner state: Root: rel#418:Subset#4.ENUMERABLE.[] Original rel: LogicalAggregate(subset=[rel#418:Subset#4.ENUMERABLE.[]], group=[{}], EXPR$0=[SUM($0)]): rowcount = 22.5, cumulative cost = \{25.593751072883606 rows, 0.0 cpu, 0.0 io}, id = 413 LogicalProject(subset=[rel#412:Subset#3.NONE.[]], V_REVENUE=[$3]): rowcount = 225.0, cumulative cost = \{225.0 rows, 225.0 cpu, 0.0 io}, id = 411 LogicalJoin(subset=[rel#410:Subset#2.NONE.[]], condition=[AND(=($2, $6), =($7, 1993))], joinType=[left]): rowcount = 225.0, cumulative cost = \{225.0 rows, 0.0 cpu, 0.0 io}, id = 409 OLAPTableScan(subset=[rel#407:Subset#0.OLAP.[]], table=[[SSB, P_LINEORDER]], ctx=[], fields=[[0, 1, 2, 3, 4, 5]]): rowcount = 100.0, cumulative cost = \{5.0 rows, 5.050000000000001 cpu, 0.0 io}, id = 391 OLAPTableScan(subset=[rel#408:Subset#1.OLAP.[]], table=[[SSB, DATES]], ctx=[], fields=[[0, 1]]): rowcount = 100.0, cumulative cost = \{5.0 rows, 5.050000000000001 cpu, 0.0 io}, id = 392 Sets: Set#0, type: RecordType(BIGINT LO_ORDERKEY, INTEGER LO_CUSTKEY, INTEGER LO_ORDERDATE, BIGINT V_REVENUE, BIGINT _KY_COUNT__, BIGINT _KY_SUM_P_LINEORDER_V_REVENUE_) rel#407:Subset#0.OLAP.[], best=rel#391, importance=0.6561 rel#391:OLAPTableScan.OLAP.[](table=[SSB, P_LINEORDER],ctx=,fields=[0, 1, 2, 3, 4, 5]), rowcount=100.0, cumulative cost=\{5.0 rows, 5.050000000000001 cpu, 0.0 io} rel#446:Subset#0.ENUMERABLE.[], best=rel#445, importance=0.32805 rel#445:OLAPToEnumerableConverter.ENUMERABLE.[](input=rel#407:Subset#0.OLAP.[]), rowcount=100.0, cumulative cost=\{10.0 rows, 10.05 cpu, 0.0 io} Set#1, type: RecordType(INTEGER D_DATEKEY, INTEGER D_YEAR) rel#408:Subset#1.OLAP.[], best=rel#392, importance=0.6561 rel#392:OLAPTableScan.OLAP.[](table=[SSB, DATES],ctx=,fields=[0, 1]), rowcount=100.0, cumulative cost=\{5.0 rows, 5.050000000000001 cpu, 0.0 io} rel#444:Subset#1.ENUMERABLE.[], best=rel#443, importance=0.32805 rel#443:OLAPToEnumerableConverter.ENUMERABLE.[](input=rel#408:Subset#1.OLAP.[]), rowcount=100.0, cumulative cost=\{10.0 rows, 10.05 cpu, 0.0 io} Set#2, type: RecordType(BIGINT LO_ORDERKEY, INTEGER LO_CUSTKEY, INTEGER LO_ORDERDATE, BIGINT V_REVENUE, BIGINT _KY_COUNT__, BIGINT _KY_SUM_P_LINEORDER_V_REVENUE_, INTEGER D_DATEKEY, INTEGER D_YEAR) rel#410:Subset#2.NONE.[], best=null, importance=0.7290000000000001 rel#409:LogicalJoin.NONE.[](left=rel#407:Subset#0.OLAP.[],right=rel#408:Subset#1.OLAP.[],condition=AND(=($2, $6), =($7, 1993)),joinType=left), rowcount=225.0, cumulative cost=\{inf} rel#434:Subset#2.OLAP.[], best=null, importance=0.7290000000000001 Set#3, type: RecordType(BIGINT V_REVENUE) rel#412:Subset#3.NONE.[], best=null, importance=0.81 rel#411:LogicalProject.NONE.[](input=rel#410:Subset#2.NONE.[],V_REVENUE=$3), rowcount=225.0, cumulative cost=\{inf} rel#420:Subset#3.OLAP.[], best=null, importance=0.81 rel#435:OLAPProjectRel.OLAP.[](input=rel#434:Subset#2.OLAP.[],V_REVENUE=$3,ctx=), rowcount=225.0, cumulative cost=\{inf} rel#439:Subset#3.ENUMERABLE.[], best=null, importance=0.405 rel#438:OLAPToEnumerableConverter.ENUMERABLE.[](input=rel#420:Subset#3.OLAP.[]), rowcount=225.0, cumulative cost=\{inf} Set#4, type: RecordType(BIGINT EXPR$0) rel#414:Subset#4.NONE.[], best=null, importance=0.9 rel#413:LogicalAggregate.NONE.[](input=rel#412:Subset#3.NONE.[],group={},EXPR$0=SUM($0)), rowcount=22.5, cumulative cost=\{inf} rel#429:LogicalProject.NONE.[](input=rel#428:Subset#5.NONE.[],EXPR$0=CASE(=($1, 0), null, $0)), rowcount=22.5, cumulative cost=\{inf} rel#418:Subset#4.ENUMERABLE.[], best=null, importance=1.0 rel#419:AbstractConverter.ENUMERABLE.[](input=rel#414:Subset#4.NONE.[],convention=ENUMERABLE,sort=[]), rowcount=22.5, cumulative cost=\{inf} rel#423:OLAPToEnumerableConverter.ENUMERABLE.[](input=rel#422:Subset#4.OLAP.[]), rowcount=22.5, cumulative cost=\{inf} rel#422:Subset#4.OLAP.[], best=null, importance=0.9 rel#421:OLAPAggregateRel.OLAP.[](input=rel#420:Subset#3.OLAP.[],group={},EXPR$0=SUM($0),ctx=), rowcount=22.5, cumulative cost=\{inf} rel#431:OLAPProjectRel.OLAP.[](input=rel#430:Subset#5.OLAP.[],EXPR$0=CASE(=($1, 0), null, $0),ctx=), rowcount=22.5, cumulative cost=\{inf} Set#5, type: RecordType(BIGINT EXPR$0, BIGINT $f1) rel#428:Subset#5.NONE.[], best=null, importance=0.81 rel#426:LogicalAggregate.NONE.[](input=rel#412:Subset#3.NONE.[],group={},EXPR$0=$SUM0($0),agg#1=COUNT($0)), rowcount=22.5, cumulative cost=\{inf} rel#430:Subset#5.OLAP.[], best=null, importance=0.81 rel#436:OLAPAggregateRel.OLAP.[](input=rel#420:Subset#3.OLAP.[],group={},EXPR$0=$SUM0($0),agg#1=COUNT($0),ctx=), rowcount=22.5, cumulative cost=\{inf} rel#442:Subset#5.ENUMERABLE.[], best=null, importance=0.405 rel#441:OLAPToEnumerableConverter.ENUMERABLE.[](input=rel#430:Subset#5.OLAP.[]), rowcount=22.5, cumulative cost=\{inf} while executing SQL: "select sum(v_revenue) from ssb.p_lineorder left join ssb.dates on lo_orderdate = d_datekey and d_year = 1993" > Should throw error when sql contains non-equi left join > ------------------------------------------------------- > > Key: KYLIN-2777 > URL: https://issues.apache.org/jira/browse/KYLIN-2777 > Project: Kylin > Issue Type: Bug > Reporter: Roger Shi > Priority: Major > > SQL like: > select fact_table.A, lookup_table.B > from fact_table fa left join lookup_table lo > on fa.C = lo.D and fa.E = 'asdf' > The join is non-equi left join. It's not support in Kylin data model, should > throw error instead of ignore it. Current implementation leads to wrong > result instead of clear error message. -- This message was sent by Atlassian JIRA (v7.6.3#76005)