Merge lp:~massimo-siani/mariadb-java-client/getTimestamp into lp:mariadb-java-client

Proposed by Massimo Siani
Status: Needs review
Proposed branch: lp:~massimo-siani/mariadb-java-client/getTimestamp
Merge into: lp:mariadb-java-client
Diff against target: 74 lines (+22/-4)
2 files modified
src/main/java/org/mariadb/jdbc/internal/common/AbstractValueObject.java (+9/-1)
src/test/java/org/mariadb/jdbc/DateTest.java (+13/-3)
To merge this branch: bzr merge lp:~massimo-siani/mariadb-java-client/getTimestamp
Reviewer Review Type Date Requested Status
Maria-captains Pending
Review via email: mp+213650@code.launchpad.net

Description of the change

JIRA https://mariadb.atlassian.net/browse/CONJ-86

If the timestamp is invalid for the given Timezone, try with UTC timezone.

To post a comment you must log in.

Unmerged revisions

508. By Massimo Siani

If the timestamp to retrieve is invalid for the Timezone, try with UTC

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/main/java/org/mariadb/jdbc/internal/common/AbstractValueObject.java'
--- src/main/java/org/mariadb/jdbc/internal/common/AbstractValueObject.java 2014-03-25 17:00:46 +0000
+++ src/main/java/org/mariadb/jdbc/internal/common/AbstractValueObject.java 2014-04-01 13:23:50 +0000
@@ -52,6 +52,7 @@
52import org.mariadb.jdbc.MySQLBlob;52import org.mariadb.jdbc.MySQLBlob;
53import org.mariadb.jdbc.MySQLClob;53import org.mariadb.jdbc.MySQLClob;
54import org.mariadb.jdbc.internal.mysql.MySQLType;54import org.mariadb.jdbc.internal.mysql.MySQLType;
55
55import java.io.ByteArrayInputStream;56import java.io.ByteArrayInputStream;
56import java.io.InputStream;57import java.io.InputStream;
57import java.io.UnsupportedEncodingException;58import java.io.UnsupportedEncodingException;
@@ -61,6 +62,7 @@
61import java.text.ParseException;62import java.text.ParseException;
62import java.text.SimpleDateFormat;63import java.text.SimpleDateFormat;
63import java.util.Calendar;64import java.util.Calendar;
65import java.util.TimeZone;
6466
6567
66public abstract class AbstractValueObject implements ValueObject {68public abstract class AbstractValueObject implements ValueObject {
@@ -259,7 +261,13 @@
259 if (cal != null) {261 if (cal != null) {
260 sdf.setCalendar(cal);262 sdf.setCalendar(cal);
261 }263 }
262 final java.util.Date utilTime = sdf.parse(rawValue);264 java.util.Date utilTime = null;
265 try {
266 utilTime = sdf.parse(rawValue);
267 } catch (ParseException pe) {
268 sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
269 utilTime = sdf.parse(rawValue);
270 }
263 Timestamp ts = new Timestamp(utilTime.getTime());271 Timestamp ts = new Timestamp(utilTime.getTime());
264 if(rawValue.indexOf('.') != -1) {272 if(rawValue.indexOf('.') != -1) {
265 ts.setNanos(extractNanos(rawValue));273 ts.setNanos(extractNanos(rawValue));
266274
=== modified file 'src/test/java/org/mariadb/jdbc/DateTest.java'
--- src/test/java/org/mariadb/jdbc/DateTest.java 2014-03-25 17:00:46 +0000
+++ src/test/java/org/mariadb/jdbc/DateTest.java 2014-04-01 13:23:50 +0000
@@ -47,14 +47,25 @@
47 Time time2=rs.getTime(3);47 Time time2=rs.getTime(3);
48 Time time3=rs.getTime("t_test");48 Time time3=rs.getTime("t_test");
49 Timestamp timestamp2=rs.getTimestamp(2);49 Timestamp timestamp2=rs.getTimestamp(2);
50 Timestamp timestamp3=rs.getTimestamp("dt_test");50 Timestamp timestamp3=rs.getTimestamp("dt_test");
51 assertEquals(date.toString(), date2.toString());51 assertEquals(date.toString(), date2.toString());
52 assertEquals(date.toString(), date3.toString());52 assertEquals(date.toString(), date3.toString());
53 assertEquals(time.toString(), time2.toString());53 assertEquals(time.toString(), time2.toString());
54 assertEquals(time.toString(), time3.toString());54 assertEquals(time.toString(), time3.toString());
55 assertEquals(timestamp.toString(), timestamp2.toString());55 assertEquals(timestamp.toString(), timestamp2.toString());
56 assertEquals(timestamp.toString(), timestamp3.toString());56 assertEquals(timestamp.toString(), timestamp3.toString());
5757
58 //stmt.executeUpdate("drop table if exists date_test");
59 //stmt.executeUpdate("update date_test set dt_test = ?");
60 String timestampString = "2014-03-30 02:15:00";
61 timestamp = Timestamp.valueOf(timestampString);
62 ps = connection.prepareStatement("update date_test set dt_test = ?");
63 ps.setString(1, "2014-03-30 02:15:00");
64 ps.executeUpdate();
65 rs = stmt.executeQuery("select dt_test from date_test");
66 assertEquals(true,rs.next());
67 Timestamp timestamp4 = rs.getTimestamp("dt_test");
68 assertEquals(true, timestamp4 != null);
58 }69 }
59 @Test(expected = SQLException.class)70 @Test(expected = SQLException.class)
60 public void dateTest2() throws SQLException {71 public void dateTest2() throws SQLException {
@@ -185,7 +196,6 @@
185 @Test196 @Test
186 public void serverTimezone() throws Exception {197 public void serverTimezone() throws Exception {
187 TimeZone tz = TimeZone.getDefault();198 TimeZone tz = TimeZone.getDefault();
188 TimeZone gmt = TimeZone.getTimeZone("GMT");
189 long offset = tz.getRawOffset();199 long offset = tz.getRawOffset();
190 Connection c = DriverManager.getConnection("jdbc:mysql://localhost/test?user=root&serverTimezone=GMT") ;200 Connection c = DriverManager.getConnection("jdbc:mysql://localhost/test?user=root&serverTimezone=GMT") ;
191 java.util.Date now = new java.util.Date();201 java.util.Date now = new java.util.Date();

Subscribers

People subscribed via source and target branches