summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHorst.Hunger <horst.hunger@sun.com>2010-04-26 20:44:10 +0200
committerHorst.Hunger <horst.hunger@sun.com>2010-04-26 20:44:10 +0200
commitbef66c5c9ff684de26533153df8188c74dcd45b3 (patch)
tree56d14b5c0a7367d82d1026837f50fc04cacfc138
parent42c74ad8c3ac1217b4e9b1629405e377ef89bf96 (diff)
downloadmariadb-git-bef66c5c9ff684de26533153df8188c74dcd45b3.tar.gz
backport of patch for blckhole plugin (47748) to trunk-bugfixing.
-rw-r--r--mysql-test/include/have_blackhole_plugin.inc5
-rw-r--r--mysql-test/r/blackhole_plugin.result15
-rw-r--r--mysql-test/t/blackhole_plugin-master.opt1
-rw-r--r--mysql-test/t/blackhole_plugin.test22
-rw-r--r--storage/blackhole/Makefile.am23
5 files changed, 62 insertions, 4 deletions
diff --git a/mysql-test/include/have_blackhole_plugin.inc b/mysql-test/include/have_blackhole_plugin.inc
new file mode 100644
index 00000000000..749efd343d6
--- /dev/null
+++ b/mysql-test/include/have_blackhole_plugin.inc
@@ -0,0 +1,5 @@
+if (`select plugin_library IS NULL from information_schema.plugins where plugin_name LIKE '%blackhole%'`)
+{
+ --skip blackhole plugin not available;
+}
+
diff --git a/mysql-test/r/blackhole_plugin.result b/mysql-test/r/blackhole_plugin.result
new file mode 100644
index 00000000000..9fc0cacd9cc
--- /dev/null
+++ b/mysql-test/r/blackhole_plugin.result
@@ -0,0 +1,15 @@
+CREATE TABLE t1(a int) ENGINE=BLACKHOLE;
+Warnings:
+Warning 1286 Unknown storage engine 'BLACKHOLE'
+Warning 1266 Using storage engine MyISAM for table 't1'
+DROP TABLE t1;
+INSTALL PLUGIN blackhole SONAME 'ha_blackhole.so';
+INSTALL PLUGIN BLACKHOLE SONAME 'ha_blackhole.so';
+ERROR HY000: Function 'BLACKHOLE' already exists
+UNINSTALL PLUGIN blackhole;
+INSTALL PLUGIN blackhole SONAME 'ha_blackhole.so';
+CREATE TABLE t1(a int) ENGINE=BLACKHOLE;
+DROP TABLE t1;
+UNINSTALL PLUGIN blackhole;
+UNINSTALL PLUGIN blackhole;
+ERROR 42000: PLUGIN blackhole does not exist
diff --git a/mysql-test/t/blackhole_plugin-master.opt b/mysql-test/t/blackhole_plugin-master.opt
new file mode 100644
index 00000000000..dff15c6f136
--- /dev/null
+++ b/mysql-test/t/blackhole_plugin-master.opt
@@ -0,0 +1 @@
+--plugin_dir=../storage/blackhole/.libs
diff --git a/mysql-test/t/blackhole_plugin.test b/mysql-test/t/blackhole_plugin.test
new file mode 100644
index 00000000000..5c712233dc7
--- /dev/null
+++ b/mysql-test/t/blackhole_plugin.test
@@ -0,0 +1,22 @@
+--source include/not_windows.inc
+--source include/have_blackhole_plugin.inc
+
+CREATE TABLE t1(a int) ENGINE=BLACKHOLE;
+DROP TABLE t1;
+
+eval INSTALL PLUGIN blackhole SONAME 'ha_blackhole.so';
+--error 1125
+eval INSTALL PLUGIN BLACKHOLE SONAME 'ha_blackhole.so';
+
+UNINSTALL PLUGIN blackhole;
+
+eval INSTALL PLUGIN blackhole SONAME 'ha_blackhole.so';
+
+CREATE TABLE t1(a int) ENGINE=BLACKHOLE;
+
+DROP TABLE t1;
+
+UNINSTALL PLUGIN blackhole;
+--error ER_SP_DOES_NOT_EXIST
+UNINSTALL PLUGIN blackhole;
+
diff --git a/storage/blackhole/Makefile.am b/storage/blackhole/Makefile.am
index 538dc5999f0..04ec7a64aa9 100644
--- a/storage/blackhole/Makefile.am
+++ b/storage/blackhole/Makefile.am
@@ -1,5 +1,5 @@
-# Copyright (C) 2006 MySQL AB
-#
+# Copyright (C) 2005-2006 MySQL AB, 2009 Sun Microsystems, Inc.
+# All rights reserved.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
@@ -50,11 +50,22 @@ libblackhole_a_SOURCES= ha_blackhole.cc
EXTRA_DIST = CMakeLists.txt plug.in
if HAVE_DTRACE_DASH_G
+# The object for static and dynamic linking of blackhole differ
+# For static linkage of blackhole to mysqld
+
libblackhole_a_LIBADD = probes_mysql.o
libblackhole_a_DEPENDENCIES = probes_mysql.o dtrace_files dtrace_providers
-CLEANFILES = probes_mysql.o dtrace_files dtrace_providers
-DTRACEFILES = libblackhole_a-ha_blackhole.o
+# For blackhole as shared library
+ha_blackhole_la_LIBADD = probes_sh_mysql.o
+# Hack: We "depend" on ".libs/" but have no rule for it,
+# but it is created as a byproduct of the ".lo"
+DTRACESHAREDDEPS = ha_blackhole_la-ha_blackhole.lo
+DTRACESHAREDFILES = ha_blackhole_la-ha_blackhole.o
DTRACEPROVIDER = probes_mysql.d
+ha_blackhole_la_DEPENDENCIES = probes_sh_mysql.o $(DTRACESHAREDDEPS) dtrace_providers
+
+CLEANFILES = $(DTRACEPROVIDERS) dtrace_files dtrace_providers $(DTRACESHAREDDEPS)
+DTRACEFILES = libblackhole_a-ha_blackhole.o
dtrace_files:
echo $(DTRACEFILES) > $@
@@ -65,8 +76,12 @@ probes_mysql.d:
$(CP) $(top_srcdir)/include/probes_mysql.d.base probes_mysql.d
echo timestamp > dtrace_sources
+probes_sh_mysql.o: $(DTRACEPROVIDER) $(DTRACESHAREDDEPS)
+ $(DTRACE) $(DTRACEFLAGS) -G -s $(DTRACEPROVIDER) $(DTRACESHAREDFILES) -o $@
+ $(CP) $(DTRACESHAREDFILES) .libs
probes_mysql.o: $(DTRACEPROVIDER) $(DTRACEFILES)
$(DTRACE) $(DTRACEFLAGS) -G -s $(DTRACEPROVIDER) $(DTRACEFILES) -o $@
+
endif
# Don't update the files from bitkeeper