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
1=== modified file 'src/main/java/org/mariadb/jdbc/internal/common/AbstractValueObject.java'
2--- src/main/java/org/mariadb/jdbc/internal/common/AbstractValueObject.java 2014-03-25 17:00:46 +0000
3+++ src/main/java/org/mariadb/jdbc/internal/common/AbstractValueObject.java 2014-04-01 13:23:50 +0000
4@@ -52,6 +52,7 @@
5 import org.mariadb.jdbc.MySQLBlob;
6 import org.mariadb.jdbc.MySQLClob;
7 import org.mariadb.jdbc.internal.mysql.MySQLType;
8+
9 import java.io.ByteArrayInputStream;
10 import java.io.InputStream;
11 import java.io.UnsupportedEncodingException;
12@@ -61,6 +62,7 @@
13 import java.text.ParseException;
14 import java.text.SimpleDateFormat;
15 import java.util.Calendar;
16+import java.util.TimeZone;
17
18
19 public abstract class AbstractValueObject implements ValueObject {
20@@ -259,7 +261,13 @@
21 if (cal != null) {
22 sdf.setCalendar(cal);
23 }
24- final java.util.Date utilTime = sdf.parse(rawValue);
25+ java.util.Date utilTime = null;
26+ try {
27+ utilTime = sdf.parse(rawValue);
28+ } catch (ParseException pe) {
29+ sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
30+ utilTime = sdf.parse(rawValue);
31+ }
32 Timestamp ts = new Timestamp(utilTime.getTime());
33 if(rawValue.indexOf('.') != -1) {
34 ts.setNanos(extractNanos(rawValue));
35
36=== modified file 'src/test/java/org/mariadb/jdbc/DateTest.java'
37--- src/test/java/org/mariadb/jdbc/DateTest.java 2014-03-25 17:00:46 +0000
38+++ src/test/java/org/mariadb/jdbc/DateTest.java 2014-04-01 13:23:50 +0000
39@@ -47,14 +47,25 @@
40 Time time2=rs.getTime(3);
41 Time time3=rs.getTime("t_test");
42 Timestamp timestamp2=rs.getTimestamp(2);
43- Timestamp timestamp3=rs.getTimestamp("dt_test");
44+ Timestamp timestamp3=rs.getTimestamp("dt_test");
45 assertEquals(date.toString(), date2.toString());
46 assertEquals(date.toString(), date3.toString());
47 assertEquals(time.toString(), time2.toString());
48 assertEquals(time.toString(), time3.toString());
49 assertEquals(timestamp.toString(), timestamp2.toString());
50 assertEquals(timestamp.toString(), timestamp3.toString());
51-
52+
53+ //stmt.executeUpdate("drop table if exists date_test");
54+ //stmt.executeUpdate("update date_test set dt_test = ?");
55+ String timestampString = "2014-03-30 02:15:00";
56+ timestamp = Timestamp.valueOf(timestampString);
57+ ps = connection.prepareStatement("update date_test set dt_test = ?");
58+ ps.setString(1, "2014-03-30 02:15:00");
59+ ps.executeUpdate();
60+ rs = stmt.executeQuery("select dt_test from date_test");
61+ assertEquals(true,rs.next());
62+ Timestamp timestamp4 = rs.getTimestamp("dt_test");
63+ assertEquals(true, timestamp4 != null);
64 }
65 @Test(expected = SQLException.class)
66 public void dateTest2() throws SQLException {
67@@ -185,7 +196,6 @@
68 @Test
69 public void serverTimezone() throws Exception {
70 TimeZone tz = TimeZone.getDefault();
71- TimeZone gmt = TimeZone.getTimeZone("GMT");
72 long offset = tz.getRawOffset();
73 Connection c = DriverManager.getConnection("jdbc:mysql://localhost/test?user=root&serverTimezone=GMT") ;
74 java.util.Date now = new java.util.Date();

Subscribers

People subscribed via source and target branches