diff --git itests/util/src/main/java/org/apache/hadoop/hive/cli/control/CliConfigs.java itests/util/src/main/java/org/apache/hadoop/hive/cli/control/CliConfigs.java index 4c9f60c58e..1c0c62fb13 100644 --- itests/util/src/main/java/org/apache/hadoop/hive/cli/control/CliConfigs.java +++ itests/util/src/main/java/org/apache/hadoop/hive/cli/control/CliConfigs.java @@ -70,7 +70,6 @@ public CliConfig() { excludeQuery("udaf_corr.q"); // disabled in HIVE-20741 excludeQuery("udaf_histogram_numeric.q"); // disabled in HIVE-20715 excludeQuery("vector_groupby_reduce.q"); // Disabled in HIVE-21396 - excludeQuery("timestamptz_2.q"); // Disabled in HIVE-22722 excludeQuery("constprog_cast.q"); // TODO: Enable when we move to Calcite 1.23 setResultsDir("ql/src/test/results/clientpositive"); diff --git ql/src/test/results/clientpositive/timestamptz_2.q.out ql/src/test/results/clientpositive/timestamptz_2.q.out new file mode 100644 index 0000000000..7f614c02f4 --- /dev/null +++ ql/src/test/results/clientpositive/timestamptz_2.q.out @@ -0,0 +1,80 @@ +PREHOOK: query: drop table tstz2 +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table tstz2 +POSTHOOK: type: DROPTABLE +PREHOOK: query: create table tstz2(t timestamp with local time zone) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@tstz2 +POSTHOOK: query: create table tstz2(t timestamp with local time zone) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@tstz2 +PREHOOK: query: insert into table tstz2 values + ('2005-04-03 03:01:00.04067 GMT-07:00'),('2005-01-03 02:01:00 GMT'),('2005-01-03 06:01:00 GMT+04:00'), + ('2013-06-03 02:01:00.30547 GMT+01:00'),('2016-01-03 12:26:34.0123 GMT+08:00') +PREHOOK: type: QUERY +PREHOOK: Input: _dummy_database@_dummy_table +PREHOOK: Output: default@tstz2 +POSTHOOK: query: insert into table tstz2 values + ('2005-04-03 03:01:00.04067 GMT-07:00'),('2005-01-03 02:01:00 GMT'),('2005-01-03 06:01:00 GMT+04:00'), + ('2013-06-03 02:01:00.30547 GMT+01:00'),('2016-01-03 12:26:34.0123 GMT+08:00') +POSTHOOK: type: QUERY +POSTHOOK: Input: _dummy_database@_dummy_table +POSTHOOK: Output: default@tstz2 +POSTHOOK: Lineage: tstz2.t SCRIPT [] +PREHOOK: query: select * from tstz2 where t='2005-01-02 19:01:00 GMT-07:00' +PREHOOK: type: QUERY +PREHOOK: Input: default@tstz2 +#### A masked pattern was here #### +POSTHOOK: query: select * from tstz2 where t='2005-01-02 19:01:00 GMT-07:00' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@tstz2 +#### A masked pattern was here #### +2005-01-03 02:01:00.0 UTC +2005-01-03 02:01:00.0 UTC +PREHOOK: query: select * from tstz2 where t>'2013-06-03 02:01:00.30547 GMT+01:00' +PREHOOK: type: QUERY +PREHOOK: Input: default@tstz2 +#### A masked pattern was here #### +POSTHOOK: query: select * from tstz2 where t>'2013-06-03 02:01:00.30547 GMT+01:00' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@tstz2 +#### A masked pattern was here #### +2016-01-03 04:26:34.0123 UTC +PREHOOK: query: select min(t),max(t) from tstz2 +PREHOOK: type: QUERY +PREHOOK: Input: default@tstz2 +#### A masked pattern was here #### +POSTHOOK: query: select min(t),max(t) from tstz2 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@tstz2 +#### A masked pattern was here #### +2005-01-03 02:01:00.0 UTC 2016-01-03 04:26:34.0123 UTC +PREHOOK: query: select t from tstz2 group by t order by t +PREHOOK: type: QUERY +PREHOOK: Input: default@tstz2 +#### A masked pattern was here #### +POSTHOOK: query: select t from tstz2 group by t order by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@tstz2 +#### A masked pattern was here #### +2005-01-03 02:01:00.0 UTC +2005-04-03 10:01:00.04067 UTC +2013-06-03 01:01:00.30547 UTC +2016-01-03 04:26:34.0123 UTC +PREHOOK: query: select * from tstz2 a join tstz2 b on a.t=b.t order by a.t +PREHOOK: type: QUERY +PREHOOK: Input: default@tstz2 +#### A masked pattern was here #### +POSTHOOK: query: select * from tstz2 a join tstz2 b on a.t=b.t order by a.t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@tstz2 +#### A masked pattern was here #### +2005-01-03 02:01:00.0 UTC 2005-01-03 02:01:00.0 UTC +2005-01-03 02:01:00.0 UTC 2005-01-03 02:01:00.0 UTC +2005-01-03 02:01:00.0 UTC 2005-01-03 02:01:00.0 UTC +2005-01-03 02:01:00.0 UTC 2005-01-03 02:01:00.0 UTC +2005-04-03 10:01:00.04067 UTC 2005-04-03 10:01:00.04067 UTC +2013-06-03 01:01:00.30547 UTC 2013-06-03 01:01:00.30547 UTC +2016-01-03 04:26:34.0123 UTC 2016-01-03 04:26:34.0123 UTC diff --git serde/src/java/org/apache/hadoop/hive/serde2/io/TimestampLocalTZWritable.java serde/src/java/org/apache/hadoop/hive/serde2/io/TimestampLocalTZWritable.java index 3ffcb7a425..1049c90797 100644 --- serde/src/java/org/apache/hadoop/hive/serde2/io/TimestampLocalTZWritable.java +++ serde/src/java/org/apache/hadoop/hive/serde2/io/TimestampLocalTZWritable.java @@ -100,7 +100,7 @@ public void set(TimestampTZ tstz) { timestampTZ.setZonedDateTime(null); return; } - timestampTZ = tstz; + timestampTZ.setZonedDateTime(tstz.getZonedDateTime()); timeZone = timestampTZ.getZonedDateTime().getZone(); bytesEmpty = true; timestampTZEmpty = false; @@ -130,7 +130,7 @@ public ZoneId getTimeZone() { public TimestampTZ getTimestampTZ() { populateTimestampTZ(); - return timestampTZ; + return new TimestampTZ(timestampTZ.getZonedDateTime()); } /** diff --git serde/src/test/org/apache/hadoop/hive/serde2/io/TestTimestampTZWritable.java serde/src/test/org/apache/hadoop/hive/serde2/io/TestTimestampTZWritable.java index 2481af9193..1c12e64518 100644 --- serde/src/test/org/apache/hadoop/hive/serde2/io/TestTimestampTZWritable.java +++ serde/src/test/org/apache/hadoop/hive/serde2/io/TestTimestampTZWritable.java @@ -101,4 +101,14 @@ private static void verifyConversion(TimestampTZ srcTstz) { ", nanos " + destTstz.getNanos(); Assert.assertEquals(errMsg, srcTstz, destTstz); } + + @Test + public void testNotExposingInternal() { + TimestampTZ tz = TimestampTZUtil.parse("2017-04-14 18:00:00 Asia/Shanghai"); + TimestampLocalTZWritable writable = new TimestampLocalTZWritable(tz); + + TimestampTZ tzGot = writable.getTimestampTZ(); + + Assert.assertNotSame(tz, tzGot); + } }