]> git.joonet.de Git - adminer.git/commitdiff
MariaDB: Don't display NULL as default value
authorJakub Vrana <jakub@vrana.cz>
Wed, 12 Mar 2025 07:51:25 +0000 (08:51 +0100)
committerJakub Vrana <jakub@vrana.cz>
Wed, 12 Mar 2025 07:51:25 +0000 (08:51 +0100)
adminer/drivers/mysql.inc.php
changes.txt

index 62eb7578a7f9d076c455a5ed3cd0c70c13b7964e..dde060f87d24290c7a67a38ce372ae36c91729cc 100644 (file)
@@ -602,20 +602,20 @@ if (!defined('Adminer\DRIVER')) {
                        preg_match('~^(VIRTUAL|PERSISTENT|STORED)~', $extra, $generated);
                        preg_match('~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~', $type, $match_type);
                        $default = $row["COLUMN_DEFAULT"];
-                       $is_text = preg_match('~text~', $match_type[1]);
-                       if (!$maria && $is_text) {
-                               // default value a'b of text column is stored as _utf8mb4\'a\\\'b\' in MySQL
-                               $default = preg_replace("~^(_\w+)?('.*')$~", '\2', stripslashes($default));
-                       }
-                       if ($maria || $is_text) {
-                               $default = preg_replace_callback("~^'(.*)'$~", function ($match) {
-                                       return stripslashes(str_replace("''", "'", $match[1]));
-                               }, $default);
-                       }
-                       if (!$maria && preg_match('~binary~', $match_type[1]) && preg_match('~^0x(\w*)$~', $default, $match)) {
-                               $default = preg_replace_callback('~..~', function ($match) {
-                                       return chr(hexdec($match[0]));
-                               }, $match[1]);
+                       if ($default != "") {
+                               $is_text = preg_match('~text~', $match_type[1]);
+                               if (!$maria && $is_text) {
+                                       // default value a'b of text column is stored as _utf8mb4\'a\\\'b\' in MySQL
+                                       $default = preg_replace("~^(_\w+)?('.*')$~", '\2', stripslashes($default));
+                               }
+                               if ($maria || $is_text) {
+                                       $default = ($default == "NULL" ? null : preg_replace_callback("~^'(.*)'$~", function ($match) {
+                                               return stripslashes(str_replace("''", "'", $match[1]));
+                                       }, $default));
+                               }
+                               if (!$maria && preg_match('~binary~', $match_type[1]) && preg_match('~^0x(\w*)$~', $default, $match)) {
+                                       $default = pack("H*", $match[1]);
+                               }
                        }
                        $return[$field] = array(
                                "field" => $field,
@@ -625,7 +625,7 @@ if (!defined('Adminer\DRIVER')) {
                                "unsigned" => ltrim($match_type[3] . $match_type[4]),
                                "default" => ($generated
                                        ? ($maria ? $generation : stripslashes($generation))
-                                       : ($default != "" || preg_match("~char|set~", $match_type[1]) ? $default : null)
+                                       : $default
                                ),
                                "null" => ($row["IS_NULLABLE"] == "YES"),
                                "auto_increment" => ($extra == "auto_increment"),
index bbb347eff8441bda5d1abe94b7171440ca588381..cf4ba1589ae2530737adce8fa98d8a85057bfefd 100644 (file)
@@ -1,5 +1,6 @@
 Adminer dev:
 MySQL: Display default values of binary columns
+MariaDB: Don't display NULL as default value (regression from 5.0.0)
 PostgreSQL PDO: Escape bytea values (bug #218)
 
 Adminer 5.0.4 (released 2025-03-11):
@@ -85,7 +86,7 @@ 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)
 MS SQL: Fix length of nvarchar columns
-Editor: PDO: Select value of foreign key in edit (bug #847)
+Editor PDO: Select value of foreign key in edit (bug #847)
 Mobile devices: Use device width
 
 Adminer 4.16.0 (released 2025-02-20):