Hi Jaewoong, Thank you for this bug reporting and nice finding. They are all bugs. As you mentioned, interval does not have timezone. As far as I know, nobody works the issues now and there are no Jira issues for them. You can feel free to start the issue.
Before you starts the issue, I'd like to give a brief background about timezone. You may already know it. Tajo translates the timezone of input data when Tajo reads the data. Then, Tajo internally processes all data with UTC+0 due to simplicity of processing. When a user retrieves the query result, the result is translated to user's timezone. FYI, I share known problems with you. I've just created the known issues that I found. Actually, I'm also working on TAJO-1186. https://issues.apache.org/jira/browse/TAJO-1185 https://issues.apache.org/jira/browse/TAJO-1186 https://issues.apache.org/jira/browse/TAJO-1187 Best regards, Hyunsik On Sun, Nov 16, 2014 at 7:47 PM, Jaewoong Jung <[email protected]> wrote: > I found two test cases are failing on my machines due to timezone > issues. (Of course, on unmodified latest clients) > > 1. TestIntervalDatum#testOperation - the one testing DateDatum + > TimeDatume (line #91) > > On my machines, the result value is 2001-09-29 03:00:00, not > 2001-09-28 03:00:00. The reason it fails is, I assume, in > DateDatum#plus, it converts tm2 to a local time before adding it to > tm1, where I see two issues. > > (1) Why does it bother to change it to a local time before adding and > change it back to UTC after that? I don't see any points in doing so. > > (2) Supposing there are some reasons behind it, why does it convert an > "interval" (in this case, tm2) to a local time? Intervals don't have > timezones, so it doesn't make sense at all. And, in my case, since my > machines are set to PST, which is UTC -8:00, it tries to subtract 8 > hours from 3 hours, and I'm thinking it's causing some kind of > underflow error. As a proof, it works just fine if I change DateDatum, > line 129 from DateTimeUtil.toUserTimezone(tm2) to > DateTimeUtil.toUserTimezone(tm1). (tm1 is a TimeMeta of the DateDatum > to add an interval to, and tm2 is the interval's TimeMeta.) > > 2. TestTimestampDatum#testTimestampConstructor, line 163 > > It compares a Calendar instance, which returns local year, month, date > values, with a TimestampDatum instance, which returns UTC year, month, > date values except for toString and asChars values. As a result, it > passes on my machine in the morning, but fails in the evening. > > --- > > Both tests run fine if I change the timezone to London, which is > another reason I strongly believe these are timezone issues. > > Is anyone working on these issues? If not, I can fix them myself. > > Cheers, > Jaewoong
