drill-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Paul Rogers (JIRA)" <j...@apache.org>
Subject [jira] [Created] (DRILL-5332) DateVector support uses questionable conversions to a time
Date Wed, 08 Mar 2017 05:29:37 GMT
Paul Rogers created DRILL-5332:

             Summary: DateVector support uses questionable conversions to a time
                 Key: DRILL-5332
                 URL: https://issues.apache.org/jira/browse/DRILL-5332
             Project: Apache Drill
          Issue Type: Bug
    Affects Versions: 1.9.0
            Reporter: Paul Rogers

The following code in {{DateVector}} is worrisome:

    public DateTime getObject(int index) {
        org.joda.time.DateTime date = new org.joda.time.DateTime(get(index), org.joda.time.DateTimeZone.UTC);
        date = date.withZoneRetainFields(org.joda.time.DateTimeZone.getDefault());
        return date;

This code takes a date/time value stored in a value vector, converts it to UTC, then strips
the time zone and replaces it with local time. The result it a "timestamp" in Java format
(seconds since the epoch), but not really, it really the time since the epoch, as if the epoch
had started in the local time zone rather than UTC.

This is the kind of fun & games that people used to do in Java with the {{Date}}  type
before the advent of Joda time (and the migration of Joda into Java 8.)

It is, in short, very bad practice and nearly impossible to get right.

Further, converting a pure date (since this is a {{DateVector}}) into a date/time is fraught
with peril. A date has no corresponding time. 1 AM on Friday in one time zone might be 11
PM on Thursday in another. Converting from dates to times is very difficult.

If the {{DateVector}} corresponds to a date, then it should be simple date with no implied
time zone and no implied relationship to time. If there is to be a mapping of time, it must
be to a {{LocalTime}} (in Joda and Java 8) that has no implied time zone.

This message was sent by Atlassian JIRA

View raw message