[ 
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)

Reply via email to