I think my question is whether the data in MYSQL_RES and MYSQL_ROW data structures are sufficiently independent from that of other instances of those data structures in a multi-threaded situation when a pool of connections are share. The application my have multiple connections structures defined in a pool, but each individual connection will be used exclusively from the point of running the query until after mysql_store_result is called. After that the connection is pushed back into the pool for re-use.
That is, since mysql_store_result() "...reads the entire result of a query to the client, allocates a MYSQL_RES structure, and places the result into this structure", is it then safe to use query results simultaneously using more than one connection? Like in the following scenario using the C API functions. (Note code is not actual, compiled code, just a quick sketch that may contain errors, but expresses the idea): In thread A (error result code checking removed for conciseness, but assume it is there): void some_data_processing_function(char* query_string) { /* Note that this function declares separate * result, and row data structures * each time it is invoked, and has exclusive * use of a connection to run query and store * result. */ MYSQL* mysql; MYSQL_RES* result; MYSQL_ROW row; mysql = pop_a_connection_from_the_stack(); mysql_query(mysql,query_string); result = mysql_store_result(&mysql); push_connection_back_onto_stack(mysql); while ((row = mysql_fetch_row(result))) { /* Proceed to step through and process rows here */ } /* Clean up data structures */ return; } Then, while thread A is processing the result set, thread B invokes the same function with a different query_string. Note that new, local result and row data structures are invoked with each call to the function, but if thread A has not pushed its connection back on the stack, then B will pop a different connection. On the other hand, if A has made it to the while loop and is processing the rows of the result set, then B may pop the same or a different connection structure off the stack of connections. -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/mysql?unsub=arch...@jab.org