diff options
author | unknown <heikki@hundin.mysql.fi> | 2004-08-13 17:27:58 +0300 |
---|---|---|
committer | unknown <heikki@hundin.mysql.fi> | 2004-08-13 17:27:58 +0300 |
commit | 6ca65795870ae18c8c01681f152cbcf98d48478c (patch) | |
tree | 1d757e4c8cdea455e1c1ef6ddf38df5209ea68ed /innobase | |
parent | 621506815f343abc29ab1b8a89adc757f6e32bf9 (diff) | |
download | mariadb-git-6ca65795870ae18c8c01681f152cbcf98d48478c.tar.gz |
row0mysql.c:
Fix bug: if we RENAME a table, InnoDB forgot to load the foreign key constraints that reference the new table name, and forgot to check that they are compatible with the table
innobase/row/row0mysql.c:
Fix bug: if we RENAME a table, InnoDB forgot to load the foreign key constraints that reference the new table name, and forgot to check that they are compatible with the table
Diffstat (limited to 'innobase')
-rw-r--r-- | innobase/row/row0mysql.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/innobase/row/row0mysql.c b/innobase/row/row0mysql.c index 98ab1a1e754..70743e3a753 100644 --- a/innobase/row/row0mysql.c +++ b/innobase/row/row0mysql.c @@ -2641,6 +2641,30 @@ row_rename_table_for_mysql( NULL); trx->error_state = DB_SUCCESS; } + } else { + err = dict_load_foreigns(new_name); + + if (err != DB_SUCCESS) { + + ut_print_timestamp(stderr); + + fputs( + " InnoDB: Error: in RENAME TABLE table ", + stderr); + ut_print_name(stderr, new_name); + fputs("\n" + "InnoDB: is referenced in foreign key constraints\n" + "InnoDB: which are not compatible with the new table definition.\n", + stderr); + + ut_a(dict_table_rename_in_cache(table, + old_name, FALSE)); + + trx->error_state = DB_SUCCESS; + trx_general_rollback_for_mysql(trx, FALSE, + NULL); + trx->error_state = DB_SUCCESS; + } } } funct_exit: |