Oleksandr Byelkin <sanja@montyprogram.com> writes:
Making something more I think do not worth it because: 1) in 10.2 C/C will replace the library and it has no the problem But Connector-C should have exactly the same problem. If it frees the options on failed connect, it will break async API. If it does not, code that skips mysql_close() will leak. How does C/C solve this problem? If we are making any changes in 10.0, we should preferably make things work the same as they will work in 10.2.
Don't it has rewritten async operation? (at least I got such impression).
My understanding is that Georg implemented all the async API also in connector-c. It should be using much the same code (mysql_async.c and such). But this is not about the implementation. This is about the semantics of how libmysqlclient works. My understanding is that connector-c is supposed to be binary compatible with libmysqlclient.so? So either connector-c removes any mysql_options() set when mysql_real_connect() fails without CLIENT_REMEMBER_OPTIONS. Or it does not. In the former case, there is the problem with MYSQL_OPT_NONBLOCK. In the latter case, the problem with leak when mysql_close() is not called. I really think you need to understand the problem fully, including how this is going to work in 10.2, before you make any changes to how the client library works... - Kristian.