Separate $inout
git-svn-id: https://adminer.svn.sourceforge.net/svnroot/adminer/trunk@192 7c3ca157-0c34-0410-bff1-cbf682f78f5c
This commit is contained in:
parent
9363b9211f
commit
420ac01e3f
|
@ -5,10 +5,10 @@ $routine = routine($_GET["call"], (isset($_GET["callf"]) ? "FUNCTION" : "PROCEDU
|
||||||
$in = array();
|
$in = array();
|
||||||
$out = array();
|
$out = array();
|
||||||
foreach ($routine["fields"] as $i => $field) {
|
foreach ($routine["fields"] as $i => $field) {
|
||||||
if (strcasecmp("out", substr($field["inout"], -3)) == 0) {
|
if (substr($field["inout"], -3) == "OUT") {
|
||||||
$out[$i] = "@" . idf_escape($field["field"]) . " AS " . idf_escape($field["field"]);
|
$out[$i] = "@" . idf_escape($field["field"]) . " AS " . idf_escape($field["field"]);
|
||||||
}
|
}
|
||||||
if (!$match[1] || strcasecmp("in", substr($field["inout"], 0, 2)) == 0) {
|
if (!$field["inout"] || substr($field["inout"], 0, 2) == "IN") {
|
||||||
$in[] = $i;
|
$in[] = $i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -122,7 +122,7 @@ function normalize_enum($match) {
|
||||||
|
|
||||||
function routine($name, $type) {
|
function routine($name, $type) {
|
||||||
global $mysql, $enum_length;
|
global $mysql, $enum_length;
|
||||||
$pattern = "\\s*(IN|OUT|INOUT)?\\s*(?:`((?:[^`]+|``)*)`\\s*|\\b(\\S+)\\s+)([a-z]+)(?:\\s*\\(((?:[^'\")]*|$enum_length)+)\\))?\\s*(zerofill\\s+)?(unsigned(?:\\s+zerofill)?)?";
|
$pattern = "\\s*(" . implode("|", $inout) . ")?\\s*(?:`((?:[^`]+|``)*)`\\s*|\\b(\\S+)\\s+)([a-z]+)(?:\\s*\\(((?:[^'\")]*|$enum_length)+)\\))?\\s*(zerofill\\s+)?(unsigned(?:\\s+zerofill)?)?";
|
||||||
$create = $mysql->result($mysql->query("SHOW CREATE $type " . idf_escape($name)), 2);
|
$create = $mysql->result($mysql->query("SHOW CREATE $type " . idf_escape($name)), 2);
|
||||||
preg_match("~\\($pattern(?:\\s*,$pattern)*~is", $create, $match);
|
preg_match("~\\($pattern(?:\\s*,$pattern)*~is", $create, $match);
|
||||||
$params = array();
|
$params = array();
|
||||||
|
@ -134,7 +134,7 @@ function routine($name, $type) {
|
||||||
"length" => preg_replace_callback("~$enum_length~s", 'normalize_enum', $match[5]),
|
"length" => preg_replace_callback("~$enum_length~s", 'normalize_enum', $match[5]),
|
||||||
"unsigned" => strtolower(preg_replace('~\\s+~', ' ', trim("$match[7] $match[6]"))),
|
"unsigned" => strtolower(preg_replace('~\\s+~', ' ', trim("$match[7] $match[6]"))),
|
||||||
"null" => true,
|
"null" => true,
|
||||||
"inout" => $match[1],
|
"inout" => strtoupper($match[1]),
|
||||||
);
|
);
|
||||||
$params[$i] = $field;
|
$params[$i] = $field;
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,6 +30,7 @@ if (isset($_GET["dump"])) {
|
||||||
);
|
);
|
||||||
$unsigned = array("", "unsigned", "zerofill", "unsigned zerofill");
|
$unsigned = array("", "unsigned", "zerofill", "unsigned zerofill");
|
||||||
$enum_length = '\'(?:\'\'|[^\'\\\\]+|\\\\.)*\'|"(?:""|[^"\\\\]+|\\\\.)*"';
|
$enum_length = '\'(?:\'\'|[^\'\\\\]+|\\\\.)*\'|"(?:""|[^"\\\\]+|\\\\.)*"';
|
||||||
|
$inout = array("IN", "OUT", "INOUT");
|
||||||
|
|
||||||
if (isset($_GET["table"])) {
|
if (isset($_GET["table"])) {
|
||||||
include "./table.inc.php";
|
include "./table.inc.php";
|
||||||
|
|
Loading…
Reference in a new issue