[jira] [Updated] (CALCITE-2205) One more Infinite loop for JoinPushTransitivePredicatesRule

2018-03-27 Thread Vitalii Diravka (JIRA)

 [ 
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

2018-03-13 Thread Jesus Camacho Rodriguez (JIRA)

 [ 
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

2018-03-06 Thread Vitalii Diravka (JIRA)

 [ 
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)