ID:               41917
 User updated by:  nobleclem+phpbugs at gmail dot com
 Reported By:      nobleclem+phpbugs at gmail dot com
 Status:           Closed
 Bug Type:         OCI8 related
 Operating System: Solaris
 PHP Version:      5.2.3
 Assigned To:      tony2001
 New Comment:

Typo in previous comment it should read:

Tested 5.2.4 and the ub# to sb# has resolved the problem and
oci_field_precision() is NOW returning the correct value.

Thank You for your hard work!


Previous Comments:
------------------------------------------------------------------------

[2007-09-07 15:05:26] nobleclem+phpbugs at gmail dot com

Tested 5.2.4 and the ub# to sb# has resolved the problem and
oci_field_precision() is not returning the correct value.

Thank You for your hard work!

------------------------------------------------------------------------

[2007-07-09 19:02:54] [EMAIL PROTECTED]

This bug has been fixed in CVS.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.



------------------------------------------------------------------------

[2007-07-06 23:35:47] [EMAIL PROTECTED]

A new test has been merged and old tests updated.  They will cause
diffs until Tony merges the code change.

The suggested fix is:
--- php_oci8_int.h      29 Mar 2007 02:33:03 -0700      1.11.2.6.2.18
+++ php_oci8_int.h      06 Jul 2007 15:53:44 -0700      
@@ -215,8 +215,8 @@
        php_oci_define *define;                 /* define handle */
        int piecewise;                                  /* column is fetched 
piece-by-piece */
        ub4 cb_retlen;                                  /* */
-       ub2 scale;                                              /* column scale 
*/
-       ub2 precision;                                  /* column precision */
+       sb1 scale;                                              /* column scale 
*/
+       sb2 precision;                                  /* column precision */
        ub1 charset_form;                               /* charset form, 
required for NCLOBs */
        ub2 charset_id;                                 /* charset ID */
 } php_oci_out_column; /* }}} */


------------------------------------------------------------------------

[2007-07-06 22:12:51] [EMAIL PROTECTED]

Although I can't reproduce the given testcase on Linux there is a bug
here that stops other testcases working for me, and may cause a port
specific difference in behavior for nobleclem's testcase.

The datatypes of the scale and precision fields in php_oci_out_column
(php_oci8_int.h) should be sb1 and s2 respectively. At the moment they
are both ub2.  This, for example, prevents the scale for a FLOAT column
being displayed as -127.  

See table 6.8 in Oracle's OCI manual:
http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14250/oci06des.htm#sthref949

@nobleclem, the scale and precision values returned by the OCI8
extension and Oracle's OCI library are the programmatic definitions of
scale and precision, which are different to the user-level values given
in the all_tab_columns table.

@tony2001, I will commit a new testcase to PHP5 and 6, but will let you
evaluate and merge the datatype fix.

------------------------------------------------------------------------

[2007-07-06 18:53:11] [EMAIL PROTECTED]

PHP/OCI8 returns exactly what it got from OCIAttrGet(..,
OCI_DTYPE_PARAM, .., .., OCI_ATTR_SCALE, ).
If Oracle Client returns wrong information, we can't change or fix
that.

------------------------------------------------------------------------

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/41917

-- 
Edit this bug report at http://bugs.php.net/?id=41917&edit=1

Reply via email to