Description
Run ScannableTableTest#testProjectableFilterableTableJoin with minor change to reproduce
@Test public void testProjectableFilterableTableJoin() throws Exception { final StringBuilder buf = new StringBuilder(); final String explain = "PLAN=" + "EnumerableHashJoin(condition=[=($0, $3)], joinType=[inner])\n" + " EnumerableInterpreter\n" + " BindableTableScan(table=[[s, b1]], filters=[[=($0, 10)]])\n" + " EnumerableInterpreter\n" + " BindableTableScan(table=[[s, b2]], filters=[[=($0, 10)]])"; CalciteAssert.that() .with( newSchema("s", Pair.of("b1", new BeatlesProjectableFilterableTable(buf, true)), Pair.of("b2", new BeatlesProjectableFilterableTable(buf, true)))) .query("select * from \"s\".\"b1\", \"s\".\"b2\" " + "where \"s\".\"b1\".\"i\" = 10 and \"s\".\"b2\".\"i\" = 10 " + "and \"s\".\"b1\".\"i\" = \"s\".\"b2\".\"i\"") .withHook(Hook.PLANNER, (Consumer<RelOptPlanner>) planner -> { planner.removeRule(EnumerableRules.ENUMERABLE_MERGE_JOIN_RULE); }) .explainContains(explain); }
This test has nothing to do with ENUMERABLE_MERGE_JOIN_RULE, but if we disable it with planner hook, stackoverflow happens;
I debugged and found that FilterProjectTransposeRule is matched infinitely but not sure the root cause.
Attachments
Attachments
Issue Links
- relates to
-
CALCITE-3124 Infinite rule matching when AggregateRemoveRule is enabled for SUM0
- Open
-
CALCITE-2223 ProjectMergeRule is infinitely matched when is applied after ProjectReduceExpressionsRule
- Closed
-
CALCITE-3041 Query runs endless when setImportance to 0
- Closed