diff options
author | He Zhenxing <zhenxing.he@sun.com> | 2009-10-03 18:50:25 +0800 |
---|---|---|
committer | He Zhenxing <zhenxing.he@sun.com> | 2009-10-03 18:50:25 +0800 |
commit | f108d05932d6d565d98c18e5e01b9593f5ace684 (patch) | |
tree | 725dde87ce3a26584ba62f57b48424b2e0dd1a08 /sql/handler.cc | |
parent | a8c14d9e0e078ac1092a325de2f1b46c881adc4d (diff) | |
parent | d8724a4538a61ea6f98fb770c951b89bde734f77 (diff) | |
download | mariadb-git-f108d05932d6d565d98c18e5e01b9593f5ace684.tar.gz |
Manual merge semi-sync to 5.1-rep+2
Diffstat (limited to 'sql/handler.cc')
-rw-r--r-- | sql/handler.cc | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/sql/handler.cc b/sql/handler.cc index ac959cb62f2..abe705960f0 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -24,6 +24,7 @@ #endif #include "mysql_priv.h" +#include "rpl_handler.h" #include "rpl_filter.h" #include <myisampack.h> #include <errno.h> @@ -221,6 +222,8 @@ handlerton *ha_checktype(THD *thd, enum legacy_db_type database_type, return NULL; } + RUN_HOOK(transaction, after_rollback, (thd, FALSE)); + switch (database_type) { #ifndef NO_HASH case DB_TYPE_HASH: @@ -1206,6 +1209,7 @@ int ha_commit_trans(THD *thd, bool all) if (cookie) tc_log->unlog(cookie, xid); DBUG_EXECUTE_IF("crash_commit_after", abort();); + RUN_HOOK(transaction, after_commit, (thd, FALSE)); end: if (rw_trans) start_waiting_global_read_lock(thd); @@ -1353,6 +1357,7 @@ int ha_rollback_trans(THD *thd, bool all) push_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARNING_NOT_COMPLETE_ROLLBACK, ER(ER_WARNING_NOT_COMPLETE_ROLLBACK)); + RUN_HOOK(transaction, after_rollback, (thd, FALSE)); DBUG_RETURN(error); } @@ -1387,7 +1392,14 @@ int ha_autocommit_or_rollback(THD *thd, int error) thd->variables.tx_isolation=thd->session_tx_isolation; } + else #endif + { + if (!error) + RUN_HOOK(transaction, after_commit, (thd, FALSE)); + else + RUN_HOOK(transaction, after_rollback, (thd, FALSE)); + } DBUG_RETURN(error); } |