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

Reply via email to