diff options
author | Konstantin Osipov <kostja@sun.com> | 2010-06-09 12:39:09 +0400 |
---|---|---|
committer | Konstantin Osipov <kostja@sun.com> | 2010-06-09 12:39:09 +0400 |
commit | b976fb144407d3fbc892d080fce9bcd3c3922c93 (patch) | |
tree | 5cfb374f50804886b5d4c4eb4015fb98392a341b /sql/sql_handler.cc | |
parent | 0cb90edfe5350eef140801a08f19ac82fc01c0dd (diff) | |
download | mariadb-git-b976fb144407d3fbc892d080fce9bcd3c3922c93.tar.gz |
A review comment for WL#4441 " LOCK_open: Remove requirement of
mutex protecting thd->open_tables".
We should not manipulate with table->s->version outside the
table definition cache code, but use the TDC API
to achieve the desired result.
Fix one violation: close_all_tables_for_name().
Diffstat (limited to 'sql/sql_handler.cc')
-rw-r--r-- | sql/sql_handler.cc | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/sql/sql_handler.cc b/sql/sql_handler.cc index d07c7eaa277..b2e793b5938 100644 --- a/sql/sql_handler.cc +++ b/sql/sql_handler.cc @@ -834,6 +834,35 @@ void mysql_ha_rm_tables(THD *thd, TABLE_LIST *tables) /** + Close cursors of matching tables from the HANDLER's hash table. + + @param thd Thread identifier. + @param tables The list of tables to flush. +*/ + +void mysql_ha_flush_tables(THD *thd, TABLE_LIST *all_tables) +{ + DBUG_ENTER("mysql_ha_flush_tables"); + + for (TABLE_LIST *table_list= all_tables; table_list; + table_list= table_list->next_global) + { + TABLE_LIST *hash_tables= mysql_ha_find(thd, table_list); + /* Close all aliases of the same table. */ + while (hash_tables) + { + TABLE_LIST *next_local= hash_tables->next_local; + if (hash_tables->table) + mysql_ha_close_table(thd, hash_tables); + hash_tables= next_local; + } + } + + DBUG_VOID_RETURN; +} + + +/** Flush (close and mark for re-open) all tables that should be should be reopen. |