diff --git a/adminer/drivers/mysql.inc.php b/adminer/drivers/mysql.inc.php index fca9c5f3..6321c790 100644 --- a/adminer/drivers/mysql.inc.php +++ b/adminer/drivers/mysql.inc.php @@ -371,16 +371,28 @@ if (!defined("DRIVER")) { * @return mixed Min_DB or string for error */ function connect() { - global $adminer, $types, $structured_types; + global $adminer, $types, $structured_types, $edit_functions; + $connection = new Min_DB; $credentials = $adminer->credentials(); if ($connection->connect($credentials[0], $credentials[1], $credentials[2])) { $connection->set_charset(charset($connection)); $connection->query("SET sql_quote_show_create = 1, autocommit = 1"); - if (min_version('5.7.8', 10.2, $connection)) { + + if (min_version('5.7.8', '10.2', $connection)) { $structured_types[lang('Strings')][] = "json"; $types["json"] = 4294967295; } + + // UUID data type for Mariadb >= 10.7 + if (min_version('', '10.7', $connection)) { + $structured_types[lang('Strings')][] = "uuid"; + $types["uuid"] = 128; + + // insert/update function + $edit_functions[0]['uuid'] = 'uuid'; + } + return $connection; } $return = $connection->error; diff --git a/adminer/include/functions.inc.php b/adminer/include/functions.inc.php index 9ce3bf9f..28998c7c 100644 --- a/adminer/include/functions.inc.php +++ b/adminer/include/functions.inc.php @@ -108,6 +108,9 @@ function min_version($version, $maria_db = "", $connection2 = null) { $server_info = $match[1]; $version = $maria_db; } + if ($version == "") { + return false; + } return (version_compare($server_info, $version) >= 0); } @@ -1575,6 +1578,10 @@ function edit_form($table, $fields, $row, $update) { $value = ""; $function = "now"; } + if ($field["type"] == "uuid" && $value == "uuid()") { + $value = ""; + $function = "uuid"; + } input($field, $value, $function); echo "\n"; }