Vitalii Diravka created CALCITE-2205:
----------------------------------------
Summary: 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
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
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}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)