diff --git a/ChangeLog b/ChangeLog index 83596b6e87..636537ef68 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9,6 +9,7 @@ phpMyAdmin - ChangeLog - bug #4680 Number of favorite table are not configurable in setup - bug #4681 'Central columns table' field in setup does not have a description - bug #4318 Default connection collation and sorting +- bug #4683 Relational data is not properly updated on table rename --- Older ChangeLogs can be found on our project website --- http://www.phpmyadmin.net/old-stuff/ChangeLogs/ diff --git a/libraries/relation.lib.php b/libraries/relation.lib.php index 328d0bba61..8d1023e339 100644 --- a/libraries/relation.lib.php +++ b/libraries/relation.lib.php @@ -1613,21 +1613,57 @@ function PMA_REL_renameTable($source_db, $target_db, $source_table, $target_tabl ); } - /** - * @todo Can't get moving PDFs the right way. The page numbers - * always get screwed up independently from duplication because the - * numbers do not seem to be stored on a per-database basis. Would - * the author of pdf support please have a look at it? - */ - if ($GLOBALS['cfgRelation']['pdfwork']) { + if ($source_db == $target_db) { + // rename within the database can be handled + PMA_REL_renameSingleTable( + 'table_coords', + $source_db, $target_db, + $source_table, $target_table, + 'db_name', 'table_name' + ); + } else { + // if the table is moved out of the database we can no loger keep the + // record for table coordinate + $remove_query = "DELETE FROM " + . PMA_Util::backquote($GLOBALS['cfgRelation']['db']) . "." + . PMA_Util::backquote($GLOBALS['cfgRelation']['table_coords']) + . " WHERE db_name = '" . PMA_Util::sqlAddSlashes($source_db) . "'" + . " AND table_name = '" . PMA_Util::sqlAddSlashes($source_table) + . "'"; + PMA_queryAsControlUser($remove_query); + } + } + + if ($GLOBALS['cfgRelation']['uiprefswork']) { PMA_REL_renameSingleTable( - 'table_coords', + 'table_uiprefs', $source_db, $target_db, $source_table, $target_table, 'db_name', 'table_name' ); } + + if ($GLOBALS['cfgRelation']['navwork']) { + // update hidden items inside table + PMA_REL_renameSingleTable( + 'navigationhiding', + $source_db, $target_db, + $source_table, $target_table, + 'db_name', 'table_name' + ); + + // update data for hidden table + $query = "UPDATE " + . PMA_Util::backquote($GLOBALS['cfgRelation']['db']) . "." + . PMA_Util::backquote($GLOBALS['cfgRelation']['navigationhiding']) + . " SET db_name = '" . PMA_Util::sqlAddSlashes($target_db) . "'," + . " item_name = '" . PMA_Util::sqlAddSlashes($target_table) . "'" + . " WHERE db_name = '" . PMA_Util::sqlAddSlashes($source_db) . "'" + . " AND item_name = '" . PMA_Util::sqlAddSlashes($source_table) . "'" + . " AND item_type = 'table'"; + PMA_queryAsControlUser($query); + } } /**