diff options
author | Michael Widenius <monty@askmonty.org> | 2010-05-26 21:55:40 +0300 |
---|---|---|
committer | Michael Widenius <monty@askmonty.org> | 2010-05-26 21:55:40 +0300 |
commit | 4aa9d903c11554cc4887eeffe7f0592c52e8bc99 (patch) | |
tree | af3f0dfb833c3c4aabaa69ce50cfb64202ecd479 /sql/sql_plugin.cc | |
parent | 9febcb4776e563a93eb8fff247174b0e2eb2ae0b (diff) | |
parent | af6d89a6aa9feb3545de068f461cf91bfb281dd2 (diff) | |
download | mariadb-git-4aa9d903c11554cc4887eeffe7f0592c52e8bc99.tar.gz |
Merge with MySQL 5.1.47
Fixed some bugs introduced in 5.1.47
Disabled some tests until we have merged with latest Xtradb
configure.in:
Added testing if valgrind/memcheck.h exists
storage/pbxt/src/ha_pbxt.cc:
LOCK_plugin is not anymore locked in init
Diffstat (limited to 'sql/sql_plugin.cc')
-rw-r--r-- | sql/sql_plugin.cc | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/sql/sql_plugin.cc b/sql/sql_plugin.cc index 151197be1d3..d908f13d372 100644 --- a/sql/sql_plugin.cc +++ b/sql/sql_plugin.cc @@ -1025,9 +1025,15 @@ void plugin_unlock_list(THD *thd, plugin_ref *list, uint count) static int plugin_initialize(struct st_plugin_int *plugin) { + int ret= 1; + uint state; DBUG_ENTER("plugin_initialize"); safe_mutex_assert_owner(&LOCK_plugin); + state= plugin->state; + DBUG_ASSERT(state == PLUGIN_IS_UNINITIALIZED); + + pthread_mutex_unlock(&LOCK_plugin); if (plugin_type_initialize[plugin->plugin->type]) { if ((*plugin_type_initialize[plugin->plugin->type])(plugin)) @@ -1046,8 +1052,7 @@ static int plugin_initialize(struct st_plugin_int *plugin) goto err; } } - - plugin->state= PLUGIN_IS_READY; + state= PLUGIN_IS_READY; // plugin->init() succeeded if (plugin->plugin->status_vars) { @@ -1066,7 +1071,8 @@ static int plugin_initialize(struct st_plugin_int *plugin) if (add_status_vars(array)) // add_status_vars makes a copy goto err; #else - add_status_vars(plugin->plugin->status_vars); // add_status_vars makes a copy + if (add_status_vars(plugin->plugin->status_vars)) + goto err; #endif /* FIX_LATER */ } @@ -1086,9 +1092,12 @@ static int plugin_initialize(struct st_plugin_int *plugin) } } - DBUG_RETURN(0); + ret= 0; + err: - DBUG_RETURN(1); + pthread_mutex_lock(&LOCK_plugin); + plugin->state= state; + DBUG_RETURN(ret); } @@ -1677,6 +1686,12 @@ bool mysql_install_plugin(THD *thd, const LEX_STRING *name, const LEX_STRING *dl struct st_plugin_int *tmp; DBUG_ENTER("mysql_install_plugin"); + if (opt_noacl) + { + my_error(ER_OPTION_PREVENTS_STATEMENT, MYF(0), "--skip-grant-tables"); + DBUG_RETURN(TRUE); + } + bzero(&tables, sizeof(tables)); tables.db= (char *)"mysql"; tables.table_name= tables.alias= (char *)"plugin"; @@ -1754,6 +1769,12 @@ bool mysql_uninstall_plugin(THD *thd, const LEX_STRING *name) struct st_plugin_int *plugin; DBUG_ENTER("mysql_uninstall_plugin"); + if (opt_noacl) + { + my_error(ER_OPTION_PREVENTS_STATEMENT, MYF(0), "--skip-grant-tables"); + DBUG_RETURN(TRUE); + } + bzero(&tables, sizeof(tables)); tables.db= (char *)"mysql"; tables.table_name= tables.alias= (char *)"plugin"; |