Thread: BigDecimal Bugs

BigDecimal Bugs

From
mailing-list@urbanet.ch
Date:
Hi,

I've found 2 bugs related with BigDecimal in the JDBC driver.

The first bug occurs when you call Array.toArray on a column containing an
array of NUMERIC. The returned java array is wrong with all BigDecimal
stored in the first element.

The second bug is in PreparedStatement.setBigDecimal. If you pass a null
object as argument, the method raises a NullPointerException.

Attached are the 2 diff files to correct those bugs.

Kudos to all postgresql developers for their great job!

Florian
Attachment

Re: BigDecimal Bugs

From
"Dave Cramer"
Date:
Florian,

Can you resubmit these patches as context diff's ?

cvs -c diff ...

Thanks,

Dave
> -----Original Message-----
> From: pgsql-jdbc-owner@postgresql.org
> [mailto:pgsql-jdbc-owner@postgresql.org] On Behalf Of
> mailing-list@urbanet.ch
> Sent: Sunday, March 24, 2002 11:02 AM
> To: pgsql-jdbc@postgresql.org
> Subject: [JDBC] BigDecimal Bugs
>
>
> Hi,
>
> I've found 2 bugs related with BigDecimal in the JDBC driver.
>
> The first bug occurs when you call Array.toArray on a column
> containing an
> array of NUMERIC. The returned java array is wrong with all
> BigDecimal
> stored in the first element.
>
> The second bug is in PreparedStatement.setBigDecimal. If you
> pass a null
> object as argument, the method raises a NullPointerException.
>
> Attached are the 2 diff files to correct those bugs.
>
> Kudos to all postgresql developers for their great job!
>
> Florian
>


Re: BigDecimal Bugs

From
Date:
Sure! Here it is.

Index: Array.java
===================================================================
RCS file: /projects/cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc2/Array.java,v
retrieving revision 1.9
diff -c -r1.9 Array.java
*** Array.java  2002/03/05 03:46:03     1.9
--- Array.java  2002/03/25 20:41:19
***************
*** 140,146 ****
                        case Types.NUMERIC:
                                retVal = new BigDecimal[ count ];
                                for ( ; count > 0; count-- )
!                                       ((BigDecimal[])retVal)[i] = ResultSet.toBigDecimal(
arrayContents[(int)index++],0 ); 
                                break;
                        case Types.REAL:
                                retVal = new float[ count ];
--- 140,146 ----
                        case Types.NUMERIC:
                                retVal = new BigDecimal[ count ];
                                for ( ; count > 0; count-- )
!                                       ((BigDecimal[])retVal)[i++] = ResultSet.toBigDecimal(
arrayContents[(int)index++],0 ); 
                                break;
                        case Types.REAL:
                                retVal = new float[ count ];
Index: PreparedStatement.java
===================================================================
RCS file: /projects/cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc2/PreparedStatement.java,v
retrieving revision 1.24
diff -c -r1.24 PreparedStatement.java
*** PreparedStatement.java      2002/01/15 07:37:33     1.24
--- PreparedStatement.java      2002/03/25 20:41:20
***************
*** 251,257 ****
         */
        public void setBigDecimal(int parameterIndex, BigDecimal x) throws SQLException
        {
!               set(parameterIndex, x.toString());
        }

        /*
--- 251,260 ----
         */
        public void setBigDecimal(int parameterIndex, BigDecimal x) throws SQLException
        {
!               if (x == null)
!                       setNull(parameterIndex, Types.OTHER);
!               else
!                       set(parameterIndex, x.toString());
        }

        /*


On Monday 25 March 2002 02:50, Dave Cramer wrote:
> Florian,
>
> Can you resubmit these patches as context diff's ?
>
> cvs -c diff ...
>
> Thanks,
>
> Dave
>
> > -----Original Message-----
> > From: pgsql-jdbc-owner@postgresql.org
> > [mailto:pgsql-jdbc-owner@postgresql.org] On Behalf Of
> > mailing-list@urbanet.ch
> > Sent: Sunday, March 24, 2002 11:02 AM
> > To: pgsql-jdbc@postgresql.org
> > Subject: [JDBC] BigDecimal Bugs
> >
> >
> > Hi,
> >
> > I've found 2 bugs related with BigDecimal in the JDBC driver.
> >
> > The first bug occurs when you call Array.toArray on a column
> > containing an
> > array of NUMERIC. The returned java array is wrong with all
> > BigDecimal
> > stored in the first element.
> >
> > The second bug is in PreparedStatement.setBigDecimal. If you
> > pass a null
> > object as argument, the method raises a NullPointerException.
> >
> > Attached are the 2 diff files to correct those bugs.
> >
> > Kudos to all postgresql developers for their great job!
> >
> > Florian

Re: BigDecimal Bugs

From
Barry Lind
Date:
Patch applied.  (also fixed jdbc1/PreparedStatement.java)

thanks,
--Barry

mailing-list@urbanet.ch wrote:
> Sure! Here it is.
>
> Index: Array.java
> ===================================================================
> RCS file: /projects/cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc2/Array.java,v
> retrieving revision 1.9
> diff -c -r1.9 Array.java
> *** Array.java  2002/03/05 03:46:03     1.9
> --- Array.java  2002/03/25 20:41:19
> ***************
> *** 140,146 ****
>                         case Types.NUMERIC:
>                                 retVal = new BigDecimal[ count ];
>                                 for ( ; count > 0; count-- )
> !                                       ((BigDecimal[])retVal)[i] = ResultSet.toBigDecimal(
arrayContents[(int)index++],0 ); 
>                                 break;
>                         case Types.REAL:
>                                 retVal = new float[ count ];
> --- 140,146 ----
>                         case Types.NUMERIC:
>                                 retVal = new BigDecimal[ count ];
>                                 for ( ; count > 0; count-- )
> !                                       ((BigDecimal[])retVal)[i++] = ResultSet.toBigDecimal(
arrayContents[(int)index++],0 ); 
>                                 break;
>                         case Types.REAL:
>                                 retVal = new float[ count ];
> Index: PreparedStatement.java
> ===================================================================
> RCS file: /projects/cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc2/PreparedStatement.java,v
> retrieving revision 1.24
> diff -c -r1.24 PreparedStatement.java
> *** PreparedStatement.java      2002/01/15 07:37:33     1.24
> --- PreparedStatement.java      2002/03/25 20:41:20
> ***************
> *** 251,257 ****
>          */
>         public void setBigDecimal(int parameterIndex, BigDecimal x) throws SQLException
>         {
> !               set(parameterIndex, x.toString());
>         }
>
>         /*
> --- 251,260 ----
>          */
>         public void setBigDecimal(int parameterIndex, BigDecimal x) throws SQLException
>         {
> !               if (x == null)
> !                       setNull(parameterIndex, Types.OTHER);
> !               else
> !                       set(parameterIndex, x.toString());
>         }
>
>         /*
>
>
> On Monday 25 March 2002 02:50, Dave Cramer wrote:
>
>>Florian,
>>
>>Can you resubmit these patches as context diff's ?
>>
>>cvs -c diff ...
>>
>>Thanks,
>>
>>Dave
>>
>>
>>>-----Original Message-----
>>>From: pgsql-jdbc-owner@postgresql.org
>>>[mailto:pgsql-jdbc-owner@postgresql.org] On Behalf Of
>>>mailing-list@urbanet.ch
>>>Sent: Sunday, March 24, 2002 11:02 AM
>>>To: pgsql-jdbc@postgresql.org
>>>Subject: [JDBC] BigDecimal Bugs
>>>
>>>
>>>Hi,
>>>
>>>I've found 2 bugs related with BigDecimal in the JDBC driver.
>>>
>>>The first bug occurs when you call Array.toArray on a column
>>>containing an
>>>array of NUMERIC. The returned java array is wrong with all
>>>BigDecimal
>>>stored in the first element.
>>>
>>>The second bug is in PreparedStatement.setBigDecimal. If you
>>>pass a null
>>>object as argument, the method raises a NullPointerException.
>>>
>>>Attached are the 2 diff files to correct those bugs.
>>>
>>>Kudos to all postgresql developers for their great job!
>>>
>>>Florian
>>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/users-lounge/docs/faq.html
>