andrey                                   Wed, 16 Feb 2011 16:36:33 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=308394

Log:
fixed a problem in mysqlnd. 0 was always as num_rows returned for
unbuffered sets (text protocol and PS).

Changed paths:
    U   php/php-src/branches/PHP_5_3/NEWS
    U   php/php-src/branches/PHP_5_3/ext/mysqli/tests/mysqli_stmt_num_rows.phpt
    U   php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_result.c
    U   php/php-src/trunk/ext/mysqli/tests/mysqli_stmt_num_rows.phpt
    U   php/php-src/trunk/ext/mysqlnd/mysqlnd_result.c

Modified: php/php-src/branches/PHP_5_3/NEWS
===================================================================
--- php/php-src/branches/PHP_5_3/NEWS   2011-02-16 16:06:29 UTC (rev 308393)
+++ php/php-src/branches/PHP_5_3/NEWS   2011-02-16 16:36:33 UTC (rev 308394)
@@ -87,6 +87,10 @@
   . Fixed bug #53963 (Ensure error_code is always set during some failed
     decodings). (Scott)

+- mysqlnd
+  . Fixed problem with always returning 0 as num_rows for unbuffered sets.
+    (Andrey, Ulf)
+
 - MySQL Improved extension:
   . Added 'db' and 'catalog' keys to the field fetching functions (FR #39847).
     (Kalle)

Modified: 
php/php-src/branches/PHP_5_3/ext/mysqli/tests/mysqli_stmt_num_rows.phpt
===================================================================
--- php/php-src/branches/PHP_5_3/ext/mysqli/tests/mysqli_stmt_num_rows.phpt     
2011-02-16 16:06:29 UTC (rev 308393)
+++ php/php-src/branches/PHP_5_3/ext/mysqli/tests/mysqli_stmt_num_rows.phpt     
2011-02-16 16:36:33 UTC (rev 308394)
@@ -82,8 +82,8 @@
                        $i++;
                } while (mysqli_stmt_fetch($stmt));

-               if (0 !== ($tmp = mysqli_stmt_num_rows($stmt)))
-                       printf("[54] Expecting int/0, got %s/%s\n", 
gettype($tmp), $tmp);
+               if (7 !== ($tmp = mysqli_stmt_num_rows($stmt)))
+                       printf("[54] Expecting int/7, got %s/%s\n", 
gettype($tmp), $tmp);

        } else {
                printf("[055] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

Modified: php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_result.c
===================================================================
--- php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_result.c   2011-02-16 
16:06:29 UTC (rev 308393)
+++ php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_result.c   2011-02-16 
16:36:33 UTC (rev 308394)
@@ -1401,7 +1401,7 @@
 MYSQLND_METHOD(mysqlnd_res, num_rows)(const MYSQLND_RES * const result 
TSRMLS_DC)
 {
        /* Be compatible with libmysql. We count row_count, but will return 0 */
-       return result->stored_data? result->stored_data->row_count:0;
+       return result->stored_data? 
result->stored_data->row_count:(result->unbuf && result->unbuf->eof_reached? 
result->unbuf->row_count:0);
 }
 /* }}} */


Modified: php/php-src/trunk/ext/mysqli/tests/mysqli_stmt_num_rows.phpt
===================================================================
--- php/php-src/trunk/ext/mysqli/tests/mysqli_stmt_num_rows.phpt        
2011-02-16 16:06:29 UTC (rev 308393)
+++ php/php-src/trunk/ext/mysqli/tests/mysqli_stmt_num_rows.phpt        
2011-02-16 16:36:33 UTC (rev 308394)
@@ -82,8 +82,8 @@
                        $i++;
                } while (mysqli_stmt_fetch($stmt));

-               if (0 !== ($tmp = mysqli_stmt_num_rows($stmt)))
-                       printf("[54] Expecting int/0, got %s/%s\n", 
gettype($tmp), $tmp);
+               if (7 !== ($tmp = mysqli_stmt_num_rows($stmt)))
+                       printf("[54] Expecting int/7, got %s/%s\n", 
gettype($tmp), $tmp);

        } else {
                printf("[055] [%d] %s\n", mysqli_stmt_errno($stmt), 
mysqli_stmt_error($stmt));

Modified: php/php-src/trunk/ext/mysqlnd/mysqlnd_result.c
===================================================================
--- php/php-src/trunk/ext/mysqlnd/mysqlnd_result.c      2011-02-16 16:06:29 UTC 
(rev 308393)
+++ php/php-src/trunk/ext/mysqlnd/mysqlnd_result.c      2011-02-16 16:36:33 UTC 
(rev 308394)
@@ -1401,7 +1401,7 @@
 MYSQLND_METHOD(mysqlnd_res, num_rows)(const MYSQLND_RES * const result 
TSRMLS_DC)
 {
        /* Be compatible with libmysql. We count row_count, but will return 0 */
-       return result->stored_data? result->stored_data->row_count:0;
+       return result->stored_data? 
result->stored_data->row_count:(result->unbuf && result->unbuf->eof_reached? 
result->unbuf->row_count:0);
 }
 /* }}} */


-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to