Hi! On 9/6/11 11:05 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?
r->data should be always NULL, for an unbuffered fetch, r->data holds the data for buffered result sets. It is additional protection, an
If r->data is always null, then - please look at the code above - mysqli_result_is_unbuffered_and_not_everything_is_fetched() is always true. Which I think is not what was intended, because the test implies otherwise, but maybe I am mistaken. That's what I am trying to find out - is this behavior of libmysql/mysqli implementation, that always returns 0 and produces an error for "use" results for num_rows - intentional or is it some kind of error.
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 true, however if you look at the condition, it returns true always when r->data us NULL regardless of what is there in the status. What I am trying to find out is if this behavior is intended - and then the test is wrong for this situation - or is it not intended and needs to be fixed.
-- Stanislav Malyshev, Software Architect SugarCRM: http://www.sugarcrm.com/ (408)454-6900 ext. 227 -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php