Re: Re: svn: /php/php-src/ branches/PHP_5_4/ext/mysqli/tests/bug55582.phpt trunk/ext/mysqli/tests/bug55582.phpt

From: Date: Tue, 06 Sep 2011 18:05:57 +0000
Subject: Re: Re: svn: /php/php-src/ branches/PHP_5_4/ext/mysqli/tests/bug55582.phpt trunk/ext/mysqli/tests/bug55582.phpt
References: 1 2 3 4 5 6 7 8 9  Groups: php.internals 
Request: Send a blank email to [email protected] to get a copy of this message
Stas,
On 09/06/2011 06:55 PM, Stas Malyshev wrote:
Hi! On 9/6/11 2:46 AM, Andrey Hristov wrote:
I've looked into mysqli_result_is_unbuffered_and_not_everything_is_fetched() and it looks like for libmysql it checks this: (((r)->handle&& (r)->handle->status == MYSQL_STATUS_USE_RESULT) || ((r)->data == NULL)) When I step through your code, r->data (which is result->data) is always NULL for me, which means warning is generated and 0 is returned. Is it a problem in libmysql?
what kind of a Problem?
Please read above. The above says php with libmysql does not return the result the tests expects - instead of returning number of rows after the last fetch it still returns 0. While mysqlnd does not return 0. I would like to know what is causing this and why php+libmysql result is different from what your test expects.
r->data should be always NULL, for an unbuffered fetch, r->data holds the data for buffered result sets. It is additional protection, an assert. I don't see a problem with that. I don't see also the behavior you describe - 0 returned even after the last fetch. If all data is fetched r->handle->status will be no more MYSQL_STATUS_USE_RESULT but something else (MYSQL_STATUS_READY), this will signal, that everything has been fetched. Of course, the check could have been !res->eof, but this is not what Georg chose long ago (see 5_2) : if (result->handle && result->handle->status == MYSQL_STATUS_USE_RESULT) { On my box the test passes both with libmysql and mysqlnd. What I did was to create consistent behavior, something people expect, although libmysql returns something different, which was mysqlnd's behavior in the beginning too. Andrey

Thread (8 messages)

« previous php.internals (#55254) next »