[
https://issues.apache.org/jira/browse/DRILL-6242?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16410657#comment-16410657
]
ASF GitHub Bot commented on DRILL-6242:
---------------------------------------
GitHub user jiang-wu opened a pull request:
https://github.com/apache/drill/pull/1184
DRILL-6242 - Use java.sql.[Date|Time|Timestamp] classes to hold value…
See Jira ticket for details. Use java.sql.Date, java.sql.Time, and
java.sql.Timestamp as the Java representation for their corresponding Drill
types. This does not lose any precisions as these classes are just simple
subclasses of java.util.Date with millisecond precision. But using these
classes allows the command line to properly format the data using
org.apache.drill.exec.util.JsonStringArrayList and
org.apache.drill.exec.util.JsonStringHashMap.
The changes are simple enough. But many Test** methods need to be updated
to use java.sql.Date|Time|Timestamp. Opt not to optimize these changes.
Places still use joda DateTime to parse date and time as before, but then
converted to the java.sql.Date|Time|Timestamp as appropriate.
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/jiang-wu/drill DRILL-6242-master
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/drill/pull/1184.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #1184
----
commit 7cbb8b81196732cb223c031cd629d9bc941640d9
Author: Jiang Wu <jiang.wu@...>
Date: 2018-03-22T20:42:20Z
DRILL-6242 - Use java.sql.[Date|Time|Timestamp] classes to hold values from
corresponding Drill date, time, and timestamp types.
----
> Output format for nested date, time, timestamp values in an object hierarchy
> ----------------------------------------------------------------------------
>
> Key: DRILL-6242
> URL: https://issues.apache.org/jira/browse/DRILL-6242
> Project: Apache Drill
> Issue Type: Bug
> Components: Execution - Data Types
> Affects Versions: 1.12.0
> Reporter: Jiang Wu
> Priority: Major
>
> Some storages (mapr db, mongo db, etc.) have hierarchical objects that
> contain nested fields of date, time, timestamp types. When a query returns
> these objects, the output format for the nested date, time, timestamp, are
> showing the internal object (org.joda.time.DateTime), rather than the logical
> data value.
> For example. Suppose in MongoDB, we have a single object that looks like
> this:
> {code:java}
> > db.test.findOne();
> {
> "_id" : ObjectId("5aa8487d470dd39a635a12f5"),
> "name" : "orange",
> "context" : {
> "date" : ISODate("2018-03-13T21:52:54.940Z"),
> "user" : "jack"
> }
> }
> {code}
> Then connect Drill to the above MongoDB storage, and run the following query
> within Drill:
> {code:java}
> > select t.context.`date`, t.context from test t;
> +--------+---------+
> | EXPR$0 | context |
> +--------+---------+
> | 2018-03-13 |
> {"date":{"dayOfYear":72,"year":2018,"dayOfMonth":13,"dayOfWeek":2,"era":1,"millisOfDay":78774940,"weekOfWeekyear":11,"weekyear":2018,"monthOfYear":3,"yearOfEra":2018,"yearOfCentury":18,"centuryOfEra":20,"millisOfSecond":940,"secondOfMinute":54,"secondOfDay":78774,"minuteOfHour":52,"minuteOfDay":1312,"hourOfDay":21,"zone":{"fixed":true,"id":"UTC"},"millis":1520977974940,"chronology":{"zone":{"fixed":true,"id":"UTC"}},"afterNow":false,"beforeNow":true,"equalNow":false},"user":"jack"}
> |
> {code}
> We can see that from the above output, when the date field is retrieved as a
> top level column, Drill outputs a logical date value. But when the same
> field is within an object hierarchy, Drill outputs the internal object used
> to hold the date value.
> The expected output is the same display for whether the date field is shown
> as a top level column or when it is within an object hierarchy:
> {code:java}
> > select t.context.`date`, t.context from test t;
> +--------+---------+
> | EXPR$0 | context |
> +--------+---------+
> | 2018-03-13 | {"date":"2018-03-13","user":"jack"} |
> {code}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)