Youwei Wang has posted comments on this change.

Change subject: IMPALA-3504: function for current timestamp in UTC, i.e. 
utc_timestamp()
......................................................................


Patch Set 2:

> > > As I mentioned in your previous review and/or the JIRA, this
 > > needs
 > > > to use the query-wide timestamp, i.e. what we do for now().
 > >
 > > Greetings, Matthew.
 > > If you don't mind, I want to propose an idea about this task.
 > > Considering three fators of utc_timestamp, local_timestamp and
 > > timezone, I believe we have following deductions:
 > > utc_timestamp + local_timestamp ? timezone
 > > utc_timestamp + timezone ? local_timestamp
 > > local_timestamp + timezone ? utc_timestamp
 > > PS: So far as I know, the UTC time is essentially the time
 > without
 > > any timezone offset. If you don't mind, I want to take the
 > Beijing
 > > time as example. Since Beijing timezone is of +8h offset, I can
 > get
 > > corresponding UTC time by minusing 8 from current Beijing time. I
 > > have done some calculation and calibration using online time
 > > service. And this approach works. If you find some mistakes in my
 > > approach, please feel free to point them out. Thank you. :)
 > >
 > > And I have found the following code:
 > > query_ctx->__set_now_string(TimestampValue::LocalTime().DebugString());
 > > in be/src/service/impala-server.cc:841.
 > > So please allow me to assume we have local_timestamp of the host
 > > where Impala service runs. In this case, we can:
 > > 1. directly store the utc_timestamp in the context data
 > structure.
 > > Then utc_timestamp() can be accessed like the function now().
 > > 2. save the timezone/offset in the context data structure. Then
 > we
 > > can use the now() and such timezone/offset to calculate the
 > > utc_timestamp.
 > >
 > > If possbile, would you please tell which solution you prefer?
 > > Thank you for reading this long post. :)
 > 
 > Hi Youwei,
 > 
 > Good question, thanks for following up. I think #1 is better
 > because #2 involves some additional computation on every invocation
 > of utc_timestamp() that may get expensive, e.g. "select
 > utc_timestamp() from table_with_1billion_rows;". The advantage I
 > see to #2 is if we wanted the timezone stored separately for some
 > other reason, but I think right now that would be premature.
 > 
 > Thanks

Greetings, Matthew.
Thank you for your suggestion and comment - I totally agree with you. 
Storing the timezone in the runtime-state structure may save us a few bytes, 
but it does cost some overheads since we should convert the time repeatedly. 

My ideas are:
1. I choose storing the utc_timestamp in the runtime-state so we can get 
corresponding time zone offset using now() and utc_timestamp().
2. Actually, I am afraid there exist some other issues about the conversion 
using local now() and a timezone. That is the JIRA IMPALA-3169, which I am 
working on now.

Thank you again and any code review comment is highly welcomed. :)

-- 
To view, visit http://gerrit.cloudera.org:8080/4490
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I5ee6ee192aa469f77c711f27ad324696a42004d1
Gerrit-PatchSet: 2
Gerrit-Project: Impala-ASF
Gerrit-Branch: master
Gerrit-Owner: Youwei Wang <youwei.a.w...@intel.com>
Gerrit-Reviewer: Jim Apple <jbap...@cloudera.com>
Gerrit-Reviewer: Matthew Jacobs <m...@cloudera.com>
Gerrit-Reviewer: Youwei Wang <youwei.a.w...@intel.com>
Gerrit-HasComments: No

Reply via email to