Uploaded image for project: 'Calcite'
  1. Calcite
  2. CALCITE-2845

Avatica duplicates exception messages

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Reopened
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: avatica

      Description

      https://github.com/apache/calcite-avatica/blob/3cfafde9f5f0f1fc3ddc60b5a4db19762c73b96b/core/src/main/java/org/apache/calcite/avatica/AvaticaConnection.java#L577-L578

          } catch (Exception e) {
            throw HELPER.createException(
                "exception while executing query: " + e.getMessage(), e);
          }

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

      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

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                vladimirsitnikov Vladimir Sitnikov
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:

                  Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 0.5h
                  0.5h