[
https://issues.apache.org/jira/browse/DERBY-4582?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Knut Anders Hatlen updated DERBY-4582:
--------------------------------------
Attachment: derby-4582-4a-client-receive.diff
Here's a patch to address issue (4), derby-4582-4a-client-receive.diff.
The patch makes the client driver use the specified calendar object
when parsing the values received from the server. With this patch, the
original repro runs cleanly, and so does all the test cases in
DaylightSavingTest. I am currently running the rest of the regression
tests.
More details about the changes:
M java/client/org/apache/derby/client/am/CrossConverters.java
- Changed some method signatures to allow passing Calendar objects
further down.
- Made date_valueOf(), time_valueOf() and timestamp_valueOf() use a
calendar when parsing the strings
M java/client/org/apache/derby/client/am/Cursor.java
- Made the getters take a calendar and pass it to the parsing methods
in am.DateTime instead of passing an instance of the default
calendar
M java/client/org/apache/derby/client/am/ResultSet.java
M java/client/org/apache/derby/client/am/CallableStatement.java
- Passed the calendar from getDate, getTime, getTimestamp to the
getters in am.Cursor
M
java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/_Suite.java
- Enabled DaylightSavingTest as part of suites.All
> Timestamps inserted with GMT calendar are 1 hour later when subsequently read
> with GMT calendar (Server Mode Only).
> -------------------------------------------------------------------------------------------------------------------
>
> Key: DERBY-4582
> URL: https://issues.apache.org/jira/browse/DERBY-4582
> Project: Derby
> Issue Type: Bug
> Components: Network Client
> Affects Versions: 10.5.3.0
> Environment: Windows XP Professional Version 2002 Service Pack 3,
> Central Standard Time Zone (America/Chicago)
> Reporter: Keith Kruse
> Assignee: Knut Anders Hatlen
> Attachments: calendar.diff, derby-4582-1a-client-send.diff,
> derby-4582-2a-server-receive.diff, derby-4582-3a-server-send.diff,
> derby-4582-4a-client-receive.diff, DerbyTest.java, junit.diff, junit.diff,
> upd-rs-test.diff
>
>
> This issue only appears to happen in Network Server/Client mode. Embedded
> mode does not have the issue.
> My timezone is American/Chicago. Saving timestamps with values for the 6
> hours prior to DST start are being read back in as values 1 hour later than
> written. (I believe the issue happens on the write because values written in
> Network Server/Client mode and read in Embedded mode are incorrect, while
> values written and read in Embedded mode are corect.)
> Values between 3/13/2010 - 20:00 CST and 3/14/2010 - 02:00 CST will return
> timstamps 1 hour off. The "setTimestamp" method is being passed a GMT
> calendar with the timestamp:
> I have a complete test class I can attach, but here is a summary:
> private final TimeZone gmtTZ = TimeZone.getTimeZone("GMT");
> private final Calendar gmtCal = Calendar.getInstance(gmtTZ);
> ...
> String sql = "INSERT INTO app.dst_test (id, gmt_timestamp, milli_time)
> VALUES(?,?,?)";
> String sql2 = "SELECT * from app.dst_test where id=?";
> ...
> ps.setTimestamp(2, ts, gmtCal);
> ...
> Timestamp tsRead = rs.getTimestamp("gmt_timestamp", gmtCal);
> ...
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.