From ef53494df0341710718f78185787c7e11f41b39f Mon Sep 17 00:00:00 2001 From: Takashi SHIRAI Date: Tue, 26 Mar 2019 13:53:54 +0900 Subject: [PATCH] Support altering indexes Signed-off-by: Takashi SHIRAI --- adminer/drivers/oracle.inc.php | 32 ++++++++++++++++++++++++++++++++ changes.txt | 1 + 2 files changed, 33 insertions(+) diff --git a/adminer/drivers/oracle.inc.php b/adminer/drivers/oracle.inc.php index 1bd1a1e9..c88096c6 100644 --- a/adminer/drivers/oracle.inc.php +++ b/adminer/drivers/oracle.inc.php @@ -370,6 +370,38 @@ ORDER BY ac.constraint_type, aic.column_position", $connection2) as $row) { ; } + function alter_indexes($table, $alter) { + $create = array(); + $drop = array(); + $queries = array(); + foreach ($alter as $val) { + $val[2] = preg_replace('~ DESC$~', '', $val[2]); + if ($val[0] != "INDEX") { + //! 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 " : "") . "(" . 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) . " (" . implode(", ", $val[2]) . ")"; + } + } + if ($create) { + array_unshift($queries, "ALTER TABLE " . table($table) . implode(",", $create)); + } + if ($drop) { + array_unshift($queries, "DROP INDEX " . implode(", ", $drop)); + } + foreach ($queries as $query) { + if (!queries($query)) { + return false; + } + } + return true; + } + function foreign_keys($table) { $return = array(); $query = "SELECT c_list.CONSTRAINT_NAME as NAME, diff --git a/changes.txt b/changes.txt index 1bfdd4da..a3975510 100644 --- a/changes.txt +++ b/changes.txt @@ -10,6 +10,7 @@ PostgreSQL: Avoid exporting empty sequence last value (bug #768) PostgreSQL: Do not show triggers from other schemas (PR #412) PostgreSQL: Fix multi-parameter functions in default values (bug #736) PostgreSQL PDO: Do not select NULL function for false values in edit +Oracle: Alter indexes Oracle: Count tables Oracle: Import from CSV Oracle: Fix column size with string type