mirror of
https://github.com/MariaDB/server.git
synced 2026-05-16 03:47:17 +02:00
Many files:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock sql/ha_innodb.cc: Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock innobase/dict/dict0crea.c: Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock innobase/dict/dict0dict.c: Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock innobase/include/log0recv.h: Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock innobase/include/row0mysql.h: Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock innobase/include/srv0srv.h: Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock innobase/include/trx0trx.h: Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock innobase/log/log0recv.c: Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock innobase/os/os0sync.c: Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock innobase/os/os0thread.c: Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock innobase/row/row0ins.c: Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock innobase/row/row0mysql.c: Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock innobase/row/row0purge.c: Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock innobase/row/row0undo.c: Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock innobase/row/row0upd.c: Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock innobase/srv/srv0srv.c: Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock innobase/srv/srv0start.c: Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock innobase/trx/trx0roll.c: Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock innobase/trx/trx0trx.c: Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
This commit is contained in:
parent
23f4865b16
commit
444d8207d9
19 changed files with 489 additions and 195 deletions
|
|
@ -24,6 +24,7 @@ Created 1/8/1997 Heikki Tuuri
|
|||
#include "row0row.h"
|
||||
#include "row0uins.h"
|
||||
#include "row0umod.h"
|
||||
#include "row0mysql.h"
|
||||
#include "srv0srv.h"
|
||||
|
||||
/* How to undo row operations?
|
||||
|
|
@ -204,6 +205,7 @@ row_undo(
|
|||
ulint err;
|
||||
trx_t* trx;
|
||||
dulint roll_ptr;
|
||||
ibool froze_data_dict = FALSE;
|
||||
|
||||
ut_ad(node && thr);
|
||||
|
||||
|
|
@ -256,13 +258,13 @@ row_undo(
|
|||
/* Prevent DROP TABLE etc. while we are rolling back this row.
|
||||
If we are doing a TABLE CREATE or some other dictionary operation,
|
||||
then we already have dict_operation_lock locked in x-mode. Do not
|
||||
try to lock again in s-mode, because that would cause a hang.
|
||||
|
||||
TODO: keep track when trx exactly has the latch locked!!!
|
||||
TODO: trx->dict_operation tells it only in some cases!!! */
|
||||
|
||||
if (!trx->dict_operation) {
|
||||
rw_lock_s_lock(&dict_operation_lock);
|
||||
try to lock again in s-mode, because that would cause a hang. */
|
||||
|
||||
if (trx->dict_operation_lock_mode == 0) {
|
||||
|
||||
row_mysql_freeze_data_dictionary(trx);
|
||||
|
||||
froze_data_dict = TRUE;
|
||||
}
|
||||
|
||||
if (node->state == UNDO_NODE_INSERT) {
|
||||
|
|
@ -275,9 +277,9 @@ row_undo(
|
|||
err = row_undo_mod(node, thr);
|
||||
}
|
||||
|
||||
if (!trx->dict_operation) {
|
||||
if (froze_data_dict) {
|
||||
|
||||
rw_lock_s_unlock(&dict_operation_lock);
|
||||
row_mysql_unfreeze_data_dictionary(trx);
|
||||
}
|
||||
|
||||
/* Do some cleanup */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue