]> git.joonet.de Git - adminer.git/commitdiff
Fix handling of POINT data type (bug #3582578)
authorJakub Vrana <jakub@vrana.cz>
Fri, 26 Apr 2013 18:42:18 +0000 (11:42 -0700)
committerJakub Vrana <jakub@vrana.cz>
Fri, 26 Apr 2013 18:42:18 +0000 (11:42 -0700)
adminer/include/adminer.inc.php
adminer/include/editing.inc.php
adminer/static/editing.js
changes.txt

index 7b6050f91260f54370fe7ea1e7050f46967e7992..afc2b04980b04636f6c720a4e517613f63170f21 100644 (file)
@@ -414,7 +414,7 @@ username.form['auth[driver]'].onchange();
                                        $cols = array();
                                        foreach ($fields as $name => $field) {
                                                $is_text = ereg('char|text|enum|set', $field["type"]);
-                                               if ((is_numeric($val["val"]) || !ereg('int|float|double|decimal|bit', $field["type"]))
+                                               if ((is_numeric($val["val"]) || !ereg('(^|[^o])int|float|double|decimal|bit', $field["type"]))
                                                        && (!ereg("[\x80-\xFF]", $val["val"]) || $is_text)
                                                ) {
                                                        $name = idf_escape($name);
@@ -661,7 +661,7 @@ username.form['auth[driver]'].onchange();
                                                }
                                                foreach ($row as $key => $val) {
                                                        $row[$key] = ($val !== null
-                                                               ? (ereg('int|float|double|decimal|bit', $fields[$keys[$key]]["type"]) && $val != '' ? $val : q($val)) //! columns looking like functions
+                                                               ? (ereg('(^|[^o])int|float|double|decimal|bit', $fields[$keys[$key]]["type"]) && $val != '' ? $val : q($val)) //! columns looking like functions
                                                                : "NULL"
                                                        );
                                                }
index 76300b6581c5e4966faa1216bc21fb28151d58f7..685d19046d409cd08fde08ecba480a1dccfe7117 100644 (file)
@@ -151,7 +151,7 @@ function edit_type($key, $field, $collations, $foreign_keys = array()) {
 <td><select name="<?php echo $key; ?>[type]" class="type" onfocus="lastType = selectValue(this);" onchange="editingTypeChange(this);"><?php echo optionlist((!$field["type"] || isset($types[$field["type"]]) ? array() : array($field["type"])) + $structured_types + ($foreign_keys ? array(lang('Foreign keys') => $foreign_keys) : array()), $field["type"]); ?></select>
 <td><input name="<?php echo $key; ?>[length]" value="<?php echo h($field["length"]); ?>" size="3" onfocus="editingLengthFocus(this);"><td class="options"><?php //! type="number" with enabled JavaScript
        echo "<select name='$key" . "[collation]'" . (ereg('(char|text|enum|set)$', $field["type"]) ? "" : " class='hidden'") . '><option value="">(' . lang('collation') . ')' . optionlist($collations, $field["collation"]) . '</select>';
-       echo ($unsigned ? "<select name='$key" . "[unsigned]'" . (!$field["type"] || ereg('(int|float|double|decimal)$', $field["type"]) ? "" : " class='hidden'") . '><option>' . optionlist($unsigned, $field["unsigned"]) . '</select>' : '');
+       echo ($unsigned ? "<select name='$key" . "[unsigned]'" . (!$field["type"] || ereg('((^|[^o])int|float|double|decimal)$', $field["type"]) ? "" : " class='hidden'") . '><option>' . optionlist($unsigned, $field["unsigned"]) . '</select>' : '');
        echo (isset($field['on_update']) ? "<select name='$key" . "[on_update]'" . ($field["type"] == "timestamp" ? "" : " class='hidden'") . '>' . optionlist(array("" => "(" . lang('ON UPDATE') . ")", "CURRENT_TIMESTAMP"), $field["on_update"]) . '</select>' : '');
        echo ($foreign_keys ? "<select name='$key" . "[on_delete]'" . (ereg("`", $field["type"]) ? "" : " class='hidden'") . "><option value=''>(" . lang('ON DELETE') . ")" . optionlist(explode("|", $on_actions), $field["on_delete"]) . "</select> " : " "); // space for IE
 }
@@ -174,7 +174,7 @@ function process_type($field, $collate = "COLLATE") {
        global $unsigned;
        return " $field[type]"
                . ($field["length"] != "" ? "(" . process_length($field["length"]) . ")" : "")
-               . (ereg('int|float|double|decimal', $field["type"]) && in_array($field["unsigned"], $unsigned) ? " $field[unsigned]" : "")
+               . (ereg('(^|[^o])int|float|double|decimal', $field["type"]) && in_array($field["unsigned"], $unsigned) ? " $field[unsigned]" : "")
                . (ereg('char|text|enum|set', $field["type"]) && $field["collation"] ? " $collate " . q($field["collation"]) : "")
        ;
 }
index 6b6bba4dc6ea478dbc2ab1f34ec91ed4920b6016..9c5a4fbc650d34bef50d60400379df0d17cfe2c3 100644 (file)
@@ -363,7 +363,7 @@ function editingTypeChange(type) {
                        el.className = (/(char|text|enum|set)$/.test(text) ? '' : 'hidden');
                }
                if (el.name == name + '[unsigned]') {
-                       el.className = (/(int|float|double|decimal)$/.test(text) ? '' : 'hidden');
+                       el.className = (/((^|[^o])int|float|double|decimal)$/.test(text) ? '' : 'hidden');
                }
                if (el.name == name + '[on_update]') {
                        el.className = (text == 'timestamp' ? '' : 'hidden');
index 11ebc0508f78bc50d39af6b2964d387e7f298d4d..b42625ddeb8b93849d70d64bd4cb293be8a0d1a4 100644 (file)
@@ -1,5 +1,6 @@
 Adminer 3.6.5-dev:
 Print run time next to executed queries
+Fix handling of POINT data type (bug #3582578)
 
 Adminer 3.6.4 (released 2013-04-26):
 Display pagination on a fixed position