summaryrefslogtreecommitdiff
path: root/sql/sql_handler.cc
diff options
context:
space:
mode:
authorKonstantin Osipov <kostja@sun.com>2010-06-09 12:39:09 +0400
committerKonstantin Osipov <kostja@sun.com>2010-06-09 12:39:09 +0400
commitb976fb144407d3fbc892d080fce9bcd3c3922c93 (patch)
tree5cfb374f50804886b5d4c4eb4015fb98392a341b /sql/sql_handler.cc
parent0cb90edfe5350eef140801a08f19ac82fc01c0dd (diff)
downloadmariadb-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.cc29
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.