Bug #16118 | mysql_next_result always returns 0 after a call to mysql_use_result. | ||
---|---|---|---|
Submitted: | 2 Jan 2006 0:06 | Modified: | 2 Jan 2006 22:43 |
Reporter: | Hasani Blackwell | Email Updates: | |
Status: | Not a Bug | Impact on me: | |
Category: | MySQL Server | Severity: | S3 (Non-critical) |
Version: | 5.0.18 | OS: | Windows (Windows 2000 SP4) |
Assigned to: | MySQL Verification Team | CPU Architecture: | Any |
[2 Jan 2006 0:06]
Hasani Blackwell
[2 Jan 2006 0:07]
Hasani Blackwell
reproduceable c code
Attachment: main.cpp (text/plain), 1.64 KiB.
[2 Jan 2006 22:43]
MySQL Verification Team
Please read: http://dev.mysql.com/doc/refman/5.0/en/mysql-use-result.html " mysql_use_result() initiates a result set retrieval but does not actually read the result set into the client like mysql_store_result() does. Instead, each row must be retrieved individually by making calls to mysql_fetch_row(). This reads the result of a query directly from the server without storing it in a temporary table or local buffer, which is somewhat faster and uses much less memory than mysql_store_result(). The client allocates memory only for the current row and a communication buffer that may grow up to max_allowed_packet bytes. On the other hand, you shouldn't use mysql_use_result() if you are doing a lot of processing for each row on the client side, or if the output is sent to a screen on which the user may type a ^S (stop scroll). This ties up the server and prevent other threads from updating any tables from which the data is being fetched. When using mysql_use_result(), you must execute mysql_fetch_row() until a NULL value is returned, otherwise, the unfetched rows are returned as part of the result set for your next query. The C API gives the error Commands out of sync; you can't run this command now if you forget to do this! "