Created
March 17, 2019 16:22
-
-
Save lysu/07249e14d0c06336e2b86ea58e7c1b01 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2019-03-18 00:21:37,810 [main] TRACE - new LogicalTableScan#0 | |
2019-03-18 00:21:38,079 [main] TRACE - new LogicalFilter#1 | |
2019-03-18 00:21:38,093 [main] TRACE - new LogicalProject#2 | |
2019-03-18 00:21:38,094 [main] TRACE - new LogicalSort#3 | |
2019-03-18 00:21:38,126 [main] TRACE - new LogicalTableScan#4 | |
2019-03-18 00:21:38,144 [main] TRACE - new HepRelVertex#5 | |
2019-03-18 00:21:38,145 [main] TRACE - new LogicalFilter#6 | |
2019-03-18 00:21:38,145 [main] TRACE - new HepRelVertex#7 | |
2019-03-18 00:21:38,145 [main] TRACE - new LogicalProject#8 | |
2019-03-18 00:21:38,148 [main] TRACE - new HepRelVertex#9 | |
2019-03-18 00:21:38,149 [main] TRACE - new LogicalSort#10 | |
2019-03-18 00:21:38,149 [main] TRACE - new HepRelVertex#11 | |
2019-03-18 00:21:38,212 [main] TRACE - | |
Breadth-first from root: { | |
HepRelVertex#11 = rel#10:LogicalSort.NONE.[0 DESC](input=HepRelVertex#9,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={145.0 rows, 1975.830120661326 cpu, 0.0 io} | |
HepRelVertex#9 = rel#8:LogicalProject.NONE.[](input=HepRelVertex#7,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={130.0 rows, 351.0 cpu, 0.0 io} | |
HepRelVertex#7 = rel#6:LogicalFilter.NONE.[](input=HepRelVertex#5,condition==($1, 'John')), rowcount=15.0, cumulative cost={115.0 rows, 201.0 cpu, 0.0 io} | |
HepRelVertex#5 = rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={100.0 rows, 101.0 cpu, 0.0 io} | |
} | |
2019-03-18 00:21:38,212 [main] TRACE - Applying rule set [SubQueryRemoveRule:Filter, SubQueryRemoveRule:Project, SubQueryRemoveRule:Join] | |
2019-03-18 00:21:38,212 [main] TRACE - collecting garbage | |
2019-03-18 00:21:38,214 [main] DEBUG - For final plan, using rel#10:LogicalSort.NONE.[0 DESC](input=HepRelVertex#9,sort0=$0,dir0=DESC) | |
2019-03-18 00:21:38,214 [main] DEBUG - For final plan, using rel#8:LogicalProject.NONE.[](input=HepRelVertex#7,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9) | |
2019-03-18 00:21:38,214 [main] DEBUG - For final plan, using rel#6:LogicalFilter.NONE.[](input=HepRelVertex#5,condition==($1, 'John')) | |
2019-03-18 00:21:38,214 [main] DEBUG - For final plan, using rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]) | |
2019-03-18 00:21:38,218 [main] TRACE - new RelSubset#12 | |
2019-03-18 00:21:38,222 [main] TRACE - Register rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]) in rel#12:Subset#0.NONE.[] | |
2019-03-18 00:21:38,223 [main] TRACE - Importance of [rel#12:Subset#0.NONE.[]] is 0.0 | |
2019-03-18 00:21:38,225 [main] TRACE - OPTIMIZE Rule-match queued: rule [EnumerableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] | |
2019-03-18 00:21:38,228 [main] TRACE - OPTIMIZE Rule-match queued: rule [BindableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] | |
2019-03-18 00:21:38,228 [main] TRACE - OPTIMIZE Rule-match queued: rule [TableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] | |
2019-03-18 00:21:38,228 [main] TRACE - new LogicalFilter#13 | |
2019-03-18 00:21:38,228 [main] TRACE - new RelSubset#14 | |
2019-03-18 00:21:38,229 [main] TRACE - Register rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')) in rel#14:Subset#1.NONE.[] | |
2019-03-18 00:21:38,229 [main] TRACE - Importance of [rel#12:Subset#0.NONE.[]] to its parent [rel#14:Subset#1.NONE.[]] is 0.0 (parent importance=0.0, child cost=1.0E30, parent cost=1.0E30) | |
2019-03-18 00:21:38,229 [main] TRACE - Importance of [rel#12:Subset#0.NONE.[]] is 0.0 | |
2019-03-18 00:21:38,229 [main] TRACE - Importance of [rel#14:Subset#1.NONE.[]] is 0.0 | |
2019-03-18 00:21:38,230 [main] TRACE - OPTIMIZE Rule-match queued: rule [EnumerableFilterRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] | |
2019-03-18 00:21:38,231 [main] TRACE - OPTIMIZE Rule-match queued: rule [FilterTableScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] | |
2019-03-18 00:21:38,232 [main] TRACE - OPTIMIZE Rule-match queued: rule [MaterializedViewJoinRule(Filter)] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] | |
2019-03-18 00:21:38,233 [main] TRACE - OPTIMIZE Rule-match queued: rule [MaterializedViewFilterScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] | |
2019-03-18 00:21:38,233 [main] TRACE - new LogicalProject#15 | |
2019-03-18 00:21:38,233 [main] TRACE - new RelSubset#16 | |
2019-03-18 00:21:38,234 [main] TRACE - Register rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9) in rel#16:Subset#2.NONE.[] | |
2019-03-18 00:21:38,234 [main] TRACE - Importance of [rel#14:Subset#1.NONE.[]] to its parent [rel#16:Subset#2.NONE.[]] is 0.0 (parent importance=0.0, child cost=1.0E30, parent cost=1.0E30) | |
2019-03-18 00:21:38,234 [main] TRACE - Importance of [rel#14:Subset#1.NONE.[]] is 0.0 | |
2019-03-18 00:21:38,234 [main] TRACE - Importance of [rel#16:Subset#2.NONE.[]] is 0.0 | |
2019-03-18 00:21:38,234 [main] TRACE - OPTIMIZE Rule-match queued: rule [EnumerableProjectRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,234 [main] TRACE - OPTIMIZE Rule-match queued: rule [ProjectRemoveRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,234 [main] TRACE - OPTIMIZE Rule-match queued: rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] | |
2019-03-18 00:21:38,234 [main] TRACE - OPTIMIZE Rule-match queued: rule [ProjectFilterTransposeRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] | |
2019-03-18 00:21:38,235 [main] TRACE - new LogicalSort#17 | |
2019-03-18 00:21:38,235 [main] TRACE - new RelSubset#18 | |
2019-03-18 00:21:38,235 [main] TRACE - Register rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC) in rel#18:Subset#3.NONE.[0 DESC] | |
2019-03-18 00:21:38,235 [main] TRACE - Importance of [rel#16:Subset#2.NONE.[]] to its parent [rel#18:Subset#3.NONE.[0 DESC]] is 0.0 (parent importance=0.0, child cost=1.0E30, parent cost=1.0E30) | |
2019-03-18 00:21:38,235 [main] TRACE - Importance of [rel#16:Subset#2.NONE.[]] is 0.0 | |
2019-03-18 00:21:38,235 [main] TRACE - Importance of [rel#18:Subset#3.NONE.[0 DESC]] is 0.0 | |
2019-03-18 00:21:38,236 [main] TRACE - OPTIMIZE Rule-match queued: rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,236 [main] TRACE - OPTIMIZE Rule-match queued: rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,236 [main] TRACE - OPTIMIZE Rule-match queued: rule [EnumerableSortRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,236 [main] TRACE - OPTIMIZE Rule-match queued: rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,236 [main] TRACE - OPTIMIZE Rule-match queued: rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,236 [main] TRACE - OPTIMIZE Rule-match queued: rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,236 [main] TRACE - Importance of [rel#18:Subset#3.NONE.[0 DESC]] is 1.0 | |
2019-03-18 00:21:38,236 [main] TRACE - new LogicalFilter#19 | |
2019-03-18 00:21:38,236 [main] TRACE - Register: rel#19 is equivalent to rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')) | |
2019-03-18 00:21:38,237 [main] TRACE - new LogicalProject#20 | |
2019-03-18 00:21:38,237 [main] TRACE - Register: rel#20 is equivalent to rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9) | |
2019-03-18 00:21:38,237 [main] TRACE - new LogicalSort#21 | |
2019-03-18 00:21:38,237 [main] TRACE - Register: rel#21 is equivalent to rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC) | |
2019-03-18 00:21:38,237 [main] TRACE - new RelSubset#22 | |
2019-03-18 00:21:38,237 [main] TRACE - new AbstractConverter#23 | |
2019-03-18 00:21:38,238 [main] TRACE - Register rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#18,convention=ENUMERABLE,sort=[0 DESC]) in rel#22:Subset#3.ENUMERABLE.[0 DESC] | |
2019-03-18 00:21:38,238 [main] TRACE - Importance of [rel#18:Subset#3.NONE.[0 DESC]] to its parent [rel#22:Subset#3.ENUMERABLE.[0 DESC]] is 0.495 (parent importance=0.5, child cost=1.0E30, parent cost=1.0E30) | |
2019-03-18 00:21:38,238 [main] TRACE - Importance of [rel#18:Subset#3.NONE.[0 DESC]] is 0.495 | |
2019-03-18 00:21:38,238 [main] TRACE - Importance of [rel#22:Subset#3.ENUMERABLE.[0 DESC]] is 1.0 | |
2019-03-18 00:21:38,238 [main] TRACE - OPTIMIZE Rule-match queued: rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#18,convention=ENUMERABLE,sort=[0 DESC])] | |
2019-03-18 00:21:38,260 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 1/1; PHASE = PRE_PROCESS_MDR; COST = {inf} | |
2019-03-18 00:21:38,279 [main] TRACE - Root: rel#22:Subset#3.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.6561 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.7290000000000001 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
Set#2, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#16:Subset#2.NONE.[], best=null, importance=0.81 | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
Set#3, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#18:Subset#3.NONE.[0 DESC], best=null, importance=0.9 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#22:Subset#3.ENUMERABLE.[0 DESC], best=null, importance=1.0 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#18,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
} | |
subgraph cluster2{ | |
label="Set 2 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
subset16 [label="rel#16:Subset#2.NONE.[]"] | |
} | |
subgraph cluster3{ | |
label="Set 3 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#16,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#18,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
subset18 [label="rel#18:Subset#3.NONE.[0 DESC]"] | |
subset22 [label="rel#22:Subset#3.ENUMERABLE.[0 DESC]",color=red] | |
} | |
root -> subset22; | |
subset12 -> rel0; | |
subset14 -> rel13; rel13 -> subset12; | |
subset16 -> rel15; rel15 -> subset14; | |
subset18 -> rel17; rel17 -> subset16; | |
subset22 -> rel23; rel23 -> subset18; | |
}Importances: { rel#22:Subset#3.ENUMERABLE.[0 DESC]=1.0 rel#18:Subset#3.NONE.[0 DESC]=0.9 rel#16:Subset#2.NONE.[]=0.81 rel#14:Subset#1.NONE.[]=0.7290000000000001 rel#12:Subset#0.NONE.[]=0.6561} | |
2019-03-18 00:21:38,280 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 2/1; PHASE = PRE_PROCESS; COST = {inf} | |
2019-03-18 00:21:38,281 [main] TRACE - Root: rel#22:Subset#3.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.6561 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.7290000000000001 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
Set#2, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#16:Subset#2.NONE.[], best=null, importance=0.81 | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
Set#3, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#18:Subset#3.NONE.[0 DESC], best=null, importance=0.9 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#22:Subset#3.ENUMERABLE.[0 DESC], best=null, importance=1.0 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#18,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
} | |
subgraph cluster2{ | |
label="Set 2 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
subset16 [label="rel#16:Subset#2.NONE.[]"] | |
} | |
subgraph cluster3{ | |
label="Set 3 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#16,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#18,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
subset18 [label="rel#18:Subset#3.NONE.[0 DESC]"] | |
subset22 [label="rel#22:Subset#3.ENUMERABLE.[0 DESC]",color=red] | |
} | |
root -> subset22; | |
subset12 -> rel0; | |
subset14 -> rel13; rel13 -> subset12; | |
subset16 -> rel15; rel15 -> subset14; | |
subset18 -> rel17; rel17 -> subset16; | |
subset22 -> rel23; rel23 -> subset18; | |
}Importances: { rel#22:Subset#3.ENUMERABLE.[0 DESC]=1.0 rel#18:Subset#3.NONE.[0 DESC]=0.9 rel#16:Subset#2.NONE.[]=0.81 rel#14:Subset#1.NONE.[]=0.7290000000000001 rel#12:Subset#0.NONE.[]=0.6561} | |
2019-03-18 00:21:38,282 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 3/1; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,283 [main] TRACE - Root: rel#22:Subset#3.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.6561 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.7290000000000001 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
Set#2, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#16:Subset#2.NONE.[], best=null, importance=0.81 | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
Set#3, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#18:Subset#3.NONE.[0 DESC], best=null, importance=0.9 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#22:Subset#3.ENUMERABLE.[0 DESC], best=null, importance=1.0 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#18,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
} | |
subgraph cluster2{ | |
label="Set 2 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
subset16 [label="rel#16:Subset#2.NONE.[]"] | |
} | |
subgraph cluster3{ | |
label="Set 3 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#16,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#18,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
subset18 [label="rel#18:Subset#3.NONE.[0 DESC]"] | |
subset22 [label="rel#22:Subset#3.ENUMERABLE.[0 DESC]",color=red] | |
} | |
root -> subset22; | |
subset12 -> rel0; | |
subset14 -> rel13; rel13 -> subset12; | |
subset16 -> rel15; rel15 -> subset14; | |
subset18 -> rel17; rel17 -> subset16; | |
subset22 -> rel23; rel23 -> subset18; | |
}Importances: { rel#22:Subset#3.ENUMERABLE.[0 DESC]=1.0 rel#18:Subset#3.NONE.[0 DESC]=0.9 rel#16:Subset#2.NONE.[]=0.81 rel#14:Subset#1.NONE.[]=0.7290000000000001 rel#12:Subset#0.NONE.[]=0.6561} | |
2019-03-18 00:21:38,284 [main] TRACE - Sorted rule queue: | |
rule [EnumerableSortRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 1.0 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.9 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.9 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.9 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.9 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.9 | |
rule [ProjectRemoveRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.81 | |
rule [ProjectFilterTransposeRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.81 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.81 | |
rule [EnumerableProjectRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.81 | |
rule [MaterializedViewFilterScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.7290000000000001 | |
rule [FilterTableScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.7290000000000001 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.7290000000000001 | |
rule [EnumerableFilterRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.7290000000000001 | |
rule [TableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.6561 | |
rule [BindableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.6561 | |
rule [EnumerableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.6561 | |
2019-03-18 00:21:38,285 [main] DEBUG - Pop match: rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#18,convention=ENUMERABLE,sort=[0 DESC])] | |
2019-03-18 00:21:38,285 [main] DEBUG - call#191: Apply rule [ExpandConversionRule] to [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#18,convention=ENUMERABLE,sort=[0 DESC])] | |
2019-03-18 00:21:38,286 [main] DEBUG - call#191 generated 0 successors. | |
2019-03-18 00:21:38,286 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 4/2; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,287 [main] TRACE - Root: rel#22:Subset#3.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.6561 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.7290000000000001 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
Set#2, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#16:Subset#2.NONE.[], best=null, importance=0.81 | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
Set#3, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#18:Subset#3.NONE.[0 DESC], best=null, importance=0.9 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#22:Subset#3.ENUMERABLE.[0 DESC], best=null, importance=1.0 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#18,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
} | |
subgraph cluster2{ | |
label="Set 2 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
subset16 [label="rel#16:Subset#2.NONE.[]"] | |
} | |
subgraph cluster3{ | |
label="Set 3 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#16,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#18,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
subset18 [label="rel#18:Subset#3.NONE.[0 DESC]"] | |
subset22 [label="rel#22:Subset#3.ENUMERABLE.[0 DESC]",color=red] | |
} | |
root -> subset22; | |
subset12 -> rel0; | |
subset14 -> rel13; rel13 -> subset12; | |
subset16 -> rel15; rel15 -> subset14; | |
subset18 -> rel17; rel17 -> subset16; | |
subset22 -> rel23; rel23 -> subset18; | |
}Importances: { rel#22:Subset#3.ENUMERABLE.[0 DESC]=1.0 rel#18:Subset#3.NONE.[0 DESC]=0.9 rel#16:Subset#2.NONE.[]=0.81 rel#14:Subset#1.NONE.[]=0.7290000000000001 rel#12:Subset#0.NONE.[]=0.6561} | |
2019-03-18 00:21:38,288 [main] TRACE - Sorted rule queue: | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.9 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.9 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.9 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.9 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.9 | |
rule [ProjectRemoveRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.81 | |
rule [ProjectFilterTransposeRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.81 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.81 | |
rule [EnumerableProjectRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.81 | |
rule [MaterializedViewFilterScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.7290000000000001 | |
rule [FilterTableScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.7290000000000001 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.7290000000000001 | |
rule [EnumerableFilterRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.7290000000000001 | |
rule [TableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.6561 | |
rule [BindableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.6561 | |
rule [EnumerableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.6561 | |
2019-03-18 00:21:38,288 [main] DEBUG - Pop match: rule [EnumerableSortRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,288 [main] DEBUG - call#149: Apply rule [EnumerableSortRule] to [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,288 [main] TRACE - new RelSubset#24 | |
2019-03-18 00:21:38,289 [main] TRACE - new EnumerableSort#25 | |
2019-03-18 00:21:38,289 [main] DEBUG - Transform to: rel#25 via EnumerableSortRule | |
2019-03-18 00:21:38,290 [main] TRACE - call#149: Rule EnumerableSortRule arguments [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] created rel#25:EnumerableSort | |
2019-03-18 00:21:38,317 [main] TRACE - Register rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC) in rel#22:Subset#3.ENUMERABLE.[0 DESC] | |
2019-03-18 00:21:38,317 [main] TRACE - Importance of [rel#22:Subset#3.ENUMERABLE.[0 DESC]] is 1.0 | |
2019-03-18 00:21:38,317 [main] TRACE - OPTIMIZE Rule-match queued: rule [SortRemoveConstantKeysRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,318 [main] TRACE - OPTIMIZE Rule-match queued: rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,318 [main] TRACE - OPTIMIZE Rule-match queued: rule [SortRemoveRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,318 [main] TRACE - OPTIMIZE Rule-match queued: rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,318 [main] DEBUG - call#149 generated 1 successors: [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,318 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 5/3; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,349 [main] TRACE - Root: rel#22:Subset#3.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.6561 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.7290000000000001 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
Set#2, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#16:Subset#2.NONE.[], best=null, importance=0.81 | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#24:Subset#2.ENUMERABLE.[], best=null, importance=0.405 | |
Set#3, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#18:Subset#3.NONE.[0 DESC], best=null, importance=0.9 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#22:Subset#3.ENUMERABLE.[0 DESC], best=null, importance=1.0 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#18,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
} | |
subgraph cluster2{ | |
label="Set 2 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
subset16 [label="rel#16:Subset#2.NONE.[]"] | |
subset24 [label="rel#24:Subset#2.ENUMERABLE.[]",color=red] | |
} | |
subgraph cluster3{ | |
label="Set 3 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#16,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#18,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#24,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
subset18 [label="rel#18:Subset#3.NONE.[0 DESC]"] | |
subset22 [label="rel#22:Subset#3.ENUMERABLE.[0 DESC]"] | |
} | |
root -> subset22; | |
subset12 -> rel0; | |
subset14 -> rel13; rel13 -> subset12; | |
subset16 -> rel15; rel15 -> subset14; | |
subset18 -> rel17; rel17 -> subset16; | |
subset22 -> rel23; rel23 -> subset18; | |
subset22 -> rel25; rel25 -> subset24; | |
}Importances: { rel#22:Subset#3.ENUMERABLE.[0 DESC]=1.0 rel#18:Subset#3.NONE.[0 DESC]=0.9 rel#16:Subset#2.NONE.[]=0.81 rel#14:Subset#1.NONE.[]=0.7290000000000001 rel#12:Subset#0.NONE.[]=0.6561} | |
2019-03-18 00:21:38,350 [main] TRACE - Sorted rule queue: | |
rule [SortRemoveConstantKeysRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] importance 1.0 | |
rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] importance 1.0 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] importance 1.0 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.9 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.9 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.9 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.9 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.9 | |
rule [ProjectRemoveRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.81 | |
rule [ProjectFilterTransposeRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.81 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.81 | |
rule [EnumerableProjectRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.81 | |
rule [MaterializedViewFilterScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.7290000000000001 | |
rule [FilterTableScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.7290000000000001 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.7290000000000001 | |
rule [EnumerableFilterRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.7290000000000001 | |
rule [TableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.6561 | |
rule [BindableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.6561 | |
rule [EnumerableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.6561 | |
2019-03-18 00:21:38,350 [main] DEBUG - Pop match: rule [SortRemoveRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,350 [main] DEBUG - call#209: Apply rule [SortRemoveRule] to [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,350 [main] TRACE - new RelSubset#26 | |
2019-03-18 00:21:38,350 [main] DEBUG - Transform to: rel#26 via SortRemoveRule | |
2019-03-18 00:21:38,350 [main] TRACE - call#209: Rule SortRemoveRule arguments [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] created rel#26:RelSubset | |
2019-03-18 00:21:38,350 [main] TRACE - Merge set#3 into set#2 | |
2019-03-18 00:21:38,350 [main] TRACE - new RelSubset#27 | |
2019-03-18 00:21:38,351 [main] TRACE - Rename #23 from 'AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#18,convention=ENUMERABLE,sort=[0 DESC])' to 'AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#27,convention=ENUMERABLE,sort=[0 DESC])' | |
2019-03-18 00:21:38,352 [main] TRACE - OPTIMIZE Rule-match queued: rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#27,convention=ENUMERABLE,sort=[0 DESC])] | |
2019-03-18 00:21:38,352 [main] TRACE - new AbstractConverter#28 | |
2019-03-18 00:21:38,352 [main] TRACE - Register rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#24,convention=ENUMERABLE,sort=[0 DESC]) in rel#26:Subset#2.ENUMERABLE.[0 DESC] | |
2019-03-18 00:21:38,353 [main] TRACE - Importance of [rel#26:Subset#2.ENUMERABLE.[0 DESC]] is 1.0 | |
2019-03-18 00:21:38,353 [main] TRACE - OPTIMIZE Rule-match queued: rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#24,convention=ENUMERABLE,sort=[0 DESC])] | |
2019-03-18 00:21:38,353 [main] DEBUG - call#209 generated 1 successors: [rel#26:Subset#2.ENUMERABLE.[0 DESC]] | |
2019-03-18 00:21:38,353 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 6/4; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,356 [main] TRACE - Root: rel#26:Subset#2.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.6561 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.7290000000000001 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
Set#2, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#16:Subset#2.NONE.[], best=null, importance=0.81 | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#24:Subset#2.ENUMERABLE.[], best=null, importance=0.5 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#27,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#24,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#26:Subset#2.ENUMERABLE.[0 DESC], best=null, importance=1.0 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#27,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#24,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#27:Subset#2.NONE.[0 DESC], best=null, importance=0.5 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
} | |
subgraph cluster2{ | |
label="Set 2 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#16,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#27,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#24,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#24,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
subset16 [label="rel#16:Subset#2.NONE.[]"] | |
subset24 [label="rel#24:Subset#2.ENUMERABLE.[]"] | |
subset26 [label="rel#26:Subset#2.ENUMERABLE.[0 DESC]"] | |
subset27 [label="rel#27:Subset#2.NONE.[0 DESC]"] | |
subset16 -> subset27; subset24 -> subset26; } | |
root -> subset26; | |
subset12 -> rel0; | |
subset14 -> rel13; rel13 -> subset12; | |
subset16 -> rel15; rel15 -> subset14; | |
subset27 -> rel17; rel17 -> subset16; | |
subset26 -> rel23; rel23 -> subset27; | |
subset26 -> rel25; rel25 -> subset24; | |
subset26 -> rel28; rel28 -> subset24; | |
}Importances: { rel#26:Subset#2.ENUMERABLE.[0 DESC]=1.0 rel#16:Subset#2.NONE.[]=0.81 rel#14:Subset#1.NONE.[]=0.7290000000000001 rel#12:Subset#0.NONE.[]=0.6561} | |
2019-03-18 00:21:38,358 [main] TRACE - Sorted rule queue: | |
rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] importance 1.0 | |
rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#24,convention=ENUMERABLE,sort=[0 DESC])] importance 1.0 | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#27,convention=ENUMERABLE,sort=[0 DESC])] importance 1.0 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] importance 1.0 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.5 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.5 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.5 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.5 | |
rule [ProjectRemoveRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.81 | |
rule [ProjectFilterTransposeRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.81 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.81 | |
rule [EnumerableProjectRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.81 | |
rule [MaterializedViewFilterScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.7290000000000001 | |
rule [FilterTableScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.7290000000000001 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.7290000000000001 | |
rule [EnumerableFilterRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.7290000000000001 | |
rule [TableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.6561 | |
rule [BindableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.6561 | |
rule [EnumerableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.6561 | |
2019-03-18 00:21:38,358 [main] DEBUG - Pop match: rule [SortRemoveConstantKeysRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,358 [main] DEBUG - call#200: Apply rule [SortRemoveConstantKeysRule] to [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,370 [main] DEBUG - call#200 generated 0 successors. | |
2019-03-18 00:21:38,370 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 7/5; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,371 [main] TRACE - Root: rel#26:Subset#2.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.6561 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.7290000000000001 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
Set#2, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#16:Subset#2.NONE.[], best=null, importance=0.81 | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#24:Subset#2.ENUMERABLE.[], best=null, importance=0.5 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#27,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#24,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#26:Subset#2.ENUMERABLE.[0 DESC], best=null, importance=1.0 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#27,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#24,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#27:Subset#2.NONE.[0 DESC], best=null, importance=0.5 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
} | |
subgraph cluster2{ | |
label="Set 2 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#16,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#27,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#24,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#24,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
subset16 [label="rel#16:Subset#2.NONE.[]"] | |
subset24 [label="rel#24:Subset#2.ENUMERABLE.[]"] | |
subset26 [label="rel#26:Subset#2.ENUMERABLE.[0 DESC]"] | |
subset27 [label="rel#27:Subset#2.NONE.[0 DESC]"] | |
subset16 -> subset27; subset24 -> subset26; } | |
root -> subset26; | |
subset12 -> rel0; | |
subset14 -> rel13; rel13 -> subset12; | |
subset16 -> rel15; rel15 -> subset14; | |
subset27 -> rel17; rel17 -> subset16; | |
subset26 -> rel23; rel23 -> subset27; | |
subset26 -> rel25; rel25 -> subset24; | |
subset26 -> rel28; rel28 -> subset24; | |
}Importances: { rel#26:Subset#2.ENUMERABLE.[0 DESC]=1.0 rel#16:Subset#2.NONE.[]=0.81 rel#14:Subset#1.NONE.[]=0.7290000000000001 rel#12:Subset#0.NONE.[]=0.6561} | |
2019-03-18 00:21:38,372 [main] TRACE - Sorted rule queue: | |
rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#24,convention=ENUMERABLE,sort=[0 DESC])] importance 1.0 | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#27,convention=ENUMERABLE,sort=[0 DESC])] importance 1.0 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] importance 1.0 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.5 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.5 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.5 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.5 | |
rule [ProjectRemoveRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.81 | |
rule [ProjectFilterTransposeRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.81 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.81 | |
rule [EnumerableProjectRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.81 | |
rule [MaterializedViewFilterScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.7290000000000001 | |
rule [FilterTableScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.7290000000000001 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.7290000000000001 | |
rule [EnumerableFilterRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.7290000000000001 | |
rule [TableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.6561 | |
rule [BindableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.6561 | |
rule [EnumerableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.6561 | |
2019-03-18 00:21:38,372 [main] DEBUG - Pop match: rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,372 [main] DEBUG - call#206: Apply rule [PruneSortLimit0] to [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,372 [main] DEBUG - call#206 generated 0 successors. | |
2019-03-18 00:21:38,372 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 8/6; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,373 [main] TRACE - Root: rel#26:Subset#2.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.6561 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.7290000000000001 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
Set#2, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#16:Subset#2.NONE.[], best=null, importance=0.81 | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#24:Subset#2.ENUMERABLE.[], best=null, importance=0.5 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#27,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#24,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#26:Subset#2.ENUMERABLE.[0 DESC], best=null, importance=1.0 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#27,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#24,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#27:Subset#2.NONE.[0 DESC], best=null, importance=0.5 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
} | |
subgraph cluster2{ | |
label="Set 2 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#16,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#27,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#24,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#24,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
subset16 [label="rel#16:Subset#2.NONE.[]"] | |
subset24 [label="rel#24:Subset#2.ENUMERABLE.[]"] | |
subset26 [label="rel#26:Subset#2.ENUMERABLE.[0 DESC]"] | |
subset27 [label="rel#27:Subset#2.NONE.[0 DESC]"] | |
subset16 -> subset27; subset24 -> subset26; } | |
root -> subset26; | |
subset12 -> rel0; | |
subset14 -> rel13; rel13 -> subset12; | |
subset16 -> rel15; rel15 -> subset14; | |
subset27 -> rel17; rel17 -> subset16; | |
subset26 -> rel23; rel23 -> subset27; | |
subset26 -> rel25; rel25 -> subset24; | |
subset26 -> rel28; rel28 -> subset24; | |
}Importances: { rel#26:Subset#2.ENUMERABLE.[0 DESC]=1.0 rel#16:Subset#2.NONE.[]=0.81 rel#14:Subset#1.NONE.[]=0.7290000000000001 rel#12:Subset#0.NONE.[]=0.6561} | |
2019-03-18 00:21:38,374 [main] TRACE - Sorted rule queue: | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#27,convention=ENUMERABLE,sort=[0 DESC])] importance 1.0 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] importance 1.0 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.5 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.5 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.5 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.5 | |
rule [ProjectRemoveRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.81 | |
rule [ProjectFilterTransposeRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.81 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.81 | |
rule [EnumerableProjectRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.81 | |
rule [MaterializedViewFilterScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.7290000000000001 | |
rule [FilterTableScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.7290000000000001 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.7290000000000001 | |
rule [EnumerableFilterRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.7290000000000001 | |
rule [TableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.6561 | |
rule [BindableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.6561 | |
rule [EnumerableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.6561 | |
2019-03-18 00:21:38,374 [main] DEBUG - Pop match: rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#24,convention=ENUMERABLE,sort=[0 DESC])] | |
2019-03-18 00:21:38,374 [main] DEBUG - call#342: Apply rule [ExpandConversionRule] to [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#24,convention=ENUMERABLE,sort=[0 DESC])] | |
2019-03-18 00:21:38,374 [main] TRACE - new LogicalSort#29 | |
2019-03-18 00:21:38,374 [main] TRACE - Register rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC) in rel#27:Subset#2.NONE.[0 DESC] | |
2019-03-18 00:21:38,374 [main] TRACE - Importance of [rel#27:Subset#2.NONE.[0 DESC]] to its parent [rel#26:Subset#2.ENUMERABLE.[0 DESC]] is 0.99 (parent importance=1.0, child cost=1.0E30, parent cost=1.0E30) | |
2019-03-18 00:21:38,374 [main] TRACE - Importance of [rel#27:Subset#2.NONE.[0 DESC]] is 0.99 | |
2019-03-18 00:21:38,374 [main] TRACE - OPTIMIZE Rule-match queued: rule [SortRemoveConstantKeysRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,374 [main] TRACE - OPTIMIZE Rule-match queued: rule [PruneSortLimit0] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,375 [main] TRACE - OPTIMIZE Rule-match queued: rule [EnumerableSortRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,375 [main] TRACE - OPTIMIZE Rule-match queued: rule [SortRemoveRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,375 [main] TRACE - OPTIMIZE Rule-match queued: rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,382 [main] DEBUG - Transform to: rel#26 via ExpandConversionRule | |
2019-03-18 00:21:38,382 [main] TRACE - call#342: Rule ExpandConversionRule arguments [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#24,convention=ENUMERABLE,sort=[0 DESC])] created rel#26:RelSubset | |
2019-03-18 00:21:38,382 [main] DEBUG - call#342 generated 1 successors: [rel#26:Subset#2.ENUMERABLE.[0 DESC]] | |
2019-03-18 00:21:38,382 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 9/7; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,383 [main] TRACE - Root: rel#26:Subset#2.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.6561 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.7290000000000001 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
Set#2, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#16:Subset#2.NONE.[], best=null, importance=0.81 | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#24:Subset#2.ENUMERABLE.[], best=null, importance=0.5 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#27,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#24,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#26:Subset#2.ENUMERABLE.[0 DESC], best=null, importance=1.0 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#27,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#24,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#27:Subset#2.NONE.[0 DESC], best=null, importance=0.99 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
} | |
subgraph cluster2{ | |
label="Set 2 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#16,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#27,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#24,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#24,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#24,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
subset16 [label="rel#16:Subset#2.NONE.[]"] | |
subset24 [label="rel#24:Subset#2.ENUMERABLE.[]"] | |
subset26 [label="rel#26:Subset#2.ENUMERABLE.[0 DESC]"] | |
subset27 [label="rel#27:Subset#2.NONE.[0 DESC]"] | |
subset16 -> subset27; subset24 -> subset26; } | |
root -> subset26; | |
subset12 -> rel0; | |
subset14 -> rel13; rel13 -> subset12; | |
subset16 -> rel15; rel15 -> subset14; | |
subset27 -> rel17; rel17 -> subset16; | |
subset26 -> rel23; rel23 -> subset27; | |
subset26 -> rel25; rel25 -> subset24; | |
subset26 -> rel28; rel28 -> subset24; | |
subset27 -> rel29; rel29 -> subset24; | |
}Importances: { rel#26:Subset#2.ENUMERABLE.[0 DESC]=1.0 rel#27:Subset#2.NONE.[0 DESC]=0.99 rel#16:Subset#2.NONE.[]=0.81 rel#14:Subset#1.NONE.[]=0.7290000000000001 rel#12:Subset#0.NONE.[]=0.6561} | |
2019-03-18 00:21:38,384 [main] TRACE - Sorted rule queue: | |
rule [EnumerableSortRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] importance 1.0 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] importance 1.0 | |
rule [SortRemoveRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] importance 0.99 | |
rule [SortRemoveConstantKeysRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] importance 0.99 | |
rule [PruneSortLimit0] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] importance 0.99 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] importance 0.99 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.99 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.99 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.99 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.99 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.99 | |
rule [ProjectRemoveRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.81 | |
rule [ProjectFilterTransposeRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.81 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.81 | |
rule [EnumerableProjectRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.81 | |
rule [MaterializedViewFilterScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.7290000000000001 | |
rule [FilterTableScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.7290000000000001 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.7290000000000001 | |
rule [EnumerableFilterRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.7290000000000001 | |
rule [TableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.6561 | |
rule [BindableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.6561 | |
rule [EnumerableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.6561 | |
2019-03-18 00:21:38,384 [main] DEBUG - Pop match: rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#27,convention=ENUMERABLE,sort=[0 DESC])] | |
2019-03-18 00:21:38,384 [main] DEBUG - call#300: Apply rule [ExpandConversionRule] to [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#27,convention=ENUMERABLE,sort=[0 DESC])] | |
2019-03-18 00:21:38,384 [main] DEBUG - call#300 generated 0 successors. | |
2019-03-18 00:21:38,384 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 10/8; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,385 [main] TRACE - Root: rel#26:Subset#2.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.6561 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.7290000000000001 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
Set#2, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#16:Subset#2.NONE.[], best=null, importance=0.81 | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#24:Subset#2.ENUMERABLE.[], best=null, importance=0.5 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#27,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#24,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#26:Subset#2.ENUMERABLE.[0 DESC], best=null, importance=1.0 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#27,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#24,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#27:Subset#2.NONE.[0 DESC], best=null, importance=0.99 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
} | |
subgraph cluster2{ | |
label="Set 2 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#16,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#27,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#24,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#24,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#24,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
subset16 [label="rel#16:Subset#2.NONE.[]"] | |
subset24 [label="rel#24:Subset#2.ENUMERABLE.[]"] | |
subset26 [label="rel#26:Subset#2.ENUMERABLE.[0 DESC]"] | |
subset27 [label="rel#27:Subset#2.NONE.[0 DESC]"] | |
subset16 -> subset27; subset24 -> subset26; } | |
root -> subset26; | |
subset12 -> rel0; | |
subset14 -> rel13; rel13 -> subset12; | |
subset16 -> rel15; rel15 -> subset14; | |
subset27 -> rel17; rel17 -> subset16; | |
subset26 -> rel23; rel23 -> subset27; | |
subset26 -> rel25; rel25 -> subset24; | |
subset26 -> rel28; rel28 -> subset24; | |
subset27 -> rel29; rel29 -> subset24; | |
}Importances: { rel#26:Subset#2.ENUMERABLE.[0 DESC]=1.0 rel#27:Subset#2.NONE.[0 DESC]=0.99 rel#16:Subset#2.NONE.[]=0.81 rel#14:Subset#1.NONE.[]=0.7290000000000001 rel#12:Subset#0.NONE.[]=0.6561} | |
2019-03-18 00:21:38,385 [main] TRACE - Sorted rule queue: | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] importance 1.0 | |
rule [SortRemoveRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] importance 0.99 | |
rule [SortRemoveConstantKeysRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] importance 0.99 | |
rule [PruneSortLimit0] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] importance 0.99 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] importance 0.99 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.99 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.99 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.99 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.99 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.99 | |
rule [ProjectRemoveRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.81 | |
rule [ProjectFilterTransposeRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.81 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.81 | |
rule [EnumerableProjectRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.81 | |
rule [MaterializedViewFilterScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.7290000000000001 | |
rule [FilterTableScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.7290000000000001 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.7290000000000001 | |
rule [EnumerableFilterRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.7290000000000001 | |
rule [TableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.6561 | |
rule [BindableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.6561 | |
rule [EnumerableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.6561 | |
2019-03-18 00:21:38,386 [main] DEBUG - Pop match: rule [EnumerableSortRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,386 [main] DEBUG - call#360: Apply rule [EnumerableSortRule] to [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,386 [main] TRACE - new EnumerableSort#30 | |
2019-03-18 00:21:38,386 [main] DEBUG - Transform to: rel#30 via EnumerableSortRule | |
2019-03-18 00:21:38,386 [main] TRACE - call#360: Rule EnumerableSortRule arguments [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] created rel#30:EnumerableSort | |
2019-03-18 00:21:38,386 [main] TRACE - Register: rel#30 is equivalent to rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC) | |
2019-03-18 00:21:38,386 [main] DEBUG - call#360 generated 1 successors: [rel#30:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,386 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 11/9; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,387 [main] TRACE - Root: rel#26:Subset#2.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.6561 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.7290000000000001 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
Set#2, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#16:Subset#2.NONE.[], best=null, importance=0.81 | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#24:Subset#2.ENUMERABLE.[], best=null, importance=0.5 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#27,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#24,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#26:Subset#2.ENUMERABLE.[0 DESC], best=null, importance=1.0 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#27,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#24,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#27:Subset#2.NONE.[0 DESC], best=null, importance=0.99 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
} | |
subgraph cluster2{ | |
label="Set 2 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#16,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#27,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#24,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#24,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#24,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
subset16 [label="rel#16:Subset#2.NONE.[]"] | |
subset24 [label="rel#24:Subset#2.ENUMERABLE.[]"] | |
subset26 [label="rel#26:Subset#2.ENUMERABLE.[0 DESC]"] | |
subset27 [label="rel#27:Subset#2.NONE.[0 DESC]"] | |
subset16 -> subset27; subset24 -> subset26; } | |
root -> subset26; | |
subset12 -> rel0; | |
subset14 -> rel13; rel13 -> subset12; | |
subset16 -> rel15; rel15 -> subset14; | |
subset27 -> rel17; rel17 -> subset16; | |
subset26 -> rel23; rel23 -> subset27; | |
subset26 -> rel25; rel25 -> subset24; | |
subset26 -> rel28; rel28 -> subset24; | |
subset27 -> rel29; rel29 -> subset24; | |
}Importances: { rel#26:Subset#2.ENUMERABLE.[0 DESC]=1.0 rel#27:Subset#2.NONE.[0 DESC]=0.99 rel#16:Subset#2.NONE.[]=0.81 rel#14:Subset#1.NONE.[]=0.7290000000000001 rel#12:Subset#0.NONE.[]=0.6561} | |
2019-03-18 00:21:38,388 [main] TRACE - Sorted rule queue: | |
rule [SortRemoveRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] importance 0.99 | |
rule [SortRemoveConstantKeysRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] importance 0.99 | |
rule [PruneSortLimit0] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] importance 0.99 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] importance 0.99 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.99 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.99 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.99 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.99 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.99 | |
rule [ProjectRemoveRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.81 | |
rule [ProjectFilterTransposeRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.81 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.81 | |
rule [EnumerableProjectRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.81 | |
rule [MaterializedViewFilterScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.7290000000000001 | |
rule [FilterTableScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.7290000000000001 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.7290000000000001 | |
rule [EnumerableFilterRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.7290000000000001 | |
rule [TableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.6561 | |
rule [BindableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.6561 | |
rule [EnumerableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.6561 | |
2019-03-18 00:21:38,388 [main] DEBUG - Pop match: rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,388 [main] DEBUG - call#217: Apply rule [EnumerableLimitRule] to [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,388 [main] DEBUG - call#217 generated 0 successors. | |
2019-03-18 00:21:38,388 [main] TRACE - boostImportance(1.25, [rel#14:Subset#1.NONE.[], rel#12:Subset#0.NONE.[], rel#16:Subset#2.NONE.[], rel#27:Subset#2.NONE.[0 DESC]]) | |
2019-03-18 00:21:38,389 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 12/10; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,390 [main] TRACE - Root: rel#26:Subset#2.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.820125 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9112500000000001 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
Set#2, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#16:Subset#2.NONE.[], best=null, importance=0.9999999999999999 | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#24:Subset#2.ENUMERABLE.[], best=null, importance=0.5 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#27,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#24,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#26:Subset#2.ENUMERABLE.[0 DESC], best=null, importance=1.0 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#27,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#24,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#27:Subset#2.NONE.[0 DESC], best=null, importance=0.9999999999999999 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
} | |
subgraph cluster2{ | |
label="Set 2 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#16,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#27,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#24,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#24,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#24,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
subset16 [label="rel#16:Subset#2.NONE.[]"] | |
subset24 [label="rel#24:Subset#2.ENUMERABLE.[]"] | |
subset26 [label="rel#26:Subset#2.ENUMERABLE.[0 DESC]"] | |
subset27 [label="rel#27:Subset#2.NONE.[0 DESC]"] | |
subset16 -> subset27; subset24 -> subset26; } | |
root -> subset26; | |
subset12 -> rel0; | |
subset14 -> rel13; rel13 -> subset12; | |
subset16 -> rel15; rel15 -> subset14; | |
subset27 -> rel17; rel17 -> subset16; | |
subset26 -> rel23; rel23 -> subset27; | |
subset26 -> rel25; rel25 -> subset24; | |
subset26 -> rel28; rel28 -> subset24; | |
subset27 -> rel29; rel29 -> subset24; | |
}Importances: { rel#26:Subset#2.ENUMERABLE.[0 DESC]=1.0 rel#16:Subset#2.NONE.[]=0.9999999999999999 rel#27:Subset#2.NONE.[0 DESC]=0.9999999999999999 rel#14:Subset#1.NONE.[]=0.9112500000000001 rel#12:Subset#0.NONE.[]=0.820125} | |
2019-03-18 00:21:38,390 [main] TRACE - Sorted rule queue: | |
rule [SortRemoveConstantKeysRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] importance 0.9999999999999999 | |
rule [PruneSortLimit0] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] importance 0.9999999999999999 | |
rule [ProjectRemoveRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.9999999999999999 | |
rule [ProjectFilterTransposeRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.9999999999999999 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.9999999999999999 | |
rule [EnumerableProjectRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.9999999999999999 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] importance 0.9999999999999999 | |
rule [MaterializedViewFilterScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.9112500000000001 | |
rule [FilterTableScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.9112500000000001 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.9112500000000001 | |
rule [EnumerableFilterRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.9112500000000001 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.9999999999999999 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.9999999999999999 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.9999999999999999 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.9999999999999999 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.9999999999999999 | |
rule [TableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
rule [BindableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
rule [EnumerableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
2019-03-18 00:21:38,390 [main] DEBUG - Pop match: rule [SortRemoveRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,390 [main] DEBUG - call#363: Apply rule [SortRemoveRule] to [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,391 [main] DEBUG - Transform to: rel#26 via SortRemoveRule | |
2019-03-18 00:21:38,391 [main] TRACE - call#363: Rule SortRemoveRule arguments [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] created rel#26:RelSubset | |
2019-03-18 00:21:38,391 [main] DEBUG - call#363 generated 1 successors: [rel#26:Subset#2.ENUMERABLE.[0 DESC]] | |
2019-03-18 00:21:38,391 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 13/11; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,392 [main] TRACE - Root: rel#26:Subset#2.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.820125 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9112500000000001 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
Set#2, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#16:Subset#2.NONE.[], best=null, importance=0.9999999999999999 | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#24:Subset#2.ENUMERABLE.[], best=null, importance=0.5 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#27,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#24,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#26:Subset#2.ENUMERABLE.[0 DESC], best=null, importance=1.0 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#27,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#24,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#27:Subset#2.NONE.[0 DESC], best=null, importance=0.9999999999999999 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
} | |
subgraph cluster2{ | |
label="Set 2 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#16,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#27,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#24,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#24,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#24,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
subset16 [label="rel#16:Subset#2.NONE.[]"] | |
subset24 [label="rel#24:Subset#2.ENUMERABLE.[]"] | |
subset26 [label="rel#26:Subset#2.ENUMERABLE.[0 DESC]"] | |
subset27 [label="rel#27:Subset#2.NONE.[0 DESC]"] | |
subset16 -> subset27; subset24 -> subset26; } | |
root -> subset26; | |
subset12 -> rel0; | |
subset14 -> rel13; rel13 -> subset12; | |
subset16 -> rel15; rel15 -> subset14; | |
subset27 -> rel17; rel17 -> subset16; | |
subset26 -> rel23; rel23 -> subset27; | |
subset26 -> rel25; rel25 -> subset24; | |
subset26 -> rel28; rel28 -> subset24; | |
subset27 -> rel29; rel29 -> subset24; | |
}Importances: { rel#26:Subset#2.ENUMERABLE.[0 DESC]=1.0 rel#16:Subset#2.NONE.[]=0.9999999999999999 rel#27:Subset#2.NONE.[0 DESC]=0.9999999999999999 rel#14:Subset#1.NONE.[]=0.9112500000000001 rel#12:Subset#0.NONE.[]=0.820125} | |
2019-03-18 00:21:38,392 [main] TRACE - Sorted rule queue: | |
rule [PruneSortLimit0] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] importance 0.9999999999999999 | |
rule [ProjectRemoveRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.9999999999999999 | |
rule [ProjectFilterTransposeRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.9999999999999999 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.9999999999999999 | |
rule [EnumerableProjectRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.9999999999999999 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] importance 0.9999999999999999 | |
rule [MaterializedViewFilterScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.9112500000000001 | |
rule [FilterTableScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.9112500000000001 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.9112500000000001 | |
rule [EnumerableFilterRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.9112500000000001 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.9999999999999999 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.9999999999999999 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.9999999999999999 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.9999999999999999 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.9999999999999999 | |
rule [TableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
rule [BindableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
rule [EnumerableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
2019-03-18 00:21:38,393 [main] DEBUG - Pop match: rule [SortRemoveConstantKeysRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,393 [main] DEBUG - call#352: Apply rule [SortRemoveConstantKeysRule] to [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,393 [main] DEBUG - call#352 generated 0 successors. | |
2019-03-18 00:21:38,393 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 14/12; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,394 [main] TRACE - Root: rel#26:Subset#2.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.820125 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9112500000000001 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
Set#2, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#16:Subset#2.NONE.[], best=null, importance=0.9999999999999999 | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#24:Subset#2.ENUMERABLE.[], best=null, importance=0.5 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#27,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#24,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#26:Subset#2.ENUMERABLE.[0 DESC], best=null, importance=1.0 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#27,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#24,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#27:Subset#2.NONE.[0 DESC], best=null, importance=0.9999999999999999 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
} | |
subgraph cluster2{ | |
label="Set 2 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#16,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#27,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#24,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#24,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#24,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
subset16 [label="rel#16:Subset#2.NONE.[]"] | |
subset24 [label="rel#24:Subset#2.ENUMERABLE.[]"] | |
subset26 [label="rel#26:Subset#2.ENUMERABLE.[0 DESC]"] | |
subset27 [label="rel#27:Subset#2.NONE.[0 DESC]"] | |
subset16 -> subset27; subset24 -> subset26; } | |
root -> subset26; | |
subset12 -> rel0; | |
subset14 -> rel13; rel13 -> subset12; | |
subset16 -> rel15; rel15 -> subset14; | |
subset27 -> rel17; rel17 -> subset16; | |
subset26 -> rel23; rel23 -> subset27; | |
subset26 -> rel25; rel25 -> subset24; | |
subset26 -> rel28; rel28 -> subset24; | |
subset27 -> rel29; rel29 -> subset24; | |
}Importances: { rel#26:Subset#2.ENUMERABLE.[0 DESC]=1.0 rel#16:Subset#2.NONE.[]=0.9999999999999999 rel#27:Subset#2.NONE.[0 DESC]=0.9999999999999999 rel#14:Subset#1.NONE.[]=0.9112500000000001 rel#12:Subset#0.NONE.[]=0.820125} | |
2019-03-18 00:21:38,394 [main] TRACE - Sorted rule queue: | |
rule [ProjectRemoveRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.9999999999999999 | |
rule [ProjectFilterTransposeRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.9999999999999999 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.9999999999999999 | |
rule [EnumerableProjectRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.9999999999999999 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] importance 0.9999999999999999 | |
rule [MaterializedViewFilterScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.9112500000000001 | |
rule [FilterTableScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.9112500000000001 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.9112500000000001 | |
rule [EnumerableFilterRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.9112500000000001 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.9999999999999999 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.9999999999999999 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.9999999999999999 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.9999999999999999 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.9999999999999999 | |
rule [TableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
rule [BindableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
rule [EnumerableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
2019-03-18 00:21:38,394 [main] DEBUG - Pop match: rule [PruneSortLimit0] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,394 [main] DEBUG - call#358: Apply rule [PruneSortLimit0] to [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,394 [main] DEBUG - call#358 generated 0 successors. | |
2019-03-18 00:21:38,394 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 15/13; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,395 [main] TRACE - Root: rel#26:Subset#2.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.820125 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9112500000000001 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
Set#2, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#16:Subset#2.NONE.[], best=null, importance=0.9999999999999999 | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#24:Subset#2.ENUMERABLE.[], best=null, importance=0.5 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#27,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#24,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#26:Subset#2.ENUMERABLE.[0 DESC], best=null, importance=1.0 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#27,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#24,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#27:Subset#2.NONE.[0 DESC], best=null, importance=0.9999999999999999 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
} | |
subgraph cluster2{ | |
label="Set 2 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#16,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#27,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#24,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#24,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#24,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
subset16 [label="rel#16:Subset#2.NONE.[]"] | |
subset24 [label="rel#24:Subset#2.ENUMERABLE.[]"] | |
subset26 [label="rel#26:Subset#2.ENUMERABLE.[0 DESC]"] | |
subset27 [label="rel#27:Subset#2.NONE.[0 DESC]"] | |
subset16 -> subset27; subset24 -> subset26; } | |
root -> subset26; | |
subset12 -> rel0; | |
subset14 -> rel13; rel13 -> subset12; | |
subset16 -> rel15; rel15 -> subset14; | |
subset27 -> rel17; rel17 -> subset16; | |
subset26 -> rel23; rel23 -> subset27; | |
subset26 -> rel25; rel25 -> subset24; | |
subset26 -> rel28; rel28 -> subset24; | |
subset27 -> rel29; rel29 -> subset24; | |
}Importances: { rel#26:Subset#2.ENUMERABLE.[0 DESC]=1.0 rel#16:Subset#2.NONE.[]=0.9999999999999999 rel#27:Subset#2.NONE.[0 DESC]=0.9999999999999999 rel#14:Subset#1.NONE.[]=0.9112500000000001 rel#12:Subset#0.NONE.[]=0.820125} | |
2019-03-18 00:21:38,395 [main] TRACE - Sorted rule queue: | |
rule [ProjectFilterTransposeRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.9999999999999999 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.9999999999999999 | |
rule [EnumerableProjectRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.9999999999999999 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] importance 0.9999999999999999 | |
rule [MaterializedViewFilterScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.9112500000000001 | |
rule [FilterTableScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.9112500000000001 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.9112500000000001 | |
rule [EnumerableFilterRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.9112500000000001 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.9999999999999999 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.9999999999999999 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.9999999999999999 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.9999999999999999 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.9999999999999999 | |
rule [TableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
rule [BindableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
rule [EnumerableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
2019-03-18 00:21:38,395 [main] DEBUG - Pop match: rule [ProjectRemoveRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,395 [main] DEBUG - call#105: Apply rule [ProjectRemoveRule] to [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,396 [main] TRACE - Register #14 rel#14:Subset#1.NONE.[], and merge sets | |
2019-03-18 00:21:38,396 [main] TRACE - Merge set#2 into set#1 | |
2019-03-18 00:21:38,396 [main] TRACE - new RelSubset#31 | |
2019-03-18 00:21:38,396 [main] TRACE - new RelSubset#32 | |
2019-03-18 00:21:38,396 [main] TRACE - new RelSubset#33 | |
2019-03-18 00:21:38,396 [main] TRACE - Rename #17 from 'LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)' to 'LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)' | |
2019-03-18 00:21:38,396 [main] TRACE - Rename #25 from 'EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)' to 'EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)' | |
2019-03-18 00:21:38,396 [main] TRACE - Rename #23 from 'AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#27,convention=ENUMERABLE,sort=[0 DESC])' to 'AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])' | |
2019-03-18 00:21:38,396 [main] TRACE - Rename #28 from 'AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#24,convention=ENUMERABLE,sort=[0 DESC])' to 'AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])' | |
2019-03-18 00:21:38,396 [main] TRACE - Rename #29 from 'LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)' to 'LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)' | |
2019-03-18 00:21:38,397 [main] TRACE - OPTIMIZE Rule-match queued: rule [ProjectMergeRule:force_mode] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,397 [main] TRACE - OPTIMIZE Rule-match queued: rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,397 [main] TRACE - OPTIMIZE Rule-match queued: rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,397 [main] TRACE - OPTIMIZE Rule-match queued: rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,398 [main] TRACE - OPTIMIZE Rule-match queued: rule [EnumerableSortRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,398 [main] TRACE - OPTIMIZE Rule-match queued: rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,398 [main] TRACE - OPTIMIZE Rule-match queued: rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,398 [main] TRACE - OPTIMIZE Rule-match queued: rule [SortRemoveConstantKeysRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,398 [main] TRACE - OPTIMIZE Rule-match queued: rule [PruneSortLimit0] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,398 [main] TRACE - OPTIMIZE Rule-match queued: rule [EnumerableSortRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,398 [main] TRACE - OPTIMIZE Rule-match queued: rule [SortRemoveRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,398 [main] TRACE - OPTIMIZE Rule-match queued: rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,398 [main] TRACE - OPTIMIZE Rule-match queued: rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] | |
2019-03-18 00:21:38,398 [main] TRACE - OPTIMIZE Rule-match queued: rule [SortRemoveConstantKeysRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,399 [main] TRACE - OPTIMIZE Rule-match queued: rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,399 [main] TRACE - OPTIMIZE Rule-match queued: rule [SortRemoveRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,399 [main] TRACE - OPTIMIZE Rule-match queued: rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,399 [main] TRACE - OPTIMIZE Rule-match queued: rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] | |
2019-03-18 00:21:38,399 [main] DEBUG - Transform to: rel#14 via ProjectRemoveRule | |
2019-03-18 00:21:38,399 [main] TRACE - call#105: Rule ProjectRemoveRule arguments [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] created rel#14:RelSubset | |
2019-03-18 00:21:38,399 [main] DEBUG - call#105 generated 1 successors: [rel#14:Subset#1.NONE.[]] | |
2019-03-18 00:21:38,399 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 16/14; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,400 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.820125 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9112500000000001 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.45562500000000006 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=null, importance=0.45562500000000006 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=null, importance=0.45562500000000006 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25; rel25 -> subset32; | |
subset33 -> rel28; rel28 -> subset32; | |
}Importances: { rel#14:Subset#1.NONE.[]=0.9112500000000001 rel#12:Subset#0.NONE.[]=0.820125} | |
2019-03-18 00:21:38,401 [main] TRACE - Sorted rule queue: | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.9112500000000001 | |
rule [EnumerableProjectRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.9112500000000001 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [ProjectMergeRule:force_mode] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.9112500000000001 | |
rule [MaterializedViewFilterScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.9112500000000001 | |
rule [FilterTableScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.9112500000000001 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.9112500000000001 | |
rule [EnumerableFilterRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.9112500000000001 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.45562500000000006 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [TableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
rule [BindableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
rule [EnumerableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
rule [SortRemoveRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveConstantKeysRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveConstantKeysRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.45562500000000006 | |
rule [PruneSortLimit0] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] importance 0.45562500000000006 | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] importance 0.45562500000000006 | |
rule [EnumerableSortRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableSortRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
2019-03-18 00:21:38,401 [main] DEBUG - Skip match: rule [ProjectFilterTransposeRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] | |
2019-03-18 00:21:38,401 [main] TRACE - Sorted rule queue: | |
rule [EnumerableProjectRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.9112500000000001 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [ProjectMergeRule:force_mode] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.9112500000000001 | |
rule [MaterializedViewFilterScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.9112500000000001 | |
rule [FilterTableScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.9112500000000001 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.9112500000000001 | |
rule [EnumerableFilterRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.9112500000000001 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.45562500000000006 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [TableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
rule [BindableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
rule [EnumerableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
rule [SortRemoveRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveConstantKeysRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveConstantKeysRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.45562500000000006 | |
rule [PruneSortLimit0] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] importance 0.45562500000000006 | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] importance 0.45562500000000006 | |
rule [EnumerableSortRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableSortRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
2019-03-18 00:21:38,401 [main] DEBUG - Skip match: rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] | |
2019-03-18 00:21:38,402 [main] TRACE - Sorted rule queue: | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#24,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [ProjectMergeRule:force_mode] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.9112500000000001 | |
rule [MaterializedViewFilterScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.9112500000000001 | |
rule [FilterTableScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.9112500000000001 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.9112500000000001 | |
rule [EnumerableFilterRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.9112500000000001 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.45562500000000006 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [TableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
rule [BindableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
rule [EnumerableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
rule [SortRemoveRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveConstantKeysRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveConstantKeysRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.45562500000000006 | |
rule [PruneSortLimit0] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] importance 0.45562500000000006 | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] importance 0.45562500000000006 | |
rule [EnumerableSortRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableSortRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
2019-03-18 00:21:38,402 [main] DEBUG - Pop match: rule [EnumerableProjectRule] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,402 [main] DEBUG - call#103: Apply rule [EnumerableProjectRule] to [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,414 [main] TRACE - new EnumerableProject#34 | |
2019-03-18 00:21:38,414 [main] DEBUG - Transform to: rel#34 via EnumerableProjectRule | |
2019-03-18 00:21:38,414 [main] TRACE - call#103: Rule EnumerableProjectRule arguments [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] created rel#34:EnumerableProject | |
2019-03-18 00:21:38,414 [main] TRACE - Register rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9) in rel#32:Subset#1.ENUMERABLE.[] | |
2019-03-18 00:21:38,414 [main] TRACE - Importance of [rel#32:Subset#1.ENUMERABLE.[]] to its parent [rel#33:Subset#1.ENUMERABLE.[0 DESC]] is 0.4510687500000001 (parent importance=0.45562500000000006, child cost=1.0E30, parent cost=1.0E30) | |
2019-03-18 00:21:38,414 [main] TRACE - Importance of [rel#32:Subset#1.ENUMERABLE.[]] to its parent [rel#31:Subset#1.NONE.[0 DESC]] is 0.4510687500000001 (parent importance=0.45562500000000006, child cost=1.0E30, parent cost=1.0E30) | |
2019-03-18 00:21:38,414 [main] TRACE - Importance of [rel#32:Subset#1.ENUMERABLE.[]] to its parent [rel#32:Subset#1.ENUMERABLE.[]] is 0.4510687500000001 (parent importance=0.45562500000000006, child cost=1.0E30, parent cost=1.0E30) | |
2019-03-18 00:21:38,414 [main] TRACE - Importance of [rel#32:Subset#1.ENUMERABLE.[]] is 0.4510687500000001 | |
2019-03-18 00:21:38,415 [main] TRACE - OPTIMIZE Rule-match queued: rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,415 [main] TRACE - OPTIMIZE Rule-match queued: rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,415 [main] DEBUG - call#103 generated 1 successors: [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,415 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 17/15; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,416 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.820125 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9112500000000001 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.45562500000000006 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=null, importance=0.45562500000000006 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=null, importance=0.45562500000000006 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25; rel25 -> subset32; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
}Importances: { rel#14:Subset#1.NONE.[]=0.9112500000000001 rel#12:Subset#0.NONE.[]=0.820125 rel#32:Subset#1.ENUMERABLE.[]=0.4510687500000001} | |
2019-03-18 00:21:38,417 [main] TRACE - Sorted rule queue: | |
rule [ProjectMergeRule:force_mode] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.9112500000000001 | |
rule [MaterializedViewFilterScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.9112500000000001 | |
rule [FilterTableScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.9112500000000001 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.9112500000000001 | |
rule [EnumerableFilterRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.9112500000000001 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.45562500000000006 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [TableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
rule [BindableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
rule [EnumerableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
rule [SortRemoveRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveConstantKeysRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveConstantKeysRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.45562500000000006 | |
rule [PruneSortLimit0] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.45562500000000006 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.45562500000000006 | |
rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] importance 0.45562500000000006 | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] importance 0.45562500000000006 | |
rule [EnumerableSortRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableSortRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
2019-03-18 00:21:38,417 [main] DEBUG - Pop match: rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,417 [main] DEBUG - call#371: Apply rule [EnumerableLimitRule] to [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,417 [main] DEBUG - call#371 generated 0 successors. | |
2019-03-18 00:21:38,417 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 18/16; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,418 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.820125 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9112500000000001 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.45562500000000006 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=null, importance=0.45562500000000006 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=null, importance=0.45562500000000006 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25; rel25 -> subset32; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
}Importances: { rel#14:Subset#1.NONE.[]=0.9112500000000001 rel#12:Subset#0.NONE.[]=0.820125 rel#32:Subset#1.ENUMERABLE.[]=0.4510687500000001} | |
2019-03-18 00:21:38,418 [main] TRACE - Sorted rule queue: | |
rule [MaterializedViewFilterScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.9112500000000001 | |
rule [FilterTableScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.9112500000000001 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.9112500000000001 | |
rule [EnumerableFilterRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.9112500000000001 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.45562500000000006 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [TableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
rule [BindableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
rule [EnumerableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
rule [SortRemoveRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveConstantKeysRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveConstantKeysRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.45562500000000006 | |
rule [PruneSortLimit0] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.45562500000000006 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.45562500000000006 | |
rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] importance 0.45562500000000006 | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] importance 0.45562500000000006 | |
rule [EnumerableSortRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableSortRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
2019-03-18 00:21:38,418 [main] DEBUG - Skip match: rule [ProjectMergeRule:force_mode] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,419 [main] TRACE - Sorted rule queue: | |
rule [FilterTableScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.9112500000000001 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.9112500000000001 | |
rule [EnumerableFilterRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.9112500000000001 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.45562500000000006 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [TableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
rule [BindableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
rule [EnumerableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
rule [SortRemoveRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveConstantKeysRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveConstantKeysRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.45562500000000006 | |
rule [PruneSortLimit0] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.45562500000000006 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.45562500000000006 | |
rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] importance 0.45562500000000006 | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] importance 0.45562500000000006 | |
rule [EnumerableSortRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableSortRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
2019-03-18 00:21:38,419 [main] DEBUG - Pop match: rule [MaterializedViewFilterScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] | |
2019-03-18 00:21:38,419 [main] DEBUG - call#67: Apply rule [MaterializedViewFilterScanRule] to [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] | |
2019-03-18 00:21:38,419 [main] DEBUG - call#67 generated 0 successors. | |
2019-03-18 00:21:38,419 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 19/17; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,420 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.820125 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9112500000000001 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.45562500000000006 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=null, importance=0.45562500000000006 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=null, importance=0.45562500000000006 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25; rel25 -> subset32; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
}Importances: { rel#14:Subset#1.NONE.[]=0.9112500000000001 rel#12:Subset#0.NONE.[]=0.820125 rel#32:Subset#1.ENUMERABLE.[]=0.4510687500000001} | |
2019-03-18 00:21:38,420 [main] TRACE - Sorted rule queue: | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.9112500000000001 | |
rule [EnumerableFilterRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.9112500000000001 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.45562500000000006 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [TableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
rule [BindableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
rule [EnumerableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
rule [SortRemoveRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveConstantKeysRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveConstantKeysRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.45562500000000006 | |
rule [PruneSortLimit0] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.45562500000000006 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.45562500000000006 | |
rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] importance 0.45562500000000006 | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] importance 0.45562500000000006 | |
rule [EnumerableSortRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableSortRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
2019-03-18 00:21:38,421 [main] DEBUG - Pop match: rule [FilterTableScanRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] | |
2019-03-18 00:21:38,421 [main] DEBUG - call#58: Apply rule [FilterTableScanRule] to [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] | |
2019-03-18 00:21:38,423 [main] TRACE - new BindableTableScan#35 | |
2019-03-18 00:21:38,423 [main] DEBUG - Transform to: rel#35 via FilterTableScanRule | |
2019-03-18 00:21:38,423 [main] TRACE - call#58: Rule FilterTableScanRule arguments [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] created rel#35:BindableTableScan | |
2019-03-18 00:21:38,424 [main] TRACE - new RelSubset#36 | |
2019-03-18 00:21:38,432 [main] TRACE - Subset cost improved: subset [rel#36:Subset#1.BINDABLE.[]] cost was {inf} now {0.5 rows, 0.505 cpu, 0.0 io} | |
2019-03-18 00:21:38,432 [main] TRACE - Register rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]) in rel#36:Subset#1.BINDABLE.[] | |
2019-03-18 00:21:38,433 [main] TRACE - Importance of [rel#36:Subset#1.BINDABLE.[]] is 0.0 | |
2019-03-18 00:21:38,433 [main] TRACE - OPTIMIZE Rule-match queued: rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] | |
2019-03-18 00:21:38,433 [main] TRACE - OPTIMIZE Rule-match queued: rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] | |
2019-03-18 00:21:38,433 [main] DEBUG - call#58 generated 1 successors: [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] | |
2019-03-18 00:21:38,433 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 20/18; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,470 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.820125 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9112500000000001 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.45562500000000006 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=null, importance=0.45562500000000006 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=null, importance=0.45562500000000006 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.45562500000000006 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25; rel25 -> subset32; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
}Importances: { rel#14:Subset#1.NONE.[]=0.9112500000000001 rel#12:Subset#0.NONE.[]=0.820125 rel#32:Subset#1.ENUMERABLE.[]=0.4510687500000001 rel#36:Subset#1.BINDABLE.[]=0.0} | |
2019-03-18 00:21:38,470 [main] TRACE - Sorted rule queue: | |
rule [EnumerableFilterRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] importance 0.9112500000000001 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.45562500000000006 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [TableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
rule [BindableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
rule [EnumerableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
rule [SortRemoveRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveConstantKeysRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveConstantKeysRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.45562500000000006 | |
rule [PruneSortLimit0] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.45562500000000006 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.45562500000000006 | |
rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] importance 0.45562500000000006 | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] importance 0.45562500000000006 | |
rule [EnumerableSortRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableSortRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.45562500000000006 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.45562500000000006 | |
2019-03-18 00:21:38,470 [main] DEBUG - Pop match: rule [MaterializedViewJoinRule(Filter)] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] | |
2019-03-18 00:21:38,470 [main] DEBUG - call#64: Apply rule [MaterializedViewJoinRule(Filter)] to [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] | |
2019-03-18 00:21:38,470 [main] DEBUG - call#64 generated 0 successors. | |
2019-03-18 00:21:38,471 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 21/19; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,472 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.820125 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9112500000000001 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.45562500000000006 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=null, importance=0.45562500000000006 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=null, importance=0.45562500000000006 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.45562500000000006 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25; rel25 -> subset32; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
}Importances: { rel#14:Subset#1.NONE.[]=0.9112500000000001 rel#12:Subset#0.NONE.[]=0.820125 rel#32:Subset#1.ENUMERABLE.[]=0.4510687500000001 rel#36:Subset#1.BINDABLE.[]=0.0} | |
2019-03-18 00:21:38,472 [main] TRACE - Sorted rule queue: | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.45562500000000006 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [TableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
rule [BindableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
rule [EnumerableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.820125 | |
rule [SortRemoveRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveConstantKeysRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveConstantKeysRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.45562500000000006 | |
rule [PruneSortLimit0] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.45562500000000006 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.45562500000000006 | |
rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] importance 0.45562500000000006 | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] importance 0.45562500000000006 | |
rule [EnumerableSortRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableSortRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.45562500000000006 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.45562500000000006 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.45562500000000006 | |
2019-03-18 00:21:38,472 [main] DEBUG - Pop match: rule [EnumerableFilterRule] rels [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] | |
2019-03-18 00:21:38,472 [main] DEBUG - call#54: Apply rule [EnumerableFilterRule] to [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] | |
2019-03-18 00:21:38,472 [main] TRACE - new RelSubset#37 | |
2019-03-18 00:21:38,473 [main] TRACE - new EnumerableFilter#38 | |
2019-03-18 00:21:38,473 [main] DEBUG - Transform to: rel#38 via EnumerableFilterRule | |
2019-03-18 00:21:38,473 [main] TRACE - call#54: Rule EnumerableFilterRule arguments [rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John'))] created rel#38:EnumerableFilter | |
2019-03-18 00:21:38,473 [main] TRACE - Register rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')) in rel#32:Subset#1.ENUMERABLE.[] | |
2019-03-18 00:21:38,473 [main] TRACE - Importance of [rel#32:Subset#1.ENUMERABLE.[]] to its parent [rel#33:Subset#1.ENUMERABLE.[0 DESC]] is 0.4510687500000001 (parent importance=0.45562500000000006, child cost=1.0E30, parent cost=1.0E30) | |
2019-03-18 00:21:38,473 [main] TRACE - Importance of [rel#32:Subset#1.ENUMERABLE.[]] to its parent [rel#31:Subset#1.NONE.[0 DESC]] is 0.4510687500000001 (parent importance=0.45562500000000006, child cost=1.0E30, parent cost=1.0E30) | |
2019-03-18 00:21:38,473 [main] TRACE - Importance of [rel#32:Subset#1.ENUMERABLE.[]] to its parent [rel#32:Subset#1.ENUMERABLE.[]] is 0.4510687500000001 (parent importance=0.45562500000000006, child cost=1.0E30, parent cost=1.0E30) | |
2019-03-18 00:21:38,473 [main] TRACE - Importance of [rel#32:Subset#1.ENUMERABLE.[]] is 0.4510687500000001 | |
2019-03-18 00:21:38,474 [main] TRACE - OPTIMIZE Rule-match queued: rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] | |
2019-03-18 00:21:38,474 [main] TRACE - OPTIMIZE Rule-match queued: rule [MaterializedViewJoinRule(Filter)] rels [rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] | |
2019-03-18 00:21:38,474 [main] DEBUG - call#54 generated 1 successors: [rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] | |
2019-03-18 00:21:38,474 [main] TRACE - boostImportance(1.25, [rel#14:Subset#1.NONE.[], rel#12:Subset#0.NONE.[]]) | |
2019-03-18 00:21:38,474 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 22/20; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,476 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.9999999999999999 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9999999999999999 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.49999999999999994 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.49999999999999994 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]",color=red] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25; rel25 -> subset32; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38; rel38 -> subset37; | |
}Importances: { rel#12:Subset#0.NONE.[]=0.9999999999999999 rel#14:Subset#1.NONE.[]=0.9999999999999999 rel#32:Subset#1.ENUMERABLE.[]=0.4510687500000001 rel#36:Subset#1.BINDABLE.[]=0.0} | |
2019-03-18 00:21:38,476 [main] TRACE - Sorted rule queue: | |
rule [BindableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.9999999999999999 | |
rule [EnumerableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.9999999999999999 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [EnumerableSortRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableSortRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.49999999999999994 | |
2019-03-18 00:21:38,476 [main] DEBUG - Pop match: rule [TableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] | |
2019-03-18 00:21:38,476 [main] DEBUG - call#21: Apply rule [TableScanRule] to [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] | |
2019-03-18 00:21:38,476 [main] TRACE - new LogicalTableScan#39 | |
2019-03-18 00:21:38,476 [main] DEBUG - Transform to: rel#39 via TableScanRule | |
2019-03-18 00:21:38,476 [main] TRACE - call#21: Rule TableScanRule arguments [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] created rel#39:LogicalTableScan | |
2019-03-18 00:21:38,476 [main] TRACE - Register: rel#39 is equivalent to rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]) | |
2019-03-18 00:21:38,477 [main] DEBUG - call#21 generated 1 successors: [rel#39:LogicalTableScan.NONE.[](table=[SALES, EMPS])] | |
2019-03-18 00:21:38,477 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 23/21; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,478 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.9999999999999999 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9999999999999999 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.49999999999999994 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.49999999999999994 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]",color=red] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25; rel25 -> subset32; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38; rel38 -> subset37; | |
}Importances: { rel#12:Subset#0.NONE.[]=0.9999999999999999 rel#14:Subset#1.NONE.[]=0.9999999999999999 rel#32:Subset#1.ENUMERABLE.[]=0.4510687500000001 rel#36:Subset#1.BINDABLE.[]=0.0} | |
2019-03-18 00:21:38,478 [main] TRACE - Sorted rule queue: | |
rule [EnumerableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] importance 0.9999999999999999 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [EnumerableSortRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableSortRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.49999999999999994 | |
2019-03-18 00:21:38,478 [main] DEBUG - Pop match: rule [BindableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] | |
2019-03-18 00:21:38,479 [main] DEBUG - call#19: Apply rule [BindableTableScanRule] to [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] | |
2019-03-18 00:21:38,479 [main] TRACE - new BindableTableScan#40 | |
2019-03-18 00:21:38,479 [main] DEBUG - Transform to: rel#40 via BindableTableScanRule | |
2019-03-18 00:21:38,479 [main] TRACE - call#19: Rule BindableTableScanRule arguments [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] created rel#40:BindableTableScan | |
2019-03-18 00:21:38,479 [main] TRACE - new RelSubset#41 | |
2019-03-18 00:21:38,479 [main] TRACE - Subset cost improved: subset [rel#41:Subset#0.BINDABLE.[]] cost was {inf} now {1.0 rows, 1.01 cpu, 0.0 io} | |
2019-03-18 00:21:38,479 [main] TRACE - Register rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS]) in rel#41:Subset#0.BINDABLE.[] | |
2019-03-18 00:21:38,479 [main] TRACE - Importance of [rel#41:Subset#0.BINDABLE.[]] is 0.0 | |
2019-03-18 00:21:38,479 [main] TRACE - OPTIMIZE Rule-match queued: rule [EnumerableInterpreterRule] rels [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] | |
2019-03-18 00:21:38,479 [main] TRACE - OPTIMIZE Rule-match queued: rule [EnumerableInterpreterRule] rels [rel#41:Subset#0.BINDABLE.[]] | |
2019-03-18 00:21:38,480 [main] DEBUG - call#19 generated 1 successors: [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] | |
2019-03-18 00:21:38,480 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 24/22; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,481 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.9999999999999999 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#41:Subset#0.BINDABLE.[], best=rel#40, importance=0.49999999999999994 | |
rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={1.0 rows, 1.01 cpu, 0.0 io} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9999999999999999 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.49999999999999994 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.49999999999999994 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
rel40 [label="rel#40:BindableTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={1.0 rows, 1.01 cpu, 0.0 io}",color=blue,shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]",color=red] | |
subset41 [label="rel#41:Subset#0.BINDABLE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset41 -> rel40[color=blue]; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25; rel25 -> subset32; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38; rel38 -> subset37; | |
}Importances: { rel#12:Subset#0.NONE.[]=0.9999999999999999 rel#14:Subset#1.NONE.[]=0.9999999999999999 rel#32:Subset#1.ENUMERABLE.[]=0.4510687500000001 rel#36:Subset#1.BINDABLE.[]=0.0 rel#41:Subset#0.BINDABLE.[]=0.0} | |
2019-03-18 00:21:38,481 [main] TRACE - Sorted rule queue: | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#41:Subset#0.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [EnumerableSortRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableSortRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.49999999999999994 | |
2019-03-18 00:21:38,481 [main] DEBUG - Pop match: rule [EnumerableTableScanRule] rels [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] | |
2019-03-18 00:21:38,481 [main] DEBUG - call#13: Apply rule [EnumerableTableScanRule] to [rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS])] | |
2019-03-18 00:21:38,481 [main] DEBUG - call#13 generated 0 successors. | |
2019-03-18 00:21:38,481 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 25/23; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,482 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.9999999999999999 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#41:Subset#0.BINDABLE.[], best=rel#40, importance=0.49999999999999994 | |
rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={1.0 rows, 1.01 cpu, 0.0 io} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9999999999999999 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.49999999999999994 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.49999999999999994 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
rel40 [label="rel#40:BindableTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={1.0 rows, 1.01 cpu, 0.0 io}",color=blue,shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]",color=red] | |
subset41 [label="rel#41:Subset#0.BINDABLE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset41 -> rel40[color=blue]; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25; rel25 -> subset32; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38; rel38 -> subset37; | |
}Importances: { rel#12:Subset#0.NONE.[]=0.9999999999999999 rel#14:Subset#1.NONE.[]=0.9999999999999999 rel#32:Subset#1.ENUMERABLE.[]=0.4510687500000001 rel#36:Subset#1.BINDABLE.[]=0.0 rel#41:Subset#0.BINDABLE.[]=0.0} | |
2019-03-18 00:21:38,482 [main] TRACE - Sorted rule queue: | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#41:Subset#0.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [EnumerableSortRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableSortRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.49999999999999994 | |
2019-03-18 00:21:38,482 [main] DEBUG - Pop match: rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,482 [main] DEBUG - call#153: Apply rule [SortRemoveRule] to [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,482 [main] DEBUG - Transform to: rel#31 via SortRemoveRule | |
2019-03-18 00:21:38,482 [main] TRACE - call#153: Rule SortRemoveRule arguments [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] created rel#31:RelSubset | |
2019-03-18 00:21:38,482 [main] DEBUG - call#153 generated 1 successors: [rel#31:Subset#1.NONE.[0 DESC]] | |
2019-03-18 00:21:38,482 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 26/24; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,484 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.9999999999999999 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#41:Subset#0.BINDABLE.[], best=rel#40, importance=0.49999999999999994 | |
rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={1.0 rows, 1.01 cpu, 0.0 io} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9999999999999999 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.49999999999999994 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.49999999999999994 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
rel40 [label="rel#40:BindableTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={1.0 rows, 1.01 cpu, 0.0 io}",color=blue,shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]",color=red] | |
subset41 [label="rel#41:Subset#0.BINDABLE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset41 -> rel40[color=blue]; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25; rel25 -> subset32; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38; rel38 -> subset37; | |
}Importances: { rel#12:Subset#0.NONE.[]=0.9999999999999999 rel#14:Subset#1.NONE.[]=0.9999999999999999 rel#32:Subset#1.ENUMERABLE.[]=0.4510687500000001 rel#36:Subset#1.BINDABLE.[]=0.0 rel#41:Subset#0.BINDABLE.[]=0.0} | |
2019-03-18 00:21:38,484 [main] TRACE - Sorted rule queue: | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#41:Subset#0.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [EnumerableSortRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableSortRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.49999999999999994 | |
2019-03-18 00:21:38,484 [main] DEBUG - Pop match: rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,484 [main] DEBUG - call#141: Apply rule [SortRemoveConstantKeysRule] to [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,491 [main] DEBUG - call#141 generated 0 successors. | |
2019-03-18 00:21:38,492 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 27/25; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,492 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.9999999999999999 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#41:Subset#0.BINDABLE.[], best=rel#40, importance=0.49999999999999994 | |
rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={1.0 rows, 1.01 cpu, 0.0 io} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9999999999999999 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.49999999999999994 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.49999999999999994 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
rel40 [label="rel#40:BindableTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={1.0 rows, 1.01 cpu, 0.0 io}",color=blue,shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]",color=red] | |
subset41 [label="rel#41:Subset#0.BINDABLE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset41 -> rel40[color=blue]; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25; rel25 -> subset32; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38; rel38 -> subset37; | |
}Importances: { rel#12:Subset#0.NONE.[]=0.9999999999999999 rel#14:Subset#1.NONE.[]=0.9999999999999999 rel#32:Subset#1.ENUMERABLE.[]=0.4510687500000001 rel#36:Subset#1.BINDABLE.[]=0.0 rel#41:Subset#0.BINDABLE.[]=0.0} | |
2019-03-18 00:21:38,492 [main] TRACE - Sorted rule queue: | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#41:Subset#0.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [EnumerableSortRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableSortRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.49999999999999994 | |
2019-03-18 00:21:38,492 [main] DEBUG - Pop match: rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,493 [main] DEBUG - call#151: Apply rule [SortProjectTransposeRule] to [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,493 [main] TRACE - new LogicalSort#42 | |
2019-03-18 00:21:38,493 [main] TRACE - new LogicalProject#43 | |
2019-03-18 00:21:38,493 [main] DEBUG - Transform to: rel#43 via SortProjectTransposeRule with equivalences {LogicalSort#42=rel#14:Subset#1.NONE.[]} | |
2019-03-18 00:21:38,493 [main] TRACE - call#151: Rule SortProjectTransposeRule arguments [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] created rel#43:LogicalProject | |
2019-03-18 00:21:38,493 [main] TRACE - Register: rel#42 is equivalent to rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC) | |
2019-03-18 00:21:38,493 [main] TRACE - Register: rel#42 is equivalent to rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC) | |
2019-03-18 00:21:38,494 [main] TRACE - new LogicalProject#44 | |
2019-03-18 00:21:38,494 [main] TRACE - Register rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9) in rel#31:Subset#1.NONE.[0 DESC] | |
2019-03-18 00:21:38,494 [main] TRACE - Importance of [rel#31:Subset#1.NONE.[0 DESC]] to its parent [rel#33:Subset#1.ENUMERABLE.[0 DESC]] is 0.49499999999999994 (parent importance=0.49999999999999994, child cost=1.0E30, parent cost=1.0E30) | |
2019-03-18 00:21:38,494 [main] TRACE - Importance of [rel#31:Subset#1.NONE.[0 DESC]] to its parent [rel#31:Subset#1.NONE.[0 DESC]] is 0.49499999999999994 (parent importance=0.49999999999999994, child cost=1.0E30, parent cost=1.0E30) | |
2019-03-18 00:21:38,494 [main] TRACE - Importance of [rel#31:Subset#1.NONE.[0 DESC]] is 0.49499999999999994 | |
2019-03-18 00:21:38,494 [main] TRACE - OPTIMIZE Rule-match queued: rule [ProjectMergeRule:force_mode] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,494 [main] TRACE - OPTIMIZE Rule-match queued: rule [ProjectMergeRule:force_mode] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,494 [main] TRACE - OPTIMIZE Rule-match queued: rule [EnumerableProjectRule] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,494 [main] TRACE - OPTIMIZE Rule-match queued: rule [ProjectRemoveRule] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,494 [main] TRACE - OPTIMIZE Rule-match queued: rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,494 [main] DEBUG - call#151 generated 1 successors: [LogicalProject#43] | |
2019-03-18 00:21:38,494 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 28/26; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,495 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.9999999999999999 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#41:Subset#0.BINDABLE.[], best=rel#40, importance=0.49999999999999994 | |
rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={1.0 rows, 1.01 cpu, 0.0 io} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9999999999999999 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.49999999999999994 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.49999999999999994 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
rel40 [label="rel#40:BindableTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={1.0 rows, 1.01 cpu, 0.0 io}",color=blue,shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]",color=red] | |
subset41 [label="rel#41:Subset#0.BINDABLE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel44 [label="rel#44:LogicalProject\ninput=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset41 -> rel40[color=blue]; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25; rel25 -> subset32; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38; rel38 -> subset37; | |
subset31 -> rel44; rel44 -> subset31; | |
}Importances: { rel#12:Subset#0.NONE.[]=0.9999999999999999 rel#14:Subset#1.NONE.[]=0.9999999999999999 rel#31:Subset#1.NONE.[0 DESC]=0.49499999999999994 rel#32:Subset#1.ENUMERABLE.[]=0.4510687500000001 rel#36:Subset#1.BINDABLE.[]=0.0 rel#41:Subset#0.BINDABLE.[]=0.0} | |
2019-03-18 00:21:38,495 [main] TRACE - Sorted rule queue: | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ProjectMergeRule:force_mode] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [EnumerableSortRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableSortRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableProjectRule] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#41:Subset#0.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.49999999999999994 | |
2019-03-18 00:21:38,496 [main] DEBUG - Pop match: rule [ProjectMergeRule:force_mode] rels [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,496 [main] DEBUG - call#701: Apply rule [ProjectMergeRule:force_mode] to [rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,496 [main] DEBUG - call#701 generated 0 successors. | |
2019-03-18 00:21:38,497 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 29/27; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,497 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.9999999999999999 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#41:Subset#0.BINDABLE.[], best=rel#40, importance=0.49999999999999994 | |
rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={1.0 rows, 1.01 cpu, 0.0 io} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9999999999999999 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.49999999999999994 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.49999999999999994 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
rel40 [label="rel#40:BindableTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={1.0 rows, 1.01 cpu, 0.0 io}",color=blue,shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]",color=red] | |
subset41 [label="rel#41:Subset#0.BINDABLE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel44 [label="rel#44:LogicalProject\ninput=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset41 -> rel40[color=blue]; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25; rel25 -> subset32; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38; rel38 -> subset37; | |
subset31 -> rel44; rel44 -> subset31; | |
}Importances: { rel#12:Subset#0.NONE.[]=0.9999999999999999 rel#14:Subset#1.NONE.[]=0.9999999999999999 rel#31:Subset#1.NONE.[0 DESC]=0.49499999999999994 rel#32:Subset#1.ENUMERABLE.[]=0.4510687500000001 rel#36:Subset#1.BINDABLE.[]=0.0 rel#41:Subset#0.BINDABLE.[]=0.0} | |
2019-03-18 00:21:38,497 [main] TRACE - Sorted rule queue: | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#16,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ProjectMergeRule:force_mode] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [EnumerableSortRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableSortRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableProjectRule] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#41:Subset#0.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.49999999999999994 | |
2019-03-18 00:21:38,497 [main] DEBUG - Pop match: rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,498 [main] DEBUG - call#147: Apply rule [PruneSortLimit0] to [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,498 [main] DEBUG - call#147 generated 0 successors. | |
2019-03-18 00:21:38,498 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 30/28; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,498 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.9999999999999999 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#41:Subset#0.BINDABLE.[], best=rel#40, importance=0.49999999999999994 | |
rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={1.0 rows, 1.01 cpu, 0.0 io} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9999999999999999 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.49999999999999994 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.49999999999999994 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
rel40 [label="rel#40:BindableTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={1.0 rows, 1.01 cpu, 0.0 io}",color=blue,shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]",color=red] | |
subset41 [label="rel#41:Subset#0.BINDABLE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel44 [label="rel#44:LogicalProject\ninput=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset41 -> rel40[color=blue]; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25; rel25 -> subset32; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38; rel38 -> subset37; | |
subset31 -> rel44; rel44 -> subset31; | |
}Importances: { rel#12:Subset#0.NONE.[]=0.9999999999999999 rel#14:Subset#1.NONE.[]=0.9999999999999999 rel#31:Subset#1.NONE.[0 DESC]=0.49499999999999994 rel#32:Subset#1.ENUMERABLE.[]=0.4510687500000001 rel#36:Subset#1.BINDABLE.[]=0.0 rel#41:Subset#0.BINDABLE.[]=0.0} | |
2019-03-18 00:21:38,498 [main] TRACE - Sorted rule queue: | |
rule [SortRemoveRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ProjectMergeRule:force_mode] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [EnumerableSortRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableSortRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableProjectRule] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#41:Subset#0.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.49999999999999994 | |
2019-03-18 00:21:38,499 [main] DEBUG - Pop match: rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,499 [main] DEBUG - call#161: Apply rule [EnumerableLimitRule] to [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,499 [main] DEBUG - call#161 generated 0 successors. | |
2019-03-18 00:21:38,499 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 31/29; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,499 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.9999999999999999 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#41:Subset#0.BINDABLE.[], best=rel#40, importance=0.49999999999999994 | |
rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={1.0 rows, 1.01 cpu, 0.0 io} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9999999999999999 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.49999999999999994 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.49999999999999994 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
rel40 [label="rel#40:BindableTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={1.0 rows, 1.01 cpu, 0.0 io}",color=blue,shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]",color=red] | |
subset41 [label="rel#41:Subset#0.BINDABLE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel44 [label="rel#44:LogicalProject\ninput=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset41 -> rel40[color=blue]; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25; rel25 -> subset32; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38; rel38 -> subset37; | |
subset31 -> rel44; rel44 -> subset31; | |
}Importances: { rel#12:Subset#0.NONE.[]=0.9999999999999999 rel#14:Subset#1.NONE.[]=0.9999999999999999 rel#31:Subset#1.NONE.[0 DESC]=0.49499999999999994 rel#32:Subset#1.ENUMERABLE.[]=0.4510687500000001 rel#36:Subset#1.BINDABLE.[]=0.0 rel#41:Subset#0.BINDABLE.[]=0.0} | |
2019-03-18 00:21:38,499 [main] TRACE - Sorted rule queue: | |
rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ProjectMergeRule:force_mode] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [EnumerableSortRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableSortRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableProjectRule] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#41:Subset#0.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.49999999999999994 | |
2019-03-18 00:21:38,500 [main] DEBUG - Pop match: rule [SortRemoveRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,500 [main] DEBUG - call#494: Apply rule [SortRemoveRule] to [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,500 [main] DEBUG - Transform to: rel#33 via SortRemoveRule | |
2019-03-18 00:21:38,500 [main] TRACE - call#494: Rule SortRemoveRule arguments [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] created rel#33:RelSubset | |
2019-03-18 00:21:38,500 [main] DEBUG - call#494 generated 1 successors: [rel#33:Subset#1.ENUMERABLE.[0 DESC]] | |
2019-03-18 00:21:38,500 [main] TRACE - boostImportance(1.25, [rel#14:Subset#1.NONE.[], rel#12:Subset#0.NONE.[], rel#31:Subset#1.NONE.[0 DESC]]) | |
2019-03-18 00:21:38,500 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 32/30; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,501 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.9999999999999999 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#41:Subset#0.BINDABLE.[], best=rel#40, importance=0.49999999999999994 | |
rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={1.0 rows, 1.01 cpu, 0.0 io} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9999999999999999 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.6187499999999999 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.49999999999999994 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
rel40 [label="rel#40:BindableTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={1.0 rows, 1.01 cpu, 0.0 io}",color=blue,shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]",color=red] | |
subset41 [label="rel#41:Subset#0.BINDABLE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel44 [label="rel#44:LogicalProject\ninput=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset41 -> rel40[color=blue]; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25; rel25 -> subset32; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38; rel38 -> subset37; | |
subset31 -> rel44; rel44 -> subset31; | |
}Importances: { rel#12:Subset#0.NONE.[]=0.9999999999999999 rel#14:Subset#1.NONE.[]=0.9999999999999999 rel#31:Subset#1.NONE.[0 DESC]=0.6187499999999999 rel#32:Subset#1.ENUMERABLE.[]=0.4510687500000001 rel#36:Subset#1.BINDABLE.[]=0.0 rel#41:Subset#0.BINDABLE.[]=0.0} | |
2019-03-18 00:21:38,501 [main] TRACE - Sorted rule queue: | |
rule [SortRemoveConstantKeysRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.6187499999999999 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.6187499999999999 | |
rule [PruneSortLimit0] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [ProjectRemoveRule] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.6187499999999999 | |
rule [ProjectMergeRule:force_mode] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.6187499999999999 | |
rule [EnumerableSortRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [EnumerableSortRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [EnumerableProjectRule] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.6187499999999999 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#41:Subset#0.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.49999999999999994 | |
2019-03-18 00:21:38,502 [main] DEBUG - Pop match: rule [SortRemoveRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,502 [main] DEBUG - call#465: Apply rule [SortRemoveRule] to [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,502 [main] DEBUG - Transform to: rel#31 via SortRemoveRule | |
2019-03-18 00:21:38,502 [main] TRACE - call#465: Rule SortRemoveRule arguments [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] created rel#31:RelSubset | |
2019-03-18 00:21:38,502 [main] DEBUG - call#465 generated 1 successors: [rel#31:Subset#1.NONE.[0 DESC]] | |
2019-03-18 00:21:38,502 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 33/31; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,503 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.9999999999999999 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#41:Subset#0.BINDABLE.[], best=rel#40, importance=0.49999999999999994 | |
rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={1.0 rows, 1.01 cpu, 0.0 io} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9999999999999999 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.6187499999999999 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.49999999999999994 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
rel40 [label="rel#40:BindableTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={1.0 rows, 1.01 cpu, 0.0 io}",color=blue,shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]",color=red] | |
subset41 [label="rel#41:Subset#0.BINDABLE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel44 [label="rel#44:LogicalProject\ninput=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset41 -> rel40[color=blue]; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25; rel25 -> subset32; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38; rel38 -> subset37; | |
subset31 -> rel44; rel44 -> subset31; | |
}Importances: { rel#12:Subset#0.NONE.[]=0.9999999999999999 rel#14:Subset#1.NONE.[]=0.9999999999999999 rel#31:Subset#1.NONE.[0 DESC]=0.6187499999999999 rel#32:Subset#1.ENUMERABLE.[]=0.4510687500000001 rel#36:Subset#1.BINDABLE.[]=0.0 rel#41:Subset#0.BINDABLE.[]=0.0} | |
2019-03-18 00:21:38,503 [main] TRACE - Sorted rule queue: | |
rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.6187499999999999 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.6187499999999999 | |
rule [PruneSortLimit0] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [ProjectRemoveRule] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.6187499999999999 | |
rule [ProjectMergeRule:force_mode] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.6187499999999999 | |
rule [EnumerableSortRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [EnumerableSortRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [EnumerableProjectRule] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.6187499999999999 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#41:Subset#0.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.49999999999999994 | |
2019-03-18 00:21:38,503 [main] DEBUG - Pop match: rule [SortRemoveConstantKeysRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,503 [main] DEBUG - call#483: Apply rule [SortRemoveConstantKeysRule] to [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,503 [main] DEBUG - call#483 generated 0 successors. | |
2019-03-18 00:21:38,503 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 34/32; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,504 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.9999999999999999 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#41:Subset#0.BINDABLE.[], best=rel#40, importance=0.49999999999999994 | |
rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={1.0 rows, 1.01 cpu, 0.0 io} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9999999999999999 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.6187499999999999 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.49999999999999994 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
rel40 [label="rel#40:BindableTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={1.0 rows, 1.01 cpu, 0.0 io}",color=blue,shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]",color=red] | |
subset41 [label="rel#41:Subset#0.BINDABLE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel44 [label="rel#44:LogicalProject\ninput=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset41 -> rel40[color=blue]; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25; rel25 -> subset32; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38; rel38 -> subset37; | |
subset31 -> rel44; rel44 -> subset31; | |
}Importances: { rel#12:Subset#0.NONE.[]=0.9999999999999999 rel#14:Subset#1.NONE.[]=0.9999999999999999 rel#31:Subset#1.NONE.[0 DESC]=0.6187499999999999 rel#32:Subset#1.ENUMERABLE.[]=0.4510687500000001 rel#36:Subset#1.BINDABLE.[]=0.0 rel#41:Subset#0.BINDABLE.[]=0.0} | |
2019-03-18 00:21:38,505 [main] TRACE - Sorted rule queue: | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.6187499999999999 | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.6187499999999999 | |
rule [PruneSortLimit0] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [ProjectRemoveRule] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.6187499999999999 | |
rule [ProjectMergeRule:force_mode] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.6187499999999999 | |
rule [EnumerableSortRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [EnumerableSortRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [EnumerableProjectRule] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.6187499999999999 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#41:Subset#0.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.49999999999999994 | |
2019-03-18 00:21:38,505 [main] DEBUG - Pop match: rule [SortRemoveConstantKeysRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,505 [main] DEBUG - call#453: Apply rule [SortRemoveConstantKeysRule] to [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,505 [main] DEBUG - call#453 generated 0 successors. | |
2019-03-18 00:21:38,505 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 35/33; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,506 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.9999999999999999 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#41:Subset#0.BINDABLE.[], best=rel#40, importance=0.49999999999999994 | |
rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={1.0 rows, 1.01 cpu, 0.0 io} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9999999999999999 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.6187499999999999 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.49999999999999994 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
rel40 [label="rel#40:BindableTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={1.0 rows, 1.01 cpu, 0.0 io}",color=blue,shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]",color=red] | |
subset41 [label="rel#41:Subset#0.BINDABLE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel44 [label="rel#44:LogicalProject\ninput=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset41 -> rel40[color=blue]; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25; rel25 -> subset32; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38; rel38 -> subset37; | |
subset31 -> rel44; rel44 -> subset31; | |
}Importances: { rel#12:Subset#0.NONE.[]=0.9999999999999999 rel#14:Subset#1.NONE.[]=0.9999999999999999 rel#31:Subset#1.NONE.[0 DESC]=0.6187499999999999 rel#32:Subset#1.ENUMERABLE.[]=0.4510687500000001 rel#36:Subset#1.BINDABLE.[]=0.0 rel#41:Subset#0.BINDABLE.[]=0.0} | |
2019-03-18 00:21:38,506 [main] TRACE - Sorted rule queue: | |
rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.6187499999999999 | |
rule [PruneSortLimit0] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [ProjectRemoveRule] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.6187499999999999 | |
rule [ProjectMergeRule:force_mode] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.6187499999999999 | |
rule [EnumerableSortRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [EnumerableSortRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [EnumerableProjectRule] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.6187499999999999 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#41:Subset#0.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.49999999999999994 | |
2019-03-18 00:21:38,506 [main] DEBUG - Skip match: rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,506 [main] TRACE - Sorted rule queue: | |
rule [PruneSortLimit0] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [ProjectRemoveRule] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.6187499999999999 | |
rule [ProjectMergeRule:force_mode] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.6187499999999999 | |
rule [EnumerableSortRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [EnumerableSortRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [EnumerableProjectRule] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.6187499999999999 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#41:Subset#0.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.49999999999999994 | |
2019-03-18 00:21:38,506 [main] DEBUG - Pop match: rule [SortProjectTransposeRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,506 [main] DEBUG - call#437: Apply rule [SortProjectTransposeRule] to [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,506 [main] TRACE - new LogicalSort#45 | |
2019-03-18 00:21:38,506 [main] TRACE - new LogicalProject#46 | |
2019-03-18 00:21:38,506 [main] DEBUG - Transform to: rel#46 via SortProjectTransposeRule with equivalences {LogicalSort#45=rel#14:Subset#1.NONE.[]} | |
2019-03-18 00:21:38,507 [main] TRACE - call#437: Rule SortProjectTransposeRule arguments [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] created rel#46:LogicalProject | |
2019-03-18 00:21:38,507 [main] TRACE - Register: rel#45 is equivalent to rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC) | |
2019-03-18 00:21:38,507 [main] TRACE - Register: rel#45 is equivalent to rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC) | |
2019-03-18 00:21:38,507 [main] TRACE - new LogicalProject#47 | |
2019-03-18 00:21:38,507 [main] TRACE - Register: rel#47 is equivalent to rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9) | |
2019-03-18 00:21:38,507 [main] DEBUG - call#437 generated 1 successors: [LogicalProject#46] | |
2019-03-18 00:21:38,507 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 36/34; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,508 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.9999999999999999 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#41:Subset#0.BINDABLE.[], best=rel#40, importance=0.49999999999999994 | |
rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={1.0 rows, 1.01 cpu, 0.0 io} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9999999999999999 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.6187499999999999 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.49999999999999994 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
rel40 [label="rel#40:BindableTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={1.0 rows, 1.01 cpu, 0.0 io}",color=blue,shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]",color=red] | |
subset41 [label="rel#41:Subset#0.BINDABLE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel44 [label="rel#44:LogicalProject\ninput=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset41 -> rel40[color=blue]; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25; rel25 -> subset32; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38; rel38 -> subset37; | |
subset31 -> rel44; rel44 -> subset31; | |
}Importances: { rel#12:Subset#0.NONE.[]=0.9999999999999999 rel#14:Subset#1.NONE.[]=0.9999999999999999 rel#31:Subset#1.NONE.[0 DESC]=0.6187499999999999 rel#32:Subset#1.ENUMERABLE.[]=0.4510687500000001 rel#36:Subset#1.BINDABLE.[]=0.0 rel#41:Subset#0.BINDABLE.[]=0.0} | |
2019-03-18 00:21:38,509 [main] TRACE - Sorted rule queue: | |
rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [ProjectRemoveRule] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.6187499999999999 | |
rule [ProjectMergeRule:force_mode] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.6187499999999999 | |
rule [EnumerableSortRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [EnumerableSortRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [EnumerableProjectRule] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.6187499999999999 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#41:Subset#0.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.49999999999999994 | |
2019-03-18 00:21:38,509 [main] DEBUG - Pop match: rule [PruneSortLimit0] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,509 [main] DEBUG - call#489: Apply rule [PruneSortLimit0] to [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,509 [main] DEBUG - call#489 generated 0 successors. | |
2019-03-18 00:21:38,509 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 37/35; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,510 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.9999999999999999 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#41:Subset#0.BINDABLE.[], best=rel#40, importance=0.49999999999999994 | |
rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={1.0 rows, 1.01 cpu, 0.0 io} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9999999999999999 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.6187499999999999 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.49999999999999994 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
rel40 [label="rel#40:BindableTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={1.0 rows, 1.01 cpu, 0.0 io}",color=blue,shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]",color=red] | |
subset41 [label="rel#41:Subset#0.BINDABLE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel44 [label="rel#44:LogicalProject\ninput=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset41 -> rel40[color=blue]; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25; rel25 -> subset32; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38; rel38 -> subset37; | |
subset31 -> rel44; rel44 -> subset31; | |
}Importances: { rel#12:Subset#0.NONE.[]=0.9999999999999999 rel#14:Subset#1.NONE.[]=0.9999999999999999 rel#31:Subset#1.NONE.[0 DESC]=0.6187499999999999 rel#32:Subset#1.ENUMERABLE.[]=0.4510687500000001 rel#36:Subset#1.BINDABLE.[]=0.0 rel#41:Subset#0.BINDABLE.[]=0.0} | |
2019-03-18 00:21:38,510 [main] TRACE - Sorted rule queue: | |
rule [ProjectRemoveRule] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.6187499999999999 | |
rule [ProjectMergeRule:force_mode] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.6187499999999999 | |
rule [EnumerableSortRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [EnumerableSortRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [EnumerableProjectRule] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.6187499999999999 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#41:Subset#0.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.49999999999999994 | |
2019-03-18 00:21:38,510 [main] DEBUG - Pop match: rule [PruneSortLimit0] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,510 [main] DEBUG - call#459: Apply rule [PruneSortLimit0] to [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,510 [main] DEBUG - call#459 generated 0 successors. | |
2019-03-18 00:21:38,510 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 38/36; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,511 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.9999999999999999 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#41:Subset#0.BINDABLE.[], best=rel#40, importance=0.49999999999999994 | |
rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={1.0 rows, 1.01 cpu, 0.0 io} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9999999999999999 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.6187499999999999 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.49999999999999994 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
rel40 [label="rel#40:BindableTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={1.0 rows, 1.01 cpu, 0.0 io}",color=blue,shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]",color=red] | |
subset41 [label="rel#41:Subset#0.BINDABLE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel44 [label="rel#44:LogicalProject\ninput=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset41 -> rel40[color=blue]; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25; rel25 -> subset32; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38; rel38 -> subset37; | |
subset31 -> rel44; rel44 -> subset31; | |
}Importances: { rel#12:Subset#0.NONE.[]=0.9999999999999999 rel#14:Subset#1.NONE.[]=0.9999999999999999 rel#31:Subset#1.NONE.[0 DESC]=0.6187499999999999 rel#32:Subset#1.ENUMERABLE.[]=0.4510687500000001 rel#36:Subset#1.BINDABLE.[]=0.0 rel#41:Subset#0.BINDABLE.[]=0.0} | |
2019-03-18 00:21:38,511 [main] TRACE - Sorted rule queue: | |
rule [ProjectMergeRule:force_mode] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.6187499999999999 | |
rule [EnumerableSortRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [EnumerableSortRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [EnumerableProjectRule] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.6187499999999999 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#41:Subset#0.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.49999999999999994 | |
2019-03-18 00:21:38,511 [main] DEBUG - Pop match: rule [ProjectRemoveRule] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,511 [main] DEBUG - call#717: Apply rule [ProjectRemoveRule] to [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,511 [main] DEBUG - Transform to: rel#31 via ProjectRemoveRule | |
2019-03-18 00:21:38,511 [main] TRACE - call#717: Rule ProjectRemoveRule arguments [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] created rel#31:RelSubset | |
2019-03-18 00:21:38,511 [main] DEBUG - call#717 generated 1 successors: [rel#31:Subset#1.NONE.[0 DESC]] | |
2019-03-18 00:21:38,511 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 39/37; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,512 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.9999999999999999 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#41:Subset#0.BINDABLE.[], best=rel#40, importance=0.49999999999999994 | |
rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={1.0 rows, 1.01 cpu, 0.0 io} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9999999999999999 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.6187499999999999 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.49999999999999994 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
rel40 [label="rel#40:BindableTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={1.0 rows, 1.01 cpu, 0.0 io}",color=blue,shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]",color=red] | |
subset41 [label="rel#41:Subset#0.BINDABLE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel44 [label="rel#44:LogicalProject\ninput=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset41 -> rel40[color=blue]; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25; rel25 -> subset32; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38; rel38 -> subset37; | |
subset31 -> rel44; rel44 -> subset31; | |
}Importances: { rel#12:Subset#0.NONE.[]=0.9999999999999999 rel#14:Subset#1.NONE.[]=0.9999999999999999 rel#31:Subset#1.NONE.[0 DESC]=0.6187499999999999 rel#32:Subset#1.ENUMERABLE.[]=0.4510687500000001 rel#36:Subset#1.BINDABLE.[]=0.0 rel#41:Subset#0.BINDABLE.[]=0.0} | |
2019-03-18 00:21:38,513 [main] TRACE - Sorted rule queue: | |
rule [EnumerableSortRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [EnumerableSortRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [EnumerableProjectRule] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.6187499999999999 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#41:Subset#0.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.49999999999999994 | |
2019-03-18 00:21:38,513 [main] DEBUG - Skip match: rule [ProjectMergeRule:force_mode] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,513 [main] TRACE - Sorted rule queue: | |
rule [EnumerableSortRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [EnumerableProjectRule] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.6187499999999999 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#41:Subset#0.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.49999999999999994 | |
2019-03-18 00:21:38,513 [main] DEBUG - Pop match: rule [EnumerableSortRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,513 [main] DEBUG - call#491: Apply rule [EnumerableSortRule] to [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,513 [main] TRACE - new EnumerableSort#48 | |
2019-03-18 00:21:38,513 [main] DEBUG - Transform to: rel#48 via EnumerableSortRule | |
2019-03-18 00:21:38,513 [main] TRACE - call#491: Rule EnumerableSortRule arguments [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] created rel#48:EnumerableSort | |
2019-03-18 00:21:38,513 [main] TRACE - Register: rel#48 is equivalent to rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC) | |
2019-03-18 00:21:38,513 [main] DEBUG - call#491 generated 1 successors: [rel#48:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,513 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 40/38; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,514 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.9999999999999999 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#41:Subset#0.BINDABLE.[], best=rel#40, importance=0.49999999999999994 | |
rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={1.0 rows, 1.01 cpu, 0.0 io} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9999999999999999 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.6187499999999999 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.49999999999999994 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
rel40 [label="rel#40:BindableTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={1.0 rows, 1.01 cpu, 0.0 io}",color=blue,shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]",color=red] | |
subset41 [label="rel#41:Subset#0.BINDABLE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel44 [label="rel#44:LogicalProject\ninput=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset41 -> rel40[color=blue]; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25; rel25 -> subset32; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38; rel38 -> subset37; | |
subset31 -> rel44; rel44 -> subset31; | |
}Importances: { rel#12:Subset#0.NONE.[]=0.9999999999999999 rel#14:Subset#1.NONE.[]=0.9999999999999999 rel#31:Subset#1.NONE.[0 DESC]=0.6187499999999999 rel#32:Subset#1.ENUMERABLE.[]=0.4510687500000001 rel#36:Subset#1.BINDABLE.[]=0.0 rel#41:Subset#0.BINDABLE.[]=0.0} | |
2019-03-18 00:21:38,514 [main] TRACE - Sorted rule queue: | |
rule [EnumerableProjectRule] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.6187499999999999 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#41:Subset#0.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.49999999999999994 | |
2019-03-18 00:21:38,514 [main] DEBUG - Pop match: rule [EnumerableSortRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,514 [main] DEBUG - call#461: Apply rule [EnumerableSortRule] to [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,514 [main] TRACE - new EnumerableSort#49 | |
2019-03-18 00:21:38,514 [main] DEBUG - Transform to: rel#49 via EnumerableSortRule | |
2019-03-18 00:21:38,514 [main] TRACE - call#461: Rule EnumerableSortRule arguments [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] created rel#49:EnumerableSort | |
2019-03-18 00:21:38,515 [main] TRACE - Register: rel#49 is equivalent to rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC) | |
2019-03-18 00:21:38,515 [main] DEBUG - call#461 generated 1 successors: [rel#49:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,515 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 41/39; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,516 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.9999999999999999 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#41:Subset#0.BINDABLE.[], best=rel#40, importance=0.49999999999999994 | |
rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={1.0 rows, 1.01 cpu, 0.0 io} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9999999999999999 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.6187499999999999 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=null, importance=0.49999999999999994 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.49999999999999994 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
rel40 [label="rel#40:BindableTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={1.0 rows, 1.01 cpu, 0.0 io}",color=blue,shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]",color=red] | |
subset41 [label="rel#41:Subset#0.BINDABLE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel44 [label="rel#44:LogicalProject\ninput=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset41 -> rel40[color=blue]; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25; rel25 -> subset32; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38; rel38 -> subset37; | |
subset31 -> rel44; rel44 -> subset31; | |
}Importances: { rel#12:Subset#0.NONE.[]=0.9999999999999999 rel#14:Subset#1.NONE.[]=0.9999999999999999 rel#31:Subset#1.NONE.[0 DESC]=0.6187499999999999 rel#32:Subset#1.ENUMERABLE.[]=0.4510687500000001 rel#36:Subset#1.BINDABLE.[]=0.0 rel#41:Subset#0.BINDABLE.[]=0.0} | |
2019-03-18 00:21:38,516 [main] TRACE - Sorted rule queue: | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.6187499999999999 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#41:Subset#0.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] importance 0.49999999999999994 | |
rule [SortRemoveRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [SortRemoveConstantKeysRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] importance 0.49999999999999994 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.49999999999999994 | |
2019-03-18 00:21:38,516 [main] DEBUG - Pop match: rule [EnumerableProjectRule] rels [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,516 [main] DEBUG - call#715: Apply rule [EnumerableProjectRule] to [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,525 [main] TRACE - new EnumerableProject#50 | |
2019-03-18 00:21:38,525 [main] DEBUG - Transform to: rel#50 via EnumerableProjectRule | |
2019-03-18 00:21:38,525 [main] TRACE - call#715: Rule EnumerableProjectRule arguments [rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] created rel#50:EnumerableProject | |
2019-03-18 00:21:38,525 [main] TRACE - Register rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9) in rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
2019-03-18 00:21:38,525 [main] TRACE - Importance of [rel#33:Subset#1.ENUMERABLE.[0 DESC]] is 1.0 | |
2019-03-18 00:21:38,525 [main] TRACE - OPTIMIZE Rule-match queued: rule [ProjectMergeRule:force_mode] rels [rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,525 [main] TRACE - OPTIMIZE Rule-match queued: rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,525 [main] TRACE - OPTIMIZE Rule-match queued: rule [ProjectRemoveRule] rels [rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,525 [main] DEBUG - call#715 generated 1 successors: [rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,525 [main] TRACE - boostImportance(1.25, [rel#14:Subset#1.NONE.[], rel#12:Subset#0.NONE.[], rel#31:Subset#1.NONE.[0 DESC]]) | |
2019-03-18 00:21:38,525 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 42/40; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,527 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.9999999999999999 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#41:Subset#0.BINDABLE.[], best=rel#40, importance=0.49999999999999994 | |
rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={1.0 rows, 1.01 cpu, 0.0 io} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9999999999999999 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.7734374999999999 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=null, importance=0.5 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=null, importance=1.0 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.5 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
rel40 [label="rel#40:BindableTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={1.0 rows, 1.01 cpu, 0.0 io}",color=blue,shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]",color=red] | |
subset41 [label="rel#41:Subset#0.BINDABLE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel44 [label="rel#44:LogicalProject\ninput=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel50 [label="rel#50:EnumerableProject\ninput=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset41 -> rel40[color=blue]; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25; rel25 -> subset32; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38; rel38 -> subset37; | |
subset31 -> rel44; rel44 -> subset31; | |
subset33 -> rel50; rel50 -> subset33; | |
}Importances: { rel#33:Subset#1.ENUMERABLE.[0 DESC]=1.0 rel#12:Subset#0.NONE.[]=0.9999999999999999 rel#14:Subset#1.NONE.[]=0.9999999999999999 rel#31:Subset#1.NONE.[0 DESC]=0.7734374999999999 rel#32:Subset#1.ENUMERABLE.[]=0.4510687500000001 rel#36:Subset#1.BINDABLE.[]=0.0 rel#41:Subset#0.BINDABLE.[]=0.0} | |
2019-03-18 00:21:38,527 [main] TRACE - Sorted rule queue: | |
rule [SortRemoveConstantKeysRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 1.0 | |
rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 1.0 | |
rule [ProjectRemoveRule] rels [rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 1.0 | |
rule [ProjectMergeRule:force_mode] rels [rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 1.0 | |
rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] importance 1.0 | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] importance 1.0 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 1.0 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.7734374999999999 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.7734374999999999 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.5 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#41:Subset#0.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.5 | |
2019-03-18 00:21:38,527 [main] DEBUG - Pop match: rule [SortRemoveRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,527 [main] DEBUG - call#536: Apply rule [SortRemoveRule] to [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,527 [main] DEBUG - Transform to: rel#33 via SortRemoveRule | |
2019-03-18 00:21:38,527 [main] TRACE - call#536: Rule SortRemoveRule arguments [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] created rel#33:RelSubset | |
2019-03-18 00:21:38,527 [main] DEBUG - call#536 generated 1 successors: [rel#33:Subset#1.ENUMERABLE.[0 DESC]] | |
2019-03-18 00:21:38,527 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 43/41; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,528 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.9999999999999999 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#41:Subset#0.BINDABLE.[], best=rel#40, importance=0.49999999999999994 | |
rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={1.0 rows, 1.01 cpu, 0.0 io} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9999999999999999 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.7734374999999999 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=null, importance=0.5 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=null, importance=1.0 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.5 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
rel40 [label="rel#40:BindableTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={1.0 rows, 1.01 cpu, 0.0 io}",color=blue,shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]",color=red] | |
subset41 [label="rel#41:Subset#0.BINDABLE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel44 [label="rel#44:LogicalProject\ninput=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel50 [label="rel#50:EnumerableProject\ninput=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset41 -> rel40[color=blue]; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25; rel25 -> subset32; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38; rel38 -> subset37; | |
subset31 -> rel44; rel44 -> subset31; | |
subset33 -> rel50; rel50 -> subset33; | |
}Importances: { rel#33:Subset#1.ENUMERABLE.[0 DESC]=1.0 rel#12:Subset#0.NONE.[]=0.9999999999999999 rel#14:Subset#1.NONE.[]=0.9999999999999999 rel#31:Subset#1.NONE.[0 DESC]=0.7734374999999999 rel#32:Subset#1.ENUMERABLE.[]=0.4510687500000001 rel#36:Subset#1.BINDABLE.[]=0.0 rel#41:Subset#0.BINDABLE.[]=0.0} | |
2019-03-18 00:21:38,528 [main] TRACE - Sorted rule queue: | |
rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 1.0 | |
rule [ProjectRemoveRule] rels [rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 1.0 | |
rule [ProjectMergeRule:force_mode] rels [rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 1.0 | |
rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] importance 1.0 | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] importance 1.0 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 1.0 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.7734374999999999 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.7734374999999999 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.5 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#41:Subset#0.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.5 | |
2019-03-18 00:21:38,528 [main] DEBUG - Pop match: rule [SortRemoveConstantKeysRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,529 [main] DEBUG - call#527: Apply rule [SortRemoveConstantKeysRule] to [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,529 [main] DEBUG - call#527 generated 0 successors. | |
2019-03-18 00:21:38,529 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 44/42; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,529 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.9999999999999999 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#41:Subset#0.BINDABLE.[], best=rel#40, importance=0.49999999999999994 | |
rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={1.0 rows, 1.01 cpu, 0.0 io} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9999999999999999 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.7734374999999999 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=null, importance=0.5 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=null, importance=1.0 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.5 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
rel40 [label="rel#40:BindableTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={1.0 rows, 1.01 cpu, 0.0 io}",color=blue,shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]",color=red] | |
subset41 [label="rel#41:Subset#0.BINDABLE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel44 [label="rel#44:LogicalProject\ninput=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel50 [label="rel#50:EnumerableProject\ninput=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset41 -> rel40[color=blue]; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25; rel25 -> subset32; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38; rel38 -> subset37; | |
subset31 -> rel44; rel44 -> subset31; | |
subset33 -> rel50; rel50 -> subset33; | |
}Importances: { rel#33:Subset#1.ENUMERABLE.[0 DESC]=1.0 rel#12:Subset#0.NONE.[]=0.9999999999999999 rel#14:Subset#1.NONE.[]=0.9999999999999999 rel#31:Subset#1.NONE.[0 DESC]=0.7734374999999999 rel#32:Subset#1.ENUMERABLE.[]=0.4510687500000001 rel#36:Subset#1.BINDABLE.[]=0.0 rel#41:Subset#0.BINDABLE.[]=0.0} | |
2019-03-18 00:21:38,530 [main] TRACE - Sorted rule queue: | |
rule [ProjectRemoveRule] rels [rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 1.0 | |
rule [ProjectMergeRule:force_mode] rels [rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 1.0 | |
rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] importance 1.0 | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] importance 1.0 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 1.0 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.7734374999999999 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.7734374999999999 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.5 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#41:Subset#0.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.5 | |
2019-03-18 00:21:38,530 [main] DEBUG - Pop match: rule [PruneSortLimit0] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,530 [main] DEBUG - call#533: Apply rule [PruneSortLimit0] to [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,530 [main] DEBUG - call#533 generated 0 successors. | |
2019-03-18 00:21:38,530 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 45/43; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,531 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.9999999999999999 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#41:Subset#0.BINDABLE.[], best=rel#40, importance=0.49999999999999994 | |
rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={1.0 rows, 1.01 cpu, 0.0 io} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9999999999999999 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.7734374999999999 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=null, importance=0.5 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=null, importance=1.0 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.5 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
rel40 [label="rel#40:BindableTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={1.0 rows, 1.01 cpu, 0.0 io}",color=blue,shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]",color=red] | |
subset41 [label="rel#41:Subset#0.BINDABLE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel44 [label="rel#44:LogicalProject\ninput=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel50 [label="rel#50:EnumerableProject\ninput=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset41 -> rel40[color=blue]; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25; rel25 -> subset32; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38; rel38 -> subset37; | |
subset31 -> rel44; rel44 -> subset31; | |
subset33 -> rel50; rel50 -> subset33; | |
}Importances: { rel#33:Subset#1.ENUMERABLE.[0 DESC]=1.0 rel#12:Subset#0.NONE.[]=0.9999999999999999 rel#14:Subset#1.NONE.[]=0.9999999999999999 rel#31:Subset#1.NONE.[0 DESC]=0.7734374999999999 rel#32:Subset#1.ENUMERABLE.[]=0.4510687500000001 rel#36:Subset#1.BINDABLE.[]=0.0 rel#41:Subset#0.BINDABLE.[]=0.0} | |
2019-03-18 00:21:38,531 [main] TRACE - Sorted rule queue: | |
rule [ProjectMergeRule:force_mode] rels [rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 1.0 | |
rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] importance 1.0 | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] importance 1.0 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 1.0 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.7734374999999999 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.7734374999999999 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.5 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#41:Subset#0.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.5 | |
2019-03-18 00:21:38,531 [main] DEBUG - Pop match: rule [ProjectRemoveRule] rels [rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,531 [main] DEBUG - call#752: Apply rule [ProjectRemoveRule] to [rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,531 [main] DEBUG - Transform to: rel#33 via ProjectRemoveRule | |
2019-03-18 00:21:38,531 [main] TRACE - call#752: Rule ProjectRemoveRule arguments [rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] created rel#33:RelSubset | |
2019-03-18 00:21:38,531 [main] DEBUG - call#752 generated 1 successors: [rel#33:Subset#1.ENUMERABLE.[0 DESC]] | |
2019-03-18 00:21:38,531 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 46/44; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,532 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.9999999999999999 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#41:Subset#0.BINDABLE.[], best=rel#40, importance=0.49999999999999994 | |
rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={1.0 rows, 1.01 cpu, 0.0 io} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9999999999999999 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.7734374999999999 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=null, importance=0.5 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=null, importance=1.0 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.5 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
rel40 [label="rel#40:BindableTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={1.0 rows, 1.01 cpu, 0.0 io}",color=blue,shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]",color=red] | |
subset41 [label="rel#41:Subset#0.BINDABLE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel44 [label="rel#44:LogicalProject\ninput=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel50 [label="rel#50:EnumerableProject\ninput=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset41 -> rel40[color=blue]; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25; rel25 -> subset32; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38; rel38 -> subset37; | |
subset31 -> rel44; rel44 -> subset31; | |
subset33 -> rel50; rel50 -> subset33; | |
}Importances: { rel#33:Subset#1.ENUMERABLE.[0 DESC]=1.0 rel#12:Subset#0.NONE.[]=0.9999999999999999 rel#14:Subset#1.NONE.[]=0.9999999999999999 rel#31:Subset#1.NONE.[0 DESC]=0.7734374999999999 rel#32:Subset#1.ENUMERABLE.[]=0.4510687500000001 rel#36:Subset#1.BINDABLE.[]=0.0 rel#41:Subset#0.BINDABLE.[]=0.0} | |
2019-03-18 00:21:38,532 [main] TRACE - Sorted rule queue: | |
rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] importance 1.0 | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] importance 1.0 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 1.0 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.7734374999999999 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.7734374999999999 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.5 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#41:Subset#0.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.5 | |
2019-03-18 00:21:38,533 [main] DEBUG - Skip match: rule [ProjectMergeRule:force_mode] rels [rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,533 [main] TRACE - Sorted rule queue: | |
rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] importance 1.0 | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 1.0 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.7734374999999999 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.7734374999999999 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.5 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#41:Subset#0.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.5 | |
2019-03-18 00:21:38,533 [main] DEBUG - Pop match: rule [ExpandConversionRule] rels [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] | |
2019-03-18 00:21:38,533 [main] DEBUG - call#560: Apply rule [ExpandConversionRule] to [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] | |
2019-03-18 00:21:38,533 [main] TRACE - new LogicalSort#51 | |
2019-03-18 00:21:38,533 [main] TRACE - Register: rel#51 is equivalent to rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC) | |
2019-03-18 00:21:38,533 [main] DEBUG - Transform to: rel#33 via ExpandConversionRule | |
2019-03-18 00:21:38,533 [main] TRACE - call#560: Rule ExpandConversionRule arguments [rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC])] created rel#33:RelSubset | |
2019-03-18 00:21:38,533 [main] DEBUG - call#560 generated 1 successors: [rel#33:Subset#1.ENUMERABLE.[0 DESC]] | |
2019-03-18 00:21:38,533 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 47/45; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,534 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.9999999999999999 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#41:Subset#0.BINDABLE.[], best=rel#40, importance=0.49999999999999994 | |
rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={1.0 rows, 1.01 cpu, 0.0 io} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9999999999999999 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.7734374999999999 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=null, importance=0.5 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=null, importance=1.0 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.5 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
rel40 [label="rel#40:BindableTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={1.0 rows, 1.01 cpu, 0.0 io}",color=blue,shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]",color=red] | |
subset41 [label="rel#41:Subset#0.BINDABLE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel44 [label="rel#44:LogicalProject\ninput=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel50 [label="rel#50:EnumerableProject\ninput=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset41 -> rel40[color=blue]; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25; rel25 -> subset32; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38; rel38 -> subset37; | |
subset31 -> rel44; rel44 -> subset31; | |
subset33 -> rel50; rel50 -> subset33; | |
}Importances: { rel#33:Subset#1.ENUMERABLE.[0 DESC]=1.0 rel#12:Subset#0.NONE.[]=0.9999999999999999 rel#14:Subset#1.NONE.[]=0.9999999999999999 rel#31:Subset#1.NONE.[0 DESC]=0.7734374999999999 rel#32:Subset#1.ENUMERABLE.[]=0.4510687500000001 rel#36:Subset#1.BINDABLE.[]=0.0 rel#41:Subset#0.BINDABLE.[]=0.0} | |
2019-03-18 00:21:38,535 [main] TRACE - Sorted rule queue: | |
rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 1.0 | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.7734374999999999 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.7734374999999999 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.5 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#41:Subset#0.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.5 | |
2019-03-18 00:21:38,535 [main] DEBUG - Pop match: rule [ExpandConversionRule] rels [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] | |
2019-03-18 00:21:38,535 [main] DEBUG - call#518: Apply rule [ExpandConversionRule] to [rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC])] | |
2019-03-18 00:21:38,535 [main] DEBUG - call#518 generated 0 successors. | |
2019-03-18 00:21:38,535 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 48/46; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,536 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.9999999999999999 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#41:Subset#0.BINDABLE.[], best=rel#40, importance=0.49999999999999994 | |
rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={1.0 rows, 1.01 cpu, 0.0 io} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9999999999999999 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.7734374999999999 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=null, importance=0.5 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=null, importance=1.0 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.5 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
rel40 [label="rel#40:BindableTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={1.0 rows, 1.01 cpu, 0.0 io}",color=blue,shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]",color=red] | |
subset41 [label="rel#41:Subset#0.BINDABLE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel44 [label="rel#44:LogicalProject\ninput=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel50 [label="rel#50:EnumerableProject\ninput=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset41 -> rel40[color=blue]; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25; rel25 -> subset32; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38; rel38 -> subset37; | |
subset31 -> rel44; rel44 -> subset31; | |
subset33 -> rel50; rel50 -> subset33; | |
}Importances: { rel#33:Subset#1.ENUMERABLE.[0 DESC]=1.0 rel#12:Subset#0.NONE.[]=0.9999999999999999 rel#14:Subset#1.NONE.[]=0.9999999999999999 rel#31:Subset#1.NONE.[0 DESC]=0.7734374999999999 rel#32:Subset#1.ENUMERABLE.[]=0.4510687500000001 rel#36:Subset#1.BINDABLE.[]=0.0 rel#41:Subset#0.BINDABLE.[]=0.0} | |
2019-03-18 00:21:38,536 [main] TRACE - Sorted rule queue: | |
rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] importance 0.7734374999999999 | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.7734374999999999 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.5 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#41:Subset#0.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.5 | |
2019-03-18 00:21:38,536 [main] DEBUG - Pop match: rule [EnumerableLimitRule] rels [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,536 [main] DEBUG - call#544: Apply rule [EnumerableLimitRule] to [rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,536 [main] DEBUG - call#544 generated 0 successors. | |
2019-03-18 00:21:38,536 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 49/47; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,537 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.9999999999999999 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#41:Subset#0.BINDABLE.[], best=rel#40, importance=0.49999999999999994 | |
rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={1.0 rows, 1.01 cpu, 0.0 io} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9999999999999999 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.7734374999999999 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=null, importance=0.5 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=null, importance=1.0 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.5 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
rel40 [label="rel#40:BindableTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={1.0 rows, 1.01 cpu, 0.0 io}",color=blue,shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]",color=red] | |
subset41 [label="rel#41:Subset#0.BINDABLE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel44 [label="rel#44:LogicalProject\ninput=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel50 [label="rel#50:EnumerableProject\ninput=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset41 -> rel40[color=blue]; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25; rel25 -> subset32; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38; rel38 -> subset37; | |
subset31 -> rel44; rel44 -> subset31; | |
subset33 -> rel50; rel50 -> subset33; | |
}Importances: { rel#33:Subset#1.ENUMERABLE.[0 DESC]=1.0 rel#12:Subset#0.NONE.[]=0.9999999999999999 rel#14:Subset#1.NONE.[]=0.9999999999999999 rel#31:Subset#1.NONE.[0 DESC]=0.7734374999999999 rel#32:Subset#1.ENUMERABLE.[]=0.4510687500000001 rel#36:Subset#1.BINDABLE.[]=0.0 rel#41:Subset#0.BINDABLE.[]=0.0} | |
2019-03-18 00:21:38,537 [main] TRACE - Sorted rule queue: | |
rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] importance 0.7734374999999999 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.5 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#41:Subset#0.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.5 | |
2019-03-18 00:21:38,537 [main] DEBUG - Pop match: rule [EnumerableLimitRule] rels [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,537 [main] DEBUG - call#502: Apply rule [EnumerableLimitRule] to [rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,537 [main] DEBUG - call#502 generated 0 successors. | |
2019-03-18 00:21:38,537 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 50/48; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,538 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.9999999999999999 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#41:Subset#0.BINDABLE.[], best=rel#40, importance=0.49999999999999994 | |
rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={1.0 rows, 1.01 cpu, 0.0 io} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9999999999999999 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.7734374999999999 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=null, importance=0.5 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=null, importance=1.0 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.5 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
rel40 [label="rel#40:BindableTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={1.0 rows, 1.01 cpu, 0.0 io}",color=blue,shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]",color=red] | |
subset41 [label="rel#41:Subset#0.BINDABLE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel44 [label="rel#44:LogicalProject\ninput=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel50 [label="rel#50:EnumerableProject\ninput=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset41 -> rel40[color=blue]; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25; rel25 -> subset32; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38; rel38 -> subset37; | |
subset31 -> rel44; rel44 -> subset31; | |
subset33 -> rel50; rel50 -> subset33; | |
}Importances: { rel#33:Subset#1.ENUMERABLE.[0 DESC]=1.0 rel#12:Subset#0.NONE.[]=0.9999999999999999 rel#14:Subset#1.NONE.[]=0.9999999999999999 rel#31:Subset#1.NONE.[0 DESC]=0.7734374999999999 rel#32:Subset#1.ENUMERABLE.[]=0.4510687500000001 rel#36:Subset#1.BINDABLE.[]=0.0 rel#41:Subset#0.BINDABLE.[]=0.0} | |
2019-03-18 00:21:38,538 [main] TRACE - Sorted rule queue: | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.5 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#41:Subset#0.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.5 | |
2019-03-18 00:21:38,538 [main] DEBUG - Pop match: rule [EnumerableLimitRule] rels [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,538 [main] DEBUG - call#473: Apply rule [EnumerableLimitRule] to [rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC)] | |
2019-03-18 00:21:38,538 [main] DEBUG - call#473 generated 0 successors. | |
2019-03-18 00:21:38,538 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 51/49; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,539 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.9999999999999999 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#41:Subset#0.BINDABLE.[], best=rel#40, importance=0.49999999999999994 | |
rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={1.0 rows, 1.01 cpu, 0.0 io} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9999999999999999 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.7734374999999999 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=null, importance=0.5 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=null, importance=1.0 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.5 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
rel40 [label="rel#40:BindableTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={1.0 rows, 1.01 cpu, 0.0 io}",color=blue,shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]",color=red] | |
subset41 [label="rel#41:Subset#0.BINDABLE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel44 [label="rel#44:LogicalProject\ninput=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel50 [label="rel#50:EnumerableProject\ninput=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset41 -> rel40[color=blue]; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25; rel25 -> subset32; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38; rel38 -> subset37; | |
subset31 -> rel44; rel44 -> subset31; | |
subset33 -> rel50; rel50 -> subset33; | |
}Importances: { rel#33:Subset#1.ENUMERABLE.[0 DESC]=1.0 rel#12:Subset#0.NONE.[]=0.9999999999999999 rel#14:Subset#1.NONE.[]=0.9999999999999999 rel#31:Subset#1.NONE.[0 DESC]=0.7734374999999999 rel#32:Subset#1.ENUMERABLE.[]=0.4510687500000001 rel#36:Subset#1.BINDABLE.[]=0.0 rel#41:Subset#0.BINDABLE.[]=0.0} | |
2019-03-18 00:21:38,539 [main] TRACE - Sorted rule queue: | |
rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.5 | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#41:Subset#0.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.5 | |
2019-03-18 00:21:38,539 [main] DEBUG - Pop match: rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,539 [main] DEBUG - call#739: Apply rule [ProjectMergeRule:force_mode] to [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,540 [main] DEBUG - call#739 generated 0 successors. | |
2019-03-18 00:21:38,540 [main] TRACE - boostImportance(1.25, [rel#14:Subset#1.NONE.[], rel#12:Subset#0.NONE.[], rel#31:Subset#1.NONE.[0 DESC]]) | |
2019-03-18 00:21:38,540 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 52/50; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,541 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.9999999999999999 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#41:Subset#0.BINDABLE.[], best=rel#40, importance=0.49999999999999994 | |
rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={1.0 rows, 1.01 cpu, 0.0 io} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9999999999999999 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.9667968749999999 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=null, importance=0.5 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=null, importance=1.0 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.5 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
rel40 [label="rel#40:BindableTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={1.0 rows, 1.01 cpu, 0.0 io}",color=blue,shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]",color=red] | |
subset41 [label="rel#41:Subset#0.BINDABLE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel44 [label="rel#44:LogicalProject\ninput=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel50 [label="rel#50:EnumerableProject\ninput=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset41 -> rel40[color=blue]; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25; rel25 -> subset32; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38; rel38 -> subset37; | |
subset31 -> rel44; rel44 -> subset31; | |
subset33 -> rel50; rel50 -> subset33; | |
}Importances: { rel#33:Subset#1.ENUMERABLE.[0 DESC]=1.0 rel#12:Subset#0.NONE.[]=0.9999999999999999 rel#14:Subset#1.NONE.[]=0.9999999999999999 rel#31:Subset#1.NONE.[0 DESC]=0.9667968749999999 rel#32:Subset#1.ENUMERABLE.[]=0.4510687500000001 rel#36:Subset#1.BINDABLE.[]=0.0 rel#41:Subset#0.BINDABLE.[]=0.0} | |
2019-03-18 00:21:38,541 [main] TRACE - Sorted rule queue: | |
rule [MaterializedViewJoinRule(Filter)] rels [rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#41:Subset#0.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.5 | |
2019-03-18 00:21:38,541 [main] DEBUG - Skip match: rule [MaterializedViewJoinRule(Project-Filter)] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] | |
2019-03-18 00:21:38,541 [main] TRACE - Sorted rule queue: | |
rule [EnumerableInterpreterRule] rels [rel#41:Subset#0.BINDABLE.[]] importance 0.49999999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.5 | |
2019-03-18 00:21:38,541 [main] DEBUG - Pop match: rule [MaterializedViewJoinRule(Filter)] rels [rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] | |
2019-03-18 00:21:38,541 [main] DEBUG - call#652: Apply rule [MaterializedViewJoinRule(Filter)] to [rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John'))] | |
2019-03-18 00:21:38,541 [main] DEBUG - call#652 generated 0 successors. | |
2019-03-18 00:21:38,541 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 53/51; PHASE = OPTIMIZE; COST = {inf} | |
2019-03-18 00:21:38,542 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.9999999999999999 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=null, importance=0.49999999999999994 | |
rel#41:Subset#0.BINDABLE.[], best=rel#40, importance=0.49999999999999994 | |
rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={1.0 rows, 1.01 cpu, 0.0 io} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9999999999999999 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.9667968749999999 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=null, importance=0.5 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=null, importance=1.0 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.5 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
rel40 [label="rel#40:BindableTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={1.0 rows, 1.01 cpu, 0.0 io}",color=blue,shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]",color=red] | |
subset41 [label="rel#41:Subset#0.BINDABLE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel44 [label="rel#44:LogicalProject\ninput=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel50 [label="rel#50:EnumerableProject\ninput=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset41 -> rel40[color=blue]; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25; rel25 -> subset32; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38; rel38 -> subset37; | |
subset31 -> rel44; rel44 -> subset31; | |
subset33 -> rel50; rel50 -> subset33; | |
}Importances: { rel#33:Subset#1.ENUMERABLE.[0 DESC]=1.0 rel#12:Subset#0.NONE.[]=0.9999999999999999 rel#14:Subset#1.NONE.[]=0.9999999999999999 rel#31:Subset#1.NONE.[0 DESC]=0.9667968749999999 rel#32:Subset#1.ENUMERABLE.[]=0.4510687500000001 rel#36:Subset#1.BINDABLE.[]=0.0 rel#41:Subset#0.BINDABLE.[]=0.0} | |
2019-03-18 00:21:38,542 [main] TRACE - Sorted rule queue: | |
rule [EnumerableInterpreterRule] rels [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] importance 0.49999999999999994 | |
rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.5 | |
2019-03-18 00:21:38,542 [main] DEBUG - Pop match: rule [EnumerableInterpreterRule] rels [rel#41:Subset#0.BINDABLE.[]] | |
2019-03-18 00:21:38,542 [main] DEBUG - call#691: Apply rule [EnumerableInterpreterRule] to [rel#41:Subset#0.BINDABLE.[]] | |
2019-03-18 00:21:38,543 [main] TRACE - new EnumerableInterpreter#52 | |
2019-03-18 00:21:38,543 [main] DEBUG - Transform to: rel#52 via EnumerableInterpreterRule | |
2019-03-18 00:21:38,543 [main] TRACE - call#691: Rule EnumerableInterpreterRule arguments [rel#41:Subset#0.BINDABLE.[]] created rel#52:EnumerableInterpreter | |
2019-03-18 00:21:38,560 [main] TRACE - Subset cost improved: subset [rel#37:Subset#0.ENUMERABLE.[]] cost was {inf} now {51.0 rows, 51.01 cpu, 0.0 io} | |
2019-03-18 00:21:38,560 [main] TRACE - Subset cost improved: subset [rel#32:Subset#1.ENUMERABLE.[]] cost was {inf} now {66.0 rows, 151.01 cpu, 0.0 io} | |
2019-03-18 00:21:38,561 [main] TRACE - Importance of [rel#32:Subset#1.ENUMERABLE.[]] to its parent [rel#33:Subset#1.ENUMERABLE.[0 DESC]] is 2.1700999999999998E-28 (parent importance=1.0, child cost=217.01, parent cost=1.0E30) | |
2019-03-18 00:21:38,561 [main] TRACE - Importance of [rel#32:Subset#1.ENUMERABLE.[]] to its parent [rel#31:Subset#1.NONE.[0 DESC]] is 2.0980458984374998E-28 (parent importance=0.9667968749999999, child cost=217.01, parent cost=1.0E30) | |
2019-03-18 00:21:38,561 [main] TRACE - Importance of [rel#32:Subset#1.ENUMERABLE.[]] to its parent [rel#32:Subset#1.ENUMERABLE.[]] is 0.495 (parent importance=0.5, child cost=217.01, parent cost=217.01) | |
2019-03-18 00:21:38,561 [main] TRACE - Importance of [rel#32:Subset#1.ENUMERABLE.[]] is 0.495 | |
2019-03-18 00:21:38,561 [main] TRACE - cyclic: rel#32:Subset#1.ENUMERABLE.[] | |
2019-03-18 00:21:38,561 [main] TRACE - Subset cost improved: subset [rel#33:Subset#1.ENUMERABLE.[0 DESC]] cost was {inf} now {81.0 rows, 1775.840120661326 cpu, 0.0 io} | |
2019-03-18 00:21:38,561 [main] TRACE - Importance of [rel#33:Subset#1.ENUMERABLE.[0 DESC]] is 1.0 | |
2019-03-18 00:21:38,561 [main] TRACE - cyclic: rel#32:Subset#1.ENUMERABLE.[] | |
2019-03-18 00:21:38,561 [main] TRACE - cyclic: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
2019-03-18 00:21:38,561 [main] TRACE - cyclic: rel#32:Subset#1.ENUMERABLE.[] | |
2019-03-18 00:21:38,561 [main] TRACE - cyclic: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
2019-03-18 00:21:38,561 [main] TRACE - cyclic: rel#32:Subset#1.ENUMERABLE.[] | |
2019-03-18 00:21:38,561 [main] TRACE - cyclic: rel#32:Subset#1.ENUMERABLE.[] | |
2019-03-18 00:21:38,561 [main] TRACE - cyclic: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
2019-03-18 00:21:38,561 [main] TRACE - cyclic: rel#32:Subset#1.ENUMERABLE.[] | |
2019-03-18 00:21:38,561 [main] TRACE - cyclic: rel#32:Subset#1.ENUMERABLE.[] | |
2019-03-18 00:21:38,561 [main] TRACE - Register rel#52:EnumerableInterpreter.ENUMERABLE.[](input=RelSubset#41) in rel#37:Subset#0.ENUMERABLE.[] | |
2019-03-18 00:21:38,561 [main] TRACE - Importance of [rel#41:Subset#0.BINDABLE.[]] to its parent [rel#37:Subset#0.ENUMERABLE.[]] is 0.009851975296539552 (parent importance=0.49999999999999994, child cost=2.01, parent cost=102.00999999999999) | |
2019-03-18 00:21:38,561 [main] TRACE - Importance of [rel#41:Subset#0.BINDABLE.[]] is 0.009851975296539552 | |
2019-03-18 00:21:38,561 [main] TRACE - Importance of [rel#37:Subset#0.ENUMERABLE.[]] to its parent [rel#32:Subset#1.ENUMERABLE.[]] is 0.2350352518317128 (parent importance=0.5, child cost=102.00999999999999, parent cost=217.01) | |
2019-03-18 00:21:38,561 [main] TRACE - Importance of [rel#37:Subset#0.ENUMERABLE.[]] is 0.2350352518317128 | |
2019-03-18 00:21:38,561 [main] DEBUG - call#691 generated 1 successors: [rel#52:EnumerableInterpreter.ENUMERABLE.[](input=RelSubset#41)] | |
2019-03-18 00:21:38,561 [main] TRACE - boostImportance(1.0, []) | |
2019-03-18 00:21:38,561 [main] TRACE - Importance of [rel#12:Subset#0.NONE.[]] to its parent [rel#14:Subset#1.NONE.[]] is 0.9899999999999999 (parent importance=0.9999999999999999, child cost=1.0E30, parent cost=1.0E30) | |
2019-03-18 00:21:38,562 [main] TRACE - Importance of [rel#12:Subset#0.NONE.[]] is 0.9899999999999999 | |
2019-03-18 00:21:38,562 [main] TRACE - Importance of [rel#14:Subset#1.NONE.[]] to its parent [rel#14:Subset#1.NONE.[]] is 0.9899999999999999 (parent importance=0.9999999999999999, child cost=1.0E30, parent cost=1.0E30) | |
2019-03-18 00:21:38,562 [main] TRACE - Importance of [rel#14:Subset#1.NONE.[]] to its parent [rel#31:Subset#1.NONE.[0 DESC]] is 0.9571289062499999 (parent importance=0.9667968749999999, child cost=1.0E30, parent cost=1.0E30) | |
2019-03-18 00:21:38,562 [main] TRACE - Importance of [rel#14:Subset#1.NONE.[]] is 0.9899999999999999 | |
2019-03-18 00:21:38,562 [main] TRACE - Importance of [rel#14:Subset#1.NONE.[]] to its parent [rel#14:Subset#1.NONE.[]] is 0.9800999999999999 (parent importance=0.9899999999999999, child cost=1.0E30, parent cost=1.0E30) | |
2019-03-18 00:21:38,562 [main] TRACE - Importance of [rel#14:Subset#1.NONE.[]] to its parent [rel#31:Subset#1.NONE.[0 DESC]] is 0.9571289062499999 (parent importance=0.9667968749999999, child cost=1.0E30, parent cost=1.0E30) | |
2019-03-18 00:21:38,562 [main] TRACE - Importance of [rel#14:Subset#1.NONE.[]] is 0.9800999999999999 | |
2019-03-18 00:21:38,562 [main] TRACE - Importance of [rel#31:Subset#1.NONE.[0 DESC]] to its parent [rel#33:Subset#1.ENUMERABLE.[0 DESC]] is 0.99 (parent importance=1.0, child cost=1.0E30, parent cost=1856.840120661326) | |
2019-03-18 00:21:38,562 [main] TRACE - Importance of [rel#31:Subset#1.NONE.[0 DESC]] to its parent [rel#31:Subset#1.NONE.[0 DESC]] is 0.9571289062499999 (parent importance=0.9667968749999999, child cost=1.0E30, parent cost=1.0E30) | |
2019-03-18 00:21:38,562 [main] TRACE - Importance of [rel#31:Subset#1.NONE.[0 DESC]] is 0.99 | |
2019-03-18 00:21:38,562 [main] TRACE - Importance of [rel#33:Subset#1.ENUMERABLE.[0 DESC]] is 1.0 | |
2019-03-18 00:21:38,562 [main] TRACE - Importance of [rel#31:Subset#1.NONE.[0 DESC]] to its parent [rel#33:Subset#1.ENUMERABLE.[0 DESC]] is 0.99 (parent importance=1.0, child cost=1.0E30, parent cost=1856.840120661326) | |
2019-03-18 00:21:38,562 [main] TRACE - Importance of [rel#31:Subset#1.NONE.[0 DESC]] to its parent [rel#31:Subset#1.NONE.[0 DESC]] is 0.9801 (parent importance=0.99, child cost=1.0E30, parent cost=1.0E30) | |
2019-03-18 00:21:38,562 [main] TRACE - Importance of [rel#31:Subset#1.NONE.[0 DESC]] is 0.99 | |
2019-03-18 00:21:38,562 [main] TRACE - Importance of [rel#31:Subset#1.NONE.[0 DESC]] to its parent [rel#33:Subset#1.ENUMERABLE.[0 DESC]] is 0.99 (parent importance=1.0, child cost=1.0E30, parent cost=1856.840120661326) | |
2019-03-18 00:21:38,562 [main] TRACE - Importance of [rel#31:Subset#1.NONE.[0 DESC]] to its parent [rel#31:Subset#1.NONE.[0 DESC]] is 0.9801 (parent importance=0.99, child cost=1.0E30, parent cost=1.0E30) | |
2019-03-18 00:21:38,562 [main] TRACE - Importance of [rel#31:Subset#1.NONE.[0 DESC]] is 0.99 | |
2019-03-18 00:21:38,562 [main] TRACE - Importance of [rel#14:Subset#1.NONE.[]] to its parent [rel#14:Subset#1.NONE.[]] is 0.9702989999999998 (parent importance=0.9800999999999999, child cost=1.0E30, parent cost=1.0E30) | |
2019-03-18 00:21:38,562 [main] TRACE - Importance of [rel#14:Subset#1.NONE.[]] to its parent [rel#31:Subset#1.NONE.[0 DESC]] is 0.9801 (parent importance=0.99, child cost=1.0E30, parent cost=1.0E30) | |
2019-03-18 00:21:38,562 [main] TRACE - Importance of [rel#14:Subset#1.NONE.[]] is 0.9801 | |
2019-03-18 00:21:38,562 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 54/52; PHASE = OPTIMIZE; COST = {81.0 rows, 1775.840120661326 cpu, 0.0 io} | |
2019-03-18 00:21:38,581 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.9899999999999999 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=rel#52, importance=0.49499999999999994 | |
rel#52:EnumerableInterpreter.ENUMERABLE.[](input=RelSubset#41), rowcount=100.0, cumulative cost={51.0 rows, 51.01 cpu, 0.0 io} | |
rel#41:Subset#0.BINDABLE.[], best=rel#40, importance=0.49499999999999994 | |
rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={1.0 rows, 1.01 cpu, 0.0 io} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9801 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.99 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=rel#38, importance=0.5 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={81.0 rows, 1775.840120661326 cpu, 0.0 io} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={81.0 rows, 301.01 cpu, 0.0 io} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={66.0 rows, 151.01 cpu, 0.0 io} | |
rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={96.0 rows, 1925.840120661326 cpu, 0.0 io} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=rel#25, importance=1.0 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={81.0 rows, 1775.840120661326 cpu, 0.0 io} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={96.0 rows, 1925.840120661326 cpu, 0.0 io} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.5 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
rel40 [label="rel#40:BindableTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={1.0 rows, 1.01 cpu, 0.0 io}",color=blue,shape=box] | |
rel52 [label="rel#52:EnumerableInterpreter\ninput=RelSubset#41\nrows=100.0, cost={51.0 rows, 51.01 cpu, 0.0 io}",color=blue,shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]"] | |
subset41 [label="rel#41:Subset#0.BINDABLE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={81.0 rows, 1775.840120661326 cpu, 0.0 io}",color=blue,shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={81.0 rows, 301.01 cpu, 0.0 io}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={66.0 rows, 151.01 cpu, 0.0 io}",color=blue,shape=box] | |
rel44 [label="rel#44:LogicalProject\ninput=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel50 [label="rel#50:EnumerableProject\ninput=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={96.0 rows, 1925.840120661326 cpu, 0.0 io}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset41 -> rel40[color=blue]; | |
subset37 -> rel52[color=blue]; rel52 -> subset41[color=blue]; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25[color=blue]; rel25 -> subset32[color=blue]; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38[color=blue]; rel38 -> subset37[color=blue]; | |
subset31 -> rel44; rel44 -> subset31; | |
subset33 -> rel50; rel50 -> subset33; | |
}Importances: { rel#33:Subset#1.ENUMERABLE.[0 DESC]=1.0 rel#31:Subset#1.NONE.[0 DESC]=0.99 rel#12:Subset#0.NONE.[]=0.9899999999999999 rel#14:Subset#1.NONE.[]=0.9801 rel#32:Subset#1.ENUMERABLE.[]=0.495 rel#36:Subset#1.BINDABLE.[]=0.0 rel#37:Subset#0.ENUMERABLE.[]=0.2350352518317128 rel#41:Subset#0.BINDABLE.[]=0.009851975296539552} | |
2019-03-18 00:21:38,581 [main] TRACE - Sorted rule queue: | |
rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] importance 0.49499999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.5 | |
2019-03-18 00:21:38,581 [main] DEBUG - Pop match: rule [ProjectRemoveRule] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,581 [main] DEBUG - call#583: Apply rule [ProjectRemoveRule] to [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,581 [main] DEBUG - Transform to: rel#32 via ProjectRemoveRule | |
2019-03-18 00:21:38,581 [main] TRACE - call#583: Rule ProjectRemoveRule arguments [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] created rel#32:RelSubset | |
2019-03-18 00:21:38,581 [main] DEBUG - call#583 generated 1 successors: [rel#32:Subset#1.ENUMERABLE.[]] | |
2019-03-18 00:21:38,581 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 55/53; PHASE = OPTIMIZE; COST = {81.0 rows, 1775.840120661326 cpu, 0.0 io} | |
2019-03-18 00:21:38,582 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.9899999999999999 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=rel#52, importance=0.49499999999999994 | |
rel#52:EnumerableInterpreter.ENUMERABLE.[](input=RelSubset#41), rowcount=100.0, cumulative cost={51.0 rows, 51.01 cpu, 0.0 io} | |
rel#41:Subset#0.BINDABLE.[], best=rel#40, importance=0.49499999999999994 | |
rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={1.0 rows, 1.01 cpu, 0.0 io} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9801 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.99 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=rel#38, importance=0.5 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={81.0 rows, 1775.840120661326 cpu, 0.0 io} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={81.0 rows, 301.01 cpu, 0.0 io} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={66.0 rows, 151.01 cpu, 0.0 io} | |
rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={96.0 rows, 1925.840120661326 cpu, 0.0 io} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=rel#25, importance=1.0 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={81.0 rows, 1775.840120661326 cpu, 0.0 io} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={96.0 rows, 1925.840120661326 cpu, 0.0 io} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.5 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
rel40 [label="rel#40:BindableTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={1.0 rows, 1.01 cpu, 0.0 io}",color=blue,shape=box] | |
rel52 [label="rel#52:EnumerableInterpreter\ninput=RelSubset#41\nrows=100.0, cost={51.0 rows, 51.01 cpu, 0.0 io}",color=blue,shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]"] | |
subset41 [label="rel#41:Subset#0.BINDABLE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={81.0 rows, 1775.840120661326 cpu, 0.0 io}",color=blue,shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={81.0 rows, 301.01 cpu, 0.0 io}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={66.0 rows, 151.01 cpu, 0.0 io}",color=blue,shape=box] | |
rel44 [label="rel#44:LogicalProject\ninput=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel50 [label="rel#50:EnumerableProject\ninput=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={96.0 rows, 1925.840120661326 cpu, 0.0 io}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset41 -> rel40[color=blue]; | |
subset37 -> rel52[color=blue]; rel52 -> subset41[color=blue]; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25[color=blue]; rel25 -> subset32[color=blue]; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38[color=blue]; rel38 -> subset37[color=blue]; | |
subset31 -> rel44; rel44 -> subset31; | |
subset33 -> rel50; rel50 -> subset33; | |
}Importances: { rel#33:Subset#1.ENUMERABLE.[0 DESC]=1.0 rel#31:Subset#1.NONE.[0 DESC]=0.99 rel#12:Subset#0.NONE.[]=0.9899999999999999 rel#14:Subset#1.NONE.[]=0.9801 rel#32:Subset#1.ENUMERABLE.[]=0.495 rel#36:Subset#1.BINDABLE.[]=0.0 rel#37:Subset#0.ENUMERABLE.[]=0.2350352518317128 rel#41:Subset#0.BINDABLE.[]=0.009851975296539552} | |
2019-03-18 00:21:38,582 [main] TRACE - Sorted rule queue: | |
rule [EnumerableInterpreterRule] rels [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] importance 0.49499999999999994 | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.5 | |
2019-03-18 00:21:38,582 [main] DEBUG - Skip match: rule [ProjectMergeRule:force_mode] rels [rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9)] | |
2019-03-18 00:21:38,582 [main] TRACE - Sorted rule queue: | |
rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] importance 0.5 | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.5 | |
2019-03-18 00:21:38,583 [main] DEBUG - Pop match: rule [EnumerableInterpreterRule] rels [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] | |
2019-03-18 00:21:38,583 [main] DEBUG - call#658: Apply rule [EnumerableInterpreterRule] to [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] | |
2019-03-18 00:21:38,583 [main] TRACE - new EnumerableInterpreter#53 | |
2019-03-18 00:21:38,583 [main] DEBUG - Transform to: rel#53 via EnumerableInterpreterRule | |
2019-03-18 00:21:38,583 [main] TRACE - call#658: Rule EnumerableInterpreterRule arguments [rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS])] created rel#53:EnumerableInterpreter | |
2019-03-18 00:21:38,583 [main] TRACE - new EnumerableInterpreter#54 | |
2019-03-18 00:21:38,583 [main] TRACE - Register: rel#54 is equivalent to rel#52:EnumerableInterpreter.ENUMERABLE.[](input=RelSubset#41) | |
2019-03-18 00:21:38,583 [main] DEBUG - call#658 generated 1 successors: [EnumerableInterpreter#53] | |
2019-03-18 00:21:38,583 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 56/54; PHASE = OPTIMIZE; COST = {81.0 rows, 1775.840120661326 cpu, 0.0 io} | |
2019-03-18 00:21:38,584 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.9899999999999999 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=rel#52, importance=0.49499999999999994 | |
rel#52:EnumerableInterpreter.ENUMERABLE.[](input=RelSubset#41), rowcount=100.0, cumulative cost={51.0 rows, 51.01 cpu, 0.0 io} | |
rel#41:Subset#0.BINDABLE.[], best=rel#40, importance=0.49499999999999994 | |
rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={1.0 rows, 1.01 cpu, 0.0 io} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9801 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.99 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=rel#38, importance=0.5 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={81.0 rows, 1775.840120661326 cpu, 0.0 io} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={81.0 rows, 301.01 cpu, 0.0 io} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={66.0 rows, 151.01 cpu, 0.0 io} | |
rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={96.0 rows, 1925.840120661326 cpu, 0.0 io} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=rel#25, importance=1.0 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={81.0 rows, 1775.840120661326 cpu, 0.0 io} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={96.0 rows, 1925.840120661326 cpu, 0.0 io} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.5 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
rel40 [label="rel#40:BindableTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={1.0 rows, 1.01 cpu, 0.0 io}",color=blue,shape=box] | |
rel52 [label="rel#52:EnumerableInterpreter\ninput=RelSubset#41\nrows=100.0, cost={51.0 rows, 51.01 cpu, 0.0 io}",color=blue,shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]"] | |
subset41 [label="rel#41:Subset#0.BINDABLE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=15.0, cost={81.0 rows, 1775.840120661326 cpu, 0.0 io}",color=blue,shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={81.0 rows, 301.01 cpu, 0.0 io}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={66.0 rows, 151.01 cpu, 0.0 io}",color=blue,shape=box] | |
rel44 [label="rel#44:LogicalProject\ninput=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel50 [label="rel#50:EnumerableProject\ninput=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={96.0 rows, 1925.840120661326 cpu, 0.0 io}",shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset41 -> rel40[color=blue]; | |
subset37 -> rel52[color=blue]; rel52 -> subset41[color=blue]; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25[color=blue]; rel25 -> subset32[color=blue]; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38[color=blue]; rel38 -> subset37[color=blue]; | |
subset31 -> rel44; rel44 -> subset31; | |
subset33 -> rel50; rel50 -> subset33; | |
}Importances: { rel#33:Subset#1.ENUMERABLE.[0 DESC]=1.0 rel#31:Subset#1.NONE.[0 DESC]=0.99 rel#12:Subset#0.NONE.[]=0.9899999999999999 rel#14:Subset#1.NONE.[]=0.9801 rel#32:Subset#1.ENUMERABLE.[]=0.495 rel#36:Subset#1.BINDABLE.[]=0.0 rel#37:Subset#0.ENUMERABLE.[]=0.2350352518317128 rel#41:Subset#0.BINDABLE.[]=0.009851975296539552} | |
2019-03-18 00:21:38,584 [main] TRACE - Sorted rule queue: | |
rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] importance 0.5 | |
2019-03-18 00:21:38,584 [main] DEBUG - Pop match: rule [EnumerableInterpreterRule] rels [rel#36:Subset#1.BINDABLE.[]] | |
2019-03-18 00:21:38,584 [main] DEBUG - call#628: Apply rule [EnumerableInterpreterRule] to [rel#36:Subset#1.BINDABLE.[]] | |
2019-03-18 00:21:38,584 [main] TRACE - new EnumerableInterpreter#55 | |
2019-03-18 00:21:38,584 [main] DEBUG - Transform to: rel#55 via EnumerableInterpreterRule | |
2019-03-18 00:21:38,585 [main] TRACE - call#628: Rule EnumerableInterpreterRule arguments [rel#36:Subset#1.BINDABLE.[]] created rel#55:EnumerableInterpreter | |
2019-03-18 00:21:38,585 [main] TRACE - Subset cost improved: subset [rel#32:Subset#1.ENUMERABLE.[]] cost was {66.0 rows, 151.01 cpu, 0.0 io} now {50.5 rows, 50.505 cpu, 0.0 io} | |
2019-03-18 00:21:38,585 [main] TRACE - Importance of [rel#32:Subset#1.ENUMERABLE.[]] to its parent [rel#33:Subset#1.ENUMERABLE.[0 DESC]] is 0.05439617491894046 (parent importance=1.0, child cost=101.005, parent cost=1856.840120661326) | |
2019-03-18 00:21:38,585 [main] TRACE - Importance of [rel#32:Subset#1.ENUMERABLE.[]] to its parent [rel#31:Subset#1.NONE.[0 DESC]] is 9.999494999999999E-29 (parent importance=0.99, child cost=101.005, parent cost=1.0E30) | |
2019-03-18 00:21:38,585 [main] TRACE - Importance of [rel#32:Subset#1.ENUMERABLE.[]] to its parent [rel#32:Subset#1.ENUMERABLE.[]] is 0.495 (parent importance=0.5, child cost=101.005, parent cost=101.005) | |
2019-03-18 00:21:38,585 [main] TRACE - Importance of [rel#32:Subset#1.ENUMERABLE.[]] is 0.495 | |
2019-03-18 00:21:38,585 [main] TRACE - cyclic: rel#32:Subset#1.ENUMERABLE.[] | |
2019-03-18 00:21:38,585 [main] TRACE - Subset cost improved: subset [rel#33:Subset#1.ENUMERABLE.[0 DESC]] cost was {81.0 rows, 1775.840120661326 cpu, 0.0 io} now {65.5 rows, 1675.335120661326 cpu, 0.0 io} | |
2019-03-18 00:21:38,585 [main] TRACE - Importance of [rel#33:Subset#1.ENUMERABLE.[0 DESC]] is 1.0 | |
2019-03-18 00:21:38,585 [main] TRACE - cyclic: rel#32:Subset#1.ENUMERABLE.[] | |
2019-03-18 00:21:38,585 [main] TRACE - cyclic: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
2019-03-18 00:21:38,585 [main] TRACE - cyclic: rel#32:Subset#1.ENUMERABLE.[] | |
2019-03-18 00:21:38,585 [main] TRACE - cyclic: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
2019-03-18 00:21:38,585 [main] TRACE - cyclic: rel#32:Subset#1.ENUMERABLE.[] | |
2019-03-18 00:21:38,585 [main] TRACE - cyclic: rel#32:Subset#1.ENUMERABLE.[] | |
2019-03-18 00:21:38,585 [main] TRACE - cyclic: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
2019-03-18 00:21:38,585 [main] TRACE - cyclic: rel#32:Subset#1.ENUMERABLE.[] | |
2019-03-18 00:21:38,585 [main] TRACE - cyclic: rel#32:Subset#1.ENUMERABLE.[] | |
2019-03-18 00:21:38,585 [main] TRACE - Register rel#55:EnumerableInterpreter.ENUMERABLE.[](input=RelSubset#36) in rel#32:Subset#1.ENUMERABLE.[] | |
2019-03-18 00:21:38,585 [main] TRACE - Importance of [rel#36:Subset#1.BINDABLE.[]] to its parent [rel#32:Subset#1.ENUMERABLE.[]] is 0.004975001237562496 (parent importance=0.5, child cost=1.005, parent cost=101.005) | |
2019-03-18 00:21:38,585 [main] TRACE - Importance of [rel#36:Subset#1.BINDABLE.[]] is 0.004975001237562496 | |
2019-03-18 00:21:38,585 [main] TRACE - Importance of [rel#32:Subset#1.ENUMERABLE.[]] to its parent [rel#33:Subset#1.ENUMERABLE.[0 DESC]] is 0.058021003138786165 (parent importance=1.0, child cost=101.005, parent cost=1740.835120661326) | |
2019-03-18 00:21:38,585 [main] TRACE - Importance of [rel#32:Subset#1.ENUMERABLE.[]] to its parent [rel#31:Subset#1.NONE.[0 DESC]] is 9.999494999999999E-29 (parent importance=0.99, child cost=101.005, parent cost=1.0E30) | |
2019-03-18 00:21:38,585 [main] TRACE - Importance of [rel#32:Subset#1.ENUMERABLE.[]] to its parent [rel#32:Subset#1.ENUMERABLE.[]] is 0.495 (parent importance=0.5, child cost=101.005, parent cost=101.005) | |
2019-03-18 00:21:38,585 [main] TRACE - Importance of [rel#32:Subset#1.ENUMERABLE.[]] is 0.495 | |
2019-03-18 00:21:38,586 [main] DEBUG - call#628 generated 1 successors: [rel#55:EnumerableInterpreter.ENUMERABLE.[](input=RelSubset#36)] | |
2019-03-18 00:21:38,586 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 57/55; PHASE = OPTIMIZE; COST = {65.5 rows, 1675.335120661326 cpu, 0.0 io} | |
2019-03-18 00:21:38,587 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.9899999999999999 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=rel#52, importance=0.49499999999999994 | |
rel#52:EnumerableInterpreter.ENUMERABLE.[](input=RelSubset#41), rowcount=100.0, cumulative cost={51.0 rows, 51.01 cpu, 0.0 io} | |
rel#41:Subset#0.BINDABLE.[], best=rel#40, importance=0.49499999999999994 | |
rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={1.0 rows, 1.01 cpu, 0.0 io} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9801 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=100.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.99 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=100.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=rel#55, importance=0.5 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=100.0, cumulative cost={150.5 rows, 18471.185743952366 cpu, 0.0 io} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=100.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=100.0, cumulative cost={150.5 rows, 1050.505 cpu, 0.0 io} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={66.0 rows, 151.01 cpu, 0.0 io} | |
rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=100.0, cumulative cost={165.5 rows, 2675.335120661326 cpu, 0.0 io} | |
rel#55:EnumerableInterpreter.ENUMERABLE.[](input=RelSubset#36), rowcount=100.0, cumulative cost={50.5 rows, 50.505 cpu, 0.0 io} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=rel#25, importance=1.0 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=100.0, cumulative cost={150.5 rows, 18471.185743952366 cpu, 0.0 io} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=100.0, cumulative cost={inf} | |
rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=100.0, cumulative cost={165.5 rows, 2675.335120661326 cpu, 0.0 io} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.5 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
rel40 [label="rel#40:BindableTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={1.0 rows, 1.01 cpu, 0.0 io}",color=blue,shape=box] | |
rel52 [label="rel#52:EnumerableInterpreter\ninput=RelSubset#41\nrows=100.0, cost={51.0 rows, 51.01 cpu, 0.0 io}",color=blue,shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]"] | |
subset41 [label="rel#41:Subset#0.BINDABLE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=100.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=100.0, cost={150.5 rows, 18471.185743952366 cpu, 0.0 io}",color=blue,shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=100.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=100.0, cost={150.5 rows, 1050.505 cpu, 0.0 io}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={66.0 rows, 151.01 cpu, 0.0 io}",shape=box] | |
rel44 [label="rel#44:LogicalProject\ninput=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel50 [label="rel#50:EnumerableProject\ninput=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=100.0, cost={165.5 rows, 2675.335120661326 cpu, 0.0 io}",shape=box] | |
rel55 [label="rel#55:EnumerableInterpreter\ninput=RelSubset#36\nrows=100.0, cost={50.5 rows, 50.505 cpu, 0.0 io}",color=blue,shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset41 -> rel40[color=blue]; | |
subset37 -> rel52[color=blue]; rel52 -> subset41[color=blue]; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25[color=blue]; rel25 -> subset32[color=blue]; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38; rel38 -> subset37; | |
subset31 -> rel44; rel44 -> subset31; | |
subset33 -> rel50; rel50 -> subset33; | |
subset32 -> rel55[color=blue]; rel55 -> subset36[color=blue]; | |
}Importances: { rel#33:Subset#1.ENUMERABLE.[0 DESC]=1.0 rel#31:Subset#1.NONE.[0 DESC]=0.99 rel#12:Subset#0.NONE.[]=0.9899999999999999 rel#14:Subset#1.NONE.[]=0.9801 rel#32:Subset#1.ENUMERABLE.[]=0.495 rel#36:Subset#1.BINDABLE.[]=0.004975001237562496 rel#37:Subset#0.ENUMERABLE.[]=0.2350352518317128 rel#41:Subset#0.BINDABLE.[]=0.009851975296539552} | |
2019-03-18 00:21:38,587 [main] TRACE - Sorted rule queue: | |
2019-03-18 00:21:38,587 [main] DEBUG - Pop match: rule [EnumerableInterpreterRule] rels [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] | |
2019-03-18 00:21:38,587 [main] DEBUG - call#595: Apply rule [EnumerableInterpreterRule] to [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] | |
2019-03-18 00:21:38,587 [main] TRACE - new EnumerableInterpreter#56 | |
2019-03-18 00:21:38,587 [main] DEBUG - Transform to: rel#56 via EnumerableInterpreterRule | |
2019-03-18 00:21:38,587 [main] TRACE - call#595: Rule EnumerableInterpreterRule arguments [rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')])] created rel#56:EnumerableInterpreter | |
2019-03-18 00:21:38,587 [main] TRACE - new EnumerableInterpreter#57 | |
2019-03-18 00:21:38,587 [main] TRACE - Register: rel#57 is equivalent to rel#55:EnumerableInterpreter.ENUMERABLE.[](input=RelSubset#36) | |
2019-03-18 00:21:38,587 [main] DEBUG - call#595 generated 1 successors: [EnumerableInterpreter#56] | |
2019-03-18 00:21:38,587 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 58/56; PHASE = OPTIMIZE; COST = {65.5 rows, 1675.335120661326 cpu, 0.0 io} | |
2019-03-18 00:21:38,588 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.9899999999999999 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=rel#52, importance=0.49499999999999994 | |
rel#52:EnumerableInterpreter.ENUMERABLE.[](input=RelSubset#41), rowcount=100.0, cumulative cost={51.0 rows, 51.01 cpu, 0.0 io} | |
rel#41:Subset#0.BINDABLE.[], best=rel#40, importance=0.49499999999999994 | |
rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={1.0 rows, 1.01 cpu, 0.0 io} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.9801 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=100.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.99 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=100.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=rel#55, importance=0.5 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=100.0, cumulative cost={150.5 rows, 18471.185743952366 cpu, 0.0 io} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=100.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=100.0, cumulative cost={150.5 rows, 1050.505 cpu, 0.0 io} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={66.0 rows, 151.01 cpu, 0.0 io} | |
rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=100.0, cumulative cost={165.5 rows, 2675.335120661326 cpu, 0.0 io} | |
rel#55:EnumerableInterpreter.ENUMERABLE.[](input=RelSubset#36), rowcount=100.0, cumulative cost={50.5 rows, 50.505 cpu, 0.0 io} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=rel#25, importance=1.0 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=100.0, cumulative cost={150.5 rows, 18471.185743952366 cpu, 0.0 io} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=100.0, cumulative cost={inf} | |
rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=100.0, cumulative cost={165.5 rows, 2675.335120661326 cpu, 0.0 io} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.5 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
rel40 [label="rel#40:BindableTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={1.0 rows, 1.01 cpu, 0.0 io}",color=blue,shape=box] | |
rel52 [label="rel#52:EnumerableInterpreter\ninput=RelSubset#41\nrows=100.0, cost={51.0 rows, 51.01 cpu, 0.0 io}",color=blue,shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]"] | |
subset41 [label="rel#41:Subset#0.BINDABLE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=100.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=100.0, cost={150.5 rows, 18471.185743952366 cpu, 0.0 io}",color=blue,shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=100.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=100.0, cost={150.5 rows, 1050.505 cpu, 0.0 io}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={66.0 rows, 151.01 cpu, 0.0 io}",shape=box] | |
rel44 [label="rel#44:LogicalProject\ninput=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel50 [label="rel#50:EnumerableProject\ninput=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=100.0, cost={165.5 rows, 2675.335120661326 cpu, 0.0 io}",shape=box] | |
rel55 [label="rel#55:EnumerableInterpreter\ninput=RelSubset#36\nrows=100.0, cost={50.5 rows, 50.505 cpu, 0.0 io}",color=blue,shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset41 -> rel40[color=blue]; | |
subset37 -> rel52[color=blue]; rel52 -> subset41[color=blue]; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25[color=blue]; rel25 -> subset32[color=blue]; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38; rel38 -> subset37; | |
subset31 -> rel44; rel44 -> subset31; | |
subset33 -> rel50; rel50 -> subset33; | |
subset32 -> rel55[color=blue]; rel55 -> subset36[color=blue]; | |
}Importances: { rel#33:Subset#1.ENUMERABLE.[0 DESC]=1.0 rel#31:Subset#1.NONE.[0 DESC]=0.99 rel#12:Subset#0.NONE.[]=0.9899999999999999 rel#14:Subset#1.NONE.[]=0.9801 rel#32:Subset#1.ENUMERABLE.[]=0.495 rel#36:Subset#1.BINDABLE.[]=0.004975001237562496 rel#37:Subset#0.ENUMERABLE.[]=0.2350352518317128 rel#41:Subset#0.BINDABLE.[]=0.009851975296539552} | |
2019-03-18 00:21:38,589 [main] TRACE - boostImportance(1.0, []) | |
2019-03-18 00:21:38,589 [main] DEBUG - PLANNER = org.apache.calcite.plan.volcano.VolcanoPlanner@2a640157; TICK = 59/1; PHASE = CLEANUP; COST = {65.5 rows, 1675.335120661326 cpu, 0.0 io} | |
2019-03-18 00:21:38,590 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.7290000000000001 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=rel#52, importance=0.6561 | |
rel#52:EnumerableInterpreter.ENUMERABLE.[](input=RelSubset#41), rowcount=100.0, cumulative cost={51.0 rows, 51.01 cpu, 0.0 io} | |
rel#41:Subset#0.BINDABLE.[], best=rel#40, importance=0.5904900000000001 | |
rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={1.0 rows, 1.01 cpu, 0.0 io} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.81 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=100.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.9 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=100.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=rel#55, importance=0.7290000000000001 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=100.0, cumulative cost={150.5 rows, 18471.185743952366 cpu, 0.0 io} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=100.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=100.0, cumulative cost={150.5 rows, 1050.505 cpu, 0.0 io} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={66.0 rows, 151.01 cpu, 0.0 io} | |
rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=100.0, cumulative cost={165.5 rows, 2675.335120661326 cpu, 0.0 io} | |
rel#55:EnumerableInterpreter.ENUMERABLE.[](input=RelSubset#36), rowcount=100.0, cumulative cost={50.5 rows, 50.505 cpu, 0.0 io} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=rel#25, importance=1.0 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=100.0, cumulative cost={150.5 rows, 18471.185743952366 cpu, 0.0 io} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=100.0, cumulative cost={inf} | |
rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=100.0, cumulative cost={165.5 rows, 2675.335120661326 cpu, 0.0 io} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.6561 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
rel40 [label="rel#40:BindableTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={1.0 rows, 1.01 cpu, 0.0 io}",color=blue,shape=box] | |
rel52 [label="rel#52:EnumerableInterpreter\ninput=RelSubset#41\nrows=100.0, cost={51.0 rows, 51.01 cpu, 0.0 io}",color=blue,shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]"] | |
subset41 [label="rel#41:Subset#0.BINDABLE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=100.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=100.0, cost={150.5 rows, 18471.185743952366 cpu, 0.0 io}",color=blue,shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=100.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=100.0, cost={150.5 rows, 1050.505 cpu, 0.0 io}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={66.0 rows, 151.01 cpu, 0.0 io}",shape=box] | |
rel44 [label="rel#44:LogicalProject\ninput=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel50 [label="rel#50:EnumerableProject\ninput=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=100.0, cost={165.5 rows, 2675.335120661326 cpu, 0.0 io}",shape=box] | |
rel55 [label="rel#55:EnumerableInterpreter\ninput=RelSubset#36\nrows=100.0, cost={50.5 rows, 50.505 cpu, 0.0 io}",color=blue,shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset41 -> rel40[color=blue]; | |
subset37 -> rel52[color=blue]; rel52 -> subset41[color=blue]; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25[color=blue]; rel25 -> subset32[color=blue]; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38; rel38 -> subset37; | |
subset31 -> rel44; rel44 -> subset31; | |
subset33 -> rel50; rel50 -> subset33; | |
subset32 -> rel55[color=blue]; rel55 -> subset36[color=blue]; | |
}Importances: { rel#33:Subset#1.ENUMERABLE.[0 DESC]=1.0 rel#31:Subset#1.NONE.[0 DESC]=0.9 rel#14:Subset#1.NONE.[]=0.81 rel#12:Subset#0.NONE.[]=0.7290000000000001 rel#32:Subset#1.ENUMERABLE.[]=0.7290000000000001 rel#36:Subset#1.BINDABLE.[]=0.6561 rel#37:Subset#0.ENUMERABLE.[]=0.6561 rel#41:Subset#0.BINDABLE.[]=0.5904900000000001} | |
2019-03-18 00:21:38,590 [main] TRACE - Root: rel#33:Subset#1.ENUMERABLE.[0 DESC] | |
Original rel: | |
LogicalSort(sort0=[$0], dir0=[DESC]): rowcount = 15.0, cumulative cost = {145.0 rows, 1975.830120661326 cpu, 0.0 io}, id = 10 | |
LogicalProject(EMPNO=[$0], NAME=[$1], DEPTNO=[$2], GENDER=[$3], CITY=[$4], EMPID=[$5], AGE=[$6], SLACKER=[$7], MANAGER=[$8], JOINEDAT=[$9]): rowcount = 15.0, cumulative cost = {130.0 rows, 351.0 cpu, 0.0 io}, id = 8 | |
LogicalFilter(condition=[=($1, 'John')]): rowcount = 15.0, cumulative cost = {115.0 rows, 201.0 cpu, 0.0 io}, id = 6 | |
LogicalTableScan(table=[[SALES, EMPS]]): rowcount = 100.0, cumulative cost = {100.0 rows, 101.0 cpu, 0.0 io}, id = 0 | |
Sets: | |
Set#0, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#12:Subset#0.NONE.[], best=null, importance=0.7290000000000001 | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={inf} | |
rel#37:Subset#0.ENUMERABLE.[], best=rel#52, importance=0.6561 | |
rel#52:EnumerableInterpreter.ENUMERABLE.[](input=RelSubset#41), rowcount=100.0, cumulative cost={51.0 rows, 51.01 cpu, 0.0 io} | |
rel#41:Subset#0.BINDABLE.[], best=rel#40, importance=0.5904900000000001 | |
rel#40:BindableTableScan.BINDABLE.[](table=[SALES, EMPS]), rowcount=100.0, cumulative cost={1.0 rows, 1.01 cpu, 0.0 io} | |
Set#1, type: RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT) | |
rel#14:Subset#1.NONE.[], best=null, importance=0.81 | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')), rowcount=15.0, cumulative cost={inf} | |
rel#15:LogicalProject.NONE.[](input=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=100.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#31:Subset#1.NONE.[0 DESC], best=null, importance=0.9 | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC), rowcount=15.0, cumulative cost={inf} | |
rel#29:LogicalSort.NONE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=100.0, cumulative cost={inf} | |
rel#44:LogicalProject.NONE.[0 DESC](input=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=15.0, cumulative cost={inf} | |
rel#32:Subset#1.ENUMERABLE.[], best=rel#55, importance=0.7290000000000001 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=100.0, cumulative cost={150.5 rows, 18471.185743952366 cpu, 0.0 io} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=100.0, cumulative cost={inf} | |
rel#34:EnumerableProject.ENUMERABLE.[](input=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=100.0, cumulative cost={150.5 rows, 1050.505 cpu, 0.0 io} | |
rel#38:EnumerableFilter.ENUMERABLE.[](input=RelSubset#37,condition==($1, 'John')), rowcount=15.0, cumulative cost={66.0 rows, 151.01 cpu, 0.0 io} | |
rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=100.0, cumulative cost={165.5 rows, 2675.335120661326 cpu, 0.0 io} | |
rel#55:EnumerableInterpreter.ENUMERABLE.[](input=RelSubset#36), rowcount=100.0, cumulative cost={50.5 rows, 50.505 cpu, 0.0 io} | |
rel#33:Subset#1.ENUMERABLE.[0 DESC], best=rel#25, importance=1.0 | |
rel#23:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]), rowcount=15.0, cumulative cost={inf} | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC), rowcount=100.0, cumulative cost={150.5 rows, 18471.185743952366 cpu, 0.0 io} | |
rel#28:AbstractConverter.ENUMERABLE.[0 DESC](input=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]), rowcount=100.0, cumulative cost={inf} | |
rel#50:EnumerableProject.ENUMERABLE.[0 DESC](input=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9), rowcount=100.0, cumulative cost={165.5 rows, 2675.335120661326 cpu, 0.0 io} | |
rel#36:Subset#1.BINDABLE.[], best=rel#35, importance=0.6561 | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
Graphviz: | |
digraph G { | |
root [style=filled,label="Root"]; | |
subgraph cluster0{ | |
label="Set 0 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel0 [label="rel#0:LogicalTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={inf}",shape=box] | |
rel40 [label="rel#40:BindableTableScan\ntable=[SALES, EMPS]\nrows=100.0, cost={1.0 rows, 1.01 cpu, 0.0 io}",color=blue,shape=box] | |
rel52 [label="rel#52:EnumerableInterpreter\ninput=RelSubset#41\nrows=100.0, cost={51.0 rows, 51.01 cpu, 0.0 io}",color=blue,shape=box] | |
subset12 [label="rel#12:Subset#0.NONE.[]"] | |
subset37 [label="rel#37:Subset#0.ENUMERABLE.[]"] | |
subset41 [label="rel#41:Subset#0.BINDABLE.[]"] | |
} | |
subgraph cluster1{ | |
label="Set 1 RecordType(INTEGER EMPNO, VARCHAR NAME, INTEGER DEPTNO, VARCHAR GENDER, VARCHAR CITY, INTEGER EMPID, INTEGER AGE, BOOLEAN SLACKER, BOOLEAN MANAGER, DATE JOINEDAT)"; | |
rel13 [label="rel#13:LogicalFilter\ninput=RelSubset#12,condition==($1, 'John')\nrows=15.0, cost={inf}",shape=box] | |
rel15 [label="rel#15:LogicalProject\ninput=RelSubset#14,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel17 [label="rel#17:LogicalSort\ninput=RelSubset#14,sort0=$0,dir0=DESC\nrows=15.0, cost={inf}",shape=box] | |
rel29 [label="rel#29:LogicalSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=100.0, cost={inf}",shape=box] | |
rel23 [label="rel#23:AbstractConverter\ninput=RelSubset#31,convention=ENUMERABLE,sort=[0 DESC]\nrows=15.0, cost={inf}",shape=box] | |
rel25 [label="rel#25:EnumerableSort\ninput=RelSubset#32,sort0=$0,dir0=DESC\nrows=100.0, cost={150.5 rows, 18471.185743952366 cpu, 0.0 io}",color=blue,shape=box] | |
rel28 [label="rel#28:AbstractConverter\ninput=RelSubset#32,convention=ENUMERABLE,sort=[0 DESC]\nrows=100.0, cost={inf}",shape=box] | |
rel34 [label="rel#34:EnumerableProject\ninput=RelSubset#32,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=100.0, cost={150.5 rows, 1050.505 cpu, 0.0 io}",shape=box] | |
rel35 [label="rel#35:BindableTableScan\ntable=[SALES, EMPS],filters=[=($1, 'John')]\nrows=100.0, cost={0.5 rows, 0.505 cpu, 0.0 io}",color=blue,shape=box] | |
rel38 [label="rel#38:EnumerableFilter\ninput=RelSubset#37,condition==($1, 'John')\nrows=15.0, cost={66.0 rows, 151.01 cpu, 0.0 io}",shape=box] | |
rel44 [label="rel#44:LogicalProject\ninput=RelSubset#31,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=15.0, cost={inf}",shape=box] | |
rel50 [label="rel#50:EnumerableProject\ninput=RelSubset#33,EMPNO=$0,NAME=$1,DEPTNO=$2,GENDER=$3,CITY=$4,EMPID=$5,AGE=$6,SLACKER=$7,MANAGER=$8,JOINEDAT=$9\nrows=100.0, cost={165.5 rows, 2675.335120661326 cpu, 0.0 io}",shape=box] | |
rel55 [label="rel#55:EnumerableInterpreter\ninput=RelSubset#36\nrows=100.0, cost={50.5 rows, 50.505 cpu, 0.0 io}",color=blue,shape=box] | |
subset14 [label="rel#14:Subset#1.NONE.[]"] | |
subset31 [label="rel#31:Subset#1.NONE.[0 DESC]"] | |
subset32 [label="rel#32:Subset#1.ENUMERABLE.[]"] | |
subset33 [label="rel#33:Subset#1.ENUMERABLE.[0 DESC]"] | |
subset36 [label="rel#36:Subset#1.BINDABLE.[]"] | |
subset32 -> subset33; subset14 -> subset31; } | |
root -> subset33; | |
subset12 -> rel0; | |
subset41 -> rel40[color=blue]; | |
subset37 -> rel52[color=blue]; rel52 -> subset41[color=blue]; | |
subset14 -> rel13; rel13 -> subset12; | |
subset14 -> rel15; rel15 -> subset14; | |
subset31 -> rel17; rel17 -> subset14; | |
subset31 -> rel29; rel29 -> subset32; | |
subset33 -> rel23; rel23 -> subset31; | |
subset33 -> rel25[color=blue]; rel25 -> subset32[color=blue]; | |
subset33 -> rel28; rel28 -> subset32; | |
subset32 -> rel34; rel34 -> subset32; | |
subset36 -> rel35[color=blue]; | |
subset32 -> rel38; rel38 -> subset37; | |
subset31 -> rel44; rel44 -> subset31; | |
subset33 -> rel50; rel50 -> subset33; | |
subset32 -> rel55[color=blue]; rel55 -> subset36[color=blue]; | |
} | |
2019-03-18 00:21:38,591 [main] TRACE - new EnumerableInterpreter#58 | |
2019-03-18 00:21:38,591 [main] TRACE - new EnumerableSort#59 | |
2019-03-18 00:21:38,592 [main] DEBUG - Cheapest plan: | |
EnumerableSort(sort0=[$0], dir0=[DESC]): rowcount = 100.0, cumulative cost = {150.0 rows, 18470.680743952365 cpu, 0.0 io}, id = 59 | |
EnumerableInterpreter: rowcount = 100.0, cumulative cost = {50.0 rows, 50.0 cpu, 0.0 io}, id = 58 | |
BindableTableScan(table=[[SALES, EMPS]], filters=[[=($1, 'John')]]): rowcount = 100.0, cumulative cost = {0.5 rows, 0.505 cpu, 0.0 io}, id = 35 | |
2019-03-18 00:21:38,593 [main] DEBUG - Provenance: | |
EnumerableSort#59 | |
direct | |
rel#25:EnumerableSort.ENUMERABLE.[0 DESC](input=RelSubset#32,sort0=$0,dir0=DESC) | |
call#149 rule [EnumerableSortRule] | |
rel#17:LogicalSort.NONE.[0 DESC](input=RelSubset#14,sort0=$0,dir0=DESC) | |
no parent | |
EnumerableInterpreter#58 | |
direct | |
rel#55:EnumerableInterpreter.ENUMERABLE.[](input=RelSubset#36) | |
call#628 rule [EnumerableInterpreterRule] | |
rel#36:Subset#1.BINDABLE.[] | |
subset rel#36:Subset#1.BINDABLE.[] | |
rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]) | |
call#58 rule [FilterTableScanRule] | |
rel#13:LogicalFilter.NONE.[](input=RelSubset#12,condition==($1, 'John')) | |
no parent | |
rel#0:LogicalTableScan.NONE.[](table=[SALES, EMPS]) | |
no parent | |
rel#35 (see above) | |
2019-03-18 00:21:38,593 [main] TRACE - new HepRelVertex#60 | |
2019-03-18 00:21:38,593 [main] TRACE - new EnumerableInterpreter#61 | |
2019-03-18 00:21:38,593 [main] TRACE - new HepRelVertex#62 | |
2019-03-18 00:21:38,593 [main] TRACE - new EnumerableSort#63 | |
2019-03-18 00:21:38,593 [main] TRACE - new HepRelVertex#64 | |
2019-03-18 00:21:38,593 [main] TRACE - | |
Breadth-first from root: { | |
HepRelVertex#64 = rel#63:EnumerableSort.ENUMERABLE.[0 DESC](input=HepRelVertex#62,sort0=$0,dir0=DESC), rowcount=100.0, cumulative cost={150.0 rows, 18470.680743952365 cpu, 0.0 io} | |
HepRelVertex#62 = rel#61:EnumerableInterpreter.ENUMERABLE.[](input=HepRelVertex#60), rowcount=100.0, cumulative cost={50.0 rows, 50.0 cpu, 0.0 io} | |
HepRelVertex#60 = rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
} | |
2019-03-18 00:21:38,593 [main] TRACE - Applying rule set [NoneToBindableConverterRule] | |
2019-03-18 00:21:38,593 [main] TRACE - collecting garbage | |
2019-03-18 00:21:38,593 [main] TRACE - Applying rule set [EnumerableCalcRule] | |
2019-03-18 00:21:38,593 [main] TRACE - Applying rule set [EnumerableFilterToCalcRule] | |
2019-03-18 00:21:38,593 [main] TRACE - Applying rule set [EnumerableProjectToCalcRule] | |
2019-03-18 00:21:38,593 [main] TRACE - Applying rule set [CalcMergeRule] | |
2019-03-18 00:21:38,593 [main] TRACE - Applying rule set [FilterCalcMergeRule] | |
2019-03-18 00:21:38,593 [main] TRACE - Applying rule set [ProjectCalcMergeRule] | |
2019-03-18 00:21:38,593 [main] TRACE - Applying rule set [FilterToCalcRule] | |
2019-03-18 00:21:38,593 [main] TRACE - Applying rule set [ProjectToCalcRule] | |
2019-03-18 00:21:38,593 [main] TRACE - Applying rule set [CalcMergeRule] | |
2019-03-18 00:21:38,593 [main] TRACE - Applying rule set [FilterCalcMergeRule] | |
2019-03-18 00:21:38,593 [main] TRACE - Applying rule set [ProjectCalcMergeRule] | |
2019-03-18 00:21:38,593 [main] DEBUG - For final plan, using rel#63:EnumerableSort.ENUMERABLE.[0 DESC](input=HepRelVertex#62,sort0=$0,dir0=DESC) | |
2019-03-18 00:21:38,593 [main] DEBUG - For final plan, using rel#61:EnumerableInterpreter.ENUMERABLE.[](input=HepRelVertex#60) | |
2019-03-18 00:21:38,593 [main] DEBUG - For final plan, using rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]) | |
2019-03-18 00:21:38,646 [main] TRACE - new HepRelVertex#65 | |
2019-03-18 00:21:38,646 [main] TRACE - | |
Breadth-first from root: { | |
HepRelVertex#65 = rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]), rowcount=100.0, cumulative cost={0.5 rows, 0.505 cpu, 0.0 io} | |
} | |
2019-03-18 00:21:38,646 [main] TRACE - Applying rule set [CalcSplitRule] | |
2019-03-18 00:21:38,646 [main] TRACE - collecting garbage | |
2019-03-18 00:21:38,646 [main] TRACE - Applying rule set [FilterTableScanRule] | |
2019-03-18 00:21:38,646 [main] TRACE - Applying rule set [FilterTableScanRule:interpreter] | |
2019-03-18 00:21:38,646 [main] TRACE - Applying rule set [ProjectScanRule] | |
2019-03-18 00:21:38,646 [main] TRACE - Applying rule set [ProjectScanRule:interpreter] | |
2019-03-18 00:21:38,646 [main] DEBUG - For final plan, using rel#35:BindableTableScan.BINDABLE.[](table=[SALES, EMPS],filters=[=($1, 'John')]) | |
110, John, 40, M, Vancouver, 2, null, false, true, 2002-05-03 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment