Thread: Wrong numeric conversion

Wrong numeric conversion

From
Andreas Pflug
Date:
With CVS HEAD, numeric values are not read correctly.
The SQL_NUMERIC_STRUCT is filled with
.precision=3, .scale=5 for a number like 500.00123, which MSDASQL will
interpret as .00123 (noticed when MSDASQL had to convert it to a
string). Obviously the precision should be 8 or more.
The attached patch corrects this.

Regards,
Andreas
Index: convert.c
===================================================================
RCS file: /usr/local/cvsroot/psqlodbc/psqlodbc/convert.c,v
retrieving revision 1.121
diff -u -r1.121 convert.c
--- convert.c    30 Jul 2004 21:08:12 -0000    1.121
+++ convert.c    16 Jan 2005 15:19:32 -0000
@@ -1145,8 +1145,8 @@
                     {
                         if (dot_exist)
                             ns->scale++;
-                        else
-                            ns->precision++;
+
+                        ns->precision++;
                         calv[nlen++] = *wv;
                     }
                 }

Re: Wrong numeric conversion

From
"Dave Page"
Date:

> -----Original Message-----
> From: pgsql-odbc-owner@postgresql.org
> [mailto:pgsql-odbc-owner@postgresql.org] On Behalf Of Andreas Pflug
> Sent: 16 January 2005 15:26
> To: pgsql-odbc@postgresql.org
> Subject: [ODBC] Wrong numeric conversion
>
> With CVS HEAD, numeric values are not read correctly.
> The SQL_NUMERIC_STRUCT is filled with
> .precision=3, .scale=5 for a number like 500.00123, which
> MSDASQL will
> interpret as .00123 (noticed when MSDASQL had to convert it to a
> string). Obviously the precision should be 8 or more.
> The attached patch corrects this.

Thanks Andreas, patch applied.

Regards, Dave.