[ https://issues.apache.org/jira/browse/CALCITE-2111?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Julian Hyde resolved CALCITE-2111. ---------------------------------- Resolution: Fixed Fix Version/s: 1.16.0 Fixed in [1945c9a9|http://git-wip-us.apache.org/repos/asf/calcite/commit/1945c9a9]; thanks for the PR, [~perid007]! > Make HepPlanner more efficient by applying rules depth-first > ------------------------------------------------------------ > > Key: CALCITE-2111 > URL: https://issues.apache.org/jira/browse/CALCITE-2111 > Project: Calcite > Issue Type: Bug > Affects Versions: 1.15.0 > Reporter: LeoWangLZ > Assignee: Julian Hyde > Fix For: 1.16.0 > > > HepPlanner#applyRules will fully restart after transformation. > if the rule for the inner relNode happens transformation, then the previous > all relNode will be apply for all rules again. and the accumulated rule apply > will be exploded as rule apply. > like query that it contains hundreds of union all > {code:java} > select * from ( > select ENAME, 50011895 as cat_id, '1' as cat_name, 1 as > require_free_postage, 0 as require_15return, 0 as require_48hour,1 as > require_insurance from emp where EMPNO = 20171216 and MGR = 0 and ENAME = 'Y' > and SAL = 50011895 union all > select ENAME, 50013023 as cat_id, '2' as cat_name, 0 as > require_free_postage, 0 as require_15return, 0 as require_48hour,0 as > require_insurance from emp where EMPNO = 20171216 and MGR = 0 and ENAME = 'Y' > and SAL = 50013023 union all > select ENAME, 50013032 as cat_id, '3' as cat_name, 0 as > require_free_postage, 0 as require_15return, 0 as require_48hour,0 as > require_insurance from emp where EMPNO = 20171216 and MGR = 0 and ENAME = 'Y' > and SAL = 50013032 union all > select ENAME, 50013024 as cat_id, '4' as cat_name, 0 as > require_free_postage, 0 as require_15return, 0 as require_48hour,0 as > require_insurance from emp where EMPNO = 20171216 and MGR = 0 and ENAME = 'Y' > and SAL = 50013024 union all > select ENAME, 50004204 as cat_id, '5' as cat_name, 0 as > require_free_postage, 0 as require_15return, 0 as require_48hour,0 as > require_insurance from emp where EMPNO = 20171216 and MGR = 0 and ENAME = 'Y' > and SAL = 50004204 union all > select ENAME, 50013043 as cat_id, '6' as cat_name, 0 as > require_free_postage, 0 as require_15return, 0 as require_48hour,0 as > require_insurance from emp where EMPNO = 20171216 and MGR = 0 and ENAME = 'Y' > and SAL = 50013043 union all > select ENAME, 290903 as cat_id, '7' as cat_name, 1 as > require_free_postage, 0 as require_15return, 0 as require_48hour,1 as > require_insurance from emp where EMPNO = 20171216 and MGR = 0 and ENAME = 'Y' > and SAL = 290903 union all > select ENAME, 50008261 as cat_id, '8' as cat_name, 1 as > require_free_postage, 0 as require_15return, 0 as require_48hour,1 as > require_insurance from emp where EMPNO = 20171216 and MGR = 0 and ENAME = 'Y' > and SAL = 50008261 union all > select ENAME, 124478013 as cat_id, '9' as cat_name, 0 as > require_free_postage, 0 as require_15return, 1 as require_48hour,0 as > require_insurance from emp where EMPNO = 20171216 and MGR = 0 and ENAME = 'Y' > and SAL = 124478013 union all > ... > )a; > {code} > For rules ReduceExpressionsRule.FILTER_INSTANCE and > ReduceExpressionsRule.PROJECT_INSTANCE, it apply 1W+ rules. -- This message was sent by Atlassian JIRA (v6.4.14#64029)