diff --git a/adminer/drivers/pgsql.inc.php b/adminer/drivers/pgsql.inc.php index a2c24611..259ba806 100644 --- a/adminer/drivers/pgsql.inc.php +++ b/adminer/drivers/pgsql.inc.php @@ -355,12 +355,12 @@ if (isset($_GET["pgsql"])) { return "(SELECT oid FROM pg_class WHERE relnamespace = $this->nsOid AND relname = " . q($table) . " AND relkind IN ('r', 'm', 'v', 'f', 'p'))"; } - function indexMethods(): array { - static $methods = array(); - if (!$methods) { - $methods = get_vals("SELECT amname FROM pg_am" . (min_version(9.6) ? " WHERE amtype = 'i'" : "") . " ORDER BY amname = 'btree' DESC, amname"); + function indexAlgorithms(array $tableStatus): array { + static $return = array(); + if (!$return) { + $return = get_vals("SELECT amname FROM pg_am" . (min_version(9.6) ? " WHERE amtype = 'i'" : "") . " ORDER BY amname = 'btree' DESC, amname"); } - return $methods; + return $return; } function supportsIndex(array $table_status): bool { diff --git a/adminer/include/adminer.inc.php b/adminer/include/adminer.inc.php index 1f44018a..1000711e 100644 --- a/adminer/include/adminer.inc.php +++ b/adminer/include/adminer.inc.php @@ -348,9 +348,11 @@ class Adminer { /** Print list of indexes on table in tabular format * @param Index[] $indexes + * @param TableStatus $tableStatus */ - function tableIndexesPrint(array $indexes): void { + function tableIndexesPrint(array $indexes, array $tableStatus): void { echo "\n"; + $default_algorithm = first(driver()->indexAlgorithms($tableStatus)); foreach ($indexes as $name => $index) { ksort($index["columns"]); // enforce correct columns order $print = array(); @@ -362,7 +364,7 @@ class Adminer { } echo ""; - echo "
$index[type]" . ($index['algorithm'] != first(driver()->indexMethods()) ? " ($index[algorithm])" : ""); + echo "$index[type]" . ($index['algorithm'] != $default_algorithm ? " ($index[algorithm])" : ""); echo "" . implode(", ", $print); echo "\n"; } diff --git a/adminer/include/driver.inc.php b/adminer/include/driver.inc.php index c7577a5b..8cf3b3db 100644 --- a/adminer/include/driver.inc.php +++ b/adminer/include/driver.inc.php @@ -259,10 +259,11 @@ abstract class SqlDriver { } /** - * Return list of supported index methods, first one is default + * Return list of supported index algorithms, first one is default + * @param TableStatus $tableStatus * @return list */ - function indexMethods(): array { + function indexAlgorithms(array $tableStatus): array { return array(); } diff --git a/adminer/indexes.inc.php b/adminer/indexes.inc.php index 00fd7f7f..e874901c 100644 --- a/adminer/indexes.inc.php +++ b/adminer/indexes.inc.php @@ -4,6 +4,7 @@ namespace Adminer; $TABLE = $_GET["indexes"]; $index_types = array("PRIMARY", "UNIQUE", "INDEX"); $table_status = table_status1($TABLE, true); +$index_algorithms = driver()->indexAlgorithms($table_status); if (preg_match('~MyISAM|M?aria' . (min_version(5.6, '10.0.5') ? '|InnoDB' : '') . '~i', $table_status["Engine"])) { $index_types[] = "FULLTEXT"; } @@ -29,7 +30,7 @@ if ($_POST && !$error && !$_POST["add"] && !$_POST["drop_col"]) { $columns = array(); $lengths = array(); $descs = array(); - $index_algorithm = (in_array($index["algorithm"], driver()->indexMethods()) ? $index["algorithm"] : ""); + $index_algorithm = (in_array($index["algorithm"], $index_algorithms) ? $index["algorithm"] : ""); $set = array(); ksort($index["columns"]); foreach ($index["columns"] as $key => $column) { @@ -108,8 +109,8 @@ $show_options = ($_POST ? $_POST["options"] : get_setting("index_options"));
indexMethods()) { - echo "" . lang('Algorithm'); +if ($index_algorithms) { + echo "" . lang('Algorithm'); } ?> " . html_select("indexes[$j][type]", array(-1 => "") + $index_types, $index["type"], ($j == count($row["indexes"]) ? "indexesAddRow.call(this);" : ""), "label-type"); - if (driver()->indexMethods()) { - echo "" . html_select("indexes[$j][algorithm]", array_merge(array(""), driver()->indexMethods()), $index['algorithm'], "label-method"); + if ($index_algorithms) { + echo "" . html_select("indexes[$j][algorithm]", array_merge(array(""), $index_algorithms), $index['algorithm'], "label-algorithm"); } echo ""; diff --git a/adminer/table.inc.php b/adminer/table.inc.php index a9846d37..66f6cfe0 100644 --- a/adminer/table.inc.php +++ b/adminer/table.inc.php @@ -42,7 +42,7 @@ if (support("indexes") && driver()->supportsIndex($table_status)) { echo "

" . lang('Indexes') . "

\n"; $indexes = indexes($TABLE); if ($indexes) { - adminer()->tableIndexesPrint($indexes); + adminer()->tableIndexesPrint($indexes, $table_status); } echo '