From cccc784da4e0f741859bf1b10a372f572839ee62 Mon Sep 17 00:00:00 2001 From: Jakub Vrana Date: Wed, 26 Mar 2025 01:34:48 +0100 Subject: [PATCH] Always return array from table_status() --- adminer/create.inc.php | 4 ++-- adminer/drivers/mssql.inc.php | 5 +---- adminer/drivers/mysql.inc.php | 3 +-- adminer/drivers/oracle.inc.php | 3 --- adminer/drivers/pgsql.inc.php | 12 ++++++------ adminer/drivers/sqlite.inc.php | 2 +- adminer/include/adminer.inc.php | 2 +- adminer/include/driver.inc.php | 2 +- adminer/include/functions.inc.php | 4 ++-- adminer/indexes.inc.php | 2 +- adminer/view.inc.php | 2 +- editor/include/adminer.inc.php | 4 ++-- plugins/backward-keys.php | 2 +- plugins/drivers/clickhouse.php | 3 --- plugins/drivers/elastic.php | 5 +++-- plugins/drivers/firebird.php | 5 +---- plugins/drivers/imap.php | 7 ++----- plugins/drivers/mongo.php | 7 ++----- plugins/drivers/simpledb.php | 3 --- 19 files changed, 28 insertions(+), 49 deletions(-) diff --git a/adminer/create.inc.php b/adminer/create.inc.php index 075fbf33..a5ff0219 100644 --- a/adminer/create.inc.php +++ b/adminer/create.inc.php @@ -17,8 +17,8 @@ $orig_fields = array(); $table_status = array(); if ($TABLE != "") { $orig_fields = fields($TABLE); - $table_status = table_status($TABLE); - if (!$table_status) { + $table_status = table_status1($TABLE); + if (count($table_status) < 2) { // there's only the Name field $error = lang('No tables.'); } } diff --git a/adminer/drivers/mssql.inc.php b/adminer/drivers/mssql.inc.php index 31efda29..d6833bfd 100644 --- a/adminer/drivers/mssql.inc.php +++ b/adminer/drivers/mssql.inc.php @@ -357,9 +357,6 @@ if (isset($_GET["mssql"])) { FROM sys.all_objects AS ao WHERE schema_id = SCHEMA_ID(" . q(get_schema()) . ") AND type IN ('S', 'U', 'V') " . ($name != "" ? "AND name = " . q($name) : "ORDER BY name")) as $row ) { - if ($name != "") { - return $row; - } $return[$row["Name"]] = $row; } return $return; @@ -662,7 +659,7 @@ WHERE sys1.xtype = 'TR' AND sys2.name = " . q($table)) as $row function create_sql($table, $auto_increment, $style) { global $driver; - if (is_view(table_status($table))) { + if (is_view(table_status1($table))) { $view = view($table); return "CREATE VIEW " . table($table) . " AS $view[select]"; } diff --git a/adminer/drivers/mysql.inc.php b/adminer/drivers/mysql.inc.php index ef0c6a74..58c544d8 100644 --- a/adminer/drivers/mysql.inc.php +++ b/adminer/drivers/mysql.inc.php @@ -549,7 +549,7 @@ if (!defined('Adminer\DRIVER')) { /** Get table status * @param string * @param bool return only "Name", "Engine" and "Comment" fields - * @return array{Name:string, Engine:string, Comment:string, Oid:int, Rows:int, Collation:string, Auto_increment:int, Data_length:int, Index_length:int, Data_free:int}[] or only inner array with $name + * @return array{Name:string, Engine:string, Comment:string, Oid:int, Rows:int, Collation:string, Auto_increment:int, Data_length:int, Index_length:int, Data_free:int}[] */ function table_status($name = "", $fast = false) { $return = array(); @@ -570,7 +570,6 @@ if (!defined('Adminer\DRIVER')) { if ($name != "") { // MariaDB: Table name is returned as lowercase on macOS, so we fix it here. $row["Name"] = $name; - return $row; } $return[$row["Name"]] = $row; } diff --git a/adminer/drivers/oracle.inc.php b/adminer/drivers/oracle.inc.php index 587c51b2..4c8d490c 100644 --- a/adminer/drivers/oracle.inc.php +++ b/adminer/drivers/oracle.inc.php @@ -298,9 +298,6 @@ ORDER BY 1" UNION SELECT view_name, 'view', 0, 0 FROM $view" . ($name != "" ? " WHERE view_name = $search" : "") . " ORDER BY 1") as $row ) { - if ($name != "") { - return $row; - } $return[$row["Name"]] = $row; } return $return; diff --git a/adminer/drivers/pgsql.inc.php b/adminer/drivers/pgsql.inc.php index d4712a2d..bad69c47 100644 --- a/adminer/drivers/pgsql.inc.php +++ b/adminer/drivers/pgsql.inc.php @@ -414,7 +414,7 @@ WHERE relkind IN ('r', 'm', 'v', 'f', 'p') ) { $return[$row["Name"]] = $row; } - return ($name != "" ? $return[$name] : $return); + return $return; } function is_view($table_status) { @@ -683,7 +683,7 @@ ORDER BY conkey, conname") as $row function drop_tables($tables) { foreach ($tables as $table) { - $status = table_status($table); + $status = table_status1($table); if (!queries("DROP " . strtoupper($status["Engine"]) . " " . table($table))) { return false; } @@ -693,7 +693,7 @@ ORDER BY conkey, conname") as $row function move_tables($tables, $views, $target) { foreach (array_merge($tables, $views) as $table) { - $status = table_status($table); + $status = table_status1($table); if (!queries("ALTER " . strtoupper($status["Engine"]) . " " . table($table) . " SET SCHEMA " . idf_escape($target))) { return false; } @@ -834,7 +834,7 @@ AND typelem = 0" function foreign_keys_sql($table) { $return = ""; - $status = table_status($table); + $status = table_status1($table); $fkeys = foreign_keys($table); ksort($fkeys); @@ -850,7 +850,7 @@ AND typelem = 0" $return_parts = array(); $sequences = array(); - $status = table_status($table); + $status = table_status1($table); if (is_view($status)) { $view = view($table); return rtrim("CREATE VIEW " . idf_escape($table) . " AS $view[select]", ";"); @@ -927,7 +927,7 @@ AND typelem = 0" } function trigger_sql($table) { - $status = table_status($table); + $status = table_status1($table); $return = ""; foreach (triggers($table) as $trg_id => $trg) { $trigger = trigger($trg_id, $status['Name']); diff --git a/adminer/drivers/sqlite.inc.php b/adminer/drivers/sqlite.inc.php index 9d9f984c..756644ac 100644 --- a/adminer/drivers/sqlite.inc.php +++ b/adminer/drivers/sqlite.inc.php @@ -233,7 +233,7 @@ if (isset($_GET["sqlite"])) { foreach (get_rows("SELECT * FROM sqlite_sequence", null, "") as $row) { $return[$row["name"]]["Auto_increment"] = $row["seq"]; } - return ($name != "" ? $return[$name] : $return); + return $return; } function is_view($table_status) { diff --git a/adminer/include/adminer.inc.php b/adminer/include/adminer.inc.php index dc1b7097..b3745f62 100644 --- a/adminer/include/adminer.inc.php +++ b/adminer/include/adminer.inc.php @@ -1051,7 +1051,7 @@ class Adminer { } /** Set up syntax highlight for code and