From e99463b295bbc683d2f809ead01b5103eb9f2093 Mon Sep 17 00:00:00 2001 From: Jakub Vrana Date: Wed, 8 May 2013 07:55:08 -0700 Subject: [PATCH] Don't drop original view and routine before creating the new one --- adminer/include/editing.inc.php | 17 +++++++-------- adminer/procedure.inc.php | 17 +++++++++------ adminer/trigger.inc.php | 35 +++++++++++++++++++----------- adminer/view.inc.php | 38 ++++++++++++++++++--------------- changes.txt | 1 + 5 files changed, 63 insertions(+), 45 deletions(-) diff --git a/adminer/include/editing.inc.php b/adminer/include/editing.inc.php index 9cb939a6..4d777d2f 100644 --- a/adminer/include/editing.inc.php +++ b/adminer/include/editing.inc.php @@ -340,7 +340,8 @@ function grant($grant, $privileges, $columns, $on) { /** Drop old object and create a new one * @param string drop query * @param string create query -* @param string rollback query +* @param string test query +* @param string drop test query * @param string * @param string * @param string @@ -348,17 +349,15 @@ function grant($grant, $privileges, $columns, $on) { * @param string * @return null redirect in success */ -function drop_create($drop, $create, $rollback, $location, $message_drop, $message_alter, $message_create, $name) { +function drop_create($drop, $create, $test, $drop_test, $location, $message_drop, $message_alter, $message_create, $name) { if ($_POST["drop"]) { query_redirect($drop, $location, $message_drop); } else { - if ($name != "") { - queries($drop); - } - queries_redirect($location, ($name != "" ? $message_alter : $message_create), queries($create)); - if ($name != "") { - queries($rollback); - } + queries_redirect( + $location, + ($name != "" ? $message_alter : $message_create), + ($name == "" || (queries($test) && queries($drop_test) && queries($drop))) && queries($create) + ); } } diff --git a/adminer/procedure.inc.php b/adminer/procedure.inc.php index aa3e8775..9e1d0868 100644 --- a/adminer/procedure.inc.php +++ b/adminer/procedure.inc.php @@ -1,16 +1,17 @@ array()) : routine($PROCEDURE, $routine)); -$row["name"] = $PROCEDURE; +$row = $_POST; +$row["fields"] = (array) $row["fields"]; if ($_POST) { if (!$error && !$_POST["add"] && !$_POST["drop_col"] && !$_POST["up"] && !$_POST["down"]) { + $temp_name = "$row[name]_adminer_" . uniqid(); drop_create( "DROP $routine " . idf_escape($PROCEDURE), - create_routine($routine, $_POST), create_routine($routine, $row), + create_routine($routine, array("name" => $temp_name) + $row), + "DROP $routine " . idf_escape($temp_name), substr(ME, 0, -1), lang('Routine has been dropped.'), lang('Routine has been altered.'), @@ -18,15 +19,19 @@ if ($_POST) { $PROCEDURE ); } - $row = $_POST; - $row["fields"] = (array) $row["fields"]; process_fields($row["fields"]); } page_header(($PROCEDURE != "" ? (isset($_GET["function"]) ? lang('Alter function') : lang('Alter procedure')) . ": " . h($PROCEDURE) : (isset($_GET["function"]) ? lang('Create function') : lang('Create procedure'))), $error); +if (!$_POST && $PROCEDURE != "") { + $row = routine($PROCEDURE, $routine); + $row["name"] = $PROCEDURE; +} + $collations = get_vals("SHOW CHARACTER SET"); sort($collations); +$routine_languages = routine_languages(); ?>
diff --git a/adminer/trigger.inc.php b/adminer/trigger.inc.php index 73826962..4b33b9aa 100644 --- a/adminer/trigger.inc.php +++ b/adminer/trigger.inc.php @@ -1,27 +1,36 @@ $TABLE . "_bi"); +$row = (array) trigger($name) + array("Trigger" => $TABLE . "_bi"); if ($_POST) { if (!$error && in_array($_POST["Timing"], $trigger_options["Timing"]) && in_array($_POST["Event"], $trigger_event) && in_array($_POST["Type"], $trigger_options["Type"])) { + // don't use drop_create() because there may not be more triggers for the same action $on = " ON " . table($TABLE); - drop_create( - "DROP TRIGGER " . idf_escape($_GET["name"]) . ($jush == "pgsql" ? $on : ""), - create_trigger($on, $_POST), - create_trigger($on, $row + array("Type" => reset($trigger_options["Type"]))), - ME . "table=" . urlencode($TABLE), - lang('Trigger has been dropped.'), - lang('Trigger has been altered.'), - lang('Trigger has been created.'), - $_GET["name"] - ); + $drop = "DROP TRIGGER " . idf_escape($name) . ($jush == "pgsql" ? $on : ""); + $location = ME . "table=" . urlencode($TABLE); + if ($_POST["drop"]) { + query_redirect($drop, $location, lang('Trigger has been dropped.')); + } else { + if ($name != "") { + queries($drop); + } + queries_redirect( + $location, + ($name != "" ? lang('Trigger has been altered.') : lang('Trigger has been created.')), + queries(create_trigger($on, $_POST)) + ); + if ($name != "") { + queries(create_trigger($on, $row + array("Type" => reset($trigger_options["Type"])))); + } + } } $row = $_POST; } -page_header(($_GET["name"] != "" ? lang('Alter trigger') . ": " . h($_GET["name"]) : lang('Create trigger')), $error, array("table" => $TABLE)); +page_header(($name != "" ? lang('Alter trigger') . ": " . h($name) : lang('Create trigger')), $error, array("table" => $TABLE)); ?> @@ -34,6 +43,6 @@ page_header(($_GET["name"] != "" ? lang('Alter trigger') . ": " . h($_GET["name"

-> +>

diff --git a/adminer/view.inc.php b/adminer/view.inc.php index 8f300ec4..b7c4d48b 100644 --- a/adminer/view.inc.php +++ b/adminer/view.inc.php @@ -1,26 +1,30 @@ $TABLE), $TABLE); + +if (!$_POST && $TABLE != "") { + $row = view($TABLE); + $row["name"] = $TABLE; +} ?>
diff --git a/changes.txt b/changes.txt index 45b9da15..8a32627f 100644 --- a/changes.txt +++ b/changes.txt @@ -1,6 +1,7 @@ Adminer 3.7.0-dev: Allow more SQL files to be uploaded at the same time Print run time next to executed queries +Don't drop original view and routine before creating the new one Highlight default submit button Disable SQL export when applying functions in select Allow using lang() in plugins (customization)