Bug #31258 Disabling a plugin with dependencies does not work with mysql-test-run.pl
Submitted: 27 Sep 2007 20:16 Modified: 28 Sep 2007 16:53
Reporter: Hakan Küçükyılmaz Email Updates:
Status: Not a Bug Impact on me:
None 
Category:MySQL Server Severity:S2 (Serious)
Version:6.0 OS:Any
Assigned to: Antony Curtis CPU Architecture:Any

[27 Sep 2007 20:16] Hakan Küçükyılmaz
Description:
Disabling a plugin with dependencies does not work properly. In mysql-6.0 I have to disable Falcon plugin so that information_schema.test succeeds.

How to repeat:
Run information_schema.test in mysql-6.0 tree with following master.opt file to disable Falcon plugin.

// File name information_schema-master.opt
--loose-skip-plugin_falcon
--loose-skip-plugin-falcon_database_io
--loose-skip-plugin-falcon_record_cache_detail
--loose-skip-plugin-falcon_record_cache_summary
--loose-skip-plugin-falcon_serial_log
--loose-skip-plugin-falcon_syncobjects
--loose-skip-plugin-falcon_system_memory_detail
--loose-skip-plugin-falcon_system_memory_summary
--loose-skip-plugin-falcon_tables
--loose-skip-plugin-falcon_transaction_summary
--loose-skip-plugin-falcon_transactions

With information_schema-master.opt in place run information_schema.test

./mysql-test-run.pl --skip-ndb information_schema

=======================================================

TEST                           RESULT         TIME (ms)
-------------------------------------------------------

main.information_schema        [ fail ]

--- /home/hakan/work/mysql/mysql-6.0-falcon/mysql-test/r/information_schema.result      2007-09-14 12:17:53.000000000 +0300
+++ /home/hakan/work/mysql/mysql-6.0-falcon/mysql-test/var/log/information_schema.reject        2007-09-27 23:14:54.000000000 +0300
@@ -64,6 +64,7 @@
 TRIGGERS
 USER_PRIVILEGES
 VIEWS
+FALCON_TRANSACTIONS
 columns_priv
 db
 event
@@ -850,7 +851,7 @@
 flush privileges;
 SELECT table_schema, count(*) FROM information_schema.TABLES where table_name<>'ndb_binlog_index' AND table_name<>'ndb_apply_status' GROUP BY TABLE_SCHEMA;
 table_schema   count(*)
-information_schema     28
+information_schema     29
 mysql  22
 create table t1 (i int, j int);
 create trigger trg1 before insert on t1 for each row
@@ -1263,6 +1264,7 @@
 TRIGGERS       TRIGGER_SCHEMA
 USER_PRIVILEGES        GRANTEE
 VIEWS  TABLE_SCHEMA
+FALCON_TRANSACTIONS    DATABASE
 SELECT t.table_name, c1.column_name
 FROM information_schema.tables t
 INNER JOIN
@@ -1306,6 +1308,7 @@
 TRIGGERS       TRIGGER_SCHEMA
 USER_PRIVILEGES        GRANTEE
 VIEWS  TABLE_SCHEMA
+FALCON_TRANSACTIONS    DATABASE
 SELECT MAX(table_name) FROM information_schema.tables;
 MAX(table_name)
 VIEWS
@@ -1379,6 +1382,7 @@
 COLUMN_PRIVILEGES      information_schema.COLUMN_PRIVILEGES    1
 ENGINES        information_schema.ENGINES      1
 EVENTS information_schema.EVENTS       1
+FALCON_TRANSACTIONS    information_schema.FALCON_TRANSACTIONS  1
 FILES  information_schema.FILES        1
 GLOBAL_STATUS  information_schema.GLOBAL_STATUS        1
 GLOBAL_VARIABLES       information_schema.GLOBAL_VARIABLES     1

mysqltest: Result content mismatch

Aborting: main.information_schema failed in default mode.
To continue, re-run with '--force'.
Stopping All Servers

It looks like that the 11th parameter in the master.opt file is ignored.

Suggested fix:
Implementation of WL#3295 plugin run-time dependencies, would help fixing this issue.
[27 Sep 2007 22:00] Calvin Sun
This one is required to make 6.0 tree green.
[28 Sep 2007 2:27] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/34624

ChangeSet@1.2602, 2007-09-27 19:24:33-07:00, acurtis@xiphis.org +7 -0
  Bug#31258
    "Disabling a plugin with dependencies does not work wth mysql-test-run.pl"
  
    Note: This patch does not implement plugin dependencies.
  
    New command line option: --disable-plugins=NAMES
    where NAMES is a comma seperated list of plugin names which will not be loaded
    automatically during initialization. Names are case-insenstive and SQL LIKE wildcards
    are permitted which enable disabling all plugins which start with a specific name.
    When initializing built-in and installed plugins, check if they have been explicitly
    disabled by the --disable-plugins= option.
[28 Sep 2007 2:55] Hakan Küçükyılmaz
Just tested Antony's patch on mysql-6.0-falcon tree and it works!

Best regards,

Hakan
[28 Sep 2007 15:53] Calvin Sun
this fix is needed to make 6.0 tree green.
[28 Sep 2007 16:53] Sergei Golubchik
This is expected behavior.
Falcon plugin introduces a configuration variable falcon_serial_log_dir
(which can be also referred to as plugin-falcon_serial_log_dir).

Note that my_getopt allows to refer to an option using an unambiguous prefix (see http://dev.mysql.com/doc/refman/5.0/en/program-options.html). And skip-var is equivalent to var=0 (http://dev.mysql.com/doc/refman/5.0/en/command-line-options.html).

So, --loose-skip-plugin-falcon_serial_log is interpreted as falcon_serial_log_dir=0, and does NOT disable the plugin falcon_serial_log.

There are different solutions that would help to fix symptoms of this bug - to allow unload falcon plugins - for example the patch that Antony wrote, or wl#3295, or ignoring plugin's variables if the plugin is skipped. But no solution fundamentally helps to resolve the ambiguity.

Plugin authors should take care to avoid giving plugins and variables ambiguous names.