This is an automated email from the ASF dual-hosted git repository.

jbonofre pushed a commit to branch release-2.14.0
in repository https://gitbox.apache.org/repos/asf/beam.git


The following commit(s) were added to refs/heads/release-2.14.0 by this push:
     new 1496ad1  [BEAM-7606] Fix JDBC time conversion tests
     new a52ffee  Merge pull request #8938 from iemejia/release-2.14.0
1496ad1 is described below

commit 1496ad11dc627341990444305963d32052b6496c
Author: Charith Ellawala <charith.ellaw...@gmail.com>
AuthorDate: Fri Jun 21 17:52:36 2019 +0100

    [BEAM-7606] Fix JDBC time conversion tests
---
 .../main/java/org/apache/beam/sdk/io/jdbc/SchemaUtil.java | 15 ++++++++-------
 .../java/org/apache/beam/sdk/io/jdbc/SchemaUtilTest.java  | 15 ++++++++-------
 2 files changed, 16 insertions(+), 14 deletions(-)

diff --git 
a/sdks/java/io/jdbc/src/main/java/org/apache/beam/sdk/io/jdbc/SchemaUtil.java 
b/sdks/java/io/jdbc/src/main/java/org/apache/beam/sdk/io/jdbc/SchemaUtil.java
index 263c2de..9c1dcb0 100644
--- 
a/sdks/java/io/jdbc/src/main/java/org/apache/beam/sdk/io/jdbc/SchemaUtil.java
+++ 
b/sdks/java/io/jdbc/src/main/java/org/apache/beam/sdk/io/jdbc/SchemaUtil.java
@@ -38,13 +38,14 @@ import java.sql.ResultSetMetaData;
 import java.sql.SQLException;
 import java.sql.Time;
 import java.sql.Timestamp;
-import java.time.LocalDate;
 import java.time.LocalTime;
 import java.time.ZoneOffset;
 import java.time.ZonedDateTime;
 import java.util.ArrayList;
+import java.util.Calendar;
 import java.util.EnumMap;
 import java.util.List;
+import java.util.TimeZone;
 import java.util.function.BiFunction;
 import java.util.stream.Collectors;
 import java.util.stream.IntStream;
@@ -52,6 +53,7 @@ import org.apache.beam.sdk.schemas.Schema;
 import org.apache.beam.sdk.values.Row;
 import 
org.apache.beam.vendor.guava.v20_0.com.google.common.collect.ImmutableMap;
 import org.joda.time.DateTime;
+import org.joda.time.LocalDate;
 import org.joda.time.chrono.ISOChronology;
 
 /** Provides utility functions for working with Beam {@link Schema} types. */
@@ -273,7 +275,7 @@ class SchemaUtil {
   /** Convert SQL date type to Beam DateTime. */
   private static ResultSetFieldExtractor createDateExtractor() {
     return (rs, i) -> {
-      Date date = rs.getDate(i);
+      Date date = rs.getDate(i, 
Calendar.getInstance(TimeZone.getTimeZone(ZoneOffset.UTC)));
       if (date == null) {
         return null;
       }
@@ -285,20 +287,19 @@ class SchemaUtil {
   /** Convert SQL time type to Beam DateTime. */
   private static ResultSetFieldExtractor createTimeExtractor() {
     return (rs, i) -> {
-      Time time = rs.getTime(i);
+      Time time = rs.getTime(i, 
Calendar.getInstance(TimeZone.getTimeZone(ZoneOffset.UTC)));
       if (time == null) {
         return null;
       }
-      ZonedDateTime zdt =
-          ZonedDateTime.of(LocalDate.ofEpochDay(0), time.toLocalTime(), 
ZoneOffset.systemDefault());
-      return new DateTime(zdt.toInstant().toEpochMilli(), 
ISOChronology.getInstanceUTC());
+      return new DateTime(time.getTime(), ISOChronology.getInstanceUTC())
+          .withDate(new LocalDate(0L));
     };
   }
 
   /** Convert SQL timestamp type to Beam DateTime. */
   private static ResultSetFieldExtractor createTimestampExtractor() {
     return (rs, i) -> {
-      Timestamp ts = rs.getTimestamp(i);
+      Timestamp ts = rs.getTimestamp(i, 
Calendar.getInstance(TimeZone.getTimeZone(ZoneOffset.UTC)));
       if (ts == null) {
         return null;
       }
diff --git 
a/sdks/java/io/jdbc/src/test/java/org/apache/beam/sdk/io/jdbc/SchemaUtilTest.java
 
b/sdks/java/io/jdbc/src/test/java/org/apache/beam/sdk/io/jdbc/SchemaUtilTest.java
index 63b3d88..f606bde 100644
--- 
a/sdks/java/io/jdbc/src/test/java/org/apache/beam/sdk/io/jdbc/SchemaUtilTest.java
+++ 
b/sdks/java/io/jdbc/src/test/java/org/apache/beam/sdk/io/jdbc/SchemaUtilTest.java
@@ -18,6 +18,7 @@
 package org.apache.beam.sdk.io.jdbc;
 
 import static org.junit.Assert.assertEquals;
+import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
@@ -128,7 +129,7 @@ public class SchemaUtilTest {
   }
 
   @Test
-  public void testBeamRowMapper_array() throws Exception {
+  public void testBeamRowMapperArray() throws Exception {
     ResultSet mockArrayElementsResultSet = mock(ResultSet.class);
     when(mockArrayElementsResultSet.next()).thenReturn(true, true, true, 
false);
     when(mockArrayElementsResultSet.getInt(eq(1))).thenReturn(10, 20, 30);
@@ -151,7 +152,7 @@ public class SchemaUtilTest {
   }
 
   @Test
-  public void testBeamRowMapper_primitiveTypes() throws Exception {
+  public void testBeamRowMapperPrimitiveTypes() throws Exception {
     ResultSet mockResultSet = mock(ResultSet.class);
     when(mockResultSet.getLong(eq(1))).thenReturn(42L);
     
when(mockResultSet.getBytes(eq(2))).thenReturn("binary".getBytes(Charset.forName("UTF-8")));
@@ -221,14 +222,14 @@ public class SchemaUtilTest {
   }
 
   @Test
-  public void testBeamRowMapper_datetime() throws Exception {
+  public void testBeamRowMapperDateTime() throws Exception {
     long epochMilli = 1558719710000L;
 
     ResultSet mockResultSet = mock(ResultSet.class);
-    when(mockResultSet.getDate(eq(1))).thenReturn(new Date(epochMilli));
-    when(mockResultSet.getTime(eq(2))).thenReturn(new Time(epochMilli));
-    when(mockResultSet.getTimestamp(eq(3))).thenReturn(new 
Timestamp(epochMilli));
-    when(mockResultSet.getTimestamp(eq(4))).thenReturn(new 
Timestamp(epochMilli));
+    when(mockResultSet.getDate(eq(1), any())).thenReturn(new Date(epochMilli));
+    when(mockResultSet.getTime(eq(2), any())).thenReturn(new Time(epochMilli));
+    when(mockResultSet.getTimestamp(eq(3), any())).thenReturn(new 
Timestamp(epochMilli));
+    when(mockResultSet.getTimestamp(eq(4), any())).thenReturn(new 
Timestamp(epochMilli));
 
     Schema wantSchema =
         Schema.builder()

Reply via email to