$out = "";
if ($_POST["routines"]) {
- foreach (array("FUNCTION", "PROCEDURE") as $routine) {
- foreach (get_rows("SHOW $routine STATUS WHERE Db = " . q($db), null, "-- ") as $row) {
- $create = remove_definer($connection->result("SHOW CREATE $routine " . idf_escape($row["Name"]), 2));
- set_utf8mb4($create);
- $out .= ($style != 'DROP+CREATE' ? "DROP $routine IF EXISTS " . idf_escape($row["Name"]) . ";;\n" : "") . "$create;;\n\n";
- }
+ foreach (routines() as $row) {
+ $name = $row["ROUTINE_NAME"];
+ $routine = $row["ROUTINE_TYPE"];
+ $create = create_routine($routine, array("name" => $name) + routine($row["SPECIFIC_NAME"], $routine));
+ set_utf8mb4($create);
+ $out .= ($style != 'DROP+CREATE' ? "DROP $routine IF EXISTS " . idf_escape($name) . ";;\n" : "") . "$create;\n\n";
}
}
}
}
- if ($out) {
- echo "DELIMITER ;;\n\n$out" . "DELIMITER ;\n\n";
- }
+ echo ($out && $jush == 'sql' ? "DELIMITER ;;\n\n$out" . "DELIMITER ;\n\n" : $out);
}
if ($_POST["table_style"] || $_POST["data_style"]) {
$set[] = (preg_match("~^($inout)\$~", $field["inout"]) ? "$field[inout] " : "") . idf_escape($field["field"]) . process_type($field, "CHARACTER SET");
}
}
- $definition = rtrim("\n$row[definition]", ";");
+ $definition = rtrim($row["definition"], ";");
return "CREATE $routine "
. idf_escape(trim($row["name"]))
. " (" . implode(", ", $set) . ")"
- . (isset($_GET["function"]) ? " RETURNS" . process_type($row["returns"], "CHARACTER SET") : "")
+ . ($routine == "FUNCTION" ? " RETURNS" . process_type($row["returns"], "CHARACTER SET") : "")
. ($row["language"] ? " LANGUAGE $row[language]" : "")
- . ($jush == "pgsql" ? " AS " . q($definition) : "$definition;")
+ . ($jush == "pgsql" ? " AS " . q($definition) : "\n$definition;")
;
}
MySQL: Don't offer empty enum value in edit
PostgreSQL: Link user defined types
PostgreSQL: Constraint enum values in editing (bug #270)
+PostgreSQL: Export functions
SQLite: Show all supported pragmas in Variables
MS SQL: Allow altering table in non-default schema (bug #405)
MS SQL: Fix default values (bug #732, bug #733)