• unknown's avatar
    A fix and test case for Bug#5315 "mysql_change_user() doesn't free · ccf52b4f
    unknown authored
    prepared statements."
    
    
    include/hash.h:
      New declaration for hash_reset() function. The old version was not used.
    libmysql/client_settings.h:
      Declaration for mysql_detach_stmt_list().
    libmysql/libmysql.c:
      Fix for bug#5315 "mysql_change_user() doesn't free prepared statements":
      add call to mysql_detach_stmt_list(prepared statements) to
      mysql_change_user(): all statements are freed by server, so client
      counterparts need to be marked as not usable.
    mysys/hash.c:
      Fix for bug#5315 "mysql_change_user() doesn't free prepared statements":
      implementation of hash_reset(), which frees all hash elements
      and prepares the hash for reuse.
    sql-common/client.c:
      Fix for bug#5315 "mysql_change_user() doesn't free prepared statements":
      implementation of mysql_detach_stmt_list(): zero connection pointer
      in given statement list, thus marking given statements as not usable.
    sql/sql_class.cc:
      Fix for bug#5315 "mysql_change_user() doesn't free prepared statements":
      reset prepared statements map in THD::change_user().
    sql/sql_class.h:
      Fix for bug#5315 "mysql_change_user() doesn't free prepared statements":
      implementation of Statement_map::reset().
      A little cleanup of ~Statement_map(): first empty names_hash, as st_hash
      has a free function, which will delete statements.
    tests/client_test.c:
      A test case for bug #5315 "mysql_change_user() doesn't free prepared
      statements".
    ccf52b4f
libmysql.c 123 KB