[Phpmyadmin-git] [SCM] phpMyAdmin branch, master, updated. RELEASE_3_3_8-10858-g65fcab4

Dieter Adriaenssens ruleant at users.sourceforge.net
Sun Nov 14 21:13:05 CET 2010


The branch, master has been updated
       via  65fcab4122a8feafc07427d2567b919c48b2fa77 (commit)
       via  63aec5b3280c39277c54d0789a1b511fd2f3b7ae (commit)
      from  57c5abf579d7ee37eeea5c44c2c62360bd5fe529 (commit)


- Log -----------------------------------------------------------------
commit 65fcab4122a8feafc07427d2567b919c48b2fa77
Merge: 57c5abf579d7ee37eeea5c44c2c62360bd5fe529 63aec5b3280c39277c54d0789a1b511fd2f3b7ae
Author: Dieter Adriaenssens <ruleant at users.sourceforge.net>
Date:   Sun Nov 14 21:08:28 2010 +0100

    Merge branch 'QA_3_3'

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog         |    1 +
 db_operations.php |   33 ++++++++++++++++++++-------------
 2 files changed, 21 insertions(+), 13 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index d3bd70e..92a3a50 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -124,6 +124,7 @@
 - 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 b5d7f5a..c9aa565 100644
--- a/db_operations.php
+++ b/db_operations.php
@@ -128,14 +128,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;
             }
 
@@ -193,13 +194,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




More information about the Git mailing list