Stamatis Zampetakis created CALCITE-4213: --------------------------------------------
Summary: Druid plans with small intervals should be chosen over full interval scan plus filter Key: CALCITE-4213 URL: https://issues.apache.org/jira/browse/CALCITE-4213 Project: Calcite Issue Type: Bug Components: druid-adapter Reporter: Stamatis Zampetakis The problem was observed due to the failure of DruidAdapterIT#testFilterTimestamp. {code:sql} select count(*) as c from "foodmart" where extract(year from "timestamp") = 1997 and extract(month from "timestamp") in (4, 6) {code} +Expected+ {noformat} EnumerableInterpreter DruidQuery(table=[[foodmart, foodmart]], intervals=[[1997-04-01T00:00:00.000Z/1997-05-01T00:00:00.000Z, 1997-06-01T00:00:00.000Z/1997-07-01T00:00:00.000Z]], projects=[[0]], groups=[{}], aggs=[[COUNT()]]) {noformat} +Actual+ {noformat} EnumerableInterpreter 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()]]) {noformat} Observe that the actual plan has an interval that basically touches all data so in most cases it is less efficient than the expected one. -- This message was sent by Atlassian Jira (v8.3.4#803005)