[ https://issues.apache.org/jira/browse/CALCITE-1658?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16308678#comment-16308678 ]
Julian Hyde commented on CALCITE-1658: -------------------------------------- If {{ExtractShuttle}} is used outside Calcite (I suspect that it is used in Hive) then we cannot accomplish this without a public API change. Given that, let's create a new, smaller public API. I have added a new method {{DateRangeRules#replaceTimeUnits}} which external projects and tests should use, and made {{ExtractShuttle}} and {{DateRangeRules#extractTimeUnits}} package-protected again. > DateRangeRules issues > --------------------- > > Key: CALCITE-1658 > URL: https://issues.apache.org/jira/browse/CALCITE-1658 > Project: Calcite > Issue Type: Bug > Components: core > Reporter: Gian Merlino > Assignee: Nishant Bangarwa > > Follow up to CALCITE-1601. In Druid's built in SQL module (not the Druid > adapter in Calcite), some unit tests fail when DateRangeRules.FILTER_INSTANCE > is enabled. These include the SQLs below. In all cases, the predicate was > incorrectly simplified to "false" and no Druid queries were made. > Removing DateRangeRules from the planner causes the results to be correct. > {code} > SELECT COUNT(*) FROM druid.foo > WHERE > (EXTRACT(YEAR FROM __time) = 2000 AND EXTRACT(MONTH FROM __time) IN > (2, 3, 5)) > OR (EXTRACT(YEAR FROM __time) = 2001 AND EXTRACT(MONTH FROM __time) = 1) > {code} > {code} > SELECT COUNT(*) FROM druid.foo > WHERE > EXTRACT(YEAR FROM __time) IN (2000, 2001) AND ( (EXTRACT(YEAR FROM > __time) = 2000 AND EXTRACT(MONTH FROM __time) IN (2, 3, 5)) > OR (EXTRACT(YEAR FROM __time) = 2001 AND EXTRACT(MONTH FROM __time) = 1) > ) > {code} > {code} > SELECT COUNT(*) FROM druid.foo > WHERE > EXTRACT(YEAR FROM __time) <> 2000 AND ( (EXTRACT(YEAR FROM __time) = > 2000 AND EXTRACT(MONTH FROM __time) IN (2, 3, 5)) > OR (EXTRACT(YEAR FROM __time) = 2001 AND EXTRACT(MONTH FROM __time) = 1) > ) > {code} > {code} > SELECT COUNT(*) FROM druid.foo > WHERE > EXTRACT(MONTH FROM __time) IN (1, 2, 3, 5) AND ( (EXTRACT(YEAR FROM > __time) = 2000 AND EXTRACT(MONTH FROM __time) IN (2, 3, 5)) > OR (EXTRACT(YEAR FROM __time) = 2001 AND EXTRACT(MONTH FROM __time) = 1) > ) > {code} -- This message was sent by Atlassian JIRA (v6.4.14#64029)