The branch, QA_3_3 has been updated
via 63aec5b3280c39277c54d0789a1b511fd2f3b7ae (commit)
from 8277c92e25ce1001c6b0479e91698bcf5c02c618 (commit)
- Log -----------------------------------------------------------------
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 1 +
db_operations.php | 33 ++++++++++++++++++++-------------
2 files changed, 21 insertions(+), 13 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index e9c8bef..0ed94ab 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -10,6 +10,7 @@ $HeadURL:
https://phpmyadmin.svn.sourceforge.net/svnroot/phpmyadmin/trunk/phpMyA
- patch #3101490 Default function for TIMESTAMP, thanks to jirand - jirand
- bug #3103853 [js] Double quotes were not escaped in generated js
- bug #3077463 [core] Events were not copied when copying/renaming database
+- bug #1762306 [core] Copy database with view of a view
3.3.8.0 (2010-10-25)
- bug #3059311 [import] BIGINT field type added to table analysis
diff --git a/db_operations.php b/db_operations.php
index 4004a3d..d3e62c2 100644
--- a/db_operations.php
+++ b/db_operations.php
@@ -125,14 +125,15 @@ if (strlen($db) && (! empty($db_rename) || !
empty($db_copy))) {
foreach ($tables_full as $each_table => $tmp) {
- // to be able to rename a db containing views, we
- // first collect in $views all the views we find and we
- // will handle them after the tables
- /**
- * @todo support a view of a view
- */
+ // to be able to rename a db containing views,
+ // first all the views are collected and a stand-in is created
+ // the real views are created after the tables
if (PMA_Table::isView($db, $each_table)) {
$views[] = $each_table;
+ // Create stand-in definition to resolve view dependencies
+ $sql_view_standin = PMA_getTableDefStandIn($db, $each_table, "\n");
+ PMA_DBI_query($sql_view_standin);
+ $GLOBALS['sql_query'] .= "\n" . $sql_view_standin . ';';
continue;
}
@@ -190,13 +191,19 @@ if (strlen($db) && (! empty($db_rename) || !
empty($db_copy))) {
// handle the views
if (! $_error) {
- foreach ($views as $view) {
- if (! PMA_Table::moveCopy($db, $view, $newname, $view,
- 'structure', $move, 'db_copy')) {
- $_error = true;
- break;
- }
- }
+ // temporarily force to add DROP IF EXIST to CREATE VIEW query,
+ // to remove stand-in VIEW that was created earlier
+ $temp_drop_if_exists = $GLOBALS['drop_if_exists'];
+ $GLOBALS['drop_if_exists'] = 'true';
+
+ foreach ($views as $view) {
+ if (! PMA_Table::moveCopy($db, $view, $newname, $view, 'structure', $move,
'db_copy')) {
+ $_error = true;
+ break;
+ }
+ }
+ // restore previous value
+ $GLOBALS['drop_if_exists'] = $temp_drop_if_exists;
}
unset($view, $views);
hooks/post-receive
--
phpMyAdmin