bug 1388048, constraints copied too early when copying a db
This commit is contained in:
@@ -7,8 +7,10 @@ $Source$
|
|||||||
|
|
||||||
2006-07-04 Marc Delisle <lem9@users.sourceforge.net>
|
2006-07-04 Marc Delisle <lem9@users.sourceforge.net>
|
||||||
* db_operations.php, tbl_properties_operations.php,
|
* db_operations.php, tbl_properties_operations.php,
|
||||||
libraries/Table.class.php, libraries/export/sql.php:
|
libraries/Table.class.php, libraries/export/sql.php,
|
||||||
a single-table copy did not copy the constraints
|
tbl_move_copy.php:
|
||||||
|
a single-table copy did not copy the constraints;
|
||||||
|
also bug #1388048, contraints copied too early when copying a db
|
||||||
|
|
||||||
2006-07-04 Sebastian Mendel <cybot_tm@users.sourceforge.net>
|
2006-07-04 Sebastian Mendel <cybot_tm@users.sourceforge.net>
|
||||||
* js\querywindow.js, libraries\footer.inc.php: renamed JavaScript function
|
* js\querywindow.js, libraries\footer.inc.php: renamed JavaScript function
|
||||||
|
@@ -46,6 +46,10 @@ if (isset($db) &&
|
|||||||
PMA_DBI_query($local_query);
|
PMA_DBI_query($local_query);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isset($GLOBALS['add_constraints'])) {
|
||||||
|
$GLOBALS['sql_constraints_query_full_db'] = '';
|
||||||
|
}
|
||||||
|
|
||||||
$tables_full = PMA_DBI_get_tables_full($db);
|
$tables_full = PMA_DBI_get_tables_full($db);
|
||||||
foreach ($tables_full as $table => $tmp) {
|
foreach ($tables_full as $table => $tmp) {
|
||||||
$back = $sql_query;
|
$back = $sql_query;
|
||||||
@@ -70,13 +74,25 @@ if (isset($db) &&
|
|||||||
|
|
||||||
if ($this_what != 'nocopy') {
|
if ($this_what != 'nocopy') {
|
||||||
PMA_Table::moveCopy($db, $table, $newname, $table,
|
PMA_Table::moveCopy($db, $table, $newname, $table,
|
||||||
isset($this_what) ? $this_what : 'data', $move);
|
isset($this_what) ? $this_what : 'data', $move, 'db_copy');
|
||||||
|
if (isset($GLOBALS['add_constraints'])) {
|
||||||
|
$GLOBALS['sql_constraints_query_full_db'] .= $GLOBALS['sql_constraints_query'];
|
||||||
|
unset($GLOBALS['sql_constraints_query']);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql_query = $back . $sql_query;
|
$sql_query = $back . $sql_query;
|
||||||
}
|
}
|
||||||
unset($table);
|
unset($table);
|
||||||
|
|
||||||
|
// now that all tables exist, create all the accumulated constraints
|
||||||
|
if (isset($GLOBALS['add_constraints'])) {
|
||||||
|
PMA_DBI_query($GLOBALS['sql_constraints_query_full_db']);
|
||||||
|
// and prepare to display them
|
||||||
|
$GLOBALS['sql_query'] .= "\n" . $GLOBALS['sql_constraints_query_full_db'];
|
||||||
|
unset($GLOBALS['sql_constraints_query_full_db']);
|
||||||
|
}
|
||||||
|
|
||||||
// Duplicate the bookmarks for this db (done once for each db)
|
// Duplicate the bookmarks for this db (done once for each db)
|
||||||
if ($db != $newname) {
|
if ($db != $newname) {
|
||||||
$get_fields = array('user', 'label', 'query');
|
$get_fields = array('user', 'label', 'query');
|
||||||
|
@@ -505,7 +505,7 @@ class PMA_Table {
|
|||||||
*
|
*
|
||||||
* @author Michal Cihar <michal@cihar.com>
|
* @author Michal Cihar <michal@cihar.com>
|
||||||
*/
|
*/
|
||||||
function moveCopy($source_db, $source_table, $target_db, $target_table, $what, $move)
|
function moveCopy($source_db, $source_table, $target_db, $target_table, $what, $move, $mode)
|
||||||
{
|
{
|
||||||
global $dblist, $err_url;
|
global $dblist, $err_url;
|
||||||
|
|
||||||
@@ -541,13 +541,14 @@ class PMA_Table {
|
|||||||
|
|
||||||
$no_constraints_comments = true;
|
$no_constraints_comments = true;
|
||||||
$GLOBALS['sql_constraints_query'] = '';
|
$GLOBALS['sql_constraints_query'] = '';
|
||||||
|
|
||||||
$sql_structure = PMA_getTableDef($source_db, $source_table, "\n", $err_url);
|
$sql_structure = PMA_getTableDef($source_db, $source_table, "\n", $err_url);
|
||||||
unset($no_constraints_comments);
|
unset($no_constraints_comments);
|
||||||
$parsed_sql = PMA_SQP_parse($sql_structure);
|
$parsed_sql = PMA_SQP_parse($sql_structure);
|
||||||
$analyzed_sql = PMA_SQP_analyze($parsed_sql);
|
$analyzed_sql = PMA_SQP_analyze($parsed_sql);
|
||||||
$i = 0;
|
$i = 0;
|
||||||
if (empty($analyzed_sql[0]['create_table_fields'])) {
|
if (empty($analyzed_sql[0]['create_table_fields'])) {
|
||||||
// lem9: this is not a CREATE TABLE, so find the first VIEW
|
// this is not a CREATE TABLE, so find the first VIEW
|
||||||
$target_for_view = PMA_backquote($target_db);
|
$target_for_view = PMA_backquote($target_db);
|
||||||
while (true) {
|
while (true) {
|
||||||
if ($parsed_sql[$i]['type'] == 'alpha_reservedWord' && $parsed_sql[$i]['data'] == 'VIEW') {
|
if ($parsed_sql[$i]['type'] == 'alpha_reservedWord' && $parsed_sql[$i]['data'] == 'VIEW') {
|
||||||
@@ -597,13 +598,17 @@ class PMA_Table {
|
|||||||
$GLOBALS['sql_query'] .= "\n" . $sql_structure . ';';
|
$GLOBALS['sql_query'] .= "\n" . $sql_structure . ';';
|
||||||
|
|
||||||
if (($move || isset($GLOBALS['add_constraints']))
|
if (($move || isset($GLOBALS['add_constraints']))
|
||||||
&& isset($GLOBALS['sql_constraints_query'])) {
|
&& !empty($GLOBALS['sql_constraints_query'])) {
|
||||||
$parsed_sql = PMA_SQP_parse($GLOBALS['sql_constraints_query']);
|
$parsed_sql = PMA_SQP_parse($GLOBALS['sql_constraints_query']);
|
||||||
$i = 0;
|
$i = 0;
|
||||||
|
|
||||||
// find the first quote_backtick, it must be the source table name
|
// find the first quote_backtick, it must be the source table name
|
||||||
while ($parsed_sql[$i]['type'] != 'quote_backtick') {
|
while ($parsed_sql[$i]['type'] != 'quote_backtick') {
|
||||||
$i++;
|
$i++;
|
||||||
|
// maybe someday we should guard against going over limit
|
||||||
|
//if ($i == $parsed_sql['len']) {
|
||||||
|
// break;
|
||||||
|
//}
|
||||||
}
|
}
|
||||||
|
|
||||||
// replace it by the target table name, no need to PMA_backquote()
|
// replace it by the target table name, no need to PMA_backquote()
|
||||||
@@ -623,13 +628,16 @@ class PMA_Table {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Generate query back
|
// Generate query back
|
||||||
$GLOBALS['sql_constraints_query'] = PMA_SQP_formatHtml($parsed_sql,
|
$GLOBALS['sql_constraints_query'] = PMA_SQP_formatHtml($parsed_sql,
|
||||||
'query_only');
|
'query_only');
|
||||||
PMA_DBI_query($GLOBALS['sql_constraints_query']);
|
if ($mode == 'one_table') {
|
||||||
|
PMA_DBI_query($GLOBALS['sql_constraints_query']);
|
||||||
|
}
|
||||||
$GLOBALS['sql_query'] .= "\n" . $GLOBALS['sql_constraints_query'];
|
$GLOBALS['sql_query'] .= "\n" . $GLOBALS['sql_constraints_query'];
|
||||||
unset($GLOBALS['sql_constraints_query']);
|
if ($mode == 'one_table') {
|
||||||
|
unset($GLOBALS['sql_constraints_query']);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
@@ -30,7 +30,7 @@ if (isset($new_name) && trim($new_name) != '') {
|
|||||||
if ($db == $target_db && $table == $new_name) {
|
if ($db == $target_db && $table == $new_name) {
|
||||||
$message = (isset($submit_move) ? $strMoveTableSameNames : $strCopyTableSameNames);
|
$message = (isset($submit_move) ? $strMoveTableSameNames : $strCopyTableSameNames);
|
||||||
} else {
|
} else {
|
||||||
PMA_Table::moveCopy($db, $table, $target_db, $new_name, $what, isset($submit_move));
|
PMA_Table::moveCopy($db, $table, $target_db, $new_name, $what, isset($submit_move), 'one_table');
|
||||||
$js_to_run = 'functions.js';
|
$js_to_run = 'functions.js';
|
||||||
$message = (isset($submit_move) ? $strMoveTableOK : $strCopyTableOK);
|
$message = (isset($submit_move) ? $strMoveTableOK : $strCopyTableOK);
|
||||||
$message = sprintf($message, htmlspecialchars($table), htmlspecialchars($new_name));
|
$message = sprintf($message, htmlspecialchars($table), htmlspecialchars($new_name));
|
||||||
|
Reference in New Issue
Block a user