From 5273b4e5f5944688b1663454748233ce856719e8 Mon Sep 17 00:00:00 2001
From: "heikki@hundin.mysql.fi" <>
Date: Fri, 13 Aug 2004 17:27:58 +0300
Subject: [PATCH] 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 | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

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
@@ -2630,6 +2630,30 @@ row_rename_table_for_mysql(
 				ut_print_name(stderr, new_name);
 				fputs("\n"
      "InnoDB: has or 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;
+			}
+		} 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);