[ 
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-3a-server-send.diff

The attached patch derby-4582-3a-server-send.diff modifies DRDAConnThread to 
address issue (3). It makes the server use a GMT calendar when reading TIME, 
DATE or TIMESTAMP values out of the database, and uses the same GMT calendar to 
format the string representation that it sends to the client. This way, the 
value read from the database is not silently changed if it happens to represent 
a time that is not valid in the local time zone.

With this patch, the values are sent correctly from the client, stored 
correctly in the database and sent correctly back to the client. However, 
because of issue (4), there's still one value that's returned one hour off at 
the client.

All the regression tests ran cleanly with this patch.

> 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, 
> 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.

Reply via email to