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

Infinite matching of FilterProjectTransposeRule causes stackoverflow

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Cannot Reproduce
    • None
    • 1.32.0
    • core
    • 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

              Unassigned Unassigned
              jinxing6042@126.com Jin Xing
              Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: