From: Antony Dovgal Date: Tue, 31 Jan 2006 18:36:59 +0000 (+0000) Subject: fix #36235 (ocicolumnname delivers empty results before a succesfull ocifetch) X-Git-Tag: RELEASE_1_2~334 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2697320c2061be1b9b2e16430c012c21ea0dd86a;p=php fix #36235 (ocicolumnname delivers empty results before a succesfull ocifetch) --- diff --git a/ext/oci8/oci8_interface.c b/ext/oci8/oci8_interface.c index 7b75a77487..a6a039f30d 100644 --- a/ext/oci8/oci8_interface.c +++ b/ext/oci8/oci8_interface.c @@ -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); } diff --git a/ext/oci8/oci8_statement.c b/ext/oci8/oci8_statement.c index d2d3aab744..dcb3130b7e 100644 --- a/ext/oci8/oci8_statement.c +++ b/ext/oci8/oci8_statement.c @@ -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; } diff --git a/ext/oci8/php_oci8_int.h b/ext/oci8/php_oci8_int.h index cf41cbd621..0553bc70b9 100644 --- a/ext/oci8/php_oci8_int.h +++ b/ext/oci8/php_oci8_int.h @@ -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);