diff options
-rw-r--r-- | sql/ha_innobase.cc | 20 |
1 files changed, 6 insertions, 14 deletions
diff --git a/sql/ha_innobase.cc b/sql/ha_innobase.cc index d1db50dfa89..bafd41ff566 100644 --- a/sql/ha_innobase.cc +++ b/sql/ha_innobase.cc @@ -718,22 +718,20 @@ innobase_commit( trx = check_trx_exists(thd); + /* Release possible statement level resources */ + innobase_release_stat_resources(trx); + if (trx->auto_inc_lock) { /* If we had reserved the auto-inc lock for some table in this SQL statement, we release it now */ - srv_conc_enter_innodb(trx); row_unlock_table_autoinc_for_mysql(trx); - srv_conc_exit_innodb(trx); } if (trx_handle != (void*)&innodb_dummy_stmt_trx_handle) { innobase_commit_low(trx); } - - /* Release possible statement level resources */ - innobase_release_stat_resources(trx); trx_mark_sql_stat_end(trx); @@ -797,29 +795,23 @@ innobase_rollback( trx = check_trx_exists(thd); + /* Release possible statement level resources */ + innobase_release_stat_resources(trx); + if (trx->auto_inc_lock) { /* If we had reserved the auto-inc lock for some table in this SQL statement, we release it now */ - srv_conc_enter_innodb(trx); row_unlock_table_autoinc_for_mysql(trx); - srv_conc_exit_innodb(trx); } - srv_conc_enter_innodb(trx); - if (trx_handle != (void*)&innodb_dummy_stmt_trx_handle) { error = trx_rollback_for_mysql(trx); } else { error = trx_rollback_last_sql_stat_for_mysql(trx); } - srv_conc_exit_innodb(trx); - - /* Release possible statement level resources */ - innobase_release_stat_resources(trx); - trx_mark_sql_stat_end(trx); DBUG_RETURN(convert_error_code_to_mysql(error, NULL)); |