]> granicus.if.org Git - php/commitdiff
MFH: fix #36235 (ocicolumnname delivers empty results before a succesfull ocifetch)
authorAntony Dovgal <tony2001@php.net>
Tue, 31 Jan 2006 18:38:52 +0000 (18:38 +0000)
committerAntony Dovgal <tony2001@php.net>
Tue, 31 Jan 2006 18:38:52 +0000 (18:38 +0000)
NEWS
ext/oci8/oci8_interface.c
ext/oci8/oci8_statement.c
ext/oci8/php_oci8_int.h

diff --git a/NEWS b/NEWS
index 22353860863d2dea600a38c0fbc1463ed4b1fb53..e8cb4ea8deffe55b60e1799103b8b86f04bd51b9 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -18,6 +18,8 @@ PHP                                                                        NEWS
 - Added imap_savebody(). (Mike)
 - Fixed imagecolorallocate() and imagecolorallocatelapha() to return FALSE
   on error. (Pierre)
+- Fixed bug #36235 (ocicolumnname returns false before a succesfull fetch). 
+  (Tony)
 - Fixed bug #36222 (errorInfo in PDOException is always NULL). (Ilia)
 - Fixed bug #36185 (str_rot13(NULL) crash). (Pierre)
 - Fixed bug #36176 (PDO_PGSQL - PDO::exec() does not return number of rows 
index 7b75a77487aad03ef760aa0ee7ac16128e5f8865..a6a039f30d1541f6fa410bb781b71e596a143503 100644 (file)
@@ -1102,7 +1102,7 @@ PHP_FUNCTION(oci_field_name)
 {
        php_oci_out_column *column;
 
-       if ( ( column = php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAM_PASSTHRU) ) ) {
+       if ( ( column = php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0) ) ) {
                RETURN_STRINGL(column->name, column->name_len, 1);
        }
        RETURN_FALSE;
@@ -1115,7 +1115,7 @@ PHP_FUNCTION(oci_field_size)
 {
        php_oci_out_column *column;
 
-       if ( ( column = php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAM_PASSTHRU) ) ) {
+       if ( ( column = php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0) ) ) {
                /* Handle data type of LONG */
                if (column->data_type == SQLT_LNG){
                        RETURN_LONG(column->storage_size4);
@@ -1132,7 +1132,7 @@ PHP_FUNCTION(oci_field_scale)
 {
        php_oci_out_column *column;
 
-       if ( ( column = php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAM_PASSTHRU) ) ) {
+       if ( ( column = php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0) ) ) {
                RETURN_LONG(column->scale);
        }
        RETURN_FALSE;
@@ -1145,7 +1145,7 @@ PHP_FUNCTION(oci_field_precision)
 {
        php_oci_out_column *column;
 
-       if ( ( column = php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAM_PASSTHRU) ) ) {
+       if ( ( column = php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0) ) ) {
                RETURN_LONG(column->precision);
        }
        RETURN_FALSE;
@@ -1158,7 +1158,7 @@ PHP_FUNCTION(oci_field_type)
 {
        php_oci_out_column *column;
 
-       column = php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAM_PASSTHRU);
+       column = php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0);
 
        if (!column) {
                RETURN_FALSE;
@@ -1223,7 +1223,7 @@ PHP_FUNCTION(oci_field_type_raw)
 {
        php_oci_out_column *column;
 
-       column = php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAM_PASSTHRU); 
+       column = php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0); 
        if (column) {
                RETURN_LONG(column->data_type);
        }
@@ -1237,7 +1237,7 @@ PHP_FUNCTION(oci_field_is_null)
 {
        php_oci_out_column *column;
 
-       if ( ( column = php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAM_PASSTHRU) ) ) {
+       if ( ( column = php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0) ) ) {
                if (column->indicator == -1) {
                        RETURN_TRUE;
                }
@@ -1734,7 +1734,7 @@ PHP_FUNCTION(oci_result)
 {
        php_oci_out_column *column;
        
-       column = php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAM_PASSTHRU);
+       column = php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1);
        if(column) {
                php_oci_column_to_zval(column, return_value, 0 TSRMLS_CC);
        }
index d2d3aab7445eecf8a0ad2a403922efcd0397f8f9..dcb3130b7e92eefd5a5bc1105cf509769b7a4b8e 100644 (file)
@@ -1004,7 +1004,7 @@ sb4 php_oci_bind_out_callback(
 
 /* {{{ php_oci_statement_get_column_helper() 
  Helper function to get column by name and index */
-php_oci_out_column *php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAMETERS)
+php_oci_out_column *php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAMETERS, int need_data)
 {
        zval *z_statement, *column_index;
        php_oci_statement *statement;
@@ -1020,7 +1020,7 @@ php_oci_out_column *php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAME
                return NULL;
        }
 
-       if (!statement->has_data) {
+       if (need_data && !statement->has_data) {
                return NULL;
        }
        
index cf41cbd6216102122a864d92e100e7432585ae27..0553bc70b997e08e74a583069729422a8ab0351a 100644 (file)
@@ -358,7 +358,7 @@ int php_oci_bind_post_exec(void *data TSRMLS_DC);
 int php_oci_bind_by_name(php_oci_statement *, char *, int, zval*, long, long TSRMLS_DC);
 sb4 php_oci_bind_in_callback(dvoid *, OCIBind *, ub4, ub4, dvoid **, ub4 *, ub1 *, dvoid **);
 sb4 php_oci_bind_out_callback(dvoid *, OCIBind *, ub4, ub4, dvoid **, ub4 **, ub1 *, dvoid **, ub2 **);
-php_oci_out_column *php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAMETERS);
+php_oci_out_column *php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAMETERS, int need_data);
 
 int php_oci_statement_get_type(php_oci_statement *, ub2 * TSRMLS_DC);
 int php_oci_statement_get_numrows(php_oci_statement *, ub4 * TSRMLS_DC);