diff --git a/adminer/drivers/mssql.inc.php b/adminer/drivers/mssql.inc.php index c5be5089..ab19737c 100644 --- a/adminer/drivers/mssql.inc.php +++ b/adminer/drivers/mssql.inc.php @@ -480,7 +480,7 @@ WHERE OBJECT_NAME(i.object_id) = " . q($table) } elseif (!queries(($val[0] != "PRIMARY" ? "CREATE $val[0] " . ($val[0] != "INDEX" ? "INDEX " : "") . idf_escape($val[1] != "" ? $val[1] : uniqid($table . "_")) . " ON " . table($table) : "ALTER TABLE " . table($table) . " ADD PRIMARY KEY" - ) . " $val[2]")) { + ) . " (" . implode(", ", $val[2]) . ")")) { return false; } } diff --git a/adminer/drivers/mysql.inc.php b/adminer/drivers/mysql.inc.php index 3b771703..1357fd0d 100644 --- a/adminer/drivers/mysql.inc.php +++ b/adminer/drivers/mysql.inc.php @@ -672,14 +672,14 @@ if (!defined("DRIVER")) { /** Run commands to alter indexes * @param string escaped table name - * @param array of array("index type", "name", "(columns definition)") or array("index type", "name", "DROP") + * @param array of array("index type", "name", array("column definition", ...)) or array("index type", "name", "DROP") * @return bool */ function alter_indexes($table, $alter) { foreach ($alter as $key => $val) { $alter[$key] = ($val[2] == "DROP" ? "\nDROP INDEX " . idf_escape($val[1]) - : "\nADD $val[0] " . ($val[0] == "PRIMARY" ? "KEY " : "") . ($val[1] != "" ? idf_escape($val[1]) . " " : "") . $val[2] + : "\nADD $val[0] " . ($val[0] == "PRIMARY" ? "KEY " : "") . ($val[1] != "" ? idf_escape($val[1]) . " " : "") . "(" . implode(", ", $val[2]) . ")" ); } return queries("ALTER TABLE " . table($table) . implode(",", $alter)); diff --git a/adminer/drivers/pgsql.inc.php b/adminer/drivers/pgsql.inc.php index 732d6524..637d0ad9 100644 --- a/adminer/drivers/pgsql.inc.php +++ b/adminer/drivers/pgsql.inc.php @@ -439,12 +439,12 @@ ORDER BY conkey, conname") as $row) { //! descending UNIQUE indexes results in syntax error $create[] = ($val[2] == "DROP" ? "\nDROP CONSTRAINT " . idf_escape($val[1]) - : "\nADD" . ($val[1] != "" ? " CONSTRAINT " . idf_escape($val[1]) : "") . " $val[0] " . ($val[0] == "PRIMARY" ? "KEY " : "") . $val[2] + : "\nADD" . ($val[1] != "" ? " CONSTRAINT " . idf_escape($val[1]) : "") . " $val[0] " . ($val[0] == "PRIMARY" ? "KEY " : "") . "(" . implode(", ", $val[2]) . ")" ); } elseif ($val[2] == "DROP") { $drop[] = idf_escape($val[1]); } else { - $queries[] = "CREATE INDEX " . idf_escape($val[1] != "" ? $val[1] : uniqid($table . "_")) . " ON " . table($table) . " $val[2]"; + $queries[] = "CREATE INDEX " . idf_escape($val[1] != "" ? $val[1] : uniqid($table . "_")) . " ON " . table($table) . " (" . implode(", ", $val[2]) . ")"; } } if ($create) { diff --git a/adminer/drivers/sqlite.inc.php b/adminer/drivers/sqlite.inc.php index 11639787..a10cd191 100644 --- a/adminer/drivers/sqlite.inc.php +++ b/adminer/drivers/sqlite.inc.php @@ -600,7 +600,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) { foreach (array_reverse($alter) as $val) { if (!queries($val[2] == "DROP" ? "DROP INDEX " . idf_escape($val[1]) - : index_sql($table, $val[0], $val[1], $val[2]) + : index_sql($table, $val[0], $val[1], "(" . implode(", ", $val[2]) . ")") )) { return false; } diff --git a/adminer/indexes.inc.php b/adminer/indexes.inc.php index 53715dea..793c61c0 100644 --- a/adminer/indexes.inc.php +++ b/adminer/indexes.inc.php @@ -51,7 +51,7 @@ if ($_POST && !$error && !$_POST["add"] && !$_POST["drop_col"]) { continue; } } - $alter[] = array($index["type"], $name, "(" . implode(", ", $set) . ")"); + $alter[] = array($index["type"], $name, $set); } } }