[
https://issues.apache.org/jira/browse/PIG-3939?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Philip (flip) Kromer updated PIG-3939:
--------------------------------------
Attachment: 0001-PIG-3939-SPRINTF-function-to-format-strings-using-a-.patch
Updated to fix the comments.
Dates in Java are irrevocably sucky, which we knew; the reason your test failed
is that the millisecond timestamp I had in there was correctly interpreted as
an epoch offset in UTC but rendered by printf() according to the current
locale. Given that the %t doohickeys are kinda fiddly anyway, this isn't worth
working around. I chose to
* document that %t formats exist,
* but warn people not to use them, and recommend supplying dates as a string
prepared with ToString(datetime) instead, and
* include the %t in the test format, applying a brief act of violence to make a
string according to how Java does it. I used full class paths because I don't
want to import the Date classes at package scope.
The alternative is to just declare the %t formatters as undefined behavior --
that is, we don't describe their use except to say "don't use them", but we
also don't try to check to see if they were used.
> SPRINTF function to format strings using a printf-style template
> ----------------------------------------------------------------
>
> Key: PIG-3939
> URL: https://issues.apache.org/jira/browse/PIG-3939
> Project: Pig
> Issue Type: New Feature
> Components: impl, internal-udfs
> Reporter: Philip (flip) Kromer
> Assignee: Philip (flip) Kromer
> Labels: builtin, formatted, function, string, udf
> Attachments:
> 0001-PIG-3939-SPRINTF-function-to-format-strings-using-a-.patch,
> 0001-SPRINTF-function-to-format-strings-using-a-printf-st.patch
>
>
> Pig should provide a function to format output using java.util.Formatter
> (printf-style) templates.
> {code}
> SPRINTF(
> '%6s|%-8s|%2$,10d %2$8x %3$1TFT%<tT%<tz',
> 'yay', 1234567, ToMilliSeconds(CurrentTime()))
> -- ' yay|1234567 | 1,234,567 12d687 2014-05-15T08:22:26-0500'
> {code}
> I've written a UDF implementing SPRINTF(...), a variable-arguments function
> that accepts a string and any number of objects and returns a string. It
> counts on the java.util.Formatter to do its type-conversion, which works
> quite well. It doesn't appreciates pig's Dates for datetime formats ('%t'),
> but is quite happy to use epoch milliseconds for these as shown above.
> Patch forthcoming.
--
This message was sent by Atlassian JIRA
(v6.2#6252)