Re: Patch for jdbc ResultSet.getTimestamp() - Mailing list pgsql-patches

From Bruce Momjian
Subject Re: Patch for jdbc ResultSet.getTimestamp()
Date
Msg-id 200105162016.f4GKGRk07097@candle.pha.pa.us
Whole thread Raw
In response to Patch for jdbc ResultSet.getTimestamp()  (Barry Lind <barry@xythos.com>)
List pgsql-patches
Your patch has been added to the PostgreSQL unapplied patches list at:

    http://candle.pha.pa.us/cgi-bin/pgpatches

I will try to apply it withing the next 48 hours.

I can not backpatch this to 7.1.X because we are only adding major bug
fixes into that release.

>
> Included is a patch that fixes a bug introduced in the lastest version
> (1.22) of interfaces/jdbc/org/postgresql/jdbc2/ResultSet.java.  That
> change removed a line that set the variable s to the value of the
> stringbuffer.   This fix changes the following if checks to check the
> length of the stringbuffer instead of s, since s no longer contains the
> string the if conditions are expecting.
>
> The bug manifests itself in getTimestamp() loosing the timezone
> information of timestamps selected from the database, thereby causing
> the time to be incorrect.
>
> If possible this patch should be patched into 7.1 for the upcoming 7.1.2
> patch.
>
> thanks,
> --Barry

> *** ./interfaces/jdbc/org/postgresql/jdbc2/ResultSet.java.orig    Tue May 15 21:59:46 2001
> --- ./interfaces/jdbc/org/postgresql/jdbc2/ResultSet.java    Tue May 15 22:06:43 2001
> ***************
> *** 499,511 ****
>         // could optimize this a tad to remove too many object creations...
>         SimpleDateFormat df = null;
>
> !       if (s.length()>23 && subsecond) {
>           df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSzzzzzzzzz");
> !       } else if (s.length()>23 && !subsecond) {
>           df = new SimpleDateFormat("yyyy-MM-dd HH:mm:sszzzzzzzzz");
> !       } else if (s.length()>10 && subsecond) {
>           df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
> !       } else if (s.length()>10 && !subsecond) {
>           df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
>         } else {
>           df = new SimpleDateFormat("yyyy-MM-dd");
> --- 499,511 ----
>         // could optimize this a tad to remove too many object creations...
>         SimpleDateFormat df = null;
>
> !       if (sbuf.length()>23 && subsecond) {
>           df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSzzzzzzzzz");
> !       } else if (sbuf.length()>23 && !subsecond) {
>           df = new SimpleDateFormat("yyyy-MM-dd HH:mm:sszzzzzzzzz");
> !       } else if (sbuf.length()>10 && subsecond) {
>           df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
> !       } else if (sbuf.length()>10 && !subsecond) {
>           df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
>         } else {
>           df = new SimpleDateFormat("yyyy-MM-dd");

>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
>     (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026

pgsql-patches by date:

Previous
From: Oleg Bartunov
Date:
Subject: Re: GIST question
Next
From: Jason Tishler
Date:
Subject: Re: Cygwin PostgreSQL Python Module Patch