From d8a9a3db8d45c503c4c186e50e12cd6ddc5e9648 Mon Sep 17 00:00:00 2001 From: Jakub Vrana Date: Sun, 16 Mar 2025 19:02:29 +0100 Subject: [PATCH] CockroachDB: Display CockroachDB instead of PostgreSQL --- adminer/drivers/mysql.inc.php | 2 +- adminer/drivers/pgsql.inc.php | 13 +++++++++---- adminer/include/auth.inc.php | 2 +- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/adminer/drivers/mysql.inc.php b/adminer/drivers/mysql.inc.php index a3c23f1e..8466716b 100644 --- a/adminer/drivers/mysql.inc.php +++ b/adminer/drivers/mysql.inc.php @@ -441,7 +441,7 @@ if (!defined('Adminer\DRIVER')) { $connection->set_charset(charset($connection)); $connection->query("SET sql_quote_show_create = 1, autocommit = 1"); $connection->maria = preg_match('~MariaDB~', $connection->server_info); - $drivers["server"] = ($connection->maria ? "MariaDB" : "MySQL"); + $drivers[DRIVER] = ($connection->maria ? "MariaDB" : "MySQL"); return $connection; } $return = $connection->error; diff --git a/adminer/drivers/pgsql.inc.php b/adminer/drivers/pgsql.inc.php index 84c474f5..8646a0d5 100644 --- a/adminer/drivers/pgsql.inc.php +++ b/adminer/drivers/pgsql.inc.php @@ -321,6 +321,7 @@ if (isset($_GET["pgsql"])) { } function connect($credentials) { + global $drivers; $connection = new Db; if ($connection->connect($credentials[0], $credentials[1], $credentials[2])) { if (min_version(9, 0, $connection)) { @@ -328,6 +329,10 @@ if (isset($_GET["pgsql"])) { } $crdb_version = $connection->result("SHOW crdb_version"); $connection->server_info .= ($crdb_version ? "-" . preg_replace('~ \(.*~', '', $crdb_version) : ""); + $connection->cockroach = preg_match('~CockroachDB~', $connection->server_info); + if ($connection->cockroach) { // we don't use "PostgreSQL / CockroachDB" by default because it's too long + $drivers[DRIVER] = "CockroachDB"; + } return $connection; } return $connection->error; @@ -954,10 +959,10 @@ AND typelem = 0" function support($feature) { global $connection; - return ($feature == "processlist" - ? !preg_match('~CockroachDB~', $connection->server_info) // https://github.com/cockroachdb/cockroach/issues/24745 - : preg_match('~^(check|database|table|columns|sql|indexes|descidx|comment|view|' . (min_version(9.3) ? 'materializedview|' : '') . 'scheme|routine|sequence|trigger|type|variables|drop_col|kill|dump)$~', $feature) - ); + return preg_match('~^(check|database|table|columns|sql|indexes|descidx|comment|view|' . (min_version(9.3) ? 'materializedview|' : '') . 'scheme|routine|sequence|trigger|type|variables|drop_col' + . ($connection->cockroach ? '' : '|processlist') // https://github.com/cockroachdb/cockroach/issues/24745 + . '|kill|dump)$~', $feature) + ; } function kill_process($val) { diff --git a/adminer/include/auth.inc.php b/adminer/include/auth.inc.php index 1c504d1b..ae6153ae 100644 --- a/adminer/include/auth.inc.php +++ b/adminer/include/auth.inc.php @@ -169,7 +169,7 @@ if (isset($_GET["username"]) && is_string(get_password())) { if ($adminer->operators === null) { $adminer->operators = $driver->operators; } - if (isset($connection->maria)) { + if (isset($connection->maria) || $connection->cockroach) { save_settings(array("vendor-" . SERVER => $drivers[DRIVER])); } }