[jira] [Updated] (CALCITE-2205) One more Infinite loop for JoinPushTransitivePredicatesRule
[ https://issues.apache.org/jira/browse/CALCITE-2205?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Vitalii Diravka updated CALCITE-2205: - Summary: One more Infinite loop for JoinPushTransitivePredicatesRule (was: JoinPushTransitivePredicatesRule should not create a Filter on top of an equivalent Filter) > 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)
[jira] [Updated] (CALCITE-2205) One more Infinite loop for JoinPushTransitivePredicatesRule
[ 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)
[jira] [Updated] (CALCITE-2205) One more Infinite loop for JoinPushTransitivePredicatesRule
[ https://issues.apache.org/jira/browse/CALCITE-2205?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Vitalii Diravka updated CALCITE-2205: - Description: 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} was: 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 in onMatch method of the rule or the 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} > 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.16.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)