diff options
author | unknown <konstantin@mysql.com> | 2004-09-22 15:50:07 +0400 |
---|---|---|
committer | unknown <konstantin@mysql.com> | 2004-09-22 15:50:07 +0400 |
commit | 0d44f8d4ce1aeb4cf0e2d0ffb9084f03829caf37 (patch) | |
tree | e9e451c78db8c48bfcfbf6943d785f85d1b8a6f8 /sql/sql_class.cc | |
parent | daae7f4a2ed396e549c420d39ae8903e81f2ab8f (diff) | |
download | mariadb-git-0d44f8d4ce1aeb4cf0e2d0ffb9084f03829caf37.tar.gz |
A fix and test case for Bug#5315 "mysql_change_user() doesn't free
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".
Diffstat (limited to 'sql/sql_class.cc')
-rw-r--r-- | sql/sql_class.cc | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 16c0c206df3..bc8820a3a44 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -328,6 +328,7 @@ void THD::change_user(void) cleanup(); cleanup_done= 0; init(); + stmt_map.reset(); hash_init(&user_vars, &my_charset_bin, USER_VARS_HASH_SIZE, 0, 0, (hash_get_key) get_var_key, (hash_free_key) free_user_var, 0); |