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/12 17:20:00 UTC

[jira] [Created] (CALCITE-2845) AvaticaConnection#executeQueryInternal duplicates exception messages

Vladimir Sitnikov created CALCITE-2845:
------------------------------------------

             Summary: AvaticaConnection#executeQueryInternal duplicates exception messages
                 Key: CALCITE-2845
                 URL: https://issues.apache.org/jira/browse/CALCITE-2845
             Project: Calcite
          Issue Type: Bug
          Components: avatica
            Reporter: Vladimir Sitnikov


[https://github.com/apache/calcite-avatica/blob/3cfafde9f5f0f1fc3ddc60b5a4db19762c73b96b/core/src/main/java/org/apache/calcite/avatica/AvaticaConnection.java#L577-L578]
{code:java}
    } catch (Exception e) {
      throw HELPER.createException(
          "exception while executing query: " + e.getMessage(), e);
    }{code}
Does {{e.getMessage()}} really help there?
 In fact, it just duplicates the exception message, which makes exception chain harder to follow.

 

There are similar cases for {{getMessage}}, and they should be treated in the similar way.

 

Sample exception (see how "There are not enough rules" is duplicated):
{noformat}
java.lang.RuntimeException: With materializationsEnabled=false, limit=0, sql=explain plan for select empno, desc from sales.emps,
  (SELECT * FROM (VALUES (10, 'SameName')) AS t (id, desc)) as sn
where emps.deptno = sn.id and sn.desc = 'SameName' group by empno, desc

	at org.apache.calcite.test.CalciteAssert.assertQuery(CalciteAssert.java:574)
	at org.apache.calcite.test.CalciteAssert$AssertQuery.lambda$returns$1(CalciteAssert.java:1457)
	at org.apache.calcite.test.CalciteAssert$AssertQuery.withConnection(CalciteAssert.java:1389)
	at org.apache.calcite.test.CalciteAssert$AssertQuery.returns(CalciteAssert.java:1455)
	at org.apache.calcite.test.CalciteAssert$AssertQuery.explainMatches(CalciteAssert.java:1552)
	at org.apache.calcite.test.CalciteAssert$AssertQuery.explainContains(CalciteAssert.java:1547)
	at org.apache.calcite.test.JdbcTest.testInnerJoinValues(JdbcTest.java:2577)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
	at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: java.sql.SQLException: Error while executing SQL "explain plan for select empno, desc from sales.emps,
  (SELECT * FROM (VALUES (10, 'SameName')) AS t (id, desc)) as sn
where emps.deptno = sn.id and sn.desc = 'SameName' group by empno, desc": There are not enough rules to produce a node with desired properties: convention=ENUMERABLE, sort=[].
There is 1 empty subset:
Empty subset 0: rel#2097:Subset#6.ENUMERABLE.[], the original plan was
2090:LogicalAggregate(group=[{0, 1}])
  2088:LogicalProject(subset=[rel#2089:Subset#5.NONE.[]], EMPNO=[$0], DESC=[$3])
    2086:LogicalFilter(subset=[rel#2087:Subset#4.NONE.[]], condition=[AND(=(CAST($1):INTEGER NOT NULL, $2), =($3, 'SameName'))])
      2084:LogicalJoin(subset=[rel#2085:Subset#3.NONE.[]], condition=[true], joinType=[inner])
        2052:EnumerableTableScan(subset=[rel#2080:Subset#0.ENUMERABLE.[]], table=[[SALES, EMPS]])
        2054:LogicalValues(subset=[rel#2081:Subset#1.NONE.[]], tuples=[[{ 10, 'SameName' }]])

Root: rel#2097:Subset#6.ENUMERABLE.[]
Original rel:
LogicalAggregate(group=[{0, 1}]): rowcount = 1.0, cumulative cost = {207.5 rows, 208.5 cpu, 0.0 io}, id = 2079
  LogicalProject(EMPNO=[$0], DESC=[$3]): rowcount = 2.25, cumulative cost = {206.5 rows, 208.5 cpu, 0.0 io}, id = 2078
    LogicalFilter(condition=[AND(=(CAST($1):INTEGER NOT NULL, $2), =($3, 'SameName'))]): rowcount = 2.25, cumulative cost = {204.25 rows, 204.0 cpu, 0.0 io}, id = 2077
      LogicalJoin(condition=[true], joinType=[inner]): rowcount = 100.0, cumulative cost = {202.0 rows, 104.0 cpu, 0.0 io}, id = 2069
        EnumerableTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 2052
        LogicalProject(ID=[$0], DESC=[$1]): rowcount = 1.0, cumulative cost = {2.0 rows, 3.0 cpu, 0.0 io}, id = 2067
          LogicalValues(tuples=[[{ 10, 'SameName' }]]): rowcount = 1.0, cumulative cost = {1.0 rows, 1.0 cpu, 0.0 io}, id = 2054

Sets:
Set#0, type: RecordType(JavaType(int) EMPNO, JavaType(int) DEPTNO)
	rel#2080:Subset#0.ENUMERABLE.[], best=rel#2052, importance=0.5904900000000001
		rel#2052:EnumerableTableScan.ENUMERABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={100.0 rows, 101.0 cpu, 0.0 io}
Set#1, type: RecordType(INTEGER ID, CHAR(8) DESC)
	rel#2081:Subset#1.NONE.[], best=null, importance=0.5904900000000001
		rel#2054:LogicalValues.NONE.[[0, 1], [1]](type=RecordType(INTEGER ID, CHAR(8) DESC),tuples=[{ 10, 'SameName' }]), rowcount=1.0, cumulative cost={inf}
		rel#2082:LogicalProject.NONE.[[0, 1], [1]](input=RelSubset#2081,ID=$0,DESC=$1), rowcount=1.0, cumulative cost={inf}
	rel#2176:Subset#1.ENUMERABLE.[], best=rel#2175, importance=0.5904900000000001
		rel#2175:EnumerableValues.ENUMERABLE.[[0, 1], [1]](type=RecordType(INTEGER ID, CHAR(8) DESC),tuples=[{ 10, 'SameName' }]), rowcount=1.0, cumulative cost={1.0 rows, 1.0 cpu, 0.0 io}
		rel#2200:EnumerableProject.ENUMERABLE.[](input=RelSubset#2176,ID=$0,DESC=$1), rowcount=1.0, cumulative cost={2.0 rows, 3.0 cpu, 0.0 io}
Set#3, type: RecordType(JavaType(int) EMPNO, JavaType(int) DEPTNO, INTEGER ID, CHAR(8) DESC)
	rel#2085:Subset#3.NONE.[], best=null, importance=0.6561
		rel#2084:LogicalJoin.NONE.[](left=RelSubset#2080,right=RelSubset#2081,condition=true,joinType=inner), rowcount=100.0, cumulative cost={inf}
		rel#2123:LogicalProject.NONE.[](input=RelSubset#2122,EMPNO=$2,DEPTNO=$3,ID=$0,DESC=$1), rowcount=100.0, cumulative cost={inf}
	rel#2223:Subset#3.ENUMERABLE.[], best=rel#2228, importance=0.5904900000000001
		rel#2228:EnumerableProject.ENUMERABLE.[](input=RelSubset#2225,EMPNO=$2,DEPTNO=$3,ID=$0,DESC=$1), rowcount=100.0, cumulative cost={403.0 rows, 502.0 cpu, 0.0 io}
		rel#2246:EnumerableJoin.ENUMERABLE.[](left=RelSubset#2080,right=RelSubset#2176,condition=true,joinType=inner), rowcount=100.0, cumulative cost={662.5170185988092 rows, 102.0 cpu, 0.0 io}
Set#4, type: RecordType(JavaType(int) EMPNO, JavaType(int) DEPTNO, INTEGER ID, CHAR(8) DESC)
	rel#2087:Subset#4.NONE.[], best=null, importance=0.7290000000000001
		rel#2086:LogicalFilter.NONE.[](input=RelSubset#2085,condition=AND(=(CAST($1):INTEGER NOT NULL, $2), =($3, 'SameName'))), rowcount=2.25, cumulative cost={inf}
		rel#2103:LogicalJoin.NONE.[](left=RelSubset#2080,right=RelSubset#2102,condition==(CAST($1):INTEGER NOT NULL, $2),joinType=inner), rowcount=15.0, cumulative cost={inf}
		rel#2110:LogicalProject.NONE.[](input=RelSubset#2109,EMPNO=$0,DEPTNO=$1,ID=$3,DESC=$4), rowcount=15.0, cumulative cost={inf}
		rel#2118:LogicalProject.NONE.[](input=RelSubset#2117,EMPNO=$2,DEPTNO=$3,ID=$0,DESC=$1), rowcount=15.0, cumulative cost={inf}
		rel#2129:LogicalProject.NONE.[](input=RelSubset#2126,EMPNO=$2,DEPTNO=$3,ID=$0,DESC=$1), rowcount=15.0, cumulative cost={inf}
		rel#2319:LogicalProject.NONE.[](input=RelSubset#2185,EMPNO=$2,DEPTNO=$3,ID=$0,DESC=$1), rowcount=15.0, cumulative cost={inf}
		rel#2321:LogicalProject.NONE.[](input=RelSubset#2188,EMPNO=$0,DEPTNO=$1,ID=$3,DESC=$4), rowcount=15.0, cumulative cost={inf}
		rel#2380:LogicalFilter.NONE.[](input=RelSubset#2379,condition==(CAST($1):INTEGER NOT NULL, $2)), rowcount=15.0, cumulative cost={inf}
	rel#2190:Subset#4.ENUMERABLE.[], best=rel#2220, importance=0.6561
		rel#2220:EnumerableProject.ENUMERABLE.[](input=RelSubset#2177,EMPNO=$2,DEPTNO=$3,ID=$0,DESC=$1), rowcount=2.25, cumulative cost={307.5 rows, 211.0 cpu, 0.0 io}
		rel#2227:EnumerableProject.ENUMERABLE.[](input=RelSubset#2185,EMPNO=$2,DEPTNO=$3,ID=$0,DESC=$1), rowcount=15.0, cumulative cost={334.0 rows, 463.0 cpu, 0.0 io}
		rel#2230:EnumerableProject.ENUMERABLE.[](input=RelSubset#2188,EMPNO=$0,DEPTNO=$1,ID=$3,DESC=$4), rowcount=15.0, cumulative cost={349.0 rows, 538.0 cpu, 0.0 io}
		rel#2245:EnumerableFilter.ENUMERABLE.[](input=RelSubset#2244,condition==(CAST($1):INTEGER NOT NULL, $2)), rowcount=15.0, cumulative cost={678.5170185988092 rows, 203.0 cpu, 0.0 io}
		rel#2250:EnumerableFilter.ENUMERABLE.[](input=RelSubset#2223,condition=AND(=(CAST($1):INTEGER NOT NULL, $2), =($3, 'SameName'))), rowcount=2.25, cumulative cost={405.25 rows, 602.0 cpu, 0.0 io}
		rel#2385:EnumerableFilter.ENUMERABLE.[](input=RelSubset#2379,condition==(CAST($1):INTEGER NOT NULL, $2)), rowcount=15.0, cumulative cost={inf}
Set#5, type: RecordType(JavaType(int) EMPNO, CHAR(8) DESC)
	rel#2089:Subset#5.NONE.[], best=null, importance=0.81
		rel#2088:LogicalProject.NONE.[](input=RelSubset#2087,EMPNO=$0,DESC=$3), rowcount=2.25, cumulative cost={inf}
		rel#2111:LogicalProject.NONE.[](input=RelSubset#2109,EMPNO=$0,DESC=$4), rowcount=15.0, cumulative cost={inf}
		rel#2119:LogicalProject.NONE.[](input=RelSubset#2117,EMPNO=$2,DESC=$1), rowcount=15.0, cumulative cost={inf}
		rel#2128:LogicalProject.NONE.[](input=RelSubset#2126,EMPNO=$2,DESC=$1), rowcount=15.0, cumulative cost={inf}
		rel#2265:LogicalProject.NONE.[](input=RelSubset#2188,EMPNO=$0,DESC=$4), rowcount=15.0, cumulative cost={inf}
		rel#2267:LogicalProject.NONE.[](input=RelSubset#2185,EMPNO=$2,DESC=$1), rowcount=15.0, cumulative cost={inf}
		rel#2284:LogicalProject.NONE.[](input=RelSubset#2177,EMPNO=$2,DESC=$1), rowcount=2.25, cumulative cost={inf}
		rel#2286:LogicalProject.NONE.[](input=RelSubset#2190,EMPNO=$0,DESC=$3), rowcount=2.25, cumulative cost={inf}
	rel#2179:Subset#5.ENUMERABLE.[], best=rel#2178, importance=0.405
		rel#2178:EnumerableProject.ENUMERABLE.[](input=RelSubset#2177,EMPNO=$2,DESC=$1), rowcount=2.25, cumulative cost={307.5 rows, 206.5 cpu, 0.0 io}
		rel#2186:EnumerableProject.ENUMERABLE.[](input=RelSubset#2185,EMPNO=$2,DESC=$1), rowcount=15.0, cumulative cost={334.0 rows, 433.0 cpu, 0.0 io}
		rel#2189:EnumerableProject.ENUMERABLE.[](input=RelSubset#2188,EMPNO=$0,DESC=$4), rowcount=15.0, cumulative cost={349.0 rows, 508.0 cpu, 0.0 io}
		rel#2191:EnumerableProject.ENUMERABLE.[](input=RelSubset#2190,EMPNO=$0,DESC=$3), rowcount=2.25, cumulative cost={309.75 rows, 215.5 cpu, 0.0 io}
Set#6, type: RecordType(JavaType(int) EMPNO, CHAR(8) DESC)
	rel#2091:Subset#6.NONE.[], best=null, importance=0.9
		rel#2090:LogicalAggregate.NONE.[](input=RelSubset#2089,group={0, 1}), rowcount=1.0, cumulative cost={inf}
		rel#2099:LogicalAggregate.NONE.[](input=RelSubset#2087,group={0, 3}), rowcount=1.0, cumulative cost={inf}
		rel#2112:LogicalAggregate.NONE.[](input=RelSubset#2109,group={0, 4}), rowcount=1.5, cumulative cost={inf}
		rel#2172:LogicalProject.NONE.[](input=RelSubset#2171,EMPNO=$1,DESC=$0), rowcount=1.5, cumulative cost={inf}
		rel#2266:LogicalAggregate.NONE.[](input=RelSubset#2188,group={0, 4}), rowcount=1.5, cumulative cost={inf}
		rel#2287:LogicalAggregate.NONE.[](input=RelSubset#2190,group={0, 3}), rowcount=1.0, cumulative cost={inf}
	rel#2097:Subset#6.ENUMERABLE.[], best=null, importance=1.0
		rel#2098:AbstractConverter.ENUMERABLE.[](input=RelSubset#2091,convention=ENUMERABLE,sort=[]), rowcount=1.0, cumulative cost={inf}
		rel#2174:EnumerableProject.ENUMERABLE.[](input=RelSubset#2173,EMPNO=$1,DESC=$0), rowcount=1.5, cumulative cost={inf}
Set#7, type: RecordType(INTEGER ID, CHAR(8) DESC)
	rel#2102:Subset#7.NONE.[], best=null, importance=0.6561
		rel#2100:LogicalFilter.NONE.[](input=RelSubset#2081,condition==($1, 'SameName')), rowcount=1.0, cumulative cost={inf}
		rel#2141:LogicalProject.NONE.[[0, 1], [1]](input=RelSubset#2102,ID=$0,DESC=$1), rowcount=1.0, cumulative cost={inf}
		rel#2366:LogicalFilter.NONE.[](input=RelSubset#2176,condition==($1, 'SameName')), rowcount=1.0, cumulative cost={inf}
	rel#2183:Subset#7.ENUMERABLE.[], best=rel#2249, importance=0.4782969000000001
		rel#2184:EnumerableProject.ENUMERABLE.[](input=RelSubset#2183,ID=$0,DESC=$1), rowcount=1.0, cumulative cost={3.0 rows, 4.0 cpu, 0.0 io}
		rel#2249:EnumerableFilter.ENUMERABLE.[](input=RelSubset#2176,condition==($1, 'SameName')), rowcount=1.0, cumulative cost={2.0 rows, 2.0 cpu, 0.0 io}
		rel#2383:EnumerableProject.ENUMERABLE.[](input=RelSubset#2102,ID=$0,DESC=$1), rowcount=1.0, cumulative cost={inf}
	rel#2233:Subset#7.ENUMERABLE.[0], best=null, importance=0.4782969000000001
Set#8, type: RecordType(JavaType(int) EMPNO, JavaType(int) DEPTNO, INTEGER DEPTNO0)
	rel#2107:Subset#8.NONE.[], best=null, importance=0.5904900000000001
		rel#2104:LogicalProject.NONE.[](input=RelSubset#2080,EMPNO=$0,DEPTNO=$1,DEPTNO0=CAST($1):INTEGER NOT NULL), rowcount=100.0, cumulative cost={inf}
	rel#2219:Subset#8.ENUMERABLE.[], best=rel#2218, importance=0.4782969000000001
		rel#2218:EnumerableProject.ENUMERABLE.[](input=RelSubset#2080,EMPNO=$0,DEPTNO=$1,DEPTNO0=CAST($1):INTEGER NOT NULL), rowcount=100.0, cumulative cost={200.0 rows, 401.0 cpu, 0.0 io}
	rel#2234:Subset#8.ENUMERABLE.[2], best=null, importance=0.4782969000000001
Set#9, type: RecordType(JavaType(int) EMPNO, JavaType(int) DEPTNO, INTEGER DEPTNO0, INTEGER ID, CHAR(8) DESC)
	rel#2109:Subset#9.NONE.[], best=null, importance=0.6561
		rel#2108:LogicalJoin.NONE.[](left=RelSubset#2107,right=RelSubset#2102,condition==($2, $3),joinType=inner), rowcount=15.0, cumulative cost={inf}
		rel#2127:LogicalProject.NONE.[](input=RelSubset#2126,EMPNO=$2,DEPTNO=$3,DEPTNO0=$4,ID=$0,DESC=$1), rowcount=15.0, cumulative cost={inf}
	rel#2188:Subset#9.ENUMERABLE.[], best=rel#2232, importance=0.5904900000000001
		rel#2232:EnumerableProject.ENUMERABLE.[](input=RelSubset#2185,EMPNO=$2,DEPTNO=$3,DEPTNO0=$4,ID=$0,DESC=$1), rowcount=15.0, cumulative cost={334.0 rows, 478.0 cpu, 0.0 io}
		rel#2236:EnumerableMergeJoin.ENUMERABLE.[[2], [3]](left=RelSubset#2234,right=RelSubset#2233,condition==($2, $3),joinType=inner), rowcount=15.0, cumulative cost={inf}
		rel#2248:EnumerableJoin.ENUMERABLE.[](left=RelSubset#2219,right=RelSubset#2183,condition==($2, $3),joinType=inner), rowcount=15.0, cumulative cost={678.5170185988092 rows, 403.0 cpu, 0.0 io}
Set#10, type: RecordType(INTEGER ID, CHAR(8) DESC, JavaType(int) EMPNO, JavaType(int) DEPTNO)
	rel#2117:Subset#10.NONE.[], best=null, importance=0.6561
		rel#2115:LogicalJoin.NONE.[](left=RelSubset#2102,right=RelSubset#2080,condition==(CAST($3):INTEGER NOT NULL, $0),joinType=inner), rowcount=15.0, cumulative cost={inf}
		rel#2135:LogicalProject.NONE.[](input=RelSubset#2126,ID=$0,DESC=$1,EMPNO=$2,DEPTNO=$3), rowcount=15.0, cumulative cost={inf}
		rel#2148:LogicalProject.NONE.[](input=RelSubset#2087,ID=$2,DESC=$3,EMPNO=$0,DEPTNO=$1), rowcount=2.25, cumulative cost={inf}
		rel#2155:LogicalProject.NONE.[](input=RelSubset#2109,ID=$3,DESC=$4,EMPNO=$0,DEPTNO=$1), rowcount=15.0, cumulative cost={inf}
		rel#2164:LogicalFilter.NONE.[](input=RelSubset#2122,condition=AND(=(CAST($3):INTEGER NOT NULL, $0), =($1, 'SameName'))), rowcount=2.25, cumulative cost={inf}
		rel#2323:LogicalProject.NONE.[](input=RelSubset#2188,ID=$3,DESC=$4,EMPNO=$0,DEPTNO=$1), rowcount=15.0, cumulative cost={inf}
		rel#2325:LogicalProject.NONE.[](input=RelSubset#2185,ID=$0,DESC=$1,EMPNO=$2,DEPTNO=$3), rowcount=15.0, cumulative cost={inf}
		rel#2372:LogicalFilter.NONE.[](input=RelSubset#2371,condition==(CAST($3):INTEGER NOT NULL, $0)), rowcount=15.0, cumulative cost={inf}
	rel#2177:Subset#10.ENUMERABLE.[], best=rel#2264, importance=0.7290000000000001
		rel#2221:EnumerableProject.ENUMERABLE.[](input=RelSubset#2188,ID=$3,DESC=$4,EMPNO=$0,DEPTNO=$1), rowcount=15.0, cumulative cost={349.0 rows, 538.0 cpu, 0.0 io}
		rel#2222:EnumerableProject.ENUMERABLE.[](input=RelSubset#2190,ID=$2,DESC=$3,EMPNO=$0,DEPTNO=$1), rowcount=2.25, cumulative cost={309.75 rows, 220.0 cpu, 0.0 io}
		rel#2226:EnumerableProject.ENUMERABLE.[](input=RelSubset#2185,ID=$0,DESC=$1,EMPNO=$2,DEPTNO=$3), rowcount=15.0, cumulative cost={334.0 rows, 463.0 cpu, 0.0 io}
		rel#2241:EnumerableFilter.ENUMERABLE.[](input=RelSubset#2240,condition==(CAST($3):INTEGER NOT NULL, $0)), rowcount=15.0, cumulative cost={319.0 rows, 203.0 cpu, 0.0 io}
		rel#2264:EnumerableFilter.ENUMERABLE.[](input=RelSubset#2225,condition=AND(=(CAST($3):INTEGER NOT NULL, $0), =($1, 'SameName'))), rowcount=2.25, cumulative cost={305.25 rows, 202.0 cpu, 0.0 io}
		rel#2373:EnumerableFilter.ENUMERABLE.[](input=RelSubset#2371,condition==(CAST($3):INTEGER NOT NULL, $0)), rowcount=15.0, cumulative cost={inf}
Set#11, type: RecordType(INTEGER ID, CHAR(8) DESC, JavaType(int) EMPNO, JavaType(int) DEPTNO)
	rel#2122:Subset#11.NONE.[], best=null, importance=0.5904900000000001
		rel#2120:LogicalJoin.NONE.[](left=RelSubset#2081,right=RelSubset#2080,condition=true,joinType=inner), rowcount=100.0, cumulative cost={inf}
		rel#2138:LogicalProject.NONE.[](input=RelSubset#2085,ID=$2,DESC=$3,EMPNO=$0,DEPTNO=$1), rowcount=100.0, cumulative cost={inf}
	rel#2225:Subset#11.ENUMERABLE.[], best=rel#2237, importance=0.531441
		rel#2224:EnumerableProject.ENUMERABLE.[](input=RelSubset#2223,ID=$2,DESC=$3,EMPNO=$0,DEPTNO=$1), rowcount=100.0, cumulative cost={503.0 rows, 902.0 cpu, 0.0 io}
		rel#2237:EnumerableJoin.ENUMERABLE.[](left=RelSubset#2176,right=RelSubset#2080,condition=true,joinType=inner), rowcount=100.0, cumulative cost={303.0 rows, 102.0 cpu, 0.0 io}
Set#12, type: RecordType(INTEGER ID, CHAR(8) DESC, JavaType(int) EMPNO, JavaType(int) DEPTNO, INTEGER DEPTNO0)
	rel#2126:Subset#12.NONE.[], best=null, importance=0.5904900000000001
		rel#2124:LogicalJoin.NONE.[](left=RelSubset#2102,right=RelSubset#2107,condition==($4, $0),joinType=inner), rowcount=15.0, cumulative cost={inf}
		rel#2152:LogicalProject.NONE.[](input=RelSubset#2109,ID=$3,DESC=$4,EMPNO=$0,DEPTNO=$1,DEPTNO0=$2), rowcount=15.0, cumulative cost={inf}
	rel#2185:Subset#12.ENUMERABLE.[], best=rel#2247, importance=0.531441
		rel#2231:EnumerableProject.ENUMERABLE.[](input=RelSubset#2188,ID=$3,DESC=$4,EMPNO=$0,DEPTNO=$1,DEPTNO0=$2), rowcount=15.0, cumulative cost={349.0 rows, 553.0 cpu, 0.0 io}
		rel#2235:EnumerableMergeJoin.ENUMERABLE.[[0], [4]](left=RelSubset#2233,right=RelSubset#2234,condition==($0, $4),joinType=inner), rowcount=15.0, cumulative cost={inf}
		rel#2247:EnumerableJoin.ENUMERABLE.[](left=RelSubset#2183,right=RelSubset#2219,condition==($0, $4),joinType=inner), rowcount=15.0, cumulative cost={319.0 rows, 403.0 cpu, 0.0 io}
Set#14, type: RecordType(CHAR(8) DESC, JavaType(int) EMPNO)
	rel#2171:Subset#14.NONE.[], best=null, importance=0.81
		rel#2169:LogicalAggregate.NONE.[](input=RelSubset#2126,group={1, 2}), rowcount=1.5, cumulative cost={inf}
		rel#2182:LogicalProject.NONE.[](input=RelSubset#2091,DESC=$1,EMPNO=$0), rowcount=1.0, cumulative cost={inf}
		rel#2192:LogicalAggregate.NONE.[](input=RelSubset#2117,group={1, 2}), rowcount=1.5, cumulative cost={inf}
		rel#2268:LogicalAggregate.NONE.[](input=RelSubset#2185,group={1, 2}), rowcount=1.5, cumulative cost={inf}
		rel#2296:LogicalAggregate.NONE.[](input=RelSubset#2177,group={1, 2}), rowcount=1.0, cumulative cost={inf}
	rel#2173:Subset#14.ENUMERABLE.[], best=null, importance=0.9
		rel#2199:EnumerableProject.ENUMERABLE.[](input=RelSubset#2097,DESC=$1,EMPNO=$0), rowcount=1.0, cumulative cost={inf}
Set#16, type: RecordType(INTEGER ID, CHAR(8) DESC, JavaType(int) EMPNO, JavaType(int) DEPTNO)
	rel#2240:Subset#16.ENUMERABLE.[], best=rel#2238, importance=0.6561
		rel#2238:EnumerableJoin.ENUMERABLE.[](left=RelSubset#2183,right=RelSubset#2080,condition=true,joinType=inner), rowcount=100.0, cumulative cost={304.0 rows, 103.0 cpu, 0.0 io}
Set#17, type: RecordType(JavaType(int) EMPNO, JavaType(int) DEPTNO, INTEGER ID, CHAR(8) DESC)
	rel#2244:Subset#17.ENUMERABLE.[], best=rel#2242, importance=0.5904900000000001
		rel#2242:EnumerableJoin.ENUMERABLE.[](left=RelSubset#2080,right=RelSubset#2183,condition=true,joinType=inner), rowcount=100.0, cumulative cost={663.5170185988092 rows, 103.0 cpu, 0.0 io}
Set#21, type: RecordType(INTEGER ID, CHAR(8) DESC, JavaType(int) EMPNO, JavaType(int) DEPTNO)
	rel#2371:Subset#21.ENUMERABLE.[], best=null, importance=0.5904900000000001
		rel#2370:EnumerableJoin.ENUMERABLE.[](left=RelSubset#2102,right=RelSubset#2080,condition=true,joinType=inner), rowcount=100.0, cumulative cost={inf}
Set#22, type: RecordType(JavaType(int) EMPNO, JavaType(int) DEPTNO, INTEGER ID, CHAR(8) DESC)
	rel#2379:Subset#22.ENUMERABLE.[], best=null, importance=0.6561
		rel#2378:EnumerableJoin.ENUMERABLE.[](left=RelSubset#2080,right=RelSubset#2102,condition=true,joinType=inner), rowcount=100.0, cumulative cost={inf}

Graphviz:
digraph G {
	root [style=filled,label="Root"];
	subgraph cluster0{
		label="Set 0 RecordType(JavaType(int) EMPNO, JavaType(int) DEPTNO)";
		rel2052 [label="rel#2052:EnumerableTableScan(table=[SALES, EMPS])\nrows=100.0, cost={100.0 rows, 101.0 cpu, 0.0 io}",color=blue,shape=box]
		subset2080 [label="rel#2080:Subset#0.ENUMERABLE.[]"]
	}
	subgraph cluster1{
		label="Set 1 RecordType(INTEGER ID, CHAR(8) DESC)";
		rel2054 [label="rel#2054:LogicalValues(type=RecordType(INTEGER ID, CHAR(8) DESC),tuples=[{ 10, 'SameName' }])\nrows=1.0, cost={inf}",shape=box]
		rel2082 [label="rel#2082:LogicalProject(input=RelSubset#2081,ID=$0,DESC=$1)\nrows=1.0, cost={inf}",shape=box]
		rel2175 [label="rel#2175:EnumerableValues(type=RecordType(INTEGER ID, CHAR(8) DESC),tuples=[{ 10, 'SameName' }])\nrows=1.0, cost={1.0 rows, 1.0 cpu, 0.0 io}",color=blue,shape=box]
		rel2200 [label="rel#2200:EnumerableProject(input=RelSubset#2176,ID=$0,DESC=$1)\nrows=1.0, cost={2.0 rows, 3.0 cpu, 0.0 io}",shape=box]
		subset2081 [label="rel#2081:Subset#1.NONE.[]"]
		subset2176 [label="rel#2176:Subset#1.ENUMERABLE.[]"]
	}
	subgraph cluster3{
		label="Set 3 RecordType(JavaType(int) EMPNO, JavaType(int) DEPTNO, INTEGER ID, CHAR(8) DESC)";
		rel2084 [label="rel#2084:LogicalJoin(left=RelSubset#2080,right=RelSubset#2081,condition=true,joinType=inner)\nrows=100.0, cost={inf}",shape=box]
		rel2123 [label="rel#2123:LogicalProject(input=RelSubset#2122,EMPNO=$2,DEPTNO=$3,ID=$0,DESC=$1)\nrows=100.0, cost={inf}",shape=box]
		rel2228 [label="rel#2228:EnumerableProject(input=RelSubset#2225,EMPNO=$2,DEPTNO=$3,ID=$0,DESC=$1)\nrows=100.0, cost={403.0 rows, 502.0 cpu, 0.0 io}",color=blue,shape=box]
		rel2246 [label="rel#2246:EnumerableJoin(left=RelSubset#2080,right=RelSubset#2176,condition=true,joinType=inner)\nrows=100.0, cost={662.5170185988092 rows, 102.0 cpu, 0.0 io}",shape=box]
		subset2085 [label="rel#2085:Subset#3.NONE.[]"]
		subset2223 [label="rel#2223:Subset#3.ENUMERABLE.[]"]
	}
	subgraph cluster4{
		label="Set 4 RecordType(JavaType(int) EMPNO, JavaType(int) DEPTNO, INTEGER ID, CHAR(8) DESC)";
		rel2086 [label="rel#2086:LogicalFilter(input=RelSubset#2085,condition=AND(=(CAST($1):INTEGER NOT NULL, $2), =($3, 'SameName')))\nrows=2.25, cost={inf}",shape=box]
		rel2103 [label="rel#2103:LogicalJoin(left=RelSubset#2080,right=RelSubset#2102,condition==(CAST($1):INTEGER NOT NULL, $2),joinType=inner)\nrows=15.0, cost={inf}",shape=box]
		rel2110 [label="rel#2110:LogicalProject(input=RelSubset#2109,EMPNO=$0,DEPTNO=$1,ID=$3,DESC=$4)\nrows=15.0, cost={inf}",shape=box]
		rel2118 [label="rel#2118:LogicalProject(input=RelSubset#2117,EMPNO=$2,DEPTNO=$3,ID=$0,DESC=$1)\nrows=15.0, cost={inf}",shape=box]
		rel2129 [label="rel#2129:LogicalProject(input=RelSubset#2126,EMPNO=$2,DEPTNO=$3,ID=$0,DESC=$1)\nrows=15.0, cost={inf}",shape=box]
		rel2220 [label="rel#2220:EnumerableProject(input=RelSubset#2177,EMPNO=$2,DEPTNO=$3,ID=$0,DESC=$1)\nrows=2.25, cost={307.5 rows, 211.0 cpu, 0.0 io}",color=blue,shape=box]
		rel2227 [label="rel#2227:EnumerableProject(input=RelSubset#2185,EMPNO=$2,DEPTNO=$3,ID=$0,DESC=$1)\nrows=15.0, cost={334.0 rows, 463.0 cpu, 0.0 io}",shape=box]
		rel2230 [label="rel#2230:EnumerableProject(input=RelSubset#2188,EMPNO=$0,DEPTNO=$1,ID=$3,DESC=$4)\nrows=15.0, cost={349.0 rows, 538.0 cpu, 0.0 io}",shape=box]
		rel2245 [label="rel#2245:EnumerableFilter(input=RelSubset#2244,condition==(CAST($1):INTEGER NOT NULL, $2))\nrows=15.0, cost={678.5170185988092 rows, 203.0 cpu, 0.0 io}",shape=box]
		rel2250 [label="rel#2250:EnumerableFilter(input=RelSubset#2223,condition=AND(=(CAST($1):INTEGER NOT NULL, $2), =($3, 'SameName')))\nrows=2.25, cost={405.25 rows, 602.0 cpu, 0.0 io}",shape=box]
		rel2319 [label="rel#2319:LogicalProject(input=RelSubset#2185,EMPNO=$2,DEPTNO=$3,ID=$0,DESC=$1)\nrows=15.0, cost={inf}",shape=box]
		rel2321 [label="rel#2321:LogicalProject(input=RelSubset#2188,EMPNO=$0,DEPTNO=$1,ID=$3,DESC=$4)\nrows=15.0, cost={inf}",shape=box]
		rel2380 [label="rel#2380:LogicalFilter(input=RelSubset#2379,condition==(CAST($1):INTEGER NOT NULL, $2))\nrows=15.0, cost={inf}",shape=box]
		rel2385 [label="rel#2385:EnumerableFilter(input=RelSubset#2379,condition==(CAST($1):INTEGER NOT NULL, $2))\nrows=15.0, cost={inf}",shape=box]
		subset2087 [label="rel#2087:Subset#4.NONE.[]"]
		subset2190 [label="rel#2190:Subset#4.ENUMERABLE.[]"]
	}
	subgraph cluster5{
		label="Set 5 RecordType(JavaType(int) EMPNO, CHAR(8) DESC)";
		rel2088 [label="rel#2088:LogicalProject(input=RelSubset#2087,EMPNO=$0,DESC=$3)\nrows=2.25, cost={inf}",shape=box]
		rel2111 [label="rel#2111:LogicalProject(input=RelSubset#2109,EMPNO=$0,DESC=$4)\nrows=15.0, cost={inf}",shape=box]
		rel2119 [label="rel#2119:LogicalProject(input=RelSubset#2117,EMPNO=$2,DESC=$1)\nrows=15.0, cost={inf}",shape=box]
		rel2128 [label="rel#2128:LogicalProject(input=RelSubset#2126,EMPNO=$2,DESC=$1)\nrows=15.0, cost={inf}",shape=box]
		rel2178 [label="rel#2178:EnumerableProject(input=RelSubset#2177,EMPNO=$2,DESC=$1)\nrows=2.25, cost={307.5 rows, 206.5 cpu, 0.0 io}",color=blue,shape=box]
		rel2186 [label="rel#2186:EnumerableProject(input=RelSubset#2185,EMPNO=$2,DESC=$1)\nrows=15.0, cost={334.0 rows, 433.0 cpu, 0.0 io}",shape=box]
		rel2189 [label="rel#2189:EnumerableProject(input=RelSubset#2188,EMPNO=$0,DESC=$4)\nrows=15.0, cost={349.0 rows, 508.0 cpu, 0.0 io}",shape=box]
		rel2191 [label="rel#2191:EnumerableProject(input=RelSubset#2190,EMPNO=$0,DESC=$3)\nrows=2.25, cost={309.75 rows, 215.5 cpu, 0.0 io}",shape=box]
		rel2265 [label="rel#2265:LogicalProject(input=RelSubset#2188,EMPNO=$0,DESC=$4)\nrows=15.0, cost={inf}",shape=box]
		rel2267 [label="rel#2267:LogicalProject(input=RelSubset#2185,EMPNO=$2,DESC=$1)\nrows=15.0, cost={inf}",shape=box]
		rel2284 [label="rel#2284:LogicalProject(input=RelSubset#2177,EMPNO=$2,DESC=$1)\nrows=2.25, cost={inf}",shape=box]
		rel2286 [label="rel#2286:LogicalProject(input=RelSubset#2190,EMPNO=$0,DESC=$3)\nrows=2.25, cost={inf}",shape=box]
		subset2089 [label="rel#2089:Subset#5.NONE.[]"]
		subset2179 [label="rel#2179:Subset#5.ENUMERABLE.[]"]
	}
	subgraph cluster6{
		label="Set 6 RecordType(JavaType(int) EMPNO, CHAR(8) DESC)";
		rel2090 [label="rel#2090:LogicalAggregate(input=RelSubset#2089,group={0, 1})\nrows=1.0, cost={inf}",shape=box]
		rel2098 [label="rel#2098:AbstractConverter(input=RelSubset#2091,convention=ENUMERABLE,sort=[])\nrows=1.0, cost={inf}",shape=box]
		rel2099 [label="rel#2099:LogicalAggregate(input=RelSubset#2087,group={0, 3})\nrows=1.0, cost={inf}",shape=box]
		rel2112 [label="rel#2112:LogicalAggregate(input=RelSubset#2109,group={0, 4})\nrows=1.5, cost={inf}",shape=box]
		rel2172 [label="rel#2172:LogicalProject(input=RelSubset#2171,EMPNO=$1,DESC=$0)\nrows=1.5, cost={inf}",shape=box]
		rel2174 [label="rel#2174:EnumerableProject(input=RelSubset#2173,EMPNO=$1,DESC=$0)\nrows=1.5, cost={inf}",shape=box]
		rel2266 [label="rel#2266:LogicalAggregate(input=RelSubset#2188,group={0, 4})\nrows=1.5, cost={inf}",shape=box]
		rel2287 [label="rel#2287:LogicalAggregate(input=RelSubset#2190,group={0, 3})\nrows=1.0, cost={inf}",shape=box]
		subset2091 [label="rel#2091:Subset#6.NONE.[]"]
		subset2097 [label="rel#2097:Subset#6.ENUMERABLE.[]"]
	}
	subgraph cluster7{
		label="Set 7 RecordType(INTEGER ID, CHAR(8) DESC)";
		rel2100 [label="rel#2100:LogicalFilter(input=RelSubset#2081,condition==($1, 'SameName'))\nrows=1.0, cost={inf}",shape=box]
		rel2141 [label="rel#2141:LogicalProject(input=RelSubset#2102,ID=$0,DESC=$1)\nrows=1.0, cost={inf}",shape=box]
		rel2184 [label="rel#2184:EnumerableProject(input=RelSubset#2183,ID=$0,DESC=$1)\nrows=1.0, cost={3.0 rows, 4.0 cpu, 0.0 io}",shape=box]
		rel2249 [label="rel#2249:EnumerableFilter(input=RelSubset#2176,condition==($1, 'SameName'))\nrows=1.0, cost={2.0 rows, 2.0 cpu, 0.0 io}",color=blue,shape=box]
		rel2366 [label="rel#2366:LogicalFilter(input=RelSubset#2176,condition==($1, 'SameName'))\nrows=1.0, cost={inf}",shape=box]
		rel2383 [label="rel#2383:EnumerableProject(input=RelSubset#2102,ID=$0,DESC=$1)\nrows=1.0, cost={inf}",shape=box]
		subset2102 [label="rel#2102:Subset#7.NONE.[]"]
		subset2183 [label="rel#2183:Subset#7.ENUMERABLE.[]"]
		subset2233 [label="rel#2233:Subset#7.ENUMERABLE.[0]",color=red]
		subset2183 -> subset2233;	}
	subgraph cluster8{
		label="Set 8 RecordType(JavaType(int) EMPNO, JavaType(int) DEPTNO, INTEGER DEPTNO0)";
		rel2104 [label="rel#2104:LogicalProject(input=RelSubset#2080,EMPNO=$0,DEPTNO=$1,DEPTNO0=CAST($1):INTEGER NOT NULL)\nrows=100.0, cost={inf}",shape=box]
		rel2218 [label="rel#2218:EnumerableProject(input=RelSubset#2080,EMPNO=$0,DEPTNO=$1,DEPTNO0=CAST($1):INTEGER NOT NULL)\nrows=100.0, cost={200.0 rows, 401.0 cpu, 0.0 io}",color=blue,shape=box]
		subset2107 [label="rel#2107:Subset#8.NONE.[]"]
		subset2219 [label="rel#2219:Subset#8.ENUMERABLE.[]"]
		subset2234 [label="rel#2234:Subset#8.ENUMERABLE.[2]",color=red]
		subset2219 -> subset2234;	}
	subgraph cluster9{
		label="Set 9 RecordType(JavaType(int) EMPNO, JavaType(int) DEPTNO, INTEGER DEPTNO0, INTEGER ID, CHAR(8) DESC)";
		rel2108 [label="rel#2108:LogicalJoin(left=RelSubset#2107,right=RelSubset#2102,condition==($2, $3),joinType=inner)\nrows=15.0, cost={inf}",shape=box]
		rel2127 [label="rel#2127:LogicalProject(input=RelSubset#2126,EMPNO=$2,DEPTNO=$3,DEPTNO0=$4,ID=$0,DESC=$1)\nrows=15.0, cost={inf}",shape=box]
		rel2232 [label="rel#2232:EnumerableProject(input=RelSubset#2185,EMPNO=$2,DEPTNO=$3,DEPTNO0=$4,ID=$0,DESC=$1)\nrows=15.0, cost={334.0 rows, 478.0 cpu, 0.0 io}",color=blue,shape=box]
		rel2236 [label="rel#2236:EnumerableMergeJoin(left=RelSubset#2234,right=RelSubset#2233,condition==($2, $3),joinType=inner)\nrows=15.0, cost={inf}",shape=box]
		rel2248 [label="rel#2248:EnumerableJoin(left=RelSubset#2219,right=RelSubset#2183,condition==($2, $3),joinType=inner)\nrows=15.0, cost={678.5170185988092 rows, 403.0 cpu, 0.0 io}",shape=box]
		subset2109 [label="rel#2109:Subset#9.NONE.[]"]
		subset2188 [label="rel#2188:Subset#9.ENUMERABLE.[]"]
	}
	subgraph cluster10{
		label="Set 10 RecordType(INTEGER ID, CHAR(8) DESC, JavaType(int) EMPNO, JavaType(int) DEPTNO)";
		rel2115 [label="rel#2115:LogicalJoin(left=RelSubset#2102,right=RelSubset#2080,condition==(CAST($3):INTEGER NOT NULL, $0),joinType=inner)\nrows=15.0, cost={inf}",shape=box]
		rel2135 [label="rel#2135:LogicalProject(input=RelSubset#2126,ID=$0,DESC=$1,EMPNO=$2,DEPTNO=$3)\nrows=15.0, cost={inf}",shape=box]
		rel2148 [label="rel#2148:LogicalProject(input=RelSubset#2087,ID=$2,DESC=$3,EMPNO=$0,DEPTNO=$1)\nrows=2.25, cost={inf}",shape=box]
		rel2155 [label="rel#2155:LogicalProject(input=RelSubset#2109,ID=$3,DESC=$4,EMPNO=$0,DEPTNO=$1)\nrows=15.0, cost={inf}",shape=box]
		rel2164 [label="rel#2164:LogicalFilter(input=RelSubset#2122,condition=AND(=(CAST($3):INTEGER NOT NULL, $0), =($1, 'SameName')))\nrows=2.25, cost={inf}",shape=box]
		rel2221 [label="rel#2221:EnumerableProject(input=RelSubset#2188,ID=$3,DESC=$4,EMPNO=$0,DEPTNO=$1)\nrows=15.0, cost={349.0 rows, 538.0 cpu, 0.0 io}",shape=box]
		rel2222 [label="rel#2222:EnumerableProject(input=RelSubset#2190,ID=$2,DESC=$3,EMPNO=$0,DEPTNO=$1)\nrows=2.25, cost={309.75 rows, 220.0 cpu, 0.0 io}",shape=box]
		rel2226 [label="rel#2226:EnumerableProject(input=RelSubset#2185,ID=$0,DESC=$1,EMPNO=$2,DEPTNO=$3)\nrows=15.0, cost={334.0 rows, 463.0 cpu, 0.0 io}",shape=box]
		rel2241 [label="rel#2241:EnumerableFilter(input=RelSubset#2240,condition==(CAST($3):INTEGER NOT NULL, $0))\nrows=15.0, cost={319.0 rows, 203.0 cpu, 0.0 io}",shape=box]
		rel2264 [label="rel#2264:EnumerableFilter(input=RelSubset#2225,condition=AND(=(CAST($3):INTEGER NOT NULL, $0), =($1, 'SameName')))\nrows=2.25, cost={305.25 rows, 202.0 cpu, 0.0 io}",color=blue,shape=box]
		rel2323 [label="rel#2323:LogicalProject(input=RelSubset#2188,ID=$3,DESC=$4,EMPNO=$0,DEPTNO=$1)\nrows=15.0, cost={inf}",shape=box]
		rel2325 [label="rel#2325:LogicalProject(input=RelSubset#2185,ID=$0,DESC=$1,EMPNO=$2,DEPTNO=$3)\nrows=15.0, cost={inf}",shape=box]
		rel2372 [label="rel#2372:LogicalFilter(input=RelSubset#2371,condition==(CAST($3):INTEGER NOT NULL, $0))\nrows=15.0, cost={inf}",shape=box]
		rel2373 [label="rel#2373:EnumerableFilter(input=RelSubset#2371,condition==(CAST($3):INTEGER NOT NULL, $0))\nrows=15.0, cost={inf}",shape=box]
		subset2117 [label="rel#2117:Subset#10.NONE.[]"]
		subset2177 [label="rel#2177:Subset#10.ENUMERABLE.[]"]
	}
	subgraph cluster11{
		label="Set 11 RecordType(INTEGER ID, CHAR(8) DESC, JavaType(int) EMPNO, JavaType(int) DEPTNO)";
		rel2120 [label="rel#2120:LogicalJoin(left=RelSubset#2081,right=RelSubset#2080,condition=true,joinType=inner)\nrows=100.0, cost={inf}",shape=box]
		rel2138 [label="rel#2138:LogicalProject(input=RelSubset#2085,ID=$2,DESC=$3,EMPNO=$0,DEPTNO=$1)\nrows=100.0, cost={inf}",shape=box]
		rel2224 [label="rel#2224:EnumerableProject(input=RelSubset#2223,ID=$2,DESC=$3,EMPNO=$0,DEPTNO=$1)\nrows=100.0, cost={503.0 rows, 902.0 cpu, 0.0 io}",shape=box]
		rel2237 [label="rel#2237:EnumerableJoin(left=RelSubset#2176,right=RelSubset#2080,condition=true,joinType=inner)\nrows=100.0, cost={303.0 rows, 102.0 cpu, 0.0 io}",color=blue,shape=box]
		subset2122 [label="rel#2122:Subset#11.NONE.[]"]
		subset2225 [label="rel#2225:Subset#11.ENUMERABLE.[]"]
	}
	subgraph cluster12{
		label="Set 12 RecordType(INTEGER ID, CHAR(8) DESC, JavaType(int) EMPNO, JavaType(int) DEPTNO, INTEGER DEPTNO0)";
		rel2124 [label="rel#2124:LogicalJoin(left=RelSubset#2102,right=RelSubset#2107,condition==($4, $0),joinType=inner)\nrows=15.0, cost={inf}",shape=box]
		rel2152 [label="rel#2152:LogicalProject(input=RelSubset#2109,ID=$3,DESC=$4,EMPNO=$0,DEPTNO=$1,DEPTNO0=$2)\nrows=15.0, cost={inf}",shape=box]
		rel2231 [label="rel#2231:EnumerableProject(input=RelSubset#2188,ID=$3,DESC=$4,EMPNO=$0,DEPTNO=$1,DEPTNO0=$2)\nrows=15.0, cost={349.0 rows, 553.0 cpu, 0.0 io}",shape=box]
		rel2235 [label="rel#2235:EnumerableMergeJoin(left=RelSubset#2233,right=RelSubset#2234,condition==($0, $4),joinType=inner)\nrows=15.0, cost={inf}",shape=box]
		rel2247 [label="rel#2247:EnumerableJoin(left=RelSubset#2183,right=RelSubset#2219,condition==($0, $4),joinType=inner)\nrows=15.0, cost={319.0 rows, 403.0 cpu, 0.0 io}",color=blue,shape=box]
		subset2126 [label="rel#2126:Subset#12.NONE.[]"]
		subset2185 [label="rel#2185:Subset#12.ENUMERABLE.[]"]
	}
	subgraph cluster14{
		label="Set 14 RecordType(CHAR(8) DESC, JavaType(int) EMPNO)";
		rel2169 [label="rel#2169:LogicalAggregate(input=RelSubset#2126,group={1, 2})\nrows=1.5, cost={inf}",shape=box]
		rel2182 [label="rel#2182:LogicalProject(input=RelSubset#2091,DESC=$1,EMPNO=$0)\nrows=1.0, cost={inf}",shape=box]
		rel2192 [label="rel#2192:LogicalAggregate(input=RelSubset#2117,group={1, 2})\nrows=1.5, cost={inf}",shape=box]
		rel2199 [label="rel#2199:EnumerableProject(input=RelSubset#2097,DESC=$1,EMPNO=$0)\nrows=1.0, cost={inf}",shape=box]
		rel2268 [label="rel#2268:LogicalAggregate(input=RelSubset#2185,group={1, 2})\nrows=1.5, cost={inf}",shape=box]
		rel2296 [label="rel#2296:LogicalAggregate(input=RelSubset#2177,group={1, 2})\nrows=1.0, cost={inf}",shape=box]
		subset2171 [label="rel#2171:Subset#14.NONE.[]"]
		subset2173 [label="rel#2173:Subset#14.ENUMERABLE.[]"]
	}
	subgraph cluster16{
		label="Set 16 RecordType(INTEGER ID, CHAR(8) DESC, JavaType(int) EMPNO, JavaType(int) DEPTNO)";
		rel2238 [label="rel#2238:EnumerableJoin(left=RelSubset#2183,right=RelSubset#2080,condition=true,joinType=inner)\nrows=100.0, cost={304.0 rows, 103.0 cpu, 0.0 io}",color=blue,shape=box]
		subset2240 [label="rel#2240:Subset#16.ENUMERABLE.[]"]
	}
	subgraph cluster17{
		label="Set 17 RecordType(JavaType(int) EMPNO, JavaType(int) DEPTNO, INTEGER ID, CHAR(8) DESC)";
		rel2242 [label="rel#2242:EnumerableJoin(left=RelSubset#2080,right=RelSubset#2183,condition=true,joinType=inner)\nrows=100.0, cost={663.5170185988092 rows, 103.0 cpu, 0.0 io}",color=blue,shape=box]
		subset2244 [label="rel#2244:Subset#17.ENUMERABLE.[]"]
	}
	subgraph cluster21{
		label="Set 21 RecordType(INTEGER ID, CHAR(8) DESC, JavaType(int) EMPNO, JavaType(int) DEPTNO)";
		rel2370 [label="rel#2370:EnumerableJoin(left=RelSubset#2102,right=RelSubset#2080,condition=true,joinType=inner)\nrows=100.0, cost={inf}",shape=box]
		subset2371 [label="rel#2371:Subset#21.ENUMERABLE.[]"]
	}
	subgraph cluster22{
		label="Set 22 RecordType(JavaType(int) EMPNO, JavaType(int) DEPTNO, INTEGER ID, CHAR(8) DESC)";
		rel2378 [label="rel#2378:EnumerableJoin(left=RelSubset#2080,right=RelSubset#2102,condition=true,joinType=inner)\nrows=100.0, cost={inf}",shape=box]
		subset2379 [label="rel#2379:Subset#22.ENUMERABLE.[]"]
	}
	root -> subset2097;
	subset2080 -> rel2052[color=blue];
	subset2081 -> rel2054;
	subset2081 -> rel2082; rel2082 -> subset2081;
	subset2176 -> rel2175[color=blue];
	subset2176 -> rel2200; rel2200 -> subset2176;
	subset2085 -> rel2084; rel2084 -> subset2080[label="0"]; rel2084 -> subset2081[label="1"];
	subset2085 -> rel2123; rel2123 -> subset2122;
	subset2223 -> rel2228[color=blue]; rel2228 -> subset2225[color=blue];
	subset2223 -> rel2246; rel2246 -> subset2080[label="0"]; rel2246 -> subset2176[label="1"];
	subset2087 -> rel2086; rel2086 -> subset2085;
	subset2087 -> rel2103; rel2103 -> subset2080[label="0"]; rel2103 -> subset2102[label="1"];
	subset2087 -> rel2110; rel2110 -> subset2109;
	subset2087 -> rel2118; rel2118 -> subset2117;
	subset2087 -> rel2129; rel2129 -> subset2126;
	subset2190 -> rel2220[color=blue]; rel2220 -> subset2177[color=blue];
	subset2190 -> rel2227; rel2227 -> subset2185;
	subset2190 -> rel2230; rel2230 -> subset2188;
	subset2190 -> rel2245; rel2245 -> subset2244;
	subset2190 -> rel2250; rel2250 -> subset2223;
	subset2087 -> rel2319; rel2319 -> subset2185;
	subset2087 -> rel2321; rel2321 -> subset2188;
	subset2087 -> rel2380; rel2380 -> subset2379;
	subset2190 -> rel2385; rel2385 -> subset2379;
	subset2089 -> rel2088; rel2088 -> subset2087;
	subset2089 -> rel2111; rel2111 -> subset2109;
	subset2089 -> rel2119; rel2119 -> subset2117;
	subset2089 -> rel2128; rel2128 -> subset2126;
	subset2179 -> rel2178[color=blue]; rel2178 -> subset2177[color=blue];
	subset2179 -> rel2186; rel2186 -> subset2185;
	subset2179 -> rel2189; rel2189 -> subset2188;
	subset2179 -> rel2191; rel2191 -> subset2190;
	subset2089 -> rel2265; rel2265 -> subset2188;
	subset2089 -> rel2267; rel2267 -> subset2185;
	subset2089 -> rel2284; rel2284 -> subset2177;
	subset2089 -> rel2286; rel2286 -> subset2190;
	subset2091 -> rel2090; rel2090 -> subset2089;
	subset2097 -> rel2098; rel2098 -> subset2091;
	subset2091 -> rel2099; rel2099 -> subset2087;
	subset2091 -> rel2112; rel2112 -> subset2109;
	subset2091 -> rel2172; rel2172 -> subset2171;
	subset2097 -> rel2174; rel2174 -> subset2173;
	subset2091 -> rel2266; rel2266 -> subset2188;
	subset2091 -> rel2287; rel2287 -> subset2190;
	subset2102 -> rel2100; rel2100 -> subset2081;
	subset2102 -> rel2141; rel2141 -> subset2102;
	subset2183 -> rel2184; rel2184 -> subset2183;
	subset2183 -> rel2249[color=blue]; rel2249 -> subset2176[color=blue];
	subset2102 -> rel2366; rel2366 -> subset2176;
	subset2183 -> rel2383; rel2383 -> subset2102;
	subset2107 -> rel2104; rel2104 -> subset2080;
	subset2219 -> rel2218[color=blue]; rel2218 -> subset2080[color=blue];
	subset2109 -> rel2108; rel2108 -> subset2107[label="0"]; rel2108 -> subset2102[label="1"];
	subset2109 -> rel2127; rel2127 -> subset2126;
	subset2188 -> rel2232[color=blue]; rel2232 -> subset2185[color=blue];
	subset2188 -> rel2236; rel2236 -> subset2234[label="0"]; rel2236 -> subset2233[label="1"];
	subset2188 -> rel2248; rel2248 -> subset2219[label="0"]; rel2248 -> subset2183[label="1"];
	subset2117 -> rel2115; rel2115 -> subset2102[label="0"]; rel2115 -> subset2080[label="1"];
	subset2117 -> rel2135; rel2135 -> subset2126;
	subset2117 -> rel2148; rel2148 -> subset2087;
	subset2117 -> rel2155; rel2155 -> subset2109;
	subset2117 -> rel2164; rel2164 -> subset2122;
	subset2177 -> rel2221; rel2221 -> subset2188;
	subset2177 -> rel2222; rel2222 -> subset2190;
	subset2177 -> rel2226; rel2226 -> subset2185;
	subset2177 -> rel2241; rel2241 -> subset2240;
	subset2177 -> rel2264[color=blue]; rel2264 -> subset2225[color=blue];
	subset2117 -> rel2323; rel2323 -> subset2188;
	subset2117 -> rel2325; rel2325 -> subset2185;
	subset2117 -> rel2372; rel2372 -> subset2371;
	subset2177 -> rel2373; rel2373 -> subset2371;
	subset2122 -> rel2120; rel2120 -> subset2081[label="0"]; rel2120 -> subset2080[label="1"];
	subset2122 -> rel2138; rel2138 -> subset2085;
	subset2225 -> rel2224; rel2224 -> subset2223;
	subset2225 -> rel2237[color=blue]; rel2237 -> subset2176[color=blue,label="0"]; rel2237 -> subset2080[color=blue,label="1"];
	subset2126 -> rel2124; rel2124 -> subset2102[label="0"]; rel2124 -> subset2107[label="1"];
	subset2126 -> rel2152; rel2152 -> subset2109;
	subset2185 -> rel2231; rel2231 -> subset2188;
	subset2185 -> rel2235; rel2235 -> subset2233[label="0"]; rel2235 -> subset2234[label="1"];
	subset2185 -> rel2247[color=blue]; rel2247 -> subset2183[color=blue,label="0"]; rel2247 -> subset2219[color=blue,label="1"];
	subset2171 -> rel2169; rel2169 -> subset2126;
	subset2171 -> rel2182; rel2182 -> subset2091;
	subset2171 -> rel2192; rel2192 -> subset2117;
	subset2173 -> rel2199; rel2199 -> subset2097;
	subset2171 -> rel2268; rel2268 -> subset2185;
	subset2171 -> rel2296; rel2296 -> subset2177;
	subset2240 -> rel2238[color=blue]; rel2238 -> subset2183[color=blue,label="0"]; rel2238 -> subset2080[color=blue,label="1"];
	subset2244 -> rel2242[color=blue]; rel2242 -> subset2080[color=blue,label="0"]; rel2242 -> subset2183[color=blue,label="1"];
	subset2371 -> rel2370; rel2370 -> subset2102[label="0"]; rel2370 -> subset2080[label="1"];
	subset2379 -> rel2378; rel2378 -> subset2080[label="0"]; rel2378 -> subset2102[label="1"];
}
	at org.apache.calcite.avatica.Helper.createException(Helper.java:56)
	at org.apache.calcite.avatica.Helper.createException(Helper.java:41)
	at org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:163)
	at org.apache.calcite.avatica.AvaticaStatement.executeQuery(AvaticaStatement.java:227)
	at org.apache.calcite.test.CalciteAssert.assertQuery(CalciteAssert.java:542)
	... 28 more
Caused by: org.apache.calcite.plan.RelOptPlanner$CannotPlanException: There are not enough rules to produce a node with desired properties: convention=ENUMERABLE, sort=[].
There is 1 empty subset:
Empty subset 0: rel#2097:Subset#6.ENUMERABLE.[], the original plan was
2090:LogicalAggregate(group=[{0, 1}])
  2088:LogicalProject(subset=[rel#2089:Subset#5.NONE.[]], EMPNO=[$0], DESC=[$3])
    2086:LogicalFilter(subset=[rel#2087:Subset#4.NONE.[]], condition=[AND(=(CAST($1):INTEGER NOT NULL, $2), =($3, 'SameName'))])
      2084:LogicalJoin(subset=[rel#2085:Subset#3.NONE.[]], condition=[true], joinType=[inner])
        2052:EnumerableTableScan(subset=[rel#2080:Subset#0.ENUMERABLE.[]], table=[[SALES, EMPS]])
        2054:LogicalValues(subset=[rel#2081:Subset#1.NONE.[]], tuples=[[{ 10, 'SameName' }]])

Root: rel#2097:Subset#6.ENUMERABLE.[]
Original rel:
LogicalAggregate(group=[{0, 1}]): rowcount = 1.0, cumulative cost = {207.5 rows, 208.5 cpu, 0.0 io}, id = 2079
  LogicalProject(EMPNO=[$0], DESC=[$3]): rowcount = 2.25, cumulative cost = {206.5 rows, 208.5 cpu, 0.0 io}, id = 2078
    LogicalFilter(condition=[AND(=(CAST($1):INTEGER NOT NULL, $2), =($3, 'SameName'))]): rowcount = 2.25, cumulative cost = {204.25 rows, 204.0 cpu, 0.0 io}, id = 2077
      LogicalJoin(condition=[true], joinType=[inner]): rowcount = 100.0, cumulative cost = {202.0 rows, 104.0 cpu, 0.0 io}, id = 2069
        EnumerableTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 2052
        LogicalProject(ID=[$0], DESC=[$1]): rowcount = 1.0, cumulative cost = {2.0 rows, 3.0 cpu, 0.0 io}, id = 2067
          LogicalValues(tuples=[[{ 10, 'SameName' }]]): rowcount = 1.0, cumulative cost = {1.0 rows, 1.0 cpu, 0.0 io}, id = 2054

Sets:
Set#0, type: RecordType(JavaType(int) EMPNO, JavaType(int) DEPTNO)
	rel#2080:Subset#0.ENUMERABLE.[], best=rel#2052, importance=0.5904900000000001
		rel#2052:EnumerableTableScan.ENUMERABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={100.0 rows, 101.0 cpu, 0.0 io}
Set#1, type: RecordType(INTEGER ID, CHAR(8) DESC)
	rel#2081:Subset#1.NONE.[], best=null, importance=0.5904900000000001
		rel#2054:LogicalValues.NONE.[[0, 1], [1]](type=RecordType(INTEGER ID, CHAR(8) DESC),tuples=[{ 10, 'SameName' }]), rowcount=1.0, cumulative cost={inf}
		rel#2082:LogicalProject.NONE.[[0, 1], [1]](input=RelSubset#2081,ID=$0,DESC=$1), rowcount=1.0, cumulative cost={inf}
	rel#2176:Subset#1.ENUMERABLE.[], best=rel#2175, importance=0.5904900000000001
		rel#2175:EnumerableValues.ENUMERABLE.[[0, 1], [1]](type=RecordType(INTEGER ID, CHAR(8) DESC),tuples=[{ 10, 'SameName' }]), rowcount=1.0, cumulative cost={1.0 rows, 1.0 cpu, 0.0 io}
		rel#2200:EnumerableProject.ENUMERABLE.[](input=RelSubset#2176,ID=$0,DESC=$1), rowcount=1.0, cumulative cost={2.0 rows, 3.0 cpu, 0.0 io}
Set#3, type: RecordType(JavaType(int) EMPNO, JavaType(int) DEPTNO, INTEGER ID, CHAR(8) DESC)
	rel#2085:Subset#3.NONE.[], best=null, importance=0.6561
		rel#2084:LogicalJoin.NONE.[](left=RelSubset#2080,right=RelSubset#2081,condition=true,joinType=inner), rowcount=100.0, cumulative cost={inf}
		rel#2123:LogicalProject.NONE.[](input=RelSubset#2122,EMPNO=$2,DEPTNO=$3,ID=$0,DESC=$1), rowcount=100.0, cumulative cost={inf}
	rel#2223:Subset#3.ENUMERABLE.[], best=rel#2228, importance=0.5904900000000001
		rel#2228:EnumerableProject.ENUMERABLE.[](input=RelSubset#2225,EMPNO=$2,DEPTNO=$3,ID=$0,DESC=$1), rowcount=100.0, cumulative cost={403.0 rows, 502.0 cpu, 0.0 io}
		rel#2246:EnumerableJoin.ENUMERABLE.[](left=RelSubset#2080,right=RelSubset#2176,condition=true,joinType=inner), rowcount=100.0, cumulative cost={662.5170185988092 rows, 102.0 cpu, 0.0 io}
Set#4, type: RecordType(JavaType(int) EMPNO, JavaType(int) DEPTNO, INTEGER ID, CHAR(8) DESC)
	rel#2087:Subset#4.NONE.[], best=null, importance=0.7290000000000001
		rel#2086:LogicalFilter.NONE.[](input=RelSubset#2085,condition=AND(=(CAST($1):INTEGER NOT NULL, $2), =($3, 'SameName'))), rowcount=2.25, cumulative cost={inf}
		rel#2103:LogicalJoin.NONE.[](left=RelSubset#2080,right=RelSubset#2102,condition==(CAST($1):INTEGER NOT NULL, $2),joinType=inner), rowcount=15.0, cumulative cost={inf}
		rel#2110:LogicalProject.NONE.[](input=RelSubset#2109,EMPNO=$0,DEPTNO=$1,ID=$3,DESC=$4), rowcount=15.0, cumulative cost={inf}
		rel#2118:LogicalProject.NONE.[](input=RelSubset#2117,EMPNO=$2,DEPTNO=$3,ID=$0,DESC=$1), rowcount=15.0, cumulative cost={inf}
		rel#2129:LogicalProject.NONE.[](input=RelSubset#2126,EMPNO=$2,DEPTNO=$3,ID=$0,DESC=$1), rowcount=15.0, cumulative cost={inf}
		rel#2319:LogicalProject.NONE.[](input=RelSubset#2185,EMPNO=$2,DEPTNO=$3,ID=$0,DESC=$1), rowcount=15.0, cumulative cost={inf}
		rel#2321:LogicalProject.NONE.[](input=RelSubset#2188,EMPNO=$0,DEPTNO=$1,ID=$3,DESC=$4), rowcount=15.0, cumulative cost={inf}
		rel#2380:LogicalFilter.NONE.[](input=RelSubset#2379,condition==(CAST($1):INTEGER NOT NULL, $2)), rowcount=15.0, cumulative cost={inf}
	rel#2190:Subset#4.ENUMERABLE.[], best=rel#2220, importance=0.6561
		rel#2220:EnumerableProject.ENUMERABLE.[](input=RelSubset#2177,EMPNO=$2,DEPTNO=$3,ID=$0,DESC=$1), rowcount=2.25, cumulative cost={307.5 rows, 211.0 cpu, 0.0 io}
		rel#2227:EnumerableProject.ENUMERABLE.[](input=RelSubset#2185,EMPNO=$2,DEPTNO=$3,ID=$0,DESC=$1), rowcount=15.0, cumulative cost={334.0 rows, 463.0 cpu, 0.0 io}
		rel#2230:EnumerableProject.ENUMERABLE.[](input=RelSubset#2188,EMPNO=$0,DEPTNO=$1,ID=$3,DESC=$4), rowcount=15.0, cumulative cost={349.0 rows, 538.0 cpu, 0.0 io}
		rel#2245:EnumerableFilter.ENUMERABLE.[](input=RelSubset#2244,condition==(CAST($1):INTEGER NOT NULL, $2)), rowcount=15.0, cumulative cost={678.5170185988092 rows, 203.0 cpu, 0.0 io}
		rel#2250:EnumerableFilter.ENUMERABLE.[](input=RelSubset#2223,condition=AND(=(CAST($1):INTEGER NOT NULL, $2), =($3, 'SameName'))), rowcount=2.25, cumulative cost={405.25 rows, 602.0 cpu, 0.0 io}
		rel#2385:EnumerableFilter.ENUMERABLE.[](input=RelSubset#2379,condition==(CAST($1):INTEGER NOT NULL, $2)), rowcount=15.0, cumulative cost={inf}
Set#5, type: RecordType(JavaType(int) EMPNO, CHAR(8) DESC)
	rel#2089:Subset#5.NONE.[], best=null, importance=0.81
		rel#2088:LogicalProject.NONE.[](input=RelSubset#2087,EMPNO=$0,DESC=$3), rowcount=2.25, cumulative cost={inf}
		rel#2111:LogicalProject.NONE.[](input=RelSubset#2109,EMPNO=$0,DESC=$4), rowcount=15.0, cumulative cost={inf}
		rel#2119:LogicalProject.NONE.[](input=RelSubset#2117,EMPNO=$2,DESC=$1), rowcount=15.0, cumulative cost={inf}
		rel#2128:LogicalProject.NONE.[](input=RelSubset#2126,EMPNO=$2,DESC=$1), rowcount=15.0, cumulative cost={inf}
		rel#2265:LogicalProject.NONE.[](input=RelSubset#2188,EMPNO=$0,DESC=$4), rowcount=15.0, cumulative cost={inf}
		rel#2267:LogicalProject.NONE.[](input=RelSubset#2185,EMPNO=$2,DESC=$1), rowcount=15.0, cumulative cost={inf}
		rel#2284:LogicalProject.NONE.[](input=RelSubset#2177,EMPNO=$2,DESC=$1), rowcount=2.25, cumulative cost={inf}
		rel#2286:LogicalProject.NONE.[](input=RelSubset#2190,EMPNO=$0,DESC=$3), rowcount=2.25, cumulative cost={inf}
	rel#2179:Subset#5.ENUMERABLE.[], best=rel#2178, importance=0.405
		rel#2178:EnumerableProject.ENUMERABLE.[](input=RelSubset#2177,EMPNO=$2,DESC=$1), rowcount=2.25, cumulative cost={307.5 rows, 206.5 cpu, 0.0 io}
		rel#2186:EnumerableProject.ENUMERABLE.[](input=RelSubset#2185,EMPNO=$2,DESC=$1), rowcount=15.0, cumulative cost={334.0 rows, 433.0 cpu, 0.0 io}
		rel#2189:EnumerableProject.ENUMERABLE.[](input=RelSubset#2188,EMPNO=$0,DESC=$4), rowcount=15.0, cumulative cost={349.0 rows, 508.0 cpu, 0.0 io}
		rel#2191:EnumerableProject.ENUMERABLE.[](input=RelSubset#2190,EMPNO=$0,DESC=$3), rowcount=2.25, cumulative cost={309.75 rows, 215.5 cpu, 0.0 io}
Set#6, type: RecordType(JavaType(int) EMPNO, CHAR(8) DESC)
	rel#2091:Subset#6.NONE.[], best=null, importance=0.9
		rel#2090:LogicalAggregate.NONE.[](input=RelSubset#2089,group={0, 1}), rowcount=1.0, cumulative cost={inf}
		rel#2099:LogicalAggregate.NONE.[](input=RelSubset#2087,group={0, 3}), rowcount=1.0, cumulative cost={inf}
		rel#2112:LogicalAggregate.NONE.[](input=RelSubset#2109,group={0, 4}), rowcount=1.5, cumulative cost={inf}
		rel#2172:LogicalProject.NONE.[](input=RelSubset#2171,EMPNO=$1,DESC=$0), rowcount=1.5, cumulative cost={inf}
		rel#2266:LogicalAggregate.NONE.[](input=RelSubset#2188,group={0, 4}), rowcount=1.5, cumulative cost={inf}
		rel#2287:LogicalAggregate.NONE.[](input=RelSubset#2190,group={0, 3}), rowcount=1.0, cumulative cost={inf}
	rel#2097:Subset#6.ENUMERABLE.[], best=null, importance=1.0
		rel#2098:AbstractConverter.ENUMERABLE.[](input=RelSubset#2091,convention=ENUMERABLE,sort=[]), rowcount=1.0, cumulative cost={inf}
		rel#2174:EnumerableProject.ENUMERABLE.[](input=RelSubset#2173,EMPNO=$1,DESC=$0), rowcount=1.5, cumulative cost={inf}
Set#7, type: RecordType(INTEGER ID, CHAR(8) DESC)
	rel#2102:Subset#7.NONE.[], best=null, importance=0.6561
		rel#2100:LogicalFilter.NONE.[](input=RelSubset#2081,condition==($1, 'SameName')), rowcount=1.0, cumulative cost={inf}
		rel#2141:LogicalProject.NONE.[[0, 1], [1]](input=RelSubset#2102,ID=$0,DESC=$1), rowcount=1.0, cumulative cost={inf}
		rel#2366:LogicalFilter.NONE.[](input=RelSubset#2176,condition==($1, 'SameName')), rowcount=1.0, cumulative cost={inf}
	rel#2183:Subset#7.ENUMERABLE.[], best=rel#2249, importance=0.4782969000000001
		rel#2184:EnumerableProject.ENUMERABLE.[](input=RelSubset#2183,ID=$0,DESC=$1), rowcount=1.0, cumulative cost={3.0 rows, 4.0 cpu, 0.0 io}
		rel#2249:EnumerableFilter.ENUMERABLE.[](input=RelSubset#2176,condition==($1, 'SameName')), rowcount=1.0, cumulative cost={2.0 rows, 2.0 cpu, 0.0 io}
		rel#2383:EnumerableProject.ENUMERABLE.[](input=RelSubset#2102,ID=$0,DESC=$1), rowcount=1.0, cumulative cost={inf}
	rel#2233:Subset#7.ENUMERABLE.[0], best=null, importance=0.4782969000000001
Set#8, type: RecordType(JavaType(int) EMPNO, JavaType(int) DEPTNO, INTEGER DEPTNO0)
	rel#2107:Subset#8.NONE.[], best=null, importance=0.5904900000000001
		rel#2104:LogicalProject.NONE.[](input=RelSubset#2080,EMPNO=$0,DEPTNO=$1,DEPTNO0=CAST($1):INTEGER NOT NULL), rowcount=100.0, cumulative cost={inf}
	rel#2219:Subset#8.ENUMERABLE.[], best=rel#2218, importance=0.4782969000000001
		rel#2218:EnumerableProject.ENUMERABLE.[](input=RelSubset#2080,EMPNO=$0,DEPTNO=$1,DEPTNO0=CAST($1):INTEGER NOT NULL), rowcount=100.0, cumulative cost={200.0 rows, 401.0 cpu, 0.0 io}
	rel#2234:Subset#8.ENUMERABLE.[2], best=null, importance=0.4782969000000001
Set#9, type: RecordType(JavaType(int) EMPNO, JavaType(int) DEPTNO, INTEGER DEPTNO0, INTEGER ID, CHAR(8) DESC)
	rel#2109:Subset#9.NONE.[], best=null, importance=0.6561
		rel#2108:LogicalJoin.NONE.[](left=RelSubset#2107,right=RelSubset#2102,condition==($2, $3),joinType=inner), rowcount=15.0, cumulative cost={inf}
		rel#2127:LogicalProject.NONE.[](input=RelSubset#2126,EMPNO=$2,DEPTNO=$3,DEPTNO0=$4,ID=$0,DESC=$1), rowcount=15.0, cumulative cost={inf}
	rel#2188:Subset#9.ENUMERABLE.[], best=rel#2232, importance=0.5904900000000001
		rel#2232:EnumerableProject.ENUMERABLE.[](input=RelSubset#2185,EMPNO=$2,DEPTNO=$3,DEPTNO0=$4,ID=$0,DESC=$1), rowcount=15.0, cumulative cost={334.0 rows, 478.0 cpu, 0.0 io}
		rel#2236:EnumerableMergeJoin.ENUMERABLE.[[2], [3]](left=RelSubset#2234,right=RelSubset#2233,condition==($2, $3),joinType=inner), rowcount=15.0, cumulative cost={inf}
		rel#2248:EnumerableJoin.ENUMERABLE.[](left=RelSubset#2219,right=RelSubset#2183,condition==($2, $3),joinType=inner), rowcount=15.0, cumulative cost={678.5170185988092 rows, 403.0 cpu, 0.0 io}
Set#10, type: RecordType(INTEGER ID, CHAR(8) DESC, JavaType(int) EMPNO, JavaType(int) DEPTNO)
	rel#2117:Subset#10.NONE.[], best=null, importance=0.6561
		rel#2115:LogicalJoin.NONE.[](left=RelSubset#2102,right=RelSubset#2080,condition==(CAST($3):INTEGER NOT NULL, $0),joinType=inner), rowcount=15.0, cumulative cost={inf}
		rel#2135:LogicalProject.NONE.[](input=RelSubset#2126,ID=$0,DESC=$1,EMPNO=$2,DEPTNO=$3), rowcount=15.0, cumulative cost={inf}
		rel#2148:LogicalProject.NONE.[](input=RelSubset#2087,ID=$2,DESC=$3,EMPNO=$0,DEPTNO=$1), rowcount=2.25, cumulative cost={inf}
		rel#2155:LogicalProject.NONE.[](input=RelSubset#2109,ID=$3,DESC=$4,EMPNO=$0,DEPTNO=$1), rowcount=15.0, cumulative cost={inf}
		rel#2164:LogicalFilter.NONE.[](input=RelSubset#2122,condition=AND(=(CAST($3):INTEGER NOT NULL, $0), =($1, 'SameName'))), rowcount=2.25, cumulative cost={inf}
		rel#2323:LogicalProject.NONE.[](input=RelSubset#2188,ID=$3,DESC=$4,EMPNO=$0,DEPTNO=$1), rowcount=15.0, cumulative cost={inf}
		rel#2325:LogicalProject.NONE.[](input=RelSubset#2185,ID=$0,DESC=$1,EMPNO=$2,DEPTNO=$3), rowcount=15.0, cumulative cost={inf}
		rel#2372:LogicalFilter.NONE.[](input=RelSubset#2371,condition==(CAST($3):INTEGER NOT NULL, $0)), rowcount=15.0, cumulative cost={inf}
	rel#2177:Subset#10.ENUMERABLE.[], best=rel#2264, importance=0.7290000000000001
		rel#2221:EnumerableProject.ENUMERABLE.[](input=RelSubset#2188,ID=$3,DESC=$4,EMPNO=$0,DEPTNO=$1), rowcount=15.0, cumulative cost={349.0 rows, 538.0 cpu, 0.0 io}
		rel#2222:EnumerableProject.ENUMERABLE.[](input=RelSubset#2190,ID=$2,DESC=$3,EMPNO=$0,DEPTNO=$1), rowcount=2.25, cumulative cost={309.75 rows, 220.0 cpu, 0.0 io}
		rel#2226:EnumerableProject.ENUMERABLE.[](input=RelSubset#2185,ID=$0,DESC=$1,EMPNO=$2,DEPTNO=$3), rowcount=15.0, cumulative cost={334.0 rows, 463.0 cpu, 0.0 io}
		rel#2241:EnumerableFilter.ENUMERABLE.[](input=RelSubset#2240,condition==(CAST($3):INTEGER NOT NULL, $0)), rowcount=15.0, cumulative cost={319.0 rows, 203.0 cpu, 0.0 io}
		rel#2264:EnumerableFilter.ENUMERABLE.[](input=RelSubset#2225,condition=AND(=(CAST($3):INTEGER NOT NULL, $0), =($1, 'SameName'))), rowcount=2.25, cumulative cost={305.25 rows, 202.0 cpu, 0.0 io}
		rel#2373:EnumerableFilter.ENUMERABLE.[](input=RelSubset#2371,condition==(CAST($3):INTEGER NOT NULL, $0)), rowcount=15.0, cumulative cost={inf}
Set#11, type: RecordType(INTEGER ID, CHAR(8) DESC, JavaType(int) EMPNO, JavaType(int) DEPTNO)
	rel#2122:Subset#11.NONE.[], best=null, importance=0.5904900000000001
		rel#2120:LogicalJoin.NONE.[](left=RelSubset#2081,right=RelSubset#2080,condition=true,joinType=inner), rowcount=100.0, cumulative cost={inf}
		rel#2138:LogicalProject.NONE.[](input=RelSubset#2085,ID=$2,DESC=$3,EMPNO=$0,DEPTNO=$1), rowcount=100.0, cumulative cost={inf}
	rel#2225:Subset#11.ENUMERABLE.[], best=rel#2237, importance=0.531441
		rel#2224:EnumerableProject.ENUMERABLE.[](input=RelSubset#2223,ID=$2,DESC=$3,EMPNO=$0,DEPTNO=$1), rowcount=100.0, cumulative cost={503.0 rows, 902.0 cpu, 0.0 io}
		rel#2237:EnumerableJoin.ENUMERABLE.[](left=RelSubset#2176,right=RelSubset#2080,condition=true,joinType=inner), rowcount=100.0, cumulative cost={303.0 rows, 102.0 cpu, 0.0 io}
Set#12, type: RecordType(INTEGER ID, CHAR(8) DESC, JavaType(int) EMPNO, JavaType(int) DEPTNO, INTEGER DEPTNO0)
	rel#2126:Subset#12.NONE.[], best=null, importance=0.5904900000000001
		rel#2124:LogicalJoin.NONE.[](left=RelSubset#2102,right=RelSubset#2107,condition==($4, $0),joinType=inner), rowcount=15.0, cumulative cost={inf}
		rel#2152:LogicalProject.NONE.[](input=RelSubset#2109,ID=$3,DESC=$4,EMPNO=$0,DEPTNO=$1,DEPTNO0=$2), rowcount=15.0, cumulative cost={inf}
	rel#2185:Subset#12.ENUMERABLE.[], best=rel#2247, importance=0.531441
		rel#2231:EnumerableProject.ENUMERABLE.[](input=RelSubset#2188,ID=$3,DESC=$4,EMPNO=$0,DEPTNO=$1,DEPTNO0=$2), rowcount=15.0, cumulative cost={349.0 rows, 553.0 cpu, 0.0 io}
		rel#2235:EnumerableMergeJoin.ENUMERABLE.[[0], [4]](left=RelSubset#2233,right=RelSubset#2234,condition==($0, $4),joinType=inner), rowcount=15.0, cumulative cost={inf}
		rel#2247:EnumerableJoin.ENUMERABLE.[](left=RelSubset#2183,right=RelSubset#2219,condition==($0, $4),joinType=inner), rowcount=15.0, cumulative cost={319.0 rows, 403.0 cpu, 0.0 io}
Set#14, type: RecordType(CHAR(8) DESC, JavaType(int) EMPNO)
	rel#2171:Subset#14.NONE.[], best=null, importance=0.81
		rel#2169:LogicalAggregate.NONE.[](input=RelSubset#2126,group={1, 2}), rowcount=1.5, cumulative cost={inf}
		rel#2182:LogicalProject.NONE.[](input=RelSubset#2091,DESC=$1,EMPNO=$0), rowcount=1.0, cumulative cost={inf}
		rel#2192:LogicalAggregate.NONE.[](input=RelSubset#2117,group={1, 2}), rowcount=1.5, cumulative cost={inf}
		rel#2268:LogicalAggregate.NONE.[](input=RelSubset#2185,group={1, 2}), rowcount=1.5, cumulative cost={inf}
		rel#2296:LogicalAggregate.NONE.[](input=RelSubset#2177,group={1, 2}), rowcount=1.0, cumulative cost={inf}
	rel#2173:Subset#14.ENUMERABLE.[], best=null, importance=0.9
		rel#2199:EnumerableProject.ENUMERABLE.[](input=RelSubset#2097,DESC=$1,EMPNO=$0), rowcount=1.0, cumulative cost={inf}
Set#16, type: RecordType(INTEGER ID, CHAR(8) DESC, JavaType(int) EMPNO, JavaType(int) DEPTNO)
	rel#2240:Subset#16.ENUMERABLE.[], best=rel#2238, importance=0.6561
		rel#2238:EnumerableJoin.ENUMERABLE.[](left=RelSubset#2183,right=RelSubset#2080,condition=true,joinType=inner), rowcount=100.0, cumulative cost={304.0 rows, 103.0 cpu, 0.0 io}
Set#17, type: RecordType(JavaType(int) EMPNO, JavaType(int) DEPTNO, INTEGER ID, CHAR(8) DESC)
	rel#2244:Subset#17.ENUMERABLE.[], best=rel#2242, importance=0.5904900000000001
		rel#2242:EnumerableJoin.ENUMERABLE.[](left=RelSubset#2080,right=RelSubset#2183,condition=true,joinType=inner), rowcount=100.0, cumulative cost={663.5170185988092 rows, 103.0 cpu, 0.0 io}
Set#21, type: RecordType(INTEGER ID, CHAR(8) DESC, JavaType(int) EMPNO, JavaType(int) DEPTNO)
	rel#2371:Subset#21.ENUMERABLE.[], best=null, importance=0.5904900000000001
		rel#2370:EnumerableJoin.ENUMERABLE.[](left=RelSubset#2102,right=RelSubset#2080,condition=true,joinType=inner), rowcount=100.0, cumulative cost={inf}
Set#22, type: RecordType(JavaType(int) EMPNO, JavaType(int) DEPTNO, INTEGER ID, CHAR(8) DESC)
	rel#2379:Subset#22.ENUMERABLE.[], best=null, importance=0.6561
		rel#2378:EnumerableJoin.ENUMERABLE.[](left=RelSubset#2080,right=RelSubset#2102,condition=true,joinType=inner), rowcount=100.0, cumulative cost={inf}

Graphviz:
digraph G {
	root [style=filled,label="Root"];
	subgraph cluster0{
		label="Set 0 RecordType(JavaType(int) EMPNO, JavaType(int) DEPTNO)";
		rel2052 [label="rel#2052:EnumerableTableScan(table=[SALES, EMPS])\nrows=100.0, cost={100.0 rows, 101.0 cpu, 0.0 io}",color=blue,shape=box]
		subset2080 [label="rel#2080:Subset#0.ENUMERABLE.[]"]
	}
	subgraph cluster1{
		label="Set 1 RecordType(INTEGER ID, CHAR(8) DESC)";
		rel2054 [label="rel#2054:LogicalValues(type=RecordType(INTEGER ID, CHAR(8) DESC),tuples=[{ 10, 'SameName' }])\nrows=1.0, cost={inf}",shape=box]
		rel2082 [label="rel#2082:LogicalProject(input=RelSubset#2081,ID=$0,DESC=$1)\nrows=1.0, cost={inf}",shape=box]
		rel2175 [label="rel#2175:EnumerableValues(type=RecordType(INTEGER ID, CHAR(8) DESC),tuples=[{ 10, 'SameName' }])\nrows=1.0, cost={1.0 rows, 1.0 cpu, 0.0 io}",color=blue,shape=box]
		rel2200 [label="rel#2200:EnumerableProject(input=RelSubset#2176,ID=$0,DESC=$1)\nrows=1.0, cost={2.0 rows, 3.0 cpu, 0.0 io}",shape=box]
		subset2081 [label="rel#2081:Subset#1.NONE.[]"]
		subset2176 [label="rel#2176:Subset#1.ENUMERABLE.[]"]
	}
	subgraph cluster3{
		label="Set 3 RecordType(JavaType(int) EMPNO, JavaType(int) DEPTNO, INTEGER ID, CHAR(8) DESC)";
		rel2084 [label="rel#2084:LogicalJoin(left=RelSubset#2080,right=RelSubset#2081,condition=true,joinType=inner)\nrows=100.0, cost={inf}",shape=box]
		rel2123 [label="rel#2123:LogicalProject(input=RelSubset#2122,EMPNO=$2,DEPTNO=$3,ID=$0,DESC=$1)\nrows=100.0, cost={inf}",shape=box]
		rel2228 [label="rel#2228:EnumerableProject(input=RelSubset#2225,EMPNO=$2,DEPTNO=$3,ID=$0,DESC=$1)\nrows=100.0, cost={403.0 rows, 502.0 cpu, 0.0 io}",color=blue,shape=box]
		rel2246 [label="rel#2246:EnumerableJoin(left=RelSubset#2080,right=RelSubset#2176,condition=true,joinType=inner)\nrows=100.0, cost={662.5170185988092 rows, 102.0 cpu, 0.0 io}",shape=box]
		subset2085 [label="rel#2085:Subset#3.NONE.[]"]
		subset2223 [label="rel#2223:Subset#3.ENUMERABLE.[]"]
	}
	subgraph cluster4{
		label="Set 4 RecordType(JavaType(int) EMPNO, JavaType(int) DEPTNO, INTEGER ID, CHAR(8) DESC)";
		rel2086 [label="rel#2086:LogicalFilter(input=RelSubset#2085,condition=AND(=(CAST($1):INTEGER NOT NULL, $2), =($3, 'SameName')))\nrows=2.25, cost={inf}",shape=box]
		rel2103 [label="rel#2103:LogicalJoin(left=RelSubset#2080,right=RelSubset#2102,condition==(CAST($1):INTEGER NOT NULL, $2),joinType=inner)\nrows=15.0, cost={inf}",shape=box]
		rel2110 [label="rel#2110:LogicalProject(input=RelSubset#2109,EMPNO=$0,DEPTNO=$1,ID=$3,DESC=$4)\nrows=15.0, cost={inf}",shape=box]
		rel2118 [label="rel#2118:LogicalProject(input=RelSubset#2117,EMPNO=$2,DEPTNO=$3,ID=$0,DESC=$1)\nrows=15.0, cost={inf}",shape=box]
		rel2129 [label="rel#2129:LogicalProject(input=RelSubset#2126,EMPNO=$2,DEPTNO=$3,ID=$0,DESC=$1)\nrows=15.0, cost={inf}",shape=box]
		rel2220 [label="rel#2220:EnumerableProject(input=RelSubset#2177,EMPNO=$2,DEPTNO=$3,ID=$0,DESC=$1)\nrows=2.25, cost={307.5 rows, 211.0 cpu, 0.0 io}",color=blue,shape=box]
		rel2227 [label="rel#2227:EnumerableProject(input=RelSubset#2185,EMPNO=$2,DEPTNO=$3,ID=$0,DESC=$1)\nrows=15.0, cost={334.0 rows, 463.0 cpu, 0.0 io}",shape=box]
		rel2230 [label="rel#2230:EnumerableProject(input=RelSubset#2188,EMPNO=$0,DEPTNO=$1,ID=$3,DESC=$4)\nrows=15.0, cost={349.0 rows, 538.0 cpu, 0.0 io}",shape=box]
		rel2245 [label="rel#2245:EnumerableFilter(input=RelSubset#2244,condition==(CAST($1):INTEGER NOT NULL, $2))\nrows=15.0, cost={678.5170185988092 rows, 203.0 cpu, 0.0 io}",shape=box]
		rel2250 [label="rel#2250:EnumerableFilter(input=RelSubset#2223,condition=AND(=(CAST($1):INTEGER NOT NULL, $2), =($3, 'SameName')))\nrows=2.25, cost={405.25 rows, 602.0 cpu, 0.0 io}",shape=box]
		rel2319 [label="rel#2319:LogicalProject(input=RelSubset#2185,EMPNO=$2,DEPTNO=$3,ID=$0,DESC=$1)\nrows=15.0, cost={inf}",shape=box]
		rel2321 [label="rel#2321:LogicalProject(input=RelSubset#2188,EMPNO=$0,DEPTNO=$1,ID=$3,DESC=$4)\nrows=15.0, cost={inf}",shape=box]
		rel2380 [label="rel#2380:LogicalFilter(input=RelSubset#2379,condition==(CAST($1):INTEGER NOT NULL, $2))\nrows=15.0, cost={inf}",shape=box]
		rel2385 [label="rel#2385:EnumerableFilter(input=RelSubset#2379,condition==(CAST($1):INTEGER NOT NULL, $2))\nrows=15.0, cost={inf}",shape=box]
		subset2087 [label="rel#2087:Subset#4.NONE.[]"]
		subset2190 [label="rel#2190:Subset#4.ENUMERABLE.[]"]
	}
	subgraph cluster5{
		label="Set 5 RecordType(JavaType(int) EMPNO, CHAR(8) DESC)";
		rel2088 [label="rel#2088:LogicalProject(input=RelSubset#2087,EMPNO=$0,DESC=$3)\nrows=2.25, cost={inf}",shape=box]
		rel2111 [label="rel#2111:LogicalProject(input=RelSubset#2109,EMPNO=$0,DESC=$4)\nrows=15.0, cost={inf}",shape=box]
		rel2119 [label="rel#2119:LogicalProject(input=RelSubset#2117,EMPNO=$2,DESC=$1)\nrows=15.0, cost={inf}",shape=box]
		rel2128 [label="rel#2128:LogicalProject(input=RelSubset#2126,EMPNO=$2,DESC=$1)\nrows=15.0, cost={inf}",shape=box]
		rel2178 [label="rel#2178:EnumerableProject(input=RelSubset#2177,EMPNO=$2,DESC=$1)\nrows=2.25, cost={307.5 rows, 206.5 cpu, 0.0 io}",color=blue,shape=box]
		rel2186 [label="rel#2186:EnumerableProject(input=RelSubset#2185,EMPNO=$2,DESC=$1)\nrows=15.0, cost={334.0 rows, 433.0 cpu, 0.0 io}",shape=box]
		rel2189 [label="rel#2189:EnumerableProject(input=RelSubset#2188,EMPNO=$0,DESC=$4)\nrows=15.0, cost={349.0 rows, 508.0 cpu, 0.0 io}",shape=box]
		rel2191 [label="rel#2191:EnumerableProject(input=RelSubset#2190,EMPNO=$0,DESC=$3)\nrows=2.25, cost={309.75 rows, 215.5 cpu, 0.0 io}",shape=box]
		rel2265 [label="rel#2265:LogicalProject(input=RelSubset#2188,EMPNO=$0,DESC=$4)\nrows=15.0, cost={inf}",shape=box]
		rel2267 [label="rel#2267:LogicalProject(input=RelSubset#2185,EMPNO=$2,DESC=$1)\nrows=15.0, cost={inf}",shape=box]
		rel2284 [label="rel#2284:LogicalProject(input=RelSubset#2177,EMPNO=$2,DESC=$1)\nrows=2.25, cost={inf}",shape=box]
		rel2286 [label="rel#2286:LogicalProject(input=RelSubset#2190,EMPNO=$0,DESC=$3)\nrows=2.25, cost={inf}",shape=box]
		subset2089 [label="rel#2089:Subset#5.NONE.[]"]
		subset2179 [label="rel#2179:Subset#5.ENUMERABLE.[]"]
	}
	subgraph cluster6{
		label="Set 6 RecordType(JavaType(int) EMPNO, CHAR(8) DESC)";
		rel2090 [label="rel#2090:LogicalAggregate(input=RelSubset#2089,group={0, 1})\nrows=1.0, cost={inf}",shape=box]
		rel2098 [label="rel#2098:AbstractConverter(input=RelSubset#2091,convention=ENUMERABLE,sort=[])\nrows=1.0, cost={inf}",shape=box]
		rel2099 [label="rel#2099:LogicalAggregate(input=RelSubset#2087,group={0, 3})\nrows=1.0, cost={inf}",shape=box]
		rel2112 [label="rel#2112:LogicalAggregate(input=RelSubset#2109,group={0, 4})\nrows=1.5, cost={inf}",shape=box]
		rel2172 [label="rel#2172:LogicalProject(input=RelSubset#2171,EMPNO=$1,DESC=$0)\nrows=1.5, cost={inf}",shape=box]
		rel2174 [label="rel#2174:EnumerableProject(input=RelSubset#2173,EMPNO=$1,DESC=$0)\nrows=1.5, cost={inf}",shape=box]
		rel2266 [label="rel#2266:LogicalAggregate(input=RelSubset#2188,group={0, 4})\nrows=1.5, cost={inf}",shape=box]
		rel2287 [label="rel#2287:LogicalAggregate(input=RelSubset#2190,group={0, 3})\nrows=1.0, cost={inf}",shape=box]
		subset2091 [label="rel#2091:Subset#6.NONE.[]"]
		subset2097 [label="rel#2097:Subset#6.ENUMERABLE.[]"]
	}
	subgraph cluster7{
		label="Set 7 RecordType(INTEGER ID, CHAR(8) DESC)";
		rel2100 [label="rel#2100:LogicalFilter(input=RelSubset#2081,condition==($1, 'SameName'))\nrows=1.0, cost={inf}",shape=box]
		rel2141 [label="rel#2141:LogicalProject(input=RelSubset#2102,ID=$0,DESC=$1)\nrows=1.0, cost={inf}",shape=box]
		rel2184 [label="rel#2184:EnumerableProject(input=RelSubset#2183,ID=$0,DESC=$1)\nrows=1.0, cost={3.0 rows, 4.0 cpu, 0.0 io}",shape=box]
		rel2249 [label="rel#2249:EnumerableFilter(input=RelSubset#2176,condition==($1, 'SameName'))\nrows=1.0, cost={2.0 rows, 2.0 cpu, 0.0 io}",color=blue,shape=box]
		rel2366 [label="rel#2366:LogicalFilter(input=RelSubset#2176,condition==($1, 'SameName'))\nrows=1.0, cost={inf}",shape=box]
		rel2383 [label="rel#2383:EnumerableProject(input=RelSubset#2102,ID=$0,DESC=$1)\nrows=1.0, cost={inf}",shape=box]
		subset2102 [label="rel#2102:Subset#7.NONE.[]"]
		subset2183 [label="rel#2183:Subset#7.ENUMERABLE.[]"]
		subset2233 [label="rel#2233:Subset#7.ENUMERABLE.[0]",color=red]
		subset2183 -> subset2233;	}
	subgraph cluster8{
		label="Set 8 RecordType(JavaType(int) EMPNO, JavaType(int) DEPTNO, INTEGER DEPTNO0)";
		rel2104 [label="rel#2104:LogicalProject(input=RelSubset#2080,EMPNO=$0,DEPTNO=$1,DEPTNO0=CAST($1):INTEGER NOT NULL)\nrows=100.0, cost={inf}",shape=box]
		rel2218 [label="rel#2218:EnumerableProject(input=RelSubset#2080,EMPNO=$0,DEPTNO=$1,DEPTNO0=CAST($1):INTEGER NOT NULL)\nrows=100.0, cost={200.0 rows, 401.0 cpu, 0.0 io}",color=blue,shape=box]
		subset2107 [label="rel#2107:Subset#8.NONE.[]"]
		subset2219 [label="rel#2219:Subset#8.ENUMERABLE.[]"]
		subset2234 [label="rel#2234:Subset#8.ENUMERABLE.[2]",color=red]
		subset2219 -> subset2234;	}
	subgraph cluster9{
		label="Set 9 RecordType(JavaType(int) EMPNO, JavaType(int) DEPTNO, INTEGER DEPTNO0, INTEGER ID, CHAR(8) DESC)";
		rel2108 [label="rel#2108:LogicalJoin(left=RelSubset#2107,right=RelSubset#2102,condition==($2, $3),joinType=inner)\nrows=15.0, cost={inf}",shape=box]
		rel2127 [label="rel#2127:LogicalProject(input=RelSubset#2126,EMPNO=$2,DEPTNO=$3,DEPTNO0=$4,ID=$0,DESC=$1)\nrows=15.0, cost={inf}",shape=box]
		rel2232 [label="rel#2232:EnumerableProject(input=RelSubset#2185,EMPNO=$2,DEPTNO=$3,DEPTNO0=$4,ID=$0,DESC=$1)\nrows=15.0, cost={334.0 rows, 478.0 cpu, 0.0 io}",color=blue,shape=box]
		rel2236 [label="rel#2236:EnumerableMergeJoin(left=RelSubset#2234,right=RelSubset#2233,condition==($2, $3),joinType=inner)\nrows=15.0, cost={inf}",shape=box]
		rel2248 [label="rel#2248:EnumerableJoin(left=RelSubset#2219,right=RelSubset#2183,condition==($2, $3),joinType=inner)\nrows=15.0, cost={678.5170185988092 rows, 403.0 cpu, 0.0 io}",shape=box]
		subset2109 [label="rel#2109:Subset#9.NONE.[]"]
		subset2188 [label="rel#2188:Subset#9.ENUMERABLE.[]"]
	}
	subgraph cluster10{
		label="Set 10 RecordType(INTEGER ID, CHAR(8) DESC, JavaType(int) EMPNO, JavaType(int) DEPTNO)";
		rel2115 [label="rel#2115:LogicalJoin(left=RelSubset#2102,right=RelSubset#2080,condition==(CAST($3):INTEGER NOT NULL, $0),joinType=inner)\nrows=15.0, cost={inf}",shape=box]
		rel2135 [label="rel#2135:LogicalProject(input=RelSubset#2126,ID=$0,DESC=$1,EMPNO=$2,DEPTNO=$3)\nrows=15.0, cost={inf}",shape=box]
		rel2148 [label="rel#2148:LogicalProject(input=RelSubset#2087,ID=$2,DESC=$3,EMPNO=$0,DEPTNO=$1)\nrows=2.25, cost={inf}",shape=box]
		rel2155 [label="rel#2155:LogicalProject(input=RelSubset#2109,ID=$3,DESC=$4,EMPNO=$0,DEPTNO=$1)\nrows=15.0, cost={inf}",shape=box]
		rel2164 [label="rel#2164:LogicalFilter(input=RelSubset#2122,condition=AND(=(CAST($3):INTEGER NOT NULL, $0), =($1, 'SameName')))\nrows=2.25, cost={inf}",shape=box]
		rel2221 [label="rel#2221:EnumerableProject(input=RelSubset#2188,ID=$3,DESC=$4,EMPNO=$0,DEPTNO=$1)\nrows=15.0, cost={349.0 rows, 538.0 cpu, 0.0 io}",shape=box]
		rel2222 [label="rel#2222:EnumerableProject(input=RelSubset#2190,ID=$2,DESC=$3,EMPNO=$0,DEPTNO=$1)\nrows=2.25, cost={309.75 rows, 220.0 cpu, 0.0 io}",shape=box]
		rel2226 [label="rel#2226:EnumerableProject(input=RelSubset#2185,ID=$0,DESC=$1,EMPNO=$2,DEPTNO=$3)\nrows=15.0, cost={334.0 rows, 463.0 cpu, 0.0 io}",shape=box]
		rel2241 [label="rel#2241:EnumerableFilter(input=RelSubset#2240,condition==(CAST($3):INTEGER NOT NULL, $0))\nrows=15.0, cost={319.0 rows, 203.0 cpu, 0.0 io}",shape=box]
		rel2264 [label="rel#2264:EnumerableFilter(input=RelSubset#2225,condition=AND(=(CAST($3):INTEGER NOT NULL, $0), =($1, 'SameName')))\nrows=2.25, cost={305.25 rows, 202.0 cpu, 0.0 io}",color=blue,shape=box]
		rel2323 [label="rel#2323:LogicalProject(input=RelSubset#2188,ID=$3,DESC=$4,EMPNO=$0,DEPTNO=$1)\nrows=15.0, cost={inf}",shape=box]
		rel2325 [label="rel#2325:LogicalProject(input=RelSubset#2185,ID=$0,DESC=$1,EMPNO=$2,DEPTNO=$3)\nrows=15.0, cost={inf}",shape=box]
		rel2372 [label="rel#2372:LogicalFilter(input=RelSubset#2371,condition==(CAST($3):INTEGER NOT NULL, $0))\nrows=15.0, cost={inf}",shape=box]
		rel2373 [label="rel#2373:EnumerableFilter(input=RelSubset#2371,condition==(CAST($3):INTEGER NOT NULL, $0))\nrows=15.0, cost={inf}",shape=box]
		subset2117 [label="rel#2117:Subset#10.NONE.[]"]
		subset2177 [label="rel#2177:Subset#10.ENUMERABLE.[]"]
	}
	subgraph cluster11{
		label="Set 11 RecordType(INTEGER ID, CHAR(8) DESC, JavaType(int) EMPNO, JavaType(int) DEPTNO)";
		rel2120 [label="rel#2120:LogicalJoin(left=RelSubset#2081,right=RelSubset#2080,condition=true,joinType=inner)\nrows=100.0, cost={inf}",shape=box]
		rel2138 [label="rel#2138:LogicalProject(input=RelSubset#2085,ID=$2,DESC=$3,EMPNO=$0,DEPTNO=$1)\nrows=100.0, cost={inf}",shape=box]
		rel2224 [label="rel#2224:EnumerableProject(input=RelSubset#2223,ID=$2,DESC=$3,EMPNO=$0,DEPTNO=$1)\nrows=100.0, cost={503.0 rows, 902.0 cpu, 0.0 io}",shape=box]
		rel2237 [label="rel#2237:EnumerableJoin(left=RelSubset#2176,right=RelSubset#2080,condition=true,joinType=inner)\nrows=100.0, cost={303.0 rows, 102.0 cpu, 0.0 io}",color=blue,shape=box]
		subset2122 [label="rel#2122:Subset#11.NONE.[]"]
		subset2225 [label="rel#2225:Subset#11.ENUMERABLE.[]"]
	}
	subgraph cluster12{
		label="Set 12 RecordType(INTEGER ID, CHAR(8) DESC, JavaType(int) EMPNO, JavaType(int) DEPTNO, INTEGER DEPTNO0)";
		rel2124 [label="rel#2124:LogicalJoin(left=RelSubset#2102,right=RelSubset#2107,condition==($4, $0),joinType=inner)\nrows=15.0, cost={inf}",shape=box]
		rel2152 [label="rel#2152:LogicalProject(input=RelSubset#2109,ID=$3,DESC=$4,EMPNO=$0,DEPTNO=$1,DEPTNO0=$2)\nrows=15.0, cost={inf}",shape=box]
		rel2231 [label="rel#2231:EnumerableProject(input=RelSubset#2188,ID=$3,DESC=$4,EMPNO=$0,DEPTNO=$1,DEPTNO0=$2)\nrows=15.0, cost={349.0 rows, 553.0 cpu, 0.0 io}",shape=box]
		rel2235 [label="rel#2235:EnumerableMergeJoin(left=RelSubset#2233,right=RelSubset#2234,condition==($0, $4),joinType=inner)\nrows=15.0, cost={inf}",shape=box]
		rel2247 [label="rel#2247:EnumerableJoin(left=RelSubset#2183,right=RelSubset#2219,condition==($0, $4),joinType=inner)\nrows=15.0, cost={319.0 rows, 403.0 cpu, 0.0 io}",color=blue,shape=box]
		subset2126 [label="rel#2126:Subset#12.NONE.[]"]
		subset2185 [label="rel#2185:Subset#12.ENUMERABLE.[]"]
	}
	subgraph cluster14{
		label="Set 14 RecordType(CHAR(8) DESC, JavaType(int) EMPNO)";
		rel2169 [label="rel#2169:LogicalAggregate(input=RelSubset#2126,group={1, 2})\nrows=1.5, cost={inf}",shape=box]
		rel2182 [label="rel#2182:LogicalProject(input=RelSubset#2091,DESC=$1,EMPNO=$0)\nrows=1.0, cost={inf}",shape=box]
		rel2192 [label="rel#2192:LogicalAggregate(input=RelSubset#2117,group={1, 2})\nrows=1.5, cost={inf}",shape=box]
		rel2199 [label="rel#2199:EnumerableProject(input=RelSubset#2097,DESC=$1,EMPNO=$0)\nrows=1.0, cost={inf}",shape=box]
		rel2268 [label="rel#2268:LogicalAggregate(input=RelSubset#2185,group={1, 2})\nrows=1.5, cost={inf}",shape=box]
		rel2296 [label="rel#2296:LogicalAggregate(input=RelSubset#2177,group={1, 2})\nrows=1.0, cost={inf}",shape=box]
		subset2171 [label="rel#2171:Subset#14.NONE.[]"]
		subset2173 [label="rel#2173:Subset#14.ENUMERABLE.[]"]
	}
	subgraph cluster16{
		label="Set 16 RecordType(INTEGER ID, CHAR(8) DESC, JavaType(int) EMPNO, JavaType(int) DEPTNO)";
		rel2238 [label="rel#2238:EnumerableJoin(left=RelSubset#2183,right=RelSubset#2080,condition=true,joinType=inner)\nrows=100.0, cost={304.0 rows, 103.0 cpu, 0.0 io}",color=blue,shape=box]
		subset2240 [label="rel#2240:Subset#16.ENUMERABLE.[]"]
	}
	subgraph cluster17{
		label="Set 17 RecordType(JavaType(int) EMPNO, JavaType(int) DEPTNO, INTEGER ID, CHAR(8) DESC)";
		rel2242 [label="rel#2242:EnumerableJoin(left=RelSubset#2080,right=RelSubset#2183,condition=true,joinType=inner)\nrows=100.0, cost={663.5170185988092 rows, 103.0 cpu, 0.0 io}",color=blue,shape=box]
		subset2244 [label="rel#2244:Subset#17.ENUMERABLE.[]"]
	}
	subgraph cluster21{
		label="Set 21 RecordType(INTEGER ID, CHAR(8) DESC, JavaType(int) EMPNO, JavaType(int) DEPTNO)";
		rel2370 [label="rel#2370:EnumerableJoin(left=RelSubset#2102,right=RelSubset#2080,condition=true,joinType=inner)\nrows=100.0, cost={inf}",shape=box]
		subset2371 [label="rel#2371:Subset#21.ENUMERABLE.[]"]
	}
	subgraph cluster22{
		label="Set 22 RecordType(JavaType(int) EMPNO, JavaType(int) DEPTNO, INTEGER ID, CHAR(8) DESC)";
		rel2378 [label="rel#2378:EnumerableJoin(left=RelSubset#2080,right=RelSubset#2102,condition=true,joinType=inner)\nrows=100.0, cost={inf}",shape=box]
		subset2379 [label="rel#2379:Subset#22.ENUMERABLE.[]"]
	}
	root -> subset2097;
	subset2080 -> rel2052[color=blue];
	subset2081 -> rel2054;
	subset2081 -> rel2082; rel2082 -> subset2081;
	subset2176 -> rel2175[color=blue];
	subset2176 -> rel2200; rel2200 -> subset2176;
	subset2085 -> rel2084; rel2084 -> subset2080[label="0"]; rel2084 -> subset2081[label="1"];
	subset2085 -> rel2123; rel2123 -> subset2122;
	subset2223 -> rel2228[color=blue]; rel2228 -> subset2225[color=blue];
	subset2223 -> rel2246; rel2246 -> subset2080[label="0"]; rel2246 -> subset2176[label="1"];
	subset2087 -> rel2086; rel2086 -> subset2085;
	subset2087 -> rel2103; rel2103 -> subset2080[label="0"]; rel2103 -> subset2102[label="1"];
	subset2087 -> rel2110; rel2110 -> subset2109;
	subset2087 -> rel2118; rel2118 -> subset2117;
	subset2087 -> rel2129; rel2129 -> subset2126;
	subset2190 -> rel2220[color=blue]; rel2220 -> subset2177[color=blue];
	subset2190 -> rel2227; rel2227 -> subset2185;
	subset2190 -> rel2230; rel2230 -> subset2188;
	subset2190 -> rel2245; rel2245 -> subset2244;
	subset2190 -> rel2250; rel2250 -> subset2223;
	subset2087 -> rel2319; rel2319 -> subset2185;
	subset2087 -> rel2321; rel2321 -> subset2188;
	subset2087 -> rel2380; rel2380 -> subset2379;
	subset2190 -> rel2385; rel2385 -> subset2379;
	subset2089 -> rel2088; rel2088 -> subset2087;
	subset2089 -> rel2111; rel2111 -> subset2109;
	subset2089 -> rel2119; rel2119 -> subset2117;
	subset2089 -> rel2128; rel2128 -> subset2126;
	subset2179 -> rel2178[color=blue]; rel2178 -> subset2177[color=blue];
	subset2179 -> rel2186; rel2186 -> subset2185;
	subset2179 -> rel2189; rel2189 -> subset2188;
	subset2179 -> rel2191; rel2191 -> subset2190;
	subset2089 -> rel2265; rel2265 -> subset2188;
	subset2089 -> rel2267; rel2267 -> subset2185;
	subset2089 -> rel2284; rel2284 -> subset2177;
	subset2089 -> rel2286; rel2286 -> subset2190;
	subset2091 -> rel2090; rel2090 -> subset2089;
	subset2097 -> rel2098; rel2098 -> subset2091;
	subset2091 -> rel2099; rel2099 -> subset2087;
	subset2091 -> rel2112; rel2112 -> subset2109;
	subset2091 -> rel2172; rel2172 -> subset2171;
	subset2097 -> rel2174; rel2174 -> subset2173;
	subset2091 -> rel2266; rel2266 -> subset2188;
	subset2091 -> rel2287; rel2287 -> subset2190;
	subset2102 -> rel2100; rel2100 -> subset2081;
	subset2102 -> rel2141; rel2141 -> subset2102;
	subset2183 -> rel2184; rel2184 -> subset2183;
	subset2183 -> rel2249[color=blue]; rel2249 -> subset2176[color=blue];
	subset2102 -> rel2366; rel2366 -> subset2176;
	subset2183 -> rel2383; rel2383 -> subset2102;
	subset2107 -> rel2104; rel2104 -> subset2080;
	subset2219 -> rel2218[color=blue]; rel2218 -> subset2080[color=blue];
	subset2109 -> rel2108; rel2108 -> subset2107[label="0"]; rel2108 -> subset2102[label="1"];
	subset2109 -> rel2127; rel2127 -> subset2126;
	subset2188 -> rel2232[color=blue]; rel2232 -> subset2185[color=blue];
	subset2188 -> rel2236; rel2236 -> subset2234[label="0"]; rel2236 -> subset2233[label="1"];
	subset2188 -> rel2248; rel2248 -> subset2219[label="0"]; rel2248 -> subset2183[label="1"];
	subset2117 -> rel2115; rel2115 -> subset2102[label="0"]; rel2115 -> subset2080[label="1"];
	subset2117 -> rel2135; rel2135 -> subset2126;
	subset2117 -> rel2148; rel2148 -> subset2087;
	subset2117 -> rel2155; rel2155 -> subset2109;
	subset2117 -> rel2164; rel2164 -> subset2122;
	subset2177 -> rel2221; rel2221 -> subset2188;
	subset2177 -> rel2222; rel2222 -> subset2190;
	subset2177 -> rel2226; rel2226 -> subset2185;
	subset2177 -> rel2241; rel2241 -> subset2240;
	subset2177 -> rel2264[color=blue]; rel2264 -> subset2225[color=blue];
	subset2117 -> rel2323; rel2323 -> subset2188;
	subset2117 -> rel2325; rel2325 -> subset2185;
	subset2117 -> rel2372; rel2372 -> subset2371;
	subset2177 -> rel2373; rel2373 -> subset2371;
	subset2122 -> rel2120; rel2120 -> subset2081[label="0"]; rel2120 -> subset2080[label="1"];
	subset2122 -> rel2138; rel2138 -> subset2085;
	subset2225 -> rel2224; rel2224 -> subset2223;
	subset2225 -> rel2237[color=blue]; rel2237 -> subset2176[color=blue,label="0"]; rel2237 -> subset2080[color=blue,label="1"];
	subset2126 -> rel2124; rel2124 -> subset2102[label="0"]; rel2124 -> subset2107[label="1"];
	subset2126 -> rel2152; rel2152 -> subset2109;
	subset2185 -> rel2231; rel2231 -> subset2188;
	subset2185 -> rel2235; rel2235 -> subset2233[label="0"]; rel2235 -> subset2234[label="1"];
	subset2185 -> rel2247[color=blue]; rel2247 -> subset2183[color=blue,label="0"]; rel2247 -> subset2219[color=blue,label="1"];
	subset2171 -> rel2169; rel2169 -> subset2126;
	subset2171 -> rel2182; rel2182 -> subset2091;
	subset2171 -> rel2192; rel2192 -> subset2117;
	subset2173 -> rel2199; rel2199 -> subset2097;
	subset2171 -> rel2268; rel2268 -> subset2185;
	subset2171 -> rel2296; rel2296 -> subset2177;
	subset2240 -> rel2238[color=blue]; rel2238 -> subset2183[color=blue,label="0"]; rel2238 -> subset2080[color=blue,label="1"];
	subset2244 -> rel2242[color=blue]; rel2242 -> subset2080[color=blue,label="0"]; rel2242 -> subset2183[color=blue,label="1"];
	subset2371 -> rel2370; rel2370 -> subset2102[label="0"]; rel2370 -> subset2080[label="1"];
	subset2379 -> rel2378; rel2378 -> subset2080[label="0"]; rel2378 -> subset2102[label="1"];
}
	at org.apache.calcite.plan.volcano.RelSubset$CheapestPlanReplacer.visit(RelSubset.java:559)
	at org.apache.calcite.plan.volcano.RelSubset.buildCheapestPlan(RelSubset.java:301)
	at org.apache.calcite.plan.volcano.VolcanoPlanner.findBestExp(VolcanoPlanner.java:655)
	at org.apache.calcite.tools.Programs.lambda$standard$3(Programs.java:298)
	at org.apache.calcite.tools.Programs$SequenceProgram.run(Programs.java:358)
	at org.apache.calcite.prepare.Prepare.optimize(Prepare.java:189)
	at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:314)
	at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:231)
	at org.apache.calcite.prepare.CalcitePrepareImpl.prepare2_(CalcitePrepareImpl.java:772)
	at org.apache.calcite.prepare.CalcitePrepareImpl.prepare_(CalcitePrepareImpl.java:636)
	at org.apache.calcite.prepare.CalcitePrepareImpl.prepareSql(CalcitePrepareImpl.java:606)
	at org.apache.calcite.jdbc.CalciteConnectionImpl.parseQuery(CalciteConnectionImpl.java:229)
	at org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(CalciteMetaImpl.java:550)
	at org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:675)
	at org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:156)
	... 30 more{noformat}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)