From 51ac1312a18448b46a235786ca52f3d9474275c8 Mon Sep 17 00:00:00 2001 From: Jakub Vrana Date: Wed, 12 Mar 2025 08:51:25 +0100 Subject: [PATCH] MariaDB: Don't display NULL as default value --- adminer/drivers/mysql.inc.php | 30 +++++++++++++++--------------- changes.txt | 3 ++- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/adminer/drivers/mysql.inc.php b/adminer/drivers/mysql.inc.php index 62eb7578..dde060f8 100644 --- a/adminer/drivers/mysql.inc.php +++ b/adminer/drivers/mysql.inc.php @@ -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"), diff --git a/changes.txt b/changes.txt index bbb347ef..cf4ba158 100644 --- a/changes.txt +++ b/changes.txt @@ -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):