You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Julian Hyde (JIRA)" <ji...@apache.org> on 2015/06/23 02:58:00 UTC
[jira] [Created] (CALCITE-764) Leap-frogging
Julian Hyde created CALCITE-764:
-----------------------------------
Summary: Leap-frogging
Key: CALCITE-764
URL: https://issues.apache.org/jira/browse/CALCITE-764
Project: Calcite
Issue Type: Bug
Reporter: Julian Hyde
Assignee: Julian Hyde
There is a pattern I've seen a few times where the Volcano planner creates an infinite number of very plans that are very similar but not similar enough for it to recognize that they are identical.
Toward the end of the attached file, see the pattern
{noformat}
Set#442, type: RecordType(TINYINT DEPTNO)
rel#1682:Subset#442.NONE.[], best=null, importance=0.9702989999999999
rel#1678:LogicalAggregate.NONE.[](input=rel#1667:Subset#438.NONE.[],group={0}), rowcount=1.0, cumulative cost={inf}
Set#443, type: RecordType(TINYINT DEPTNO, DECIMAL(7, 2) EXPR$0, TINYINT DEPTNO0)
rel#1684:Subset#443.NONE.[], best=null, importance=0.9801
rel#1683:LogicalJoin.NONE.[](left=rel#1681:Subset#441.NONE.[],right=rel#1682:Subset#442.NONE.[],condition==($0, $2),joinType=inner), rowcount=1.0, cumulative cost={inf}
rel#1686:Subset#443.ENUMERABLE.[], best=null, importance=0.49005
Set#444, type: RecordType(DECIMAL(7, 2) $f0, BIGINT $f1)
rel#1690:Subset#444.NONE.[], best=null, importance=0.9801
rel#1688:LogicalAggregate.NONE.[](input=rel#1684:Subset#443.NONE.[],group={},agg#0=$SUM0($1),agg#1=COUNT($1)), rowcount=1.0, cumulative cost={inf}
Set#445, type: RecordType(TINYINT DEPTNO, DECIMAL(7, 2) EXPR$0)
rel#1696:Subset#445.NONE.[], best=null, importance=0.9702989999999999
rel#1692:LogicalAggregate.NONE.[](input=rel#1681:Subset#441.NONE.[],group={0},EXPR$0=SUM($1)), rowcount=1.0, cumulative cost={inf}
Set#446, type: RecordType(TINYINT DEPTNO)
rel#1697:Subset#446.NONE.[], best=null, importance=0.9702989999999999
rel#1693:LogicalAggregate.NONE.[](input=rel#1682:Subset#442.NONE.[],group={0}), rowcount=1.0, cumulative cost={inf}
Set#447, type: RecordType(TINYINT DEPTNO, DECIMAL(7, 2) EXPR$0, TINYINT DEPTNO0)
rel#1699:Subset#447.NONE.[], best=null, importance=0.9801
rel#1698:LogicalJoin.NONE.[](left=rel#1696:Subset#445.NONE.[],right=rel#1697:Subset#446.NONE.[],condition==($0, $2),joinType=inner), rowcount=1.0, cumulative cost={inf}
rel#1701:Subset#447.ENUMERABLE.[], best=null, importance=0.49005
Set#448, type: RecordType(DECIMAL(7, 2) $f0, BIGINT $f1)
rel#1705:Subset#448.NONE.[], best=null, importance=0.9801
rel#1703:LogicalAggregate.NONE.[](input=rel#1699:Subset#447.NONE.[],group={},agg#0=$SUM0($1),agg#1=COUNT($1)), rowcount=1.0, cumulative cost={inf}
Set#449, type: RecordType(TINYINT DEPTNO, DECIMAL(7, 2) EXPR$0)
rel#1711:Subset#449.NONE.[], best=null, importance=0.0
rel#1707:LogicalAggregate.NONE.[](input=rel#1696:Subset#445.NONE.[],group={0},EXPR$0=SUM($1)), rowcount=1.0, cumulative cost={inf}
Set#450, type: RecordType(TINYINT DEPTNO)
rel#1712:Subset#450.NONE.[], best=null, importance=0.0
rel#1708:LogicalAggregate.NONE.[](input=rel#1697:Subset#446.NONE.[],group={0}), rowcount=1.0, cumulative cost={inf}
{noformat}
and note that sets 442, 446, 450 are basically identical expressions, each based on the last.
Does VolcanoPlanner need a new mechanism to recognize repeating structures? Or are the existing mechanisms (e.g. applying a rule and recognizing that the output is identical) sufficient?
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)