mirror of
https://github.com/vrana/adminer.git
synced 2025-08-08 07:36:44 +02:00
Use ALTER VIEW and don't use temporary object if changing name
This commit is contained in:
@@ -330,10 +330,12 @@ function grant($grant, $privileges, $columns, $on) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Drop old object and create a new one
|
/** Drop old object and create a new one
|
||||||
* @param string drop query
|
* @param string drop old object query
|
||||||
* @param string create query
|
* @param string create new object query
|
||||||
* @param string test query
|
* @param string drop new object query
|
||||||
* @param string drop test query
|
* @param string create test object query
|
||||||
|
* @param string drop test object query
|
||||||
|
* @param string
|
||||||
* @param string
|
* @param string
|
||||||
* @param string
|
* @param string
|
||||||
* @param string
|
* @param string
|
||||||
@@ -341,14 +343,22 @@ function grant($grant, $privileges, $columns, $on) {
|
|||||||
* @param string
|
* @param string
|
||||||
* @return null redirect in success
|
* @return null redirect in success
|
||||||
*/
|
*/
|
||||||
function drop_create($drop, $create, $test, $drop_test, $location, $message_drop, $message_alter, $message_create, $name) {
|
function drop_create($drop, $create, $drop_created, $test, $drop_test, $location, $message_drop, $message_alter, $message_create, $old_name, $new_name) {
|
||||||
if ($_POST["drop"]) {
|
if ($_POST["drop"]) {
|
||||||
query_redirect($drop, $location, $message_drop);
|
query_redirect($drop, $location, $message_drop);
|
||||||
|
} elseif ($old_name == "") {
|
||||||
|
query_redirect($create, $location, $message_create);
|
||||||
|
} elseif ($old_name != $new_name) {
|
||||||
|
$created = queries($create);
|
||||||
|
queries_redirect($location, $message_alter, $created && queries($drop));
|
||||||
|
if ($created) {
|
||||||
|
queries($drop_created);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
queries_redirect(
|
queries_redirect(
|
||||||
$location,
|
$location,
|
||||||
($name != "" ? $message_alter : $message_create),
|
$message_alter,
|
||||||
($name == "" || (queries($test) && queries($drop_test) && queries($drop))) && queries($create)
|
queries($test) && queries($drop_test) && queries($drop) && queries($create)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -9,13 +9,15 @@ if ($_POST && !process_fields($row["fields"]) && !$error) {
|
|||||||
drop_create(
|
drop_create(
|
||||||
"DROP $routine " . idf_escape($PROCEDURE),
|
"DROP $routine " . idf_escape($PROCEDURE),
|
||||||
create_routine($routine, $row),
|
create_routine($routine, $row),
|
||||||
|
"DROP $routine " . idf_escape($row["name"]),
|
||||||
create_routine($routine, array("name" => $temp_name) + $row),
|
create_routine($routine, array("name" => $temp_name) + $row),
|
||||||
"DROP $routine " . idf_escape($temp_name),
|
"DROP $routine " . idf_escape($temp_name),
|
||||||
substr(ME, 0, -1),
|
substr(ME, 0, -1),
|
||||||
lang('Routine has been dropped.'),
|
lang('Routine has been dropped.'),
|
||||||
lang('Routine has been altered.'),
|
lang('Routine has been altered.'),
|
||||||
lang('Routine has been created.'),
|
lang('Routine has been created.'),
|
||||||
$PROCEDURE
|
$PROCEDURE,
|
||||||
|
$row["name"]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -4,19 +4,28 @@ $row = $_POST;
|
|||||||
|
|
||||||
if ($_POST && !$error) {
|
if ($_POST && !$error) {
|
||||||
$name = trim($row["name"]);
|
$name = trim($row["name"]);
|
||||||
$temp_name = $name . "_adminer_" . uniqid();
|
|
||||||
$as = " AS\n$row[select]";
|
$as = " AS\n$row[select]";
|
||||||
drop_create(
|
$location = ME . "table=" . urlencode($name);
|
||||||
"DROP VIEW " . table($TABLE),
|
$message = lang('View has been altered.');
|
||||||
"CREATE VIEW " . table($name) . $as,
|
|
||||||
"CREATE VIEW " . table($temp_name) . $as,
|
if (!$_POST["drop"] && $TABLE == $name && $jush != "sqlite") {
|
||||||
"DROP VIEW " . table($temp_name),
|
query_redirect(($jush == "mssql" ? "ALTER" : "CREATE OR REPLACE") . " VIEW " . table($name) . $as, $location, $message);
|
||||||
($_POST["drop"] ? substr(ME, 0, -1) : ME . "table=" . urlencode($name)),
|
} else {
|
||||||
lang('View has been dropped.'),
|
$temp_name = $name . "_adminer_" . uniqid();
|
||||||
lang('View has been altered.'),
|
drop_create(
|
||||||
lang('View has been created.'),
|
"DROP VIEW " . table($TABLE),
|
||||||
$TABLE
|
"CREATE VIEW " . table($name) . $as,
|
||||||
);
|
"DROP VIEW " . table($name),
|
||||||
|
"CREATE VIEW " . table($temp_name) . $as,
|
||||||
|
"DROP VIEW " . table($temp_name),
|
||||||
|
($_POST["drop"] ? substr(ME, 0, -1) : $location),
|
||||||
|
lang('View has been dropped.'),
|
||||||
|
$message,
|
||||||
|
lang('View has been created.'),
|
||||||
|
$TABLE,
|
||||||
|
$name
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
page_header(($TABLE != "" ? lang('Alter view') : lang('Create view')), $error, array("table" => $TABLE), $TABLE);
|
page_header(($TABLE != "" ? lang('Alter view') : lang('Create view')), $error, array("table" => $TABLE), $TABLE);
|
||||||
|
Reference in New Issue
Block a user