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

Proposed by Massimo Siani
Status: Needs review
Proposed branch: lp:~massimo-siani/mariadb-java-client/CONJ-94
Merge into: lp:mariadb-java-client
Diff against target: 43 lines (+21/-2)
2 files modified
src/main/java/org/mariadb/jdbc/MySQLPreparedStatement.java (+1/-1)
src/test/java/org/mariadb/jdbc/DateTest.java (+20/-1)
To merge this branch: bzr merge lp:~massimo-siani/mariadb-java-client/CONJ-94
Reviewer Review Type Date Requested Status
Maria-captains Pending
Review via email: mp+226427@code.launchpad.net

Commit message

Fix for CONJ-94

Description of the change

CONJ-94:
SQL DATEs stored wrong if client timezone is east of server timezone.

The proposed solution is to discard any calendar when calling PreparedStatement.setDate.

To post a comment you must log in.

Unmerged revisions

517. By Massimo Siani

Fix for CONJ-94

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/MySQLPreparedStatement.java'
2--- src/main/java/org/mariadb/jdbc/MySQLPreparedStatement.java 2013-11-13 08:16:46 +0000
3+++ src/main/java/org/mariadb/jdbc/MySQLPreparedStatement.java 2014-07-11 10:00:56 +0000
4@@ -388,7 +388,7 @@
5 setNull(parameterIndex, Types.DATE);
6 return;
7 }
8- setParameter(parameterIndex, new DateParameter(date, cal));
9+ setParameter(parameterIndex, new DateParameter(date, null));
10 }
11
12 /**
13
14=== modified file 'src/test/java/org/mariadb/jdbc/DateTest.java'
15--- src/test/java/org/mariadb/jdbc/DateTest.java 2014-06-18 15:16:23 +0000
16+++ src/test/java/org/mariadb/jdbc/DateTest.java 2014-07-11 10:00:56 +0000
17@@ -239,6 +239,25 @@
18 ts = rs.getTimestamp(1);
19 java.sql.Timestamp ts2 = rs.getTimestamp(2);
20 assertTrue(Math.abs(ts.getTime() - ts2.getTime()) < 1000); /* query take less than a second */
21-
22 }
23+
24+ /**
25+ * CONJ-94
26+ * @throws SQLException
27+ */
28+ @Test
29+ public void serverWestTest() throws SQLException {
30+ Connection c = DriverManager.getConnection("jdbc:mysql://localhost/test?user=root&serverTimezone=America/Los_Angeles");
31+ Statement stmt = c.createStatement();
32+ stmt.execute("DROP TABLE IF EXISTS date_test");
33+ stmt.execute("CREATE TABLE date_test ( x date )");
34+ PreparedStatement pst = c.prepareStatement("INSERT INTO date_test VALUES (?)");
35+ Date date = Date.valueOf("2013-11-20");
36+ pst.setDate(1, date);
37+ pst.execute();
38+ ResultSet rs = stmt.executeQuery("SELECT x FROM date_test");
39+ rs.next();
40+ // the objects won't be equal
41+ assertEquals(date.toString(), rs.getDate(1).toString());
42+ }
43 }

Subscribers

People subscribed via source and target branches