From: Christopher Powers Date: August 23 2010 1:34pm Subject: bzr push into mysql-5.5-bugfixing branch (chris.powers:3191 to 3192) List-Archive: http://lists.mysql.com/commits/116506 Message-Id: <20100823133413.CD7401DB0318@xeno.mysql.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0294848423981687876==" --===============0294848423981687876== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline 3192 Christopher Powers 2010-08-23 [merge] merge added: mysql-test/suite/parts/r/part_ctype_utf32.result mysql-test/suite/parts/t/part_ctype_utf32.test modified: sql/field.cc sql/sql_audit.cc sql/sql_audit.h sql/sql_plugin.cc 3191 Christopher Powers 2010-08-22 [merge] merge modified: mysql-test/r/partition_innodb.result mysql-test/t/partition_innodb.test sql/sql_partition.cc sql/sql_table.cc sql/sql_table.h === added file 'mysql-test/suite/parts/r/part_ctype_utf32.result' --- a/mysql-test/suite/parts/r/part_ctype_utf32.result 1970-01-01 00:00:00 +0000 +++ b/mysql-test/suite/parts/r/part_ctype_utf32.result 2010-08-23 09:56:21 +0000 @@ -0,0 +1,14 @@ +# +# Bug#52121 partition by key on utf32 enum field cause debug assertion: (length % 4) == 0 +# +DROP TABLE IF EXISTS t1; +Warnings: +Note 1051 Unknown table 't1' +CREATE TABLE t1 ( +a enum('a') CHARACTER SET utf32 COLLATE utf32_spanish2_ci +) ENGINE=MYISAM PARTITION BY KEY(a) PARTITIONS 2; +INSERT INTO t1 VALUES ('a'); +SELECT * FROM t1; +a +a +DROP TABLE t1; === added file 'mysql-test/suite/parts/t/part_ctype_utf32.test' --- a/mysql-test/suite/parts/t/part_ctype_utf32.test 1970-01-01 00:00:00 +0000 +++ b/mysql-test/suite/parts/t/part_ctype_utf32.test 2010-08-23 09:56:21 +0000 @@ -0,0 +1,28 @@ +################################################################################ +# t/partition_ctype_utf32.test # +# # +# Purpose: # +# Tests for partitions + UTF32 # +# # +#------------------------------------------------------------------------------# +# Original Author: Alexander Barkov # +# Original Date: 2010-08-05 # +# Change Author: # +# Change Date: # +# Change: # +################################################################################ + +--source include/have_partition.inc +--source include/have_utf32.inc + +--echo # +--echo # Bug#52121 partition by key on utf32 enum field cause debug assertion: (length % 4) == 0 +--echo # + +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 ( + a enum('a') CHARACTER SET utf32 COLLATE utf32_spanish2_ci +) ENGINE=MYISAM PARTITION BY KEY(a) PARTITIONS 2; +INSERT INTO t1 VALUES ('a'); +SELECT * FROM t1; +DROP TABLE t1; === modified file 'sql/field.cc' --- a/sql/field.cc 2010-07-29 12:32:11 +0000 +++ b/sql/field.cc 2010-08-23 09:56:21 +0000 @@ -1329,7 +1329,7 @@ void Field::hash(ulong *nr, ulong *nr2) else { uint len= pack_length(); - CHARSET_INFO *cs= charset(); + CHARSET_INFO *cs= sort_charset(); cs->coll->hash_sort(cs, ptr, len, nr, nr2); } } === modified file 'sql/sql_audit.cc' --- a/sql/sql_audit.cc 2010-04-15 09:36:36 +0000 +++ b/sql/sql_audit.cc 2010-08-20 09:58:28 +0000 @@ -138,6 +138,30 @@ static my_bool acquire_plugins(THD *thd, /** + @brief Acquire audit plugins + + @param[in] thd MySQL thread handle + @param[in] event_class Audit event class + + @details Ensure that audit plugins interested in given event + class are locked by current thread. +*/ +void mysql_audit_acquire_plugins(THD *thd, uint event_class) +{ + unsigned long event_class_mask[MYSQL_AUDIT_CLASS_MASK_SIZE]; + DBUG_ENTER("mysql_audit_acquire_plugins"); + set_audit_mask(event_class_mask, event_class); + if (thd && !check_audit_mask(mysql_global_audit_mask, event_class_mask) && + check_audit_mask(thd->audit_class_mask, event_class_mask)) + { + plugin_foreach(thd, acquire_plugins, MYSQL_AUDIT_PLUGIN, &event_class); + add_audit_mask(thd->audit_class_mask, event_class_mask); + } + DBUG_VOID_RETURN; +} + + +/** Notify the audit system of an event @param[in] thd @@ -151,21 +175,8 @@ void mysql_audit_notify(THD *thd, uint e { va_list ap; audit_handler_t *handlers= audit_handlers + event_class; - unsigned long event_class_mask[MYSQL_AUDIT_CLASS_MASK_SIZE]; - DBUG_ASSERT(event_class < audit_handlers_count); - - set_audit_mask(event_class_mask, event_class); - /* - Check to see if we have acquired the audit plugins for the - required audit event classes. - */ - if (thd && check_audit_mask(thd->audit_class_mask, event_class_mask)) - { - plugin_foreach(thd, acquire_plugins, MYSQL_AUDIT_PLUGIN, &event_class); - add_audit_mask(thd->audit_class_mask, event_class_mask); - } - + mysql_audit_acquire_plugins(thd, event_class); va_start(ap, event_subtype); (*handlers)(thd, event_subtype, ap); va_end(ap); @@ -448,6 +459,11 @@ static void event_class_dispatch(THD *th #else /* EMBEDDED_LIBRARY */ +void mysql_audit_acquire_plugins(THD *thd, uint event_class) +{ +} + + void mysql_audit_initialize() { } === modified file 'sql/sql_audit.h' --- a/sql/sql_audit.h 2010-03-31 14:05:33 +0000 +++ b/sql/sql_audit.h 2010-08-20 09:58:28 +0000 @@ -29,6 +29,7 @@ extern void mysql_audit_finalize(); extern void mysql_audit_init_thd(THD *thd); extern void mysql_audit_free_thd(THD *thd); +extern void mysql_audit_acquire_plugins(THD *thd, uint event_class); extern void mysql_audit_notify(THD *thd, uint event_class, === modified file 'sql/sql_plugin.cc' --- a/sql/sql_plugin.cc 2010-08-19 09:33:37 +0000 +++ b/sql/sql_plugin.cc 2010-08-23 09:38:10 +0000 @@ -29,7 +29,7 @@ #include "records.h" // init_read_record, end_read_record #include #include -#include +#include "sql_audit.h" #include "lock.h" // MYSQL_LOCK_IGNORE_TIMEOUT #define REPORT_TO_LOG 1 #define REPORT_TO_USER 2 @@ -1709,6 +1709,27 @@ bool mysql_install_plugin(THD *thd, cons MYSQL_LOCK_IGNORE_TIMEOUT))) DBUG_RETURN(TRUE); + /* + Pre-acquire audit plugins for events that may potentially occur + during [UN]INSTALL PLUGIN. + + When audit event is triggered, audit subsystem acquires interested + plugins by walking through plugin list. Evidently plugin list + iterator protects plugin list by acquiring LOCK_plugin, see + plugin_foreach_with_mask(). + + On the other hand [UN]INSTALL PLUGIN is acquiring LOCK_plugin + rather for a long time. + + When audit event is triggered during [UN]INSTALL PLUGIN, plugin + list iterator acquires the same lock (within the same thread) + second time. + + This hack should be removed when LOCK_plugin is fixed so it + protects only what it supposed to protect. + */ + mysql_audit_acquire_plugins(thd, MYSQL_AUDIT_GENERAL_CLASS); + mysql_mutex_lock(&LOCK_plugin); mysql_rwlock_wrlock(&LOCK_system_variables_hash); @@ -1789,6 +1810,27 @@ bool mysql_uninstall_plugin(THD *thd, co if (! (table= open_ltable(thd, &tables, TL_WRITE, MYSQL_LOCK_IGNORE_TIMEOUT))) DBUG_RETURN(TRUE); + /* + Pre-acquire audit plugins for events that may potentially occur + during [UN]INSTALL PLUGIN. + + When audit event is triggered, audit subsystem acquires interested + plugins by walking through plugin list. Evidently plugin list + iterator protects plugin list by acquiring LOCK_plugin, see + plugin_foreach_with_mask(). + + On the other hand [UN]INSTALL PLUGIN is acquiring LOCK_plugin + rather for a long time. + + When audit event is triggered during [UN]INSTALL PLUGIN, plugin + list iterator acquires the same lock (within the same thread) + second time. + + This hack should be removed when LOCK_plugin is fixed so it + protects only what it supposed to protect. + */ + mysql_audit_acquire_plugins(thd, MYSQL_AUDIT_GENERAL_CLASS); + mysql_mutex_lock(&LOCK_plugin); if (!(plugin= plugin_find_internal(name, MYSQL_ANY_PLUGIN))) { --===============0294848423981687876== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/chris.powers@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: chris.powers@stripped # target_branch: file:///home/cpowers/work/dev/dev-55-bugfixing/mysql/ # testament_sha1: 744d54e620ec81756e2b3909a55f27d55761504e # timestamp: 2010-08-23 08:34:13 -0500 # base_revision_id: chris.powers@stripped\ # jqr7i6fntgcz5jm2 # # Begin bundle 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 --===============0294848423981687876==--