Re: Fix for getXXX (numbers) - Mailing list pgsql-jdbc

From Kim Ho
Subject Re: Fix for getXXX (numbers)
Date
Msg-id 1059074512.7563.94.camel@topanga.toronto.redhat.com
Whole thread Raw
In response to Re: Fix for getXXX (numbers)  (Barry Lind <blind@xythos.com>)
List pgsql-jdbc
It solves this (which CTS is checking for):

In psql:

create table real_tab (a numeric);

In java:

PreparedStatement pstmt = conn.prepareStatement("insert into real_tab
values (?)");
pstmt.setFloat(1, Float.parseFloat(String.valueOf(Integer.MIN_VALUE)));
pstmt.executeUpdate();
ResultSet rs = conn.createStatement().executeQuery("select * from
real_tab");
rs.next();
System.out.println(rs.getInt(1));

Without the patch, you get:
Exception in thread "main" Bad Integer -2147483650
        at
org.postgresql.jdbc1.AbstractJdbc1ResultSet.toInt(AbstractJdbc1ResultSet.java:812)
        at
org.postgresql.jdbc1.AbstractJdbc1ResultSet.getInt(AbstractJdbc1ResultSet.java:248)

With the patch, you get:
-2147483648

Hope that helps,

Kim

On Thu, 2003-07-24 at 11:52, Barry Lind wrote:
> Kim,
>
> Can you explain the problem this patch is trying to solve?  On the face
> of it I don't see what is wrong with the existing code.
>
> thanks,
> --Barry
>
>
> Kim Ho wrote:
> > This patch was written by Yoshihiro Yasuoka of Fujitsu.
> >
> > Thanks,
> >
> > Kim
> >
> > On Tue, 2003-07-22 at 15:06, Kim Ho wrote:
> >
> >>Would help if I attach it.
> >>
> >>On Tue, 2003-07-22 at 14:23, Kim Ho wrote:
> >>
> >>>Fixes the way the jdbc driver handles numbers when it gets them from
> >>>backend. Courtesy of Fujitsu.
> >>>
> >>>Cheers,
> >>>
> >>>Kim
> >>>
> >>>
> >>>---------------------------(end of broadcast)---------------------------
> >>>TIP 5: Have you checked our extensive FAQ?
> >>>
> >>>               http://www.postgresql.org/docs/faqs/FAQ.html
> >>
> >>----
> >>
> >
> >
> >>Index: org/postgresql/jdbc1/AbstractJdbc1ResultSet.java
> >>===================================================================
> >>RCS file: /projects/cvsroot/pgsql-server/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1ResultSet.java,v
> >>retrieving revision 1.13
> >>diff -c -p -r1.13 AbstractJdbc1ResultSet.java
> >>*** org/postgresql/jdbc1/AbstractJdbc1ResultSet.java    30 Jun 2003 21:10:55 -0000    1.13
> >>--- org/postgresql/jdbc1/AbstractJdbc1ResultSet.java    22 Jul 2003 18:20:57 -0000
> >>*************** public abstract class AbstractJdbc1Resul
> >>*** 805,811 ****
> >>              try
> >>              {
> >>                  s = s.trim();
> >>!                 return Integer.parseInt(s);
> >>              }
> >>              catch (NumberFormatException e)
> >>              {
> >>--- 805,811 ----
> >>              try
> >>              {
> >>                  s = s.trim();
> >>!                 return Float.valueOf(s).intValue();
> >>              }
> >>              catch (NumberFormatException e)
> >>              {
> >>*************** public abstract class AbstractJdbc1Resul
> >>*** 822,828 ****
> >>              try
> >>              {
> >>                  s = s.trim();
> >>!                 return Long.parseLong(s);
> >>              }
> >>              catch (NumberFormatException e)
> >>              {
> >>--- 822,828 ----
> >>              try
> >>              {
> >>                  s = s.trim();
> >>!                 return Double.valueOf(s).longValue();
> >>              }
> >>              catch (NumberFormatException e)
> >>              {
> >>----
> >>
> >
> >
> >>---------------------------(end of broadcast)---------------------------
> >>TIP 7: don't forget to increase your free space map settings
> >
> >
> >
> >
>
>
>



pgsql-jdbc by date:

Previous
From: Kim Ho
Date:
Subject: Related patch to the getNumbers patch from earlier.
Next
From: Paul Thomas
Date:
Subject: Re: quick question about PreparedStatements