Uploaded image for project: 'Calcite'
  1. Calcite
  2. CALCITE-3505

Infinite matching of FilterProjectTransposeRule causes stackoverflow

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: core
    • Labels:
      None

      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

        1. graphviz.svg
          80 kB
          Jin Xing

          Issue Links

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                jinxing6042@126.com Jin Xing
              • Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated: