Print ALTER command instead of running it in export
git-svn-id: https://adminer.svn.sourceforge.net/svnroot/adminer/trunk@1042 7c3ca157-0c34-0410-bff1-cbf682f78f5c
This commit is contained in:
parent
0a2d81d75a
commit
d74159b68f
|
@ -46,7 +46,7 @@ SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
|
||||||
dump(($style == "CREATE+ALTER" ? preg_replace('~^CREATE DATABASE ~', '\\0IF NOT EXISTS ', $create) : $create) . ";\n");
|
dump(($style == "CREATE+ALTER" ? preg_replace('~^CREATE DATABASE ~', '\\0IF NOT EXISTS ', $create) : $create) . ";\n");
|
||||||
}
|
}
|
||||||
if ($style && $_POST["format"] == "sql") {
|
if ($style && $_POST["format"] == "sql") {
|
||||||
dump("USE " . idf_escape($db) . ";\n\n");
|
dump(($style == "CREATE+ALTER" ? "SET @adminer_alter = '';\n" : "") . "USE " . idf_escape($db) . ";\n\n");
|
||||||
$out = "";
|
$out = "";
|
||||||
if ($dbh->server_info >= 5) {
|
if ($dbh->server_info >= 5) {
|
||||||
foreach (array("FUNCTION", "PROCEDURE") as $routine) {
|
foreach (array("FUNCTION", "PROCEDURE") as $routine) {
|
||||||
|
@ -108,7 +108,7 @@ SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
|
||||||
// drop old tables
|
// drop old tables
|
||||||
$query = "SELECT TABLE_NAME, ENGINE, TABLE_COLLATION, TABLE_COMMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE()";
|
$query = "SELECT TABLE_NAME, ENGINE, TABLE_COLLATION, TABLE_COMMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE()";
|
||||||
dump("DELIMITER ;;
|
dump("DELIMITER ;;
|
||||||
CREATE PROCEDURE adminer_drop () BEGIN
|
CREATE PROCEDURE adminer_alter (INOUT alter_command text) BEGIN
|
||||||
DECLARE _table_name, _engine, _table_collation varchar(64);
|
DECLARE _table_name, _engine, _table_collation varchar(64);
|
||||||
DECLARE _table_comment varchar(64);
|
DECLARE _table_comment varchar(64);
|
||||||
DECLARE done bool DEFAULT 0;
|
DECLARE done bool DEFAULT 0;
|
||||||
|
@ -130,20 +130,20 @@ while ($row = $result->fetch_assoc()) {
|
||||||
}
|
}
|
||||||
dump("
|
dump("
|
||||||
ELSE
|
ELSE
|
||||||
SET @alter_table = CONCAT('DROP TABLE `', REPLACE(_table_name, '`', '``'), '`');
|
SET alter_command = CONCAT(alter_command, 'DROP TABLE `', REPLACE(_table_name, '`', '``'), '`;\\n');
|
||||||
PREPARE alter_command FROM @alter_table;
|
|
||||||
EXECUTE alter_command; -- returns can't return a result set in the given context with MySQL extension
|
|
||||||
DROP PREPARE alter_command;
|
|
||||||
END CASE;
|
END CASE;
|
||||||
END IF;
|
END IF;
|
||||||
UNTIL done END REPEAT;
|
UNTIL done END REPEAT;
|
||||||
CLOSE tables;
|
CLOSE tables;
|
||||||
END;;
|
END;;
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
CALL adminer_drop;
|
CALL adminer_alter(@adminer_alter);
|
||||||
DROP PROCEDURE adminer_drop;
|
DROP PROCEDURE adminer_alter;
|
||||||
");
|
");
|
||||||
}
|
}
|
||||||
|
if (in_array("CREATE+ALTER", array($style, $_POST["table_style"])) && $_POST["format"] == "sql") {
|
||||||
|
dump("SELECT @adminer_alter;\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
dump();
|
dump();
|
||||||
|
|
|
@ -19,7 +19,7 @@ function dump_table($table, $style, $is_view = false) {
|
||||||
// create procedure which iterates over original columns and adds new and removes old
|
// create procedure which iterates over original columns and adds new and removes old
|
||||||
$query = "SELECT COLUMN_NAME, COLUMN_DEFAULT, IS_NULLABLE, COLLATION_NAME, COLUMN_TYPE, EXTRA, COLUMN_COMMENT FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = " . $dbh->quote($table) . " ORDER BY ORDINAL_POSITION";
|
$query = "SELECT COLUMN_NAME, COLUMN_DEFAULT, IS_NULLABLE, COLLATION_NAME, COLUMN_TYPE, EXTRA, COLUMN_COMMENT FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = " . $dbh->quote($table) . " ORDER BY ORDINAL_POSITION";
|
||||||
dump("DELIMITER ;;
|
dump("DELIMITER ;;
|
||||||
CREATE PROCEDURE adminer_alter () BEGIN
|
CREATE PROCEDURE adminer_alter (INOUT alter_command text) BEGIN
|
||||||
DECLARE _column_name, _collation_name, _column_type, after varchar(64) DEFAULT '';
|
DECLARE _column_name, _collation_name, _column_type, after varchar(64) DEFAULT '';
|
||||||
DECLARE _column_default longtext;
|
DECLARE _column_default longtext;
|
||||||
DECLARE _is_nullable char(3);
|
DECLARE _is_nullable char(3);
|
||||||
|
@ -76,14 +76,11 @@ CREATE PROCEDURE adminer_alter () BEGIN
|
||||||
UNTIL done END REPEAT;
|
UNTIL done END REPEAT;
|
||||||
CLOSE columns;
|
CLOSE columns;
|
||||||
IF @alter_table != '' OR add_columns != '' THEN
|
IF @alter_table != '' OR add_columns != '' THEN
|
||||||
SET @alter_table = CONCAT('ALTER TABLE " . idf_escape($table) . "', SUBSTR(CONCAT(add_columns, @alter_table), 2));
|
SET alter_command = CONCAT(alter_command, 'ALTER TABLE " . idf_escape($table) . "', SUBSTR(CONCAT(add_columns, @alter_table), 2), ';\\n');
|
||||||
PREPARE alter_command FROM @alter_table;
|
|
||||||
EXECUTE alter_command;
|
|
||||||
DROP PREPARE alter_command;
|
|
||||||
END IF;
|
END IF;
|
||||||
END;;
|
END;;
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
CALL adminer_alter;
|
CALL adminer_alter(@adminer_alter);
|
||||||
DROP PROCEDURE adminer_alter;
|
DROP PROCEDURE adminer_alter;
|
||||||
|
|
||||||
");
|
");
|
||||||
|
|
|
@ -4,6 +4,7 @@ Execute SQL file stored on server disk
|
||||||
Compress export and import
|
Compress export and import
|
||||||
Display column comments in table overview
|
Display column comments in table overview
|
||||||
Respect max_allowed_packet in CSV import
|
Respect max_allowed_packet in CSV import
|
||||||
|
Print ALTER command instead of running it in export
|
||||||
Click on row selects it
|
Click on row selects it
|
||||||
Fix Editor date format
|
Fix Editor date format
|
||||||
Fix long SQL query crash (bug #2839231)
|
Fix long SQL query crash (bug #2839231)
|
||||||
|
|
Loading…
Reference in a new issue