Oleksandr Byelkin <sanja@xxxxxxxxxxxxxxxx> 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...