summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAshish Agarwal <ashish.y.agarwal@oracle.com>2012-10-31 12:45:57 +0530
committerAshish Agarwal <ashish.y.agarwal@oracle.com>2012-10-31 12:45:57 +0530
commit2919ca4e0b8ae2ef289bfd5b431819cdf205b513 (patch)
treec8c8b75763cf3060a86227f692f245b610b95463
parent5598603a087fecc4b012939c841ece93a7151295 (diff)
parent154860eab5499cf44160f253694a87b8147a2965 (diff)
downloadmariadb-git-2919ca4e0b8ae2ef289bfd5b431819cdf205b513.tar.gz
BUG#14485479: Merge into mysql-5.5 branch
-rw-r--r--mysql-test/include/have_null_audit_plugin.inc22
-rw-r--r--mysql-test/include/plugin.defs1
-rw-r--r--sql/sql_plugin.cc5
3 files changed, 26 insertions, 2 deletions
diff --git a/mysql-test/include/have_null_audit_plugin.inc b/mysql-test/include/have_null_audit_plugin.inc
new file mode 100644
index 00000000000..aa558cf18dd
--- /dev/null
+++ b/mysql-test/include/have_null_audit_plugin.inc
@@ -0,0 +1,22 @@
+disable_query_log;
+#
+# Check if server has support for loading plugins
+#
+if (`SELECT @@have_dynamic_loading != 'YES'`) {
+ --skip Null audit plugin requires dynamic loading
+}
+
+#
+# Check if the variable AUDIT_NULL is set
+#
+if (!$AUDIT_NULL) {
+ --skip Audit_null plugin requires the environment variable \$AUDIT_NULL to be set (normally done by mtr)
+}
+
+#
+# Check if --plugin-dir was setup for null_audit db
+#
+if (`SELECT CONCAT('--plugin-dir=', REPLACE(@@plugin_dir, '\\\\', '/')) != '$AUDIT_NULL_OPT/'`) {
+ --skip null audit plugin requires that --plugin-dir is set to the null audit plugin dir (either the .opt file does not contain \$AUDIT_NULL_OPT or another plugin is in use)
+}
+enable_query_log;
diff --git a/mysql-test/include/plugin.defs b/mysql-test/include/plugin.defs
index 6fbe4f68328..45fdfdb9a41 100644
--- a/mysql-test/include/plugin.defs
+++ b/mysql-test/include/plugin.defs
@@ -40,3 +40,4 @@ ha_blackhole storage/blackhole BLACKHOLE_PLUGIN
ha_federated storage/federated FEDERATED_PLUGIN
mypluglib plugin/fulltext SIMPLE_PARSER
libdaemon_example plugin/daemon_example DAEMONEXAMPLE
+adt_null plugin/audit_null AUDIT_NULL
diff --git a/sql/sql_plugin.cc b/sql/sql_plugin.cc
index 4c42f3798dd..13623078265 100644
--- a/sql/sql_plugin.cc
+++ b/sql/sql_plugin.cc
@@ -1820,6 +1820,7 @@ bool mysql_install_plugin(THD *thd, const LEX_STRING *name, const LEX_STRING *dl
{
if (plugin_initialize(tmp))
{
+ mysql_mutex_unlock(&LOCK_plugin);
my_error(ER_CANT_INITIALIZE_UDF, MYF(0), name->str,
"Plugin initialization function failed.");
goto deinit;
@@ -1831,6 +1832,7 @@ bool mysql_install_plugin(THD *thd, const LEX_STRING *name, const LEX_STRING *dl
of the insert into the plugin table, so that it is not replicated in
row based mode.
*/
+ mysql_mutex_unlock(&LOCK_plugin);
tmp_disable_binlog(thd);
table->use_all_columns();
restore_record(table, s->default_values);
@@ -1843,10 +1845,9 @@ bool mysql_install_plugin(THD *thd, const LEX_STRING *name, const LEX_STRING *dl
table->file->print_error(error, MYF(0));
goto deinit;
}
-
- mysql_mutex_unlock(&LOCK_plugin);
DBUG_RETURN(FALSE);
deinit:
+ mysql_mutex_lock(&LOCK_plugin);
tmp->state= PLUGIN_IS_DELETED;
reap_needed= true;
reap_plugins();