[ https://issues.apache.org/jira/browse/PIG-1781?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Michael Brauwerman updated PIG-1781: ------------------------------------ Affects Version/s: (was: 0.9.0) Release Note: in UDFs in org.apache.pig.piggybank.test.evaluation.datetime.truncate, add support for non-UTC timezones in ISO 8601 datetime strings, Status: Patch Available (was: Open) This patch file was generated by "cd contrib/piggybank/java && svn diff". I do not know if that is the desired format. This is a patch against trunk. Notes on the code: * Tests included for logic change, new feature (non-UTC support), and new class's methods. * In addition to fixing the bug, I refactored a bit of common code into a new class ISOHelper. * Whitespace is a bit funky, because I made the changes in XCode, not Eclipse. * It might work well against 0.8.0 as well. At a glance, I didn't see code changes in the affected classes. * Example code (in the comments) was *not* updated to include examples of non-UTC usage. > Piggybank: ISOToDay disregards timezone (should use ISODateTimeFormat. > instead of DateTime to parse) > ---------------------------------------------------------------------------------------------------- > > Key: PIG-1781 > URL: https://issues.apache.org/jira/browse/PIG-1781 > Project: Pig > Issue Type: Bug > Affects Versions: 0.8.0 > Reporter: Michael Brauwerman > Attachments: svn.diff > > > (Apologies if this is the wrong place to file Piggybank bugs) > Bug in > http://svn.apache.org/viewvc/pig/trunk/contrib/piggybank/java/src/main/java/org/apache/pig/piggybank/evaluation/datetime/truncate/ISOToDay.java?view=markup > and other > http://svn.apache.org/viewvc/pig/trunk/contrib/piggybank/java/src/main/java/org/apache/pig/piggybank/evaluation/datetime/truncate/ > classes that copy-paste the same code. > These classes parse dates like so: > DateTimeZone.setDefault(DateTimeZone.UTC); > DateTime dt = new DateTime((String)input.get(0).toString()); > This has two problems: > (1) It messes up JVM static state by changing the DateTimeZone default time > zone. > (2) It ignore timezone information in the input string, so times like > "2009-12-09T23:59:59-0800" get truncated to "2009-12-10T00:00:00Z", which is > the wrong day of year. > Instead, they should use something like this, which respects the input > timezone and does not modify any global state: > DateTime dt > ISODateTimeFormat.dateTime().withOffsetParsed().parseDateTime(isoDateString); > I have not provided a patch, because I'm not really set up to hack on > Piggybank locally. > As a workaround, I am copy-pasting the classes into my own packages, and > making the desired change. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.