Thanks! Applied.

Tim.

On Tue, Dec 16, 2003 at 01:55:43PM +0100, Steffen Goeldner wrote:
> Rerunning this test
> 
>   <http://www.xray.mpe.mpg.de/mailing-lists/dbi/2001-03/msg00626.html>
> 
> against an Oracle 9.2.0.4 results in
> 
> TYPE    PREC    SCALE   NAME
> 3       38      0       CINTEGER
> 8       0       0       CNUMBER
> 3       38      0       CNUMBER_38_0
> 3       11      2       CNUMBER_11_2
> 3       38      2       CNUMBER_XX_2
> 8       126     0       CFLOAT
> 8       11      0       CFLOAT_11
> 8       63      0       CREAL
> 8       126     0       CDOUBLE_PRECISION
> 93      75      0       CDATE
> 
> Note that PREC == 0 (instead of 126) for CNUMBER.
> This is due to a fix for bug 2235818:
> 
>   Describing a NUMBER datatype with unspecified scale
>   through OCI now correctly returns a scale of -127. 
> 
> Many other OCI clients are upset by this change, e.g.
> 
>   <http://www.mail-archive.com/[EMAIL PROTECTED]/msg16517.html>
> 
> BTW: Oracle addressed that problem in bug 2755842 and
> introduced Event 10499 to restore the old behaviour.
> 
> Patch attached.
> 
> 
> Steffen
> --- dbdimp.orig       Thu Jun 12 02:04:36 2003
> +++ dbdimp.c  Tue Dec 16 12:34:35 2003
> @@ -2194,6 +2194,9 @@
>          if (fbh->scale == -127) { /* FLOAT, REAL, DOUBLE_PRECISION */
>              sql_fbh.dbtype = SQL_DOUBLE;
>              sql_fbh.scale  = 0; /* better: undef */
> +            if (fbh->prec == 0) { /* NUMBER; s. Oracle Bug# 2755842, 2235818 */
> +                sql_fbh.prec   = 126;
> +            }
>          }
>          else if (fbh->scale == 0) {
>              if (fbh->prec == 0) { /* NUMBER */

Reply via email to