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

Druid adapter: Send timestamp literals to Druid as local time, not UTC

    Details

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

      Description

      In the Druid adapter, send timestamp literals to Druid as local time, not UTC. Druid will interpret them as instants in the Druid server's time zone. In SQL (and therefore in Calcite), timestamps do not have a time zone; in Joda-Time's terminology they represent a LocalDateTime rather than an Instant.

      In the following, "1999-11-10T00:00:00.000Z" should be "1999-11-10T00:00:00.000".

      hive> explain SELECT DISTINCT `__time`
          > FROM store_sales_sold_time_subset
          > WHERE `__time` < '1999-11-10 00:00:00';
      OK
      Plan optimized by CBO.
      
      Stage-0
        Fetch Operator
          limit:-1
          Select Operator [SEL_1]
            Output:["_col0"]
            TableScan [TS_0]
              Output:["__time"],properties:{"druid.query.json":"{\"queryType\":\"timeseries\",\"dataSource\":\"druid_tpcds_ss_sold_time_subset\",\"descending\":false,\"granularity\":\"NONE\",\"aggregations\":[],\"intervals\":[\"1900-01-01T00:00:00.000Z/1999-11-10T00:00:00.000Z\"]}","druid.query.type":"timeseries"}
      

        Attachments

          Activity

            People

            • Assignee:
              julianhyde Julian Hyde
              Reporter:
              julianhyde Julian Hyde
            • Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: