diff options
-rw-r--r-- | sql/sql_table.cc | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 8ad9f10bc24..60fd630001a 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -4420,6 +4420,16 @@ bool mysql_create_table_no_lock(THD *thd, goto err; ha_err= hton->discover_table_structure(hton, thd, &share, create_info); + + /* + if discovery failed, the plugin will be auto-unlocked, as it + was locked on the THD, see above. + if discovery succeeded, the plugin was replaced by a globally + locked plugin, that will be unlocked by free_table_share() + */ + if (ha_err) + share.db_plugin= 0; // will be auto-freed, locked above on the THD + free_table_share(&share); if (ha_err) |