[ 
https://issues.apache.org/jira/browse/CALCITE-2107?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16327812#comment-16327812
 ] 

Julian Hyde commented on CALCITE-2107:
--------------------------------------

I'm not sure about that. The time zone does not need to flow with the data; it 
is only needed when certain operations are performed, say truncating to day. 
Other operations e.g. IS NULL or {{>}} do not need to know time zone.

Which is the same as saying that time zone is part of the query, not part of 
the data.

(There may be other cases I'm not aware of where time zone is genuinely part of 
the data. We can address those separately. And maybe the TIMESTAMP WITH TIME 
ZONE type is required for those.)

> Timezone not passed as part of granularity when passing 
> TimeExtractionFunction to Druid
> ---------------------------------------------------------------------------------------
>
>                 Key: CALCITE-2107
>                 URL: https://issues.apache.org/jira/browse/CALCITE-2107
>             Project: Calcite
>          Issue Type: Bug
>          Components: druid
>            Reporter: Nishant Bangarwa
>            Assignee: Nishant Bangarwa
>            Priority: Major
>
> When sending granularity to TimeFormatExtractionFunction we need to add 
> timezone to the granularity to align it with the timezone specified in 
> calcite connection. If no timezone is specified in granularity, It is 
> considered as UTC timezone by druid. 
> Note the return value in is as per granularity UTC and not IST as expected  - 
> {code}
>  @Test
>   public void testTmeWithFilterOnFloorOnTimeWithTimezoneConversion() {
>     final String sql = "Select cast(floor(\"timestamp\" to MONTH) as 
> timestamp) as t from "
>         + "\"foodmart\" where floor(\"timestamp\" to MONTH) >= '1997-04-30 
> 18:30:00 UTC' order by t"
>         + " limit 1";
>     final String druidQueryPart1 = 
> "filter\":{\"type\":\"bound\",\"dimension\":\"__time\","
>         + "\"lower\":\"1997-05-01T00:00:00.000Z\",\"lowerStrict\":false,"
>         + 
> "\"ordering\":\"lexicographic\",\"extractionFn\":{\"type\":\"timeFormat\","
>         + "\"format\":\"yyyy-MM-dd";
>     final String druidQueryPart2 = 
> "\"granularity\":\"month\",\"timeZone\":\"IST\","
>         + 
> "\"locale\":\"en-US\"}},\"dimensions\":[],\"metrics\":[],\"granularity\":\"all\"";
>     CalciteAssert.that()
>         .enable(enabled())
>         .with(ImmutableMap.of("model", FOODMART.getPath()))
>         .with(CalciteConnectionProperty.TIME_ZONE.camelName(), "IST")
>         .query(sql)
>         .runs()
>         .queryContains(druidChecker(druidQueryPart1, druidQueryPart2))
>         .returnsOrdered("T=1997-05-01 05:30:00");
>   }
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to