Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id E3FBD200C6E for ; Mon, 8 May 2017 08:51:44 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id E2AC4160BA5; Mon, 8 May 2017 06:51:44 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id DA49F160B99 for ; Mon, 8 May 2017 08:51:43 +0200 (CEST) Received: (qmail 15008 invoked by uid 500); 8 May 2017 06:51:42 -0000 Mailing-List: contact dev-help@hive.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@hive.apache.org Delivered-To: mailing list dev@hive.apache.org Received: (qmail 14997 invoked by uid 99); 8 May 2017 06:51:42 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 08 May 2017 06:51:42 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id 0F2681802CC; Mon, 8 May 2017 06:51:42 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 3 X-Spam-Level: *** X-Spam-Status: No, score=3 tagged_above=-999 required=6.31 tests=[HEADER_FROM_DIFFERENT_DOMAINS=0.001, HTML_MESSAGE=2, KAM_LAZY_DOMAIN_SECURITY=1, RP_MATCHES_RCVD=-0.001] autolearn=disabled Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id VWotZJ4a49Te; Mon, 8 May 2017 06:51:38 +0000 (UTC) Received: from mailrelay1-us-west.apache.org (mailrelay1-us-west.apache.org [209.188.14.139]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with ESMTP id 5E9C85FAC2; Mon, 8 May 2017 06:51:37 +0000 (UTC) Received: from reviews.apache.org (unknown [10.41.0.12]) by mailrelay1-us-west.apache.org (ASF Mail Server at mailrelay1-us-west.apache.org) with ESMTP id A8125E0272; Mon, 8 May 2017 06:51:36 +0000 (UTC) Received: from reviews-vm2.apache.org (localhost [IPv6:::1]) by reviews.apache.org (ASF Mail Server at reviews-vm2.apache.org) with ESMTP id 9F7B1C40297; Mon, 8 May 2017 06:51:36 +0000 (UTC) Content-Type: multipart/alternative; boundary="===============7936042547939963278==" MIME-Version: 1.0 Subject: Re: Review Request 50787: Add a timezone-aware timestamp From: Rui Li To: Xuefu Zhang , pengcheng xiong Cc: hive , Rui Li , Jason Dere Date: Mon, 08 May 2017 06:51:36 -0000 Message-ID: <20170508065136.40381.78416@reviews-vm2.apache.org> X-ReviewBoard-URL: https://reviews.apache.org/ Auto-Submitted: auto-generated Sender: Rui Li X-ReviewGroup: hive X-Auto-Response-Suppress: DR, RN, OOF, AutoReply X-ReviewRequest-URL: https://reviews.apache.org/r/50787/ X-Sender: Rui Li References: <20170507232228.40381.99979@reviews-vm2.apache.org> In-Reply-To: <20170507232228.40381.99979@reviews-vm2.apache.org> X-ReviewBoard-Diff-For: ql/src/test/results/clientpositive/timestamptz_2.q.out X-ReviewBoard-Diff-For: serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyTimestampTZ.java X-ReviewBoard-Diff-For: ql/src/test/results/clientpositive/timestamptz_1.q.out X-ReviewBoard-Diff-For: common/src/java/org/apache/hadoop/hive/common/type/TimestampTZ.java X-ReviewBoard-Diff-For: serde/src/test/org/apache/hadoop/hive/serde2/io/TestTimestampTZWritable.java X-ReviewBoard-Diff-For: ql/src/test/queries/clientpositive/timestamptz.q X-ReviewBoard-Diff-For: serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyTimestampTZObjectInspector.java X-ReviewBoard-Diff-For: ql/src/test/queries/clientpositive/timestamptz_1.q X-ReviewBoard-Diff-For: serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/TimestampTZObjectInspector.java X-ReviewBoard-Diff-For: serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaTimestampTZObjectInspector.java X-ReviewBoard-Diff-For: serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinaryTimestampTZ.java X-ReviewBoard-Diff-For: serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/SettableTimestampTZObjectInspector.java X-ReviewBoard-Diff-For: common/src/test/org/apache/hadoop/hive/common/type/TestTimestampTZ.java X-ReviewBoard-Diff-For: serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/WritableConstantTimestampTZObjectInspector.java X-ReviewBoard-Diff-For: ql/src/test/queries/clientpositive/timestamptz_2.q X-ReviewBoard-Diff-For: serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/WritableTimestampTZObjectInspector.java X-ReviewBoard-Diff-For: ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFToTimestampTZ.java X-ReviewBoard-Diff-For: ql/src/test/results/clientpositive/timestamptz.q.out X-ReviewBoard-Diff-For: serde/src/java/org/apache/hadoop/hive/serde2/io/TimestampTZWritable.java Reply-To: Rui Li X-ReviewRequest-Repository: hive-git archived-at: Mon, 08 May 2017 06:51:45 -0000 --===============7936042547939963278== MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit > On May 7, 2017, 11:22 p.m., Xuefu Zhang wrote: > > common/src/java/org/apache/hadoop/hive/common/type/TimestampTZ.java > > Lines 138 (patched) > > > > > > Not sure if I understand this, but why cannot we get seconds/nanos from date/timestamp and then convert to TimestapTZ? I assume this is a faster way. Hi Xuefu, the reason why I did this: 1. As Ashutosh suggested, we will use LocalDate and LocalDateTime for Date and Timestamp in the future. When that happens, date/timestamp won't have seconds/nanos part, instead they're only descriptions of time. So the conversion should be done based on text format. 2. At the moment, the seconds/nanos of date/timestamp is computed using system timezone. So the conversion can have different results in different systems. I noted Carter also suggested that SQL standard requires session zone should be taken into consideration in the conversion. Consolidating your suggestions with Carter's, I think we can: make the conversion text-wise, and append the system zone (Hive currently doesn't have session zone). For example, a date of '2017-01-01' in LA will be converted to timestamptz as '2017-01-01 00:00:00 America/Los_Angeles', which in turn converted to '2017-01-01 08:00:00.0 Z'. Does this make sense? > On May 7, 2017, 11:22 p.m., Xuefu Zhang wrote: > > ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/TypeConverter.java > > Lines 204 (patched) > > > > > > What does this imply? The method converts our primitive type to a SqlTypeName in calcite. But SqlTypeName currently doesn't have timestamp with time zone. This will have some impact when calcite does the optimization, e.g. computing average value sizes. But I think we have to live with it untile SqlTypeName supports timestamp with time zone. > On May 7, 2017, 11:22 p.m., Xuefu Zhang wrote: > > serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyTimestampTZ.java > > Lines 32 (patched) > > > > > > Can you also make a note about the source of the code, like TimeStampTZWritable? sure, will do - Rui ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/50787/#review174136 ----------------------------------------------------------- On May 8, 2017, 6:51 a.m., Rui Li wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/50787/ > ----------------------------------------------------------- > > (Updated May 8, 2017, 6:51 a.m.) > > > Review request for hive, pengcheng xiong and Xuefu Zhang. > > > Bugs: HIVE-14412 > https://issues.apache.org/jira/browse/HIVE-14412 > > > Repository: hive-git > > > Description > ------- > > The 1st patch to add timezone-aware timestamp. > > > Diffs > ----- > > common/src/java/org/apache/hadoop/hive/common/type/TimestampTZ.java PRE-CREATION > common/src/test/org/apache/hadoop/hive/common/type/TestTimestampTZ.java PRE-CREATION > contrib/src/test/queries/clientnegative/serde_regex.q a676338 > contrib/src/test/queries/clientpositive/serde_regex.q d75d607 > contrib/src/test/results/clientnegative/serde_regex.q.out 58b1c02 > contrib/src/test/results/clientpositive/serde_regex.q.out 2984293 > hbase-handler/src/test/queries/positive/hbase_timestamp.q 0350afe > hbase-handler/src/test/results/positive/hbase_timestamp.q.out 3918121 > itests/hive-blobstore/src/test/queries/clientpositive/orc_format_part.q 358eccd > itests/hive-blobstore/src/test/queries/clientpositive/orc_nonstd_partitions_loc.q c462538 > itests/hive-blobstore/src/test/queries/clientpositive/rcfile_format_part.q c563d3a > itests/hive-blobstore/src/test/queries/clientpositive/rcfile_nonstd_partitions_loc.q d17c281 > itests/hive-blobstore/src/test/results/clientpositive/orc_format_part.q.out 5d1319f > itests/hive-blobstore/src/test/results/clientpositive/orc_nonstd_partitions_loc.q.out 70e72f7 > itests/hive-blobstore/src/test/results/clientpositive/rcfile_format_part.q.out bed10ab > itests/hive-blobstore/src/test/results/clientpositive/rcfile_nonstd_partitions_loc.q.out c6442f9 > jdbc/src/java/org/apache/hive/jdbc/HiveBaseResultSet.java ade1900 > jdbc/src/java/org/apache/hive/jdbc/JdbcColumn.java 38918f0 > ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java 8dc5f2e > ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java f8b55da > ql/src/java/org/apache/hadoop/hive/ql/exec/SerializationUtilities.java 01a652d > ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/TypeConverter.java 38308c9 > ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java 0cf9205 > ql/src/java/org/apache/hadoop/hive/ql/parse/HiveLexer.g 0721b92 > ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g d98a663 > ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g 8598fae > ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java 8f8eab0 > ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java bda2050 > ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToBoolean.java 7cdf2c3 > ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToString.java 5cacd59 > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDF.java 68d98f5 > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFDate.java 5a31e61 > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFToTimestampTZ.java PRE-CREATION > ql/src/test/org/apache/hadoop/hive/ql/parse/TestSQL11ReservedKeyWordsNegative.java 0dc6b19 > ql/src/test/queries/clientnegative/serde_regex.q c9cfc7d > ql/src/test/queries/clientnegative/serde_regex2.q a29bb9c > ql/src/test/queries/clientnegative/serde_regex3.q 4e91f06 > ql/src/test/queries/clientpositive/create_like.q bd39731 > ql/src/test/queries/clientpositive/join43.q 12c45a6 > ql/src/test/queries/clientpositive/serde_regex.q e21c6e1 > ql/src/test/queries/clientpositive/timestamptz.q PRE-CREATION > ql/src/test/queries/clientpositive/timestamptz_1.q PRE-CREATION > ql/src/test/queries/clientpositive/timestamptz_2.q PRE-CREATION > ql/src/test/results/clientnegative/serde_regex.q.out a1ec5ca > ql/src/test/results/clientnegative/serde_regex2.q.out 374675d > ql/src/test/results/clientnegative/serde_regex3.q.out dc0a0e2 > ql/src/test/results/clientpositive/create_like.q.out ff2e752 > ql/src/test/results/clientpositive/join43.q.out e8c7278 > ql/src/test/results/clientpositive/serde_regex.q.out 7bebb0c > ql/src/test/results/clientpositive/timestamptz.q.out PRE-CREATION > ql/src/test/results/clientpositive/timestamptz_1.q.out PRE-CREATION > ql/src/test/results/clientpositive/timestamptz_2.q.out PRE-CREATION > serde/if/serde.thrift 1d40d5a > serde/src/gen/thrift/gen-cpp/serde_constants.h 8785bd2 > serde/src/gen/thrift/gen-cpp/serde_constants.cpp 907acf2 > serde/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/serde/serdeConstants.java 2578d3e > serde/src/gen/thrift/gen-php/org/apache/hadoop/hive/serde/Types.php ea2dbbe > serde/src/gen/thrift/gen-py/org_apache_hadoop_hive_serde/constants.py e3b24eb > serde/src/gen/thrift/gen-rb/serde_constants.rb 15efaea > serde/src/java/org/apache/hadoop/hive/serde2/SerDeUtils.java 5ecfbca > serde/src/java/org/apache/hadoop/hive/serde2/binarysortable/BinarySortableSerDe.java 89e15c3 > serde/src/java/org/apache/hadoop/hive/serde2/io/TimestampTZWritable.java PRE-CREATION > serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyFactory.java 23dbe6a > serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyTimestampTZ.java PRE-CREATION > serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyUtils.java 73c72e1 > serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyPrimitiveObjectInspectorFactory.java 5601734 > serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/primitive/LazyTimestampTZObjectInspector.java PRE-CREATION > serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinaryFactory.java 52f3527 > serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinarySerDe.java 56b4ca3 > serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinaryTimestampTZ.java PRE-CREATION > serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinaryUtils.java 8237b64 > serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorConverters.java 24b3d4e > serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorUtils.java ba44bae > serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/PrimitiveObjectInspector.java 70633f3 > serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaTimestampTZObjectInspector.java PRE-CREATION > serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/PrimitiveObjectInspectorConverter.java e08ad43 > serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/PrimitiveObjectInspectorFactory.java 2ed0843 > serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/PrimitiveObjectInspectorUtils.java 9642a7e > serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/SettableTimestampTZObjectInspector.java PRE-CREATION > serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/TimestampTZObjectInspector.java PRE-CREATION > serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/WritableConstantTimestampTZObjectInspector.java PRE-CREATION > serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/WritableTimestampTZObjectInspector.java PRE-CREATION > serde/src/java/org/apache/hadoop/hive/serde2/thrift/Type.java 0ad8c02 > serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/TypeInfoFactory.java 43c4819 > serde/src/test/org/apache/hadoop/hive/serde2/io/TestTimestampTZWritable.java PRE-CREATION > service-rpc/if/TCLIService.thrift 824b049 > service-rpc/src/gen/thrift/gen-cpp/TCLIService_constants.cpp 991cb2e > service-rpc/src/gen/thrift/gen-cpp/TCLIService_types.h 8accf66 > service-rpc/src/gen/thrift/gen-cpp/TCLIService_types.cpp b6995c4 > service-rpc/src/gen/thrift/gen-javabean/org/apache/hive/service/rpc/thrift/TCLIServiceConstants.java 930bed7 > service-rpc/src/gen/thrift/gen-javabean/org/apache/hive/service/rpc/thrift/TProtocolVersion.java 18a7825 > service-rpc/src/gen/thrift/gen-javabean/org/apache/hive/service/rpc/thrift/TTypeId.java a3735eb > service-rpc/src/gen/thrift/gen-php/Types.php ee5acd2 > service-rpc/src/gen/thrift/gen-py/TCLIService/constants.py c8d4f8f > service-rpc/src/gen/thrift/gen-py/TCLIService/ttypes.py e9faa2a > service-rpc/src/gen/thrift/gen-rb/t_c_l_i_service_constants.rb 25adbb4 > service-rpc/src/gen/thrift/gen-rb/t_c_l_i_service_types.rb 714309c > service/src/java/org/apache/hive/service/cli/ColumnValue.java 76e8c03 > service/src/java/org/apache/hive/service/cli/TypeDescriptor.java d634bef > > > Diff: https://reviews.apache.org/r/50787/diff/7/ > > > Testing > ------- > > > Thanks, > > Rui Li > > --===============7936042547939963278==--