You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@calcite.apache.org by "Ulrich Kramer (Jira)" <ji...@apache.org> on 2022/09/13 07:29:00 UTC

[jira] [Created] (CALCITE-5284) JDBC rules create incorrect plan

Ulrich Kramer created CALCITE-5284:
--------------------------------------

             Summary: JDBC rules create incorrect plan
                 Key: CALCITE-5284
                 URL: https://issues.apache.org/jira/browse/CALCITE-5284
             Project: Calcite
          Issue Type: Bug
         Environment: Calcite 1.31.1. on Mac
            Reporter: Ulrich Kramer


The following unit test for {{JdbcAdapterTest}} fails:

{code:java}
  @Test void testOffset() {
    CalciteAssert.model(FoodmartSchema.FOODMART_MODEL)
        .query("select * from \"sales_fact_1997\" limit 10 offset 20")
        .explainContains("PLAN=JdbcToEnumerableConverter\n" +
            "  JdbcSort(offset=[20], fetch=[10])\n" +
            "    JdbcTableScan(table=[[foodmart, sales_fact_1997]])")
        .runs();
  }
{code}

For an offset less than 13, the correct plan is created. With an offset above 13, the plan looks like this:

{code}
EnumerableLimit(offset=[20], fetch=[10])
  JdbcToEnumerableConverter
    JdbcTableScan(table=[[foodmart, sales_fact_1997]])
{code}

which can lead to enormous latency times, since the entire table is loaded via JDBC.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)