[ https://issues.apache.org/jira/browse/CALCITE-2205?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jesus Camacho Rodriguez updated CALCITE-2205: --------------------------------------------- Fix Version/s: (was: 1.16.0) 1.17.0 > One more Infinite loop for JoinPushTransitivePredicatesRule > ----------------------------------------------------------- > > Key: CALCITE-2205 > URL: https://issues.apache.org/jira/browse/CALCITE-2205 > Project: Calcite > Issue Type: Bug > Components: core > Affects Versions: 1.15.0 > Reporter: Vitalii Diravka > Assignee: Julian Hyde > Priority: Major > Fix For: 1.17.0 > > > CALCITE-2200 resolves some cases of infinite loop via stopping of recursion > in HepPlanner#applyRules, when newVertex is the same as vertex. > In this jira one more case of infinite loop is described: > JoinPushTransitivePredicatesRule#onMatch generates new right or left inputs > via using RelBuilder#filter method on top of LogicalFilter RelNode with the > same condition. > In this case a new RelNode shouldn't be created. Possible fix to change logic > of RelBuilder#filter method. > TestCase for reproduce: > {code} > @Test public void testJoinPushTransitivePredicatesRule2() { > HepProgramBuilder builder = new HepProgramBuilder(); > builder.addRuleInstance(JoinPushTransitivePredicatesRule.INSTANCE); > HepProgram build = builder.build(); > HepPlanner hepPlanner = new HepPlanner(build); > final String sql = "select n1.SAL from EMPNULLABLES_20 n1 where n1.SAL\n" > + "IN (select n2.SAL from EMPNULLABLES_20 n2 " > + "where n1.SAL = n2.SAL or n1.SAL = 4)"; > sql(sql) > .withDecorrelation(true) > .with(hepPlanner) > .check(); > } > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005)