diff --git a/mysql-test/r/merge.result b/mysql-test/r/merge.result index 74441db2512..ba1680f2cac 100644 --- a/mysql-test/r/merge.result +++ b/mysql-test/r/merge.result @@ -1875,10 +1875,6 @@ CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text test.t1 check status OK LOCK TABLES t2 WRITE, t1 WRITE; -SELECT * FROM t2; -c1 -1 -LOCK TABLES t2 WRITE, t1 WRITE; REPAIR TABLE t1; Table Op Msg_type Msg_text test.t1 repair status OK diff --git a/mysql-test/t/merge.test b/mysql-test/t/merge.test index cd4e732b954..3b71dc6fde1 100644 --- a/mysql-test/t/merge.test +++ b/mysql-test/t/merge.test @@ -1279,8 +1279,6 @@ CHECK TABLE t1 EXTENDED; # # Not using FLUSH TABLES before REPAIR. LOCK TABLES t2 WRITE, t1 WRITE; -SELECT * FROM t2; -LOCK TABLES t2 WRITE, t1 WRITE; REPAIR TABLE t1; CHECK TABLE t1; REPAIR TABLE t1; diff --git a/sql/sql_trigger.cc b/sql/sql_trigger.cc index 53f799fff1c..3129bd81572 100644 --- a/sql/sql_trigger.cc +++ b/sql/sql_trigger.cc @@ -489,8 +489,11 @@ bool mysql_create_or_drop_trigger(THD *thd, TABLE_LIST *tables, bool create) /* Under LOCK TABLES we must reopen the table to activate the trigger. */ if (!result && thd->locked_tables) { - close_data_files_and_morph_locks(thd, table->s->db.str, - table->s->table_name.str); + /* + Must not use table->s->db.str or table->s->table_name.str here. + The strings are used in a loop even after the share may be freed. + */ + close_data_files_and_morph_locks(thd, tables->db, tables->table_name); thd->in_lock_tables= 1; result= reopen_tables(thd, 1, 0); thd->in_lock_tables= 0;