You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Vladimir Sitnikov (JIRA)" <ji...@apache.org> on 2019/02/02 17:04:00 UTC
[jira] [Commented] (CALCITE-2817) Make CannotPlanException great
[ https://issues.apache.org/jira/browse/CALCITE-2817?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16759105#comment-16759105 ]
Vladimir Sitnikov commented on CALCITE-2817:
--------------------------------------------
Sample output:
{noformat}19:52:40.182 [23aa3529-0dea-bbbc-d4ec-5ba495350b1c:foreman] ERROR o.a.d.e.p.s.h.DefaultSqlHandler - Node
rel#371:Subset#30.PHYSICAL.SINGLETON([]).[]is not implementable. It means there's not enough rules to produce the node with desired properties
There is 1 empty subset:
Leaf 0: rel#401:Subset#22.PHYSICAL.ANY([]).[]
354:DrillJoinRel(condition=[true], joinType=[inner])
248:DrillScanRel(subset=[rel#352:Subset#20.LOGICAL.ANY([]).[]], table=[[cp, employee.json]], groupscan=[EasyGroupScan [selectionRoot=classpath:/employee.json, numFiles=1, columns=[`last_name`], files=[classpath:/employee.json]]])
250:DrillScanRel(subset=[rel#353:Subset#21.LOGICAL.ANY([]).[]], table=[[cp, tpch/nation.parquet]], groupscan=[ParquetGroupScan [entries=[ReadEntryWithPath [path=classpath:/tpch/nation.parquet]], selectionRoot=classpath:/tpch/nation.parquet, numFiles=1, numRowGroups=1, usedMetadataFile=false, columns=[`n_nationkey`, `n_name`]]])
Root: rel#371:Subset#30.PHYSICAL.SINGLETON([]).[]
Original rel:
DrillLimitRel(subset=[rel#145:Subset#11.LOGICAL.ANY([]).[]], fetch=[1]): rowcount = 1.0, cumulative cost = {1.0 rows, 4.0 cpu, 0.0 io, 0.0 network, 0.0 memory}, id = 148
DrillProjectRel(subset=[rel#147:Subset#10.LOGICAL.ANY([]).[]], last_name=[$0], n_name=[$2]): rowcount = 1736.25, cumulative cost = {1736.25 rows, 3472.5 cpu, 0.0 io, 0.0 network, 0.0 memory}, id = 160
DrillFilterRel(subset=[rel#159:Subset#13.LOGICAL.ANY([]).[]], condition=[=($1, $3)]): rowcount = 1736.25, cumulative cost = {11575.0 rows, 53245.0 cpu, 0.0 io, 0.0 network, 0.0 memory}, id = 172
DrillJoinRel(subset=[rel#171:Subset#12.LOGICAL.ANY([]).[]], condition=[true], joinType=[left]): rowcount = 11575.0, cumulative cost = {11576.0 rows, 0.0 cpu, 0.0 io, 0.0 network, 8.8 memory}, id = 246
DrillJoinRel(subset=[rel#191:Subset#14.LOGICAL.ANY([]).[]], condition=[true], joinType=[inner]): rowcount = 11575.0, cumulative cost = {11575.0 rows, 5.756E7 cpu, 0.0 io, 0.0 network, 4400000.000000001 memory}, id = 237
DrillScanRel(subset=[rel#235:Subset#18.LOGICAL.ANY([]).[]], table=[[cp, employee.json]], groupscan=[EasyGroupScan [selectionRoot=classpath:/employee.json, numFiles=1, columns=[`last_name`], files=[classpath:/employee.json]]]): rowcount = 463.0, cumulative cost = {463.0 rows, 463.0 cpu, 0.0 io, 0.0 network, 0.0 memory}, id = 248
DrillScanRel(subset=[rel#236:Subset#19.LOGICAL.ANY([]).[]], table=[[cp, tpch/nation.parquet]], groupscan=[ParquetGroupScan [entries=[ReadEntryWithPath [path=classpath:/tpch/nation.parquet]], selectionRoot=classpath:/tpch/nation.parquet, numFiles=1, numRowGroups=1, usedMetadataFile=false, columns=[`n_nationkey`, `n_name`]]]): rowcount = 25.0, cumulative cost = {25.0 rows, 50.0 cpu, 0.0 io, 0.0 network, 0.0 memory}, id = 250
DrillAggregateRel(subset=[rel#195:Subset#6.LOGICAL.ANY([]).[]], group=[{}], agg#0=[SINGLE_VALUE($0)]): rowcount = 1.0, cumulative cost = {1.0 rows, 12.0 cpu, 0.0 io, 0.0 network, 8.8 memory}, id = 203
DrillFilterRel(subset=[rel#202:Subset#5.LOGICAL.ANY([]).[]], condition=[=($0, 1)]): rowcount = 1.0, cumulative cost = {5.0 rows, 23.0 cpu, 0.0 io, 0.0 network, 0.0 memory}, id = 221
DrillScanRel(subset=[rel#220:Subset#17.LOGICAL.ANY([]).[]], table=[[cp, tpch/region.parquet]], groupscan=[ParquetGroupScan [entries=[ReadEntryWithPath [path=classpath:/tpch/region.parquet]], selectionRoot=classpath:/tpch/region.parquet, numFiles=1, numRowGroups=1, usedMetadataFile=false, columns=[`r_regionkey`]]]): rowcount = 5.0, cumulative cost = {5.0 rows, 5.0 cpu, 0.0 io, 0.0 network, 0.0 memory}, id = 222
Sets:
Set#20, type: RecordType(ANY last_name)
rel#352:Subset#20.LOGICAL.ANY([]).[], best=rel#248, importance=0.0
rel#248:DrillScanRel.LOGICAL.ANY([]).[](table=[cp, employee.json],groupscan=EasyGroupScan [selectionRoot=classpath:/employee.json, numFiles=1, columns=[`last_name`], files=[classpath:/employee.json]]), rowcount=463.0, cumulative cost={463.0 rows, 463.0 cpu, 0.0 io, 0.0 network, 0.0 memory}
rel#385:AbstractConverter.LOGICAL.ANY([]).[](input=rel#384:Subset#20.PHYSICAL.SINGLETON([]).[],convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[]), rowcount=463.0, cumulative cost={inf}
rel#384:Subset#20.PHYSICAL.SINGLETON([]).[], best=rel#383, importance=0.0
rel#383:ScanPrel.PHYSICAL.SINGLETON([]).[](table=[cp, employee.json],groupscan=EasyGroupScan [selectionRoot=classpath:/employee.json, numFiles=1, columns=[`last_name`], files=[classpath:/employee.json]]), rowcount=463.0, cumulative cost={463.0 rows, 463.0 cpu, 474630.0 io, 0.0 network, 0.0 memory}
Set#21, type: RecordType(ANY n_nationkey, ANY n_name)
rel#353:Subset#21.LOGICAL.ANY([]).[], best=rel#250, importance=0.0
rel#250:DrillScanRel.LOGICAL.ANY([]).[](table=[cp, tpch/nation.parquet],groupscan=ParquetGroupScan [entries=[ReadEntryWithPath [path=classpath:/tpch/nation.parquet]], selectionRoot=classpath:/tpch/nation.parquet, numFiles=1, numRowGroups=1, usedMetadataFile=false, columns=[`n_nationkey`, `n_name`]]), rowcount=25.0, cumulative cost={25.0 rows, 50.0 cpu, 0.0 io, 0.0 network, 0.0 memory}
rel#391:AbstractConverter.LOGICAL.ANY([]).[](input=rel#390:Subset#21.PHYSICAL.SINGLETON([]).[],convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[]), rowcount=25.0, cumulative cost={inf}
rel#390:Subset#21.PHYSICAL.SINGLETON([]).[], best=rel#389, importance=0.0
rel#389:ScanPrel.PHYSICAL.SINGLETON([]).[](table=[cp, tpch/nation.parquet],groupscan=ParquetGroupScan [entries=[ReadEntryWithPath [path=classpath:/tpch/nation.parquet]], selectionRoot=classpath:/tpch/nation.parquet, numFiles=1, numRowGroups=1, usedMetadataFile=false, columns=[`n_nationkey`, `n_name`]]), rowcount=25.0, cumulative cost={25.0 rows, 50.0 cpu, 50.0 io, 0.0 network, 0.0 memory}
Set#22, type: RecordType(ANY last_name, ANY n_nationkey, ANY n_name)
rel#355:Subset#22.LOGICAL.ANY([]).[], best=rel#354, importance=0.23914845000000004
rel#354:DrillJoinRel.LOGICAL.ANY([]).[](left=rel#352:Subset#20.LOGICAL.ANY([]).[],right=rel#353:Subset#21.LOGICAL.ANY([]).[],condition=true,joinType=inner), rowcount=11575.0, cumulative cost={12063.0 rows, 5.7560513E7 cpu, 0.0 io, 0.0 network, 4400000.000000001 memory}
rel#402:AbstractConverter.LOGICAL.ANY([]).[](input=rel#401:Subset#22.PHYSICAL.ANY([]).[],convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[]), rowcount=11575.0, cumulative cost={inf}
rel#401:Subset#22.PHYSICAL.ANY([]).[], best=null, importance=0.4782969000000001
Set#23, type: RecordType(ANY r_regionkey)
rel#356:Subset#23.LOGICAL.ANY([]).[], best=rel#222, importance=0.17433922005000005
rel#222:DrillScanRel.LOGICAL.ANY([]).[](table=[cp, tpch/region.parquet],groupscan=ParquetGroupScan [entries=[ReadEntryWithPath [path=classpath:/tpch/region.parquet]], selectionRoot=classpath:/tpch/region.parquet, numFiles=1, numRowGroups=1, usedMetadataFile=false, columns=[`r_regionkey`]]), rowcount=5.0, cumulative cost={5.0 rows, 5.0 cpu, 0.0 io, 0.0 network, 0.0 memory}
rel#388:AbstractConverter.LOGICAL.ANY([]).[](input=rel#387:Subset#23.PHYSICAL.SINGLETON([]).[],convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[]), rowcount=5.0, cumulative cost={inf}
rel#419:AbstractConverter.LOGICAL.ANY([]).[](input=rel#418:Subset#23.PHYSICAL.ANY([]).[],convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[]), rowcount=5.0, cumulative cost={inf}
rel#387:Subset#23.PHYSICAL.SINGLETON([]).[], best=rel#386, importance=0.3486784401000001
rel#386:ScanPrel.PHYSICAL.SINGLETON([]).[](table=[cp, tpch/region.parquet],groupscan=ParquetGroupScan [entries=[ReadEntryWithPath [path=classpath:/tpch/region.parquet]], selectionRoot=classpath:/tpch/region.parquet, numFiles=1, numRowGroups=1, usedMetadataFile=false, columns=[`r_regionkey`]]), rowcount=5.0, cumulative cost={5.0 rows, 5.0 cpu, 5.0 io, 0.0 network, 0.0 memory}
rel#420:AbstractConverter.PHYSICAL.SINGLETON([]).[](input=rel#418:Subset#23.PHYSICAL.ANY([]).[],convention=PHYSICAL,DrillDistributionTraitDef=SINGLETON([]),sort=[]), rowcount=5.0, cumulative cost={inf}
rel#442:UnionExchangePrel.PHYSICAL.SINGLETON([]).[](input=rel#418:Subset#23.PHYSICAL.ANY([]).[]), rowcount=5.0, cumulative cost={10.0 rows, 45.0 cpu, 5.0 io, 20480.0 network, 0.0 memory}
rel#418:Subset#23.PHYSICAL.ANY([]).[], best=rel#386, importance=0.31381059609000006
rel#386:ScanPrel.PHYSICAL.SINGLETON([]).[](table=[cp, tpch/region.parquet],groupscan=ParquetGroupScan [entries=[ReadEntryWithPath [path=classpath:/tpch/region.parquet]], selectionRoot=classpath:/tpch/region.parquet, numFiles=1, numRowGroups=1, usedMetadataFile=false, columns=[`r_regionkey`]]), rowcount=5.0, cumulative cost={5.0 rows, 5.0 cpu, 5.0 io, 0.0 network, 0.0 memory}
rel#420:AbstractConverter.PHYSICAL.SINGLETON([]).[](input=rel#418:Subset#23.PHYSICAL.ANY([]).[],convention=PHYSICAL,DrillDistributionTraitDef=SINGLETON([]),sort=[]), rowcount=5.0, cumulative cost={inf}
rel#442:UnionExchangePrel.PHYSICAL.SINGLETON([]).[](input=rel#418:Subset#23.PHYSICAL.ANY([]).[]), rowcount=5.0, cumulative cost={10.0 rows, 45.0 cpu, 5.0 io, 20480.0 network, 0.0 memory}
Set#24, type: RecordType(ANY r_regionkey)
rel#358:Subset#24.LOGICAL.ANY([]).[], best=rel#357, importance=0.19371024450000005
rel#357:DrillFilterRel.LOGICAL.ANY([]).[](input=rel#356:Subset#23.LOGICAL.ANY([]).[],condition==($0, 1)), rowcount=1.0, cumulative cost={10.0 rows, 28.0 cpu, 0.0 io, 0.0 network, 0.0 memory}
rel#374:AbstractConverter.LOGICAL.ANY([]).[](input=rel#373:Subset#24.PHYSICAL.SINGLETON([]).[],convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[]), rowcount=1.0, cumulative cost={inf}
rel#373:Subset#24.PHYSICAL.SINGLETON([]).[], best=rel#421, importance=0.3874204890000001
rel#421:FilterPrel.PHYSICAL.SINGLETON([]).[](input=rel#387:Subset#23.PHYSICAL.SINGLETON([]).[],condition==($0, 1)), rowcount=1.0, cumulative cost={10.0 rows, 28.0 cpu, 5.0 io, 0.0 network, 0.0 memory}
Set#25, type: RecordType(ANY $f0)
rel#360:Subset#25.LOGICAL.ANY([]).[], best=rel#359, importance=0.23914845000000004
rel#359:DrillAggregateRel.LOGICAL.ANY([]).[](input=rel#358:Subset#24.LOGICAL.ANY([]).[],group={},agg#0=SINGLE_VALUE($0)), rowcount=1.0, cumulative cost={11.0 rows, 40.0 cpu, 0.0 io, 0.0 network, 8.8 memory}
rel#377:AbstractConverter.LOGICAL.ANY([]).[](input=rel#376:Subset#25.PHYSICAL.SINGLETON([]).[],convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[]), rowcount=1.0, cumulative cost={inf}
rel#404:AbstractConverter.LOGICAL.ANY([]).[](input=rel#403:Subset#25.PHYSICAL.BROADCAST_DISTRIBUTED([]).[],convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[]), rowcount=1.0, cumulative cost={inf}
rel#376:Subset#25.PHYSICAL.SINGLETON([]).[], best=rel#375, importance=0.4304672100000001
rel#375:StreamAggPrel.PHYSICAL.SINGLETON([]).[](input=rel#373:Subset#24.PHYSICAL.SINGLETON([]).[],group={},agg#0=SINGLE_VALUE($0)), rowcount=1.0, cumulative cost={11.0 rows, 40.0 cpu, 5.0 io, 0.0 network, 0.0 memory}
rel#405:AbstractConverter.PHYSICAL.SINGLETON([]).[](input=rel#403:Subset#25.PHYSICAL.BROADCAST_DISTRIBUTED([]).[],convention=PHYSICAL,DrillDistributionTraitDef=SINGLETON([]),sort=[]), rowcount=1.0, cumulative cost={inf}
rel#444:UnionExchangePrel.PHYSICAL.SINGLETON([]).[](input=rel#403:Subset#25.PHYSICAL.BROADCAST_DISTRIBUTED([]).[]), rowcount=1.0, cumulative cost={13.0 rows, 56.0 cpu, 5.0 io, 4505.6 network, 0.0 memory}
rel#403:Subset#25.PHYSICAL.BROADCAST_DISTRIBUTED([]).[], best=rel#443, importance=0.4782969000000001
rel#406:AbstractConverter.PHYSICAL.BROADCAST_DISTRIBUTED([]).[](input=rel#376:Subset#25.PHYSICAL.SINGLETON([]).[],convention=PHYSICAL,DrillDistributionTraitDef=BROADCAST_DISTRIBUTED([]),sort=[]), rowcount=1.0, cumulative cost={inf}
rel#443:BroadcastExchangePrel.PHYSICAL.BROADCAST_DISTRIBUTED([]).[](input=rel#376:Subset#25.PHYSICAL.SINGLETON([]).[]), rowcount=1.0, cumulative cost={12.0 rows, 48.0 cpu, 5.0 io, 409.5999999999999 network, 0.0 memory}
Set#26, type: RecordType(ANY last_name, ANY n_nationkey, ANY n_name, ANY $f0)
rel#362:Subset#26.LOGICAL.ANY([]).[], best=rel#361, importance=0.2657205
rel#361:DrillJoinRel.LOGICAL.ANY([]).[](left=rel#355:Subset#22.LOGICAL.ANY([]).[],right=rel#360:Subset#25.LOGICAL.ANY([]).[],condition=true,joinType=left), rowcount=11575.0, cumulative cost={23650.0 rows, 5.7560553E7 cpu, 0.0 io, 0.0 network, 4400017.600000001 memory}
rel#409:AbstractConverter.LOGICAL.ANY([]).[](input=rel#408:Subset#26.PHYSICAL.ANY([]).[],convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[]), rowcount=11575.0, cumulative cost={inf}
rel#408:Subset#26.PHYSICAL.ANY([]).[], best=null, importance=0.531441
rel#407:NestedLoopJoinPrel.PHYSICAL.ANY([]).[](left=rel#401:Subset#22.PHYSICAL.ANY([]).[],right=rel#403:Subset#25.PHYSICAL.BROADCAST_DISTRIBUTED([]).[],condition=true,joinType=left), rowcount=11575.0, cumulative cost={inf}
Set#27, type: RecordType(ANY last_name, ANY n_nationkey, ANY n_name, ANY $f0)
rel#364:Subset#27.LOGICAL.ANY([]).[], best=rel#363, importance=0.49999992887998435
rel#363:DrillFilterRel.LOGICAL.ANY([]).[](input=rel#362:Subset#26.LOGICAL.ANY([]).[],condition==($1, $3)), rowcount=1736.25, cumulative cost={35225.0 rows, 5.7613798E7 cpu, 0.0 io, 0.0 network, 4400017.600000001 memory}
rel#411:AbstractConverter.LOGICAL.ANY([]).[](input=rel#410:Subset#27.PHYSICAL.SINGLETON([]).[],convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[]), rowcount=1736.25, cumulative cost={inf}
rel#426:AbstractConverter.LOGICAL.ANY([]).[](input=rel#425:Subset#27.PHYSICAL.ANY([]).[],convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[]), rowcount=1736.25, cumulative cost={inf}
rel#410:Subset#27.PHYSICAL.SINGLETON([]).[], best=null, importance=0.6561
rel#427:AbstractConverter.PHYSICAL.SINGLETON([]).[](input=rel#425:Subset#27.PHYSICAL.ANY([]).[],convention=PHYSICAL,DrillDistributionTraitDef=SINGLETON([]),sort=[]), rowcount=1736.25, cumulative cost={inf}
rel#428:UnionExchangePrel.PHYSICAL.SINGLETON([]).[](input=rel#425:Subset#27.PHYSICAL.ANY([]).[]), rowcount=1736.25, cumulative cost={inf}
rel#425:Subset#27.PHYSICAL.ANY([]).[], best=null, importance=0.5904900000000001
rel#427:AbstractConverter.PHYSICAL.SINGLETON([]).[](input=rel#425:Subset#27.PHYSICAL.ANY([]).[],convention=PHYSICAL,DrillDistributionTraitDef=SINGLETON([]),sort=[]), rowcount=1736.25, cumulative cost={inf}
rel#424:FilterPrel.PHYSICAL.ANY([]).[](input=rel#408:Subset#26.PHYSICAL.ANY([]).[],condition==($1, $3)), rowcount=1736.25, cumulative cost={inf}
rel#428:UnionExchangePrel.PHYSICAL.SINGLETON([]).[](input=rel#425:Subset#27.PHYSICAL.ANY([]).[]), rowcount=1736.25, cumulative cost={inf}
Set#28, type: RecordType(ANY last_name, ANY n_nationkey, ANY n_name, ANY $f0)
rel#366:Subset#28.LOGICAL.ANY([]).[], best=rel#365, importance=0.4999999722458476
rel#365:DrillLimitRel.LOGICAL.ANY([]).[](input=rel#364:Subset#27.LOGICAL.ANY([]).[],fetch=1), rowcount=1.0, cumulative cost={35226.0 rows, 5.7613802E7 cpu, 0.0 io, 0.0 network, 4400017.600000001 memory}
rel#393:AbstractConverter.LOGICAL.ANY([]).[](input=rel#392:Subset#28.PHYSICAL.ANY([]).[],convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[]), rowcount=1.0, cumulative cost={inf}
rel#414:AbstractConverter.LOGICAL.ANY([]).[](input=rel#413:Subset#28.PHYSICAL.SINGLETON([]).[],convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[]), rowcount=1.0, cumulative cost={inf}
rel#392:Subset#28.PHYSICAL.ANY([]).[], best=null, importance=0.7290000000000001
rel#415:AbstractConverter.PHYSICAL.SINGLETON([]).[](input=rel#392:Subset#28.PHYSICAL.ANY([]).[],convention=PHYSICAL,DrillDistributionTraitDef=SINGLETON([]),sort=[]), rowcount=1.0, cumulative cost={inf}
rel#412:LimitPrel.PHYSICAL.SINGLETON([]).[](input=rel#410:Subset#27.PHYSICAL.SINGLETON([]).[],fetch=1), rowcount=1.0, cumulative cost={inf}
rel#417:UnionExchangePrel.PHYSICAL.SINGLETON([]).[](input=rel#392:Subset#28.PHYSICAL.ANY([]).[]), rowcount=1.0, cumulative cost={inf}
rel#435:LimitPrel.PHYSICAL.SINGLETON([]).[](input=rel#434:Subset#32.PHYSICAL.SINGLETON([]).[],fetch=1), rowcount=1.0, cumulative cost={inf}
rel#413:Subset#28.PHYSICAL.SINGLETON([]).[], best=null, importance=0.7290000000000001
rel#415:AbstractConverter.PHYSICAL.SINGLETON([]).[](input=rel#392:Subset#28.PHYSICAL.ANY([]).[],convention=PHYSICAL,DrillDistributionTraitDef=SINGLETON([]),sort=[]), rowcount=1.0, cumulative cost={inf}
rel#412:LimitPrel.PHYSICAL.SINGLETON([]).[](input=rel#410:Subset#27.PHYSICAL.SINGLETON([]).[],fetch=1), rowcount=1.0, cumulative cost={inf}
rel#417:UnionExchangePrel.PHYSICAL.SINGLETON([]).[](input=rel#392:Subset#28.PHYSICAL.ANY([]).[]), rowcount=1.0, cumulative cost={inf}
rel#435:LimitPrel.PHYSICAL.SINGLETON([]).[](input=rel#434:Subset#32.PHYSICAL.SINGLETON([]).[],fetch=1), rowcount=1.0, cumulative cost={inf}
Set#29, type: RecordType(ANY last_name, ANY n_name)
rel#368:Subset#29.LOGICAL.ANY([]).[], best=rel#367, importance=0.49999999826536545
rel#367:DrillProjectRel.LOGICAL.ANY([]).[](input=rel#366:Subset#28.LOGICAL.ANY([]).[],last_name=$0,n_name=$2), rowcount=1.0, cumulative cost={35227.0 rows, 5.7613804E7 cpu, 0.0 io, 0.0 network, 4400017.600000001 memory}
rel#380:AbstractConverter.LOGICAL.ANY([]).[](input=rel#379:Subset#29.PHYSICAL.SINGLETON([]).[],convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[]), rowcount=1.0, cumulative cost={inf}
rel#396:AbstractConverter.LOGICAL.ANY([]).[](input=rel#395:Subset#29.PHYSICAL.ANY([]).[],convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[]), rowcount=1.0, cumulative cost={inf}
rel#379:Subset#29.PHYSICAL.SINGLETON([]).[], best=null, importance=0.9
rel#397:AbstractConverter.PHYSICAL.SINGLETON([]).[](input=rel#395:Subset#29.PHYSICAL.ANY([]).[],convention=PHYSICAL,DrillDistributionTraitDef=SINGLETON([]),sort=[]), rowcount=1.0, cumulative cost={inf}
rel#398:UnionExchangePrel.PHYSICAL.SINGLETON([]).[](input=rel#395:Subset#29.PHYSICAL.ANY([]).[]), rowcount=1.0, cumulative cost={inf}
rel#416:ProjectPrel.PHYSICAL.SINGLETON([]).[](input=rel#413:Subset#28.PHYSICAL.SINGLETON([]).[],last_name=$0,n_name=$2), rowcount=1.0, cumulative cost={inf}
rel#395:Subset#29.PHYSICAL.ANY([]).[], best=null, importance=0.81
rel#397:AbstractConverter.PHYSICAL.SINGLETON([]).[](input=rel#395:Subset#29.PHYSICAL.ANY([]).[],convention=PHYSICAL,DrillDistributionTraitDef=SINGLETON([]),sort=[]), rowcount=1.0, cumulative cost={inf}
rel#394:ProjectPrel.PHYSICAL.ANY([]).[](input=rel#392:Subset#28.PHYSICAL.ANY([]).[],last_name=$0,n_name=$2), rowcount=1.0, cumulative cost={inf}
rel#398:UnionExchangePrel.PHYSICAL.SINGLETON([]).[](input=rel#395:Subset#29.PHYSICAL.ANY([]).[]), rowcount=1.0, cumulative cost={inf}
rel#416:ProjectPrel.PHYSICAL.SINGLETON([]).[](input=rel#413:Subset#28.PHYSICAL.SINGLETON([]).[],last_name=$0,n_name=$2), rowcount=1.0, cumulative cost={inf}
Set#30, type: RecordType(ANY last_name, ANY n_name)
rel#370:Subset#30.LOGICAL.ANY([]).[], best=rel#369, importance=0.5
rel#369:DrillScreenRel.LOGICAL.ANY([]).[](input=rel#368:Subset#29.LOGICAL.ANY([]).[]), rowcount=1.0, cumulative cost={35227.1 rows, 5.76138041E7 cpu, 0.0 io, 0.0 network, 4400017.600000001 memory}
rel#372:AbstractConverter.LOGICAL.ANY([]).[](input=rel#371:Subset#30.PHYSICAL.SINGLETON([]).[],convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[]), rowcount=1.0, cumulative cost={inf}
rel#371:Subset#30.PHYSICAL.SINGLETON([]).[], best=null, importance=1.0
rel#381:ScreenPrel.PHYSICAL.SINGLETON([]).[](input=rel#379:Subset#29.PHYSICAL.SINGLETON([]).[]), rowcount=1.0, cumulative cost={inf}
Set#31, type: RecordType(ANY last_name, ANY n_nationkey, ANY n_name, ANY $f0)
rel#432:Subset#31.PHYSICAL.ANY([]).[], best=null, importance=0.5904900000000001
rel#429:LimitPrel.PHYSICAL.ANY([]).[](input=rel#425:Subset#27.PHYSICAL.ANY([]).[],fetch=1), rowcount=1.0, cumulative cost={inf}
rel#441:LimitPrel.PHYSICAL.ANY([]).[](input=rel#434:Subset#32.PHYSICAL.SINGLETON([]).[],fetch=1), rowcount=1.0, cumulative cost={inf}
Set#32, type: RecordType(ANY last_name, ANY n_nationkey, ANY n_name, ANY $f0)
rel#434:Subset#32.PHYSICAL.SINGLETON([]).[], best=null, importance=0.6561
rel#433:UnionExchangePrel.PHYSICAL.SINGLETON([]).[](input=rel#432:Subset#31.PHYSICAL.ANY([]).[]), rowcount=1.0, cumulative cost={inf}
Graphviz:
digraph G {
root [style=filled,label="Root"];
subgraph cluster20{
label="Set 20 RecordType(ANY last_name)";
rel248 [label="rel#248:DrillScanRel(table=[cp, employee.json],groupscan=EasyGroupScan [selectionRoot=classpath:/employee.json, numFiles=1, columns=[`last_name`], files=[classpath:/employee.json]])\nrows=463.0, cost={463.0 rows, 463.0 cpu, 0.0 io, 0.0 network, 0.0 memory}",color=blue,shape=box]
rel385 [label="rel#385:AbstractConverter(input=rel#384:Subset#20.PHYSICAL.SINGLETON([]).[],convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[])\nrows=463.0, cost={inf}",shape=box]
rel383 [label="rel#383:ScanPrel(table=[cp, employee.json],groupscan=EasyGroupScan [selectionRoot=classpath:/employee.json, numFiles=1, columns=[`last_name`], files=[classpath:/employee.json]])\nrows=463.0, cost={463.0 rows, 463.0 cpu, 474630.0 io, 0.0 network, 0.0 memory}",color=blue,shape=box]
subset352 [label="rel#352:Subset#20.LOGICAL.ANY([]).[]"]
subset384 [label="rel#384:Subset#20.PHYSICAL.SINGLETON([]).[]"]
}
subgraph cluster21{
label="Set 21 RecordType(ANY n_nationkey, ANY n_name)";
rel250 [label="rel#250:DrillScanRel(table=[cp, tpch/nation.parquet],groupscan=ParquetGroupScan [entries=[ReadEntryWithPath [path=classpath:/tpch/nation.parquet]], selectionRoot=classpath:/tpch/nation.parquet, numFiles=1, numRowGroups=1, usedMetadataFile=false, columns=[`n_nationkey`, `n_name`]])\nrows=25.0, cost={25.0 rows, 50.0 cpu, 0.0 io, 0.0 network, 0.0 memory}",color=blue,shape=box]
rel391 [label="rel#391:AbstractConverter(input=rel#390:Subset#21.PHYSICAL.SINGLETON([]).[],convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[])\nrows=25.0, cost={inf}",shape=box]
rel389 [label="rel#389:ScanPrel(table=[cp, tpch/nation.parquet],groupscan=ParquetGroupScan [entries=[ReadEntryWithPath [path=classpath:/tpch/nation.parquet]], selectionRoot=classpath:/tpch/nation.parquet, numFiles=1, numRowGroups=1, usedMetadataFile=false, columns=[`n_nationkey`, `n_name`]])\nrows=25.0, cost={25.0 rows, 50.0 cpu, 50.0 io, 0.0 network, 0.0 memory}",color=blue,shape=box]
subset353 [label="rel#353:Subset#21.LOGICAL.ANY([]).[]"]
subset390 [label="rel#390:Subset#21.PHYSICAL.SINGLETON([]).[]"]
}
subgraph cluster22{
label="Set 22 RecordType(ANY last_name, ANY n_nationkey, ANY n_name)";
rel354 [label="rel#354:DrillJoinRel(left=rel#352:Subset#20,right=rel#353:Subset#21,condition=true,joinType=inner)\nrows=11575.0, cost={12063.0 rows, 5.7560513E7 cpu, 0.0 io, 0.0 network, 4400000.000000001 memory}",color=blue,shape=box]
rel402 [label="rel#402:AbstractConverter(input=rel#401:Subset#22.PHYSICAL.ANY([]).[],convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[])\nrows=11575.0, cost={inf}",shape=box]
subset355 [label="rel#355:Subset#22.LOGICAL.ANY([]).[]"]
subset401 [label="rel#401:Subset#22.PHYSICAL.ANY([]).[]",color=red]
}
subgraph cluster23{
label="Set 23 RecordType(ANY r_regionkey)";
rel222 [label="rel#222:DrillScanRel(table=[cp, tpch/region.parquet],groupscan=ParquetGroupScan [entries=[ReadEntryWithPath [path=classpath:/tpch/region.parquet]], selectionRoot=classpath:/tpch/region.parquet, numFiles=1, numRowGroups=1, usedMetadataFile=false, columns=[`r_regionkey`]])\nrows=5.0, cost={5.0 rows, 5.0 cpu, 0.0 io, 0.0 network, 0.0 memory}",color=blue,shape=box]
rel388 [label="rel#388:AbstractConverter(input=rel#387:Subset#23.PHYSICAL.SINGLETON([]).[],convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[])\nrows=5.0, cost={inf}",shape=box]
rel386 [label="rel#386:ScanPrel(table=[cp, tpch/region.parquet],groupscan=ParquetGroupScan [entries=[ReadEntryWithPath [path=classpath:/tpch/region.parquet]], selectionRoot=classpath:/tpch/region.parquet, numFiles=1, numRowGroups=1, usedMetadataFile=false, columns=[`r_regionkey`]])\nrows=5.0, cost={5.0 rows, 5.0 cpu, 5.0 io, 0.0 network, 0.0 memory}",color=blue,shape=box]
rel419 [label="rel#419:AbstractConverter(input=rel#418:Subset#23.PHYSICAL.ANY([]).[],convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[])\nrows=5.0, cost={inf}",shape=box]
rel420 [label="rel#420:AbstractConverter(input=rel#418:Subset#23.PHYSICAL.ANY([]).[],convention=PHYSICAL,DrillDistributionTraitDef=SINGLETON([]),sort=[])\nrows=5.0, cost={inf}",shape=box]
rel442 [label="rel#442:UnionExchangePrel(input=rel#418:Subset#23.PHYSICAL.ANY([]).[])\nrows=5.0, cost={10.0 rows, 45.0 cpu, 5.0 io, 20480.0 network, 0.0 memory}",shape=box]
subset356 [label="rel#356:Subset#23.LOGICAL.ANY([]).[]"]
subset387 [label="rel#387:Subset#23.PHYSICAL.SINGLETON([]).[]"]
subset418 [label="rel#418:Subset#23.PHYSICAL.ANY([]).[]"]
subset418 -> subset387; }
subgraph cluster24{
label="Set 24 RecordType(ANY r_regionkey)";
rel357 [label="rel#357:DrillFilterRel(input=rel#356:Subset#23,condition==($0, 1))\nrows=1.0, cost={10.0 rows, 28.0 cpu, 0.0 io, 0.0 network, 0.0 memory}",color=blue,shape=box]
rel374 [label="rel#374:AbstractConverter(input=rel#373:Subset#24.PHYSICAL.SINGLETON([]).[],convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[])\nrows=1.0, cost={inf}",shape=box]
rel421 [label="rel#421:FilterPrel(input=rel#387:Subset#23,condition==($0, 1))\nrows=1.0, cost={10.0 rows, 28.0 cpu, 5.0 io, 0.0 network, 0.0 memory}",color=blue,shape=box]
subset358 [label="rel#358:Subset#24.LOGICAL.ANY([]).[]"]
subset373 [label="rel#373:Subset#24.PHYSICAL.SINGLETON([]).[]"]
}
subgraph cluster25{
label="Set 25 RecordType(ANY $f0)";
rel359 [label="rel#359:DrillAggregateRel(input=rel#358:Subset#24,group={},agg#0=SINGLE_VALUE($0))\nrows=1.0, cost={11.0 rows, 40.0 cpu, 0.0 io, 0.0 network, 8.8 memory}",color=blue,shape=box]
rel377 [label="rel#377:AbstractConverter(input=rel#376:Subset#25.PHYSICAL.SINGLETON([]).[],convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[])\nrows=1.0, cost={inf}",shape=box]
rel375 [label="rel#375:StreamAggPrel(input=rel#373:Subset#24,group={},agg#0=SINGLE_VALUE($0))\nrows=1.0, cost={11.0 rows, 40.0 cpu, 5.0 io, 0.0 network, 0.0 memory}",color=blue,shape=box]
rel404 [label="rel#404:AbstractConverter(input=rel#403:Subset#25.PHYSICAL.BROADCAST_DISTRIBUTED([]).[],convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[])\nrows=1.0, cost={inf}",shape=box]
rel405 [label="rel#405:AbstractConverter(input=rel#403:Subset#25.PHYSICAL.BROADCAST_DISTRIBUTED([]).[],convention=PHYSICAL,DrillDistributionTraitDef=SINGLETON([]),sort=[])\nrows=1.0, cost={inf}",shape=box]
rel406 [label="rel#406:AbstractConverter(input=rel#376:Subset#25.PHYSICAL.SINGLETON([]).[],convention=PHYSICAL,DrillDistributionTraitDef=BROADCAST_DISTRIBUTED([]),sort=[])\nrows=1.0, cost={inf}",shape=box]
rel443 [label="rel#443:BroadcastExchangePrel(input=rel#376:Subset#25.PHYSICAL.SINGLETON([]).[])\nrows=1.0, cost={12.0 rows, 48.0 cpu, 5.0 io, 409.5999999999999 network, 0.0 memory}",color=blue,shape=box]
rel444 [label="rel#444:UnionExchangePrel(input=rel#403:Subset#25.PHYSICAL.BROADCAST_DISTRIBUTED([]).[])\nrows=1.0, cost={13.0 rows, 56.0 cpu, 5.0 io, 4505.6 network, 0.0 memory}",shape=box]
subset360 [label="rel#360:Subset#25.LOGICAL.ANY([]).[]"]
subset376 [label="rel#376:Subset#25.PHYSICAL.SINGLETON([]).[]"]
subset403 [label="rel#403:Subset#25.PHYSICAL.BROADCAST_DISTRIBUTED([]).[]"]
}
subgraph cluster26{
label="Set 26 RecordType(ANY last_name, ANY n_nationkey, ANY n_name, ANY $f0)";
rel361 [label="rel#361:DrillJoinRel(left=rel#355:Subset#22,right=rel#360:Subset#25,condition=true,joinType=left)\nrows=11575.0, cost={23650.0 rows, 5.7560553E7 cpu, 0.0 io, 0.0 network, 4400017.600000001 memory}",color=blue,shape=box]
rel409 [label="rel#409:AbstractConverter(input=rel#408:Subset#26.PHYSICAL.ANY([]).[],convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[])\nrows=11575.0, cost={inf}",shape=box]
rel407 [label="rel#407:NestedLoopJoinPrel(left=rel#401:Subset#22,right=rel#403:Subset#25.PHYSICAL.BROADCAST_DISTRIBUTED([]).[],condition=true,joinType=left)\nrows=11575.0, cost={inf}",shape=box]
subset362 [label="rel#362:Subset#26.LOGICAL.ANY([]).[]"]
subset408 [label="rel#408:Subset#26.PHYSICAL.ANY([]).[]"]
}
subgraph cluster27{
label="Set 27 RecordType(ANY last_name, ANY n_nationkey, ANY n_name, ANY $f0)";
rel363 [label="rel#363:DrillFilterRel(input=rel#362:Subset#26,condition==($1, $3))\nrows=1736.25, cost={35225.0 rows, 5.7613798E7 cpu, 0.0 io, 0.0 network, 4400017.600000001 memory}",color=blue,shape=box]
rel411 [label="rel#411:AbstractConverter(input=rel#410:Subset#27.PHYSICAL.SINGLETON([]).[],convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[])\nrows=1736.25, cost={inf}",shape=box]
rel426 [label="rel#426:AbstractConverter(input=rel#425:Subset#27.PHYSICAL.ANY([]).[],convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[])\nrows=1736.25, cost={inf}",shape=box]
rel427 [label="rel#427:AbstractConverter(input=rel#425:Subset#27.PHYSICAL.ANY([]).[],convention=PHYSICAL,DrillDistributionTraitDef=SINGLETON([]),sort=[])\nrows=1736.25, cost={inf}",shape=box]
rel424 [label="rel#424:FilterPrel(input=rel#408:Subset#26,condition==($1, $3))\nrows=1736.25, cost={inf}",shape=box]
rel428 [label="rel#428:UnionExchangePrel(input=rel#425:Subset#27.PHYSICAL.ANY([]).[])\nrows=1736.25, cost={inf}",shape=box]
subset364 [label="rel#364:Subset#27.LOGICAL.ANY([]).[]"]
subset410 [label="rel#410:Subset#27.PHYSICAL.SINGLETON([]).[]"]
subset425 [label="rel#425:Subset#27.PHYSICAL.ANY([]).[]"]
subset425 -> subset410; }
subgraph cluster28{
label="Set 28 RecordType(ANY last_name, ANY n_nationkey, ANY n_name, ANY $f0)";
rel365 [label="rel#365:DrillLimitRel(input=rel#364:Subset#27,fetch=1)\nrows=1.0, cost={35226.0 rows, 5.7613802E7 cpu, 0.0 io, 0.0 network, 4400017.600000001 memory}",color=blue,shape=box]
rel393 [label="rel#393:AbstractConverter(input=rel#392:Subset#28.PHYSICAL.ANY([]).[],convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[])\nrows=1.0, cost={inf}",shape=box]
rel414 [label="rel#414:AbstractConverter(input=rel#413:Subset#28.PHYSICAL.SINGLETON([]).[],convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[])\nrows=1.0, cost={inf}",shape=box]
rel415 [label="rel#415:AbstractConverter(input=rel#392:Subset#28.PHYSICAL.ANY([]).[],convention=PHYSICAL,DrillDistributionTraitDef=SINGLETON([]),sort=[])\nrows=1.0, cost={inf}",shape=box]
rel412 [label="rel#412:LimitPrel(input=rel#410:Subset#27,fetch=1)\nrows=1.0, cost={inf}",shape=box]
rel417 [label="rel#417:UnionExchangePrel(input=rel#392:Subset#28.PHYSICAL.ANY([]).[])\nrows=1.0, cost={inf}",shape=box]
rel435 [label="rel#435:LimitPrel(input=rel#434:Subset#32,fetch=1)\nrows=1.0, cost={inf}",shape=box]
subset366 [label="rel#366:Subset#28.LOGICAL.ANY([]).[]"]
subset392 [label="rel#392:Subset#28.PHYSICAL.ANY([]).[]"]
subset413 [label="rel#413:Subset#28.PHYSICAL.SINGLETON([]).[]"]
subset392 -> subset413; }
subgraph cluster29{
label="Set 29 RecordType(ANY last_name, ANY n_name)";
rel367 [label="rel#367:DrillProjectRel(input=rel#366:Subset#28,last_name=$0,n_name=$2)\nrows=1.0, cost={35227.0 rows, 5.7613804E7 cpu, 0.0 io, 0.0 network, 4400017.600000001 memory}",color=blue,shape=box]
rel380 [label="rel#380:AbstractConverter(input=rel#379:Subset#29.PHYSICAL.SINGLETON([]).[],convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[])\nrows=1.0, cost={inf}",shape=box]
rel396 [label="rel#396:AbstractConverter(input=rel#395:Subset#29.PHYSICAL.ANY([]).[],convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[])\nrows=1.0, cost={inf}",shape=box]
rel397 [label="rel#397:AbstractConverter(input=rel#395:Subset#29.PHYSICAL.ANY([]).[],convention=PHYSICAL,DrillDistributionTraitDef=SINGLETON([]),sort=[])\nrows=1.0, cost={inf}",shape=box]
rel394 [label="rel#394:ProjectPrel(input=rel#392:Subset#28,last_name=$0,n_name=$2)\nrows=1.0, cost={inf}",shape=box]
rel398 [label="rel#398:UnionExchangePrel(input=rel#395:Subset#29.PHYSICAL.ANY([]).[])\nrows=1.0, cost={inf}",shape=box]
rel416 [label="rel#416:ProjectPrel(input=rel#413:Subset#28,last_name=$0,n_name=$2)\nrows=1.0, cost={inf}",shape=box]
subset368 [label="rel#368:Subset#29.LOGICAL.ANY([]).[]"]
subset379 [label="rel#379:Subset#29.PHYSICAL.SINGLETON([]).[]"]
subset395 [label="rel#395:Subset#29.PHYSICAL.ANY([]).[]"]
subset395 -> subset379; }
subgraph cluster30{
label="Set 30 RecordType(ANY last_name, ANY n_name)";
rel369 [label="rel#369:DrillScreenRel(input=rel#368:Subset#29)\nrows=1.0, cost={35227.1 rows, 5.76138041E7 cpu, 0.0 io, 0.0 network, 4400017.600000001 memory}",color=blue,shape=box]
rel372 [label="rel#372:AbstractConverter(input=rel#371:Subset#30.PHYSICAL.SINGLETON([]).[],convention=LOGICAL,DrillDistributionTraitDef=ANY([]),sort=[])\nrows=1.0, cost={inf}",shape=box]
rel381 [label="rel#381:ScreenPrel(input=rel#379:Subset#29)\nrows=1.0, cost={inf}",shape=box]
subset370 [label="rel#370:Subset#30.LOGICAL.ANY([]).[]"]
subset371 [label="rel#371:Subset#30.PHYSICAL.SINGLETON([]).[]"]
}
subgraph cluster31{
label="Set 31 RecordType(ANY last_name, ANY n_nationkey, ANY n_name, ANY $f0)";
rel429 [label="rel#429:LimitPrel(input=rel#425:Subset#27,fetch=1)\nrows=1.0, cost={inf}",shape=box]
rel441 [label="rel#441:LimitPrel(input=rel#434:Subset#32.PHYSICAL.SINGLETON([]).[],fetch=1)\nrows=1.0, cost={inf}",shape=box]
subset432 [label="rel#432:Subset#31.PHYSICAL.ANY([]).[]"]
}
subgraph cluster32{
label="Set 32 RecordType(ANY last_name, ANY n_nationkey, ANY n_name, ANY $f0)";
rel433 [label="rel#433:UnionExchangePrel(input=rel#432:Subset#31.PHYSICAL.ANY([]).[])\nrows=1.0, cost={inf}",shape=box]
subset434 [label="rel#434:Subset#32.PHYSICAL.SINGLETON([]).[]"]
}
root -> subset371;
subset352 -> rel248[color=blue];
subset352 -> rel385; rel385 -> subset384;
subset384 -> rel383[color=blue];
subset353 -> rel250[color=blue];
subset353 -> rel391; rel391 -> subset390;
subset390 -> rel389[color=blue];
subset355 -> rel354[color=blue]; rel354 -> subset352[color=blue,label="0"]; rel354 -> subset353[color=blue,label="1"];
subset355 -> rel402; rel402 -> subset401;
subset356 -> rel222[color=blue];
subset356 -> rel388; rel388 -> subset387;
subset387 -> rel386[color=blue];
subset356 -> rel419; rel419 -> subset418;
subset387 -> rel420; rel420 -> subset418;
subset387 -> rel442; rel442 -> subset418;
subset358 -> rel357[color=blue]; rel357 -> subset356[color=blue];
subset358 -> rel374; rel374 -> subset373;
subset373 -> rel421[color=blue]; rel421 -> subset387[color=blue];
subset360 -> rel359[color=blue]; rel359 -> subset358[color=blue];
subset360 -> rel377; rel377 -> subset376;
subset376 -> rel375[color=blue]; rel375 -> subset373[color=blue];
subset360 -> rel404; rel404 -> subset403;
subset376 -> rel405; rel405 -> subset403;
subset403 -> rel406; rel406 -> subset376;
subset403 -> rel443[color=blue]; rel443 -> subset376[color=blue];
subset376 -> rel444; rel444 -> subset403;
subset362 -> rel361[color=blue]; rel361 -> subset355[color=blue,label="0"]; rel361 -> subset360[color=blue,label="1"];
subset362 -> rel409; rel409 -> subset408;
subset408 -> rel407; rel407 -> subset401[label="0"]; rel407 -> subset403[label="1"];
subset364 -> rel363[color=blue]; rel363 -> subset362[color=blue];
subset364 -> rel411; rel411 -> subset410;
subset364 -> rel426; rel426 -> subset425;
subset410 -> rel427; rel427 -> subset425;
subset425 -> rel424; rel424 -> subset408;
subset410 -> rel428; rel428 -> subset425;
subset366 -> rel365[color=blue]; rel365 -> subset364[color=blue];
subset366 -> rel393; rel393 -> subset392;
subset366 -> rel414; rel414 -> subset413;
subset413 -> rel415; rel415 -> subset392;
subset413 -> rel412; rel412 -> subset410;
subset413 -> rel417; rel417 -> subset392;
subset413 -> rel435; rel435 -> subset434;
subset368 -> rel367[color=blue]; rel367 -> subset366[color=blue];
subset368 -> rel380; rel380 -> subset379;
subset368 -> rel396; rel396 -> subset395;
subset379 -> rel397; rel397 -> subset395;
subset395 -> rel394; rel394 -> subset392;
subset379 -> rel398; rel398 -> subset395;
subset379 -> rel416; rel416 -> subset413;
subset370 -> rel369[color=blue]; rel369 -> subset368[color=blue];
subset370 -> rel372; rel372 -> subset371;
subset371 -> rel381; rel381 -> subset379;
subset432 -> rel429; rel429 -> subset425;
subset432 -> rel441; rel441 -> subset434;
subset434 -> rel433; rel433 -> subset432;
}
{noformat}
> Make CannotPlanException great
> ------------------------------
>
> Key: CALCITE-2817
> URL: https://issues.apache.org/jira/browse/CALCITE-2817
> Project: Calcite
> Issue Type: Bug
> Components: core
> Affects Versions: 1.18.0
> Reporter: Vladimir Sitnikov
> Assignee: Julian Hyde
> Priority: Major
>
> 1) Empty subsets are the typical offenders for CannotPlan, so identify them and print before printing the planner dump
> 2) Print Graphviz-compatible output as well so the output is easier to understand
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)