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