From f940472d5a4e97c1932c596f0bafe52828e67b4a Mon Sep 17 00:00:00 2001 From: "brian@zim.(none)" <> Date: Sun, 26 Mar 2006 01:32:52 -0800 Subject: [PATCH] Fix to remove engine dependency from handler.cc file, the last one for functions. --- sql/ha_innodb.cc | 3 ++- sql/handler.cc | 20 +++++++++++++++++--- sql/handler.h | 1 + 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/sql/ha_innodb.cc b/sql/ha_innodb.cc index bf07d56565a..1b0f4c34acc 100644 --- a/sql/ha_innodb.cc +++ b/sql/ha_innodb.cc @@ -237,7 +237,8 @@ handlerton innobase_hton = { NULL, /* Fill FILES table */ HTON_NO_FLAGS, NULL, /* binlog_func */ - NULL /* binlog_log_query */ + NULL, /* binlog_log_query */ + innobase_release_temporary_latches }; diff --git a/sql/handler.cc b/sql/handler.cc index c53ee4153f9..16381972200 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -1179,11 +1179,23 @@ bool mysql_xa_recover(THD *thd) return value: always 0 */ +static my_bool release_temporary_latches(THD *thd, st_plugin_int *plugin, + void *unused) +{ + handlerton *hton= (handlerton *) plugin->plugin->info; + + if (hton->state == SHOW_OPTION_YES && hton->release_temporary_latches) + hton->release_temporary_latches(thd); + + return FALSE; +} + + int ha_release_temporary_latches(THD *thd) { -#ifdef WITH_INNOBASE_STORAGE_ENGINE - innobase_release_temporary_latches(thd); -#endif + plugin_foreach(thd, release_temporary_latches, MYSQL_STORAGE_ENGINE_PLUGIN, + NULL); + return 0; } @@ -3264,6 +3276,8 @@ int handler::ha_external_lock(THD *thd, int lock_type) case SQLCOM_TRUNCATE: case SQLCOM_ALTER_TABLE: DBUG_RETURN(0); + default: + break; } /* diff --git a/sql/handler.h b/sql/handler.h index ef7c206486a..25947983fb6 100644 --- a/sql/handler.h +++ b/sql/handler.h @@ -580,6 +580,7 @@ typedef struct void (*binlog_log_query)(THD *thd, enum_binlog_command binlog_command, const char *query, uint query_length, const char *db, const char *table_name); + int (*release_temporary_latches)(THD *thd); } handlerton; extern const handlerton default_hton;