PostgreSQL: Support creating array columns
Also allow () in length and IN.
This commit is contained in:
parent
9ffca2f6e6
commit
2e245412dc
|
@ -271,12 +271,11 @@ AND a.attnum > 0
|
||||||
ORDER BY a.attnum"
|
ORDER BY a.attnum"
|
||||||
) as $row) {
|
) as $row) {
|
||||||
//! collation, primary
|
//! collation, primary
|
||||||
$type = $row["full_type"];
|
preg_match('~([^([]+)(\((.*)\))?((\[[0-9]*])*)$~', $row["full_type"], $match);
|
||||||
if (preg_match('~(.+)\\((.*)\\)$~', $row["full_type"], $match)) {
|
list(, $type, $length, $row["length"], $array) = $match;
|
||||||
list(, $type, $row["length"]) = $match;
|
$row["length"] .= $array;
|
||||||
}
|
|
||||||
$row["type"] = ($aliases[$type] ? $aliases[$type] : $type);
|
$row["type"] = ($aliases[$type] ? $aliases[$type] : $type);
|
||||||
$row["full_type"] = $row["type"] . ($row["length"] ? "($row[length])" : "");
|
$row["full_type"] = $row["type"] . $length . $array;
|
||||||
$row["null"] = !$row["attnotnull"];
|
$row["null"] = !$row["attnotnull"];
|
||||||
$row["auto_increment"] = preg_match('~^nextval\\(~i', $row["default"]);
|
$row["auto_increment"] = preg_match('~^nextval\\(~i', $row["default"]);
|
||||||
$row["privileges"] = array("insert" => 1, "select" => 1, "update" => 1);
|
$row["privileges"] = array("insert" => 1, "select" => 1, "update" => 1);
|
||||||
|
|
|
@ -403,7 +403,7 @@ username.form['auth[driver]'].onchange();
|
||||||
$cond = " $val[op]";
|
$cond = " $val[op]";
|
||||||
if (preg_match('~IN$~', $val["op"])) {
|
if (preg_match('~IN$~', $val["op"])) {
|
||||||
$in = process_length($val["val"]);
|
$in = process_length($val["val"]);
|
||||||
$cond .= " (" . ($in != "" ? $in : "NULL") . ")";
|
$cond .= " " . ($in != "" ? $in : "(NULL)");
|
||||||
} elseif ($val["op"] == "SQL") {
|
} elseif ($val["op"] == "SQL") {
|
||||||
$cond = " $val[val]"; // SQL injection
|
$cond = " $val[val]"; // SQL injection
|
||||||
} elseif ($val["op"] == "LIKE %%") {
|
} elseif ($val["op"] == "LIKE %%") {
|
||||||
|
|
|
@ -153,7 +153,10 @@ function edit_type($key, $field, $collations, $foreign_keys = array()) {
|
||||||
*/
|
*/
|
||||||
function process_length($length) {
|
function process_length($length) {
|
||||||
global $enum_length;
|
global $enum_length;
|
||||||
return (preg_match("~^\\s*$enum_length(?:\\s*,\\s*$enum_length)*+\\s*\$~", $length) && preg_match_all("~$enum_length~", $length, $matches) ? implode(",", $matches[0]) : preg_replace('~[^0-9,+-]~', '', $length));
|
return (preg_match("~^\\s*\\(?\\s*$enum_length(?:\\s*,\\s*$enum_length)*+\\s*\\)?\\s*\$~", $length) && preg_match_all("~$enum_length~", $length, $matches)
|
||||||
|
? "(" . implode(",", $matches[0]) . ")"
|
||||||
|
: preg_replace('~[^-0-9,+()[\]]~', '', preg_replace('~^[0-9]+~', '(\1)', $length))
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Create SQL string from field type
|
/** Create SQL string from field type
|
||||||
|
@ -164,7 +167,7 @@ function process_length($length) {
|
||||||
function process_type($field, $collate = "COLLATE") {
|
function process_type($field, $collate = "COLLATE") {
|
||||||
global $unsigned;
|
global $unsigned;
|
||||||
return " $field[type]"
|
return " $field[type]"
|
||||||
. ($field["length"] != "" ? "(" . process_length($field["length"]) . ")" : "")
|
. process_length($field["length"])
|
||||||
. (preg_match('~(^|[^o])int|float|double|decimal~', $field["type"]) && in_array($field["unsigned"], $unsigned) ? " $field[unsigned]" : "")
|
. (preg_match('~(^|[^o])int|float|double|decimal~', $field["type"]) && in_array($field["unsigned"], $unsigned) ? " $field[unsigned]" : "")
|
||||||
. (preg_match('~char|text|enum|set~', $field["type"]) && $field["collation"] ? " $collate " . q($field["collation"]) : "")
|
. (preg_match('~char|text|enum|set~', $field["type"]) && $field["collation"] ? " $collate " . q($field["collation"]) : "")
|
||||||
;
|
;
|
||||||
|
|
|
@ -15,6 +15,7 @@ Don't append newlines to uploaded files, bug since Adminer 3.7.0
|
||||||
Don't display SQL edit form on Ctrl+click on the select query, introduced in Adminer 3.6.4
|
Don't display SQL edit form on Ctrl+click on the select query, introduced in Adminer 3.6.4
|
||||||
Use MD5 for editing long keys only in supported drivers, bug since Adminer 3.6.4
|
Use MD5 for editing long keys only in supported drivers, bug since Adminer 3.6.4
|
||||||
PostgreSQL: Fix handling of nextval() default values
|
PostgreSQL: Fix handling of nextval() default values
|
||||||
|
PostgreSQL: Support creating array columns
|
||||||
|
|
||||||
Adminer 3.7.1 (released 2013-06-29):
|
Adminer 3.7.1 (released 2013-06-29):
|
||||||
Increase click target for checkboxes
|
Increase click target for checkboxes
|
||||||
|
|
1
todo.txt
1
todo.txt
|
@ -28,7 +28,6 @@ Delimiter in export and SQL command
|
||||||
Backward keys in Editor
|
Backward keys in Editor
|
||||||
|
|
||||||
PostgreSQL:
|
PostgreSQL:
|
||||||
Array data types
|
|
||||||
Display number of schemas in databases overview
|
Display number of schemas in databases overview
|
||||||
Users - SELECT * FROM pg_user
|
Users - SELECT * FROM pg_user
|
||||||
ORDER BY COUNT(*)
|
ORDER BY COUNT(*)
|
||||||
|
|
Loading…
Reference in a new issue