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

Improve DruidQuery cost function, to ensure that EXTRACT gets pushed as an interval if possible

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 1.16.0
    • Component/s: druid
    • Labels:
      None

      Description

      DruidAdapterIT testFilterTimestamp does not test translating of extract fn to interval.

      This test was added to verify that the extract function is transformed to a date range on timestamp column. But in this it does not seem to be pushing extract to interval. This task is to check the root cause and fix this. I guess this is possibly an issue with cost computation not accounting for interval being queried.

       
      /** Tests that conditions applied to time units extracted via the EXTRACT
         * function become ranges on the timestamp column
         *
         * <p>Test case for
         * <a href="https://issues.apache.org/jira/browse/CALCITE-1334">[CALCITE-1334]
         * Convert predicates on EXTRACT function calls into date ranges</a>. */
        @Test public void testFilterTimestamp() {
          String sql = "select count(*) as c\n"
              + "from \"foodmart\"\n"
              + "where extract(year from \"timestamp\") = 1997\n"
              + "and extract(month from \"timestamp\") in (4, 6)\n";
          final String explain = "DruidQuery(table=[[foodmart, foodmart]], "
              + "intervals=[[1900-01-09T00:00:00.000Z/2992-01-10T00:00:00.000Z]], "
              + "filter=[AND(=(EXTRACT(FLAG(YEAR), $0), 1997), OR(=(EXTRACT(FLAG(MONTH), $0), 4), "
              + "=(EXTRACT(FLAG(MONTH), $0), 6)))], groups=[{}], aggs=[[COUNT()]])";
          sql(sql)
              .explainContains(explain)
              .returnsUnordered("C=13500");
        }
      

        Attachments

          Activity

            People

            • Assignee:
              nishantbangarwa Nishant Bangarwa
              Reporter:
              nishantbangarwa Nishant Bangarwa
            • Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: