]> git.joonet.de Git - adminer.git/commitdiff
Oracle: Fix the bugs for indexes.
authorTakashi SHIRAI <shirai@nintendo.co.jp>
Fri, 12 Feb 2021 02:22:29 +0000 (11:22 +0900)
committerJakub Vrana <jakub@vrana.cz>
Fri, 12 Feb 2021 08:08:56 +0000 (09:08 +0100)
Signed-off-by: Takashi SHIRAI <shirai@nintendo.co.jp>
adminer/drivers/oracle.inc.php
adminer/include/version.inc.php
changes.txt

index 737910aa72dd8a6ca09e9a77d84398092529feb0..97e7672b9bc12c8fbb9531d12c88a667e2c44f4b 100644 (file)
@@ -308,16 +308,23 @@ ORDER BY 1"
        function indexes($table, $connection2 = null) {
                $return = array();
                $owner = where_owner(" AND ", "aic.table_owner");
-               foreach (get_rows("SELECT aic.*, ac.constraint_type
+               foreach (get_rows("SELECT aic.*, ac.constraint_type, atc.data_default
 FROM all_ind_columns aic
 LEFT JOIN all_constraints ac ON aic.index_name = ac.constraint_name AND aic.table_name = ac.table_name AND aic.index_owner = ac.owner
+LEFT JOIN all_tab_cols atc ON aic.column_name = atc.column_name AND aic.table_name = atc.table_name AND aic.index_owner = atc.owner
 WHERE aic.table_name = " . q($table) . "$owner
 ORDER BY ac.constraint_type, aic.column_position", $connection2) as $row) {
                        $index_name = $row["INDEX_NAME"];
+                       $column_name = $row["DATA_DEFAULT"];
+                       if ($column_name) {
+                               $column_name = idf_unescape($column_name);
+                       } else {
+                               $column_name = $row["COLUMN_NAME"];
+                       }
                        $return[$index_name]["type"] = ($row["CONSTRAINT_TYPE"] == "P" ? "PRIMARY" : ($row["CONSTRAINT_TYPE"] == "U" ? "UNIQUE" : "INDEX"));
-                       $return[$index_name]["columns"][] = $row["COLUMN_NAME"];
+                       $return[$index_name]["columns"][] = $column_name;
                        $return[$index_name]["lengths"][] = ($row["CHAR_LENGTH"] && $row["CHAR_LENGTH"] != $row["COLUMN_LENGTH"] ? $row["CHAR_LENGTH"] : null);
-                       $return[$index_name]["descs"][] = ($row["DESCEND"] ? '1' : null);
+                       $return[$index_name]["descs"][] = ($row["DESCEND"] && $row["DESCEND"] == "DESC" ? '1' : null);
                }
                return $return;
        }
@@ -384,26 +391,23 @@ 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"
+                               $val[2] = preg_replace('~ DESC$~', '', $val[2]);
+                               $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]) . ")"
                                );
+                               array_unshift($queries, "ALTER TABLE " . table($table) . $create);
                        } 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));
                }
index a52574806b58794cee1a5d636ea84e5b98e1c74b..63b53650646e2ee925d442ee146631871e6a2d4c 100644 (file)
@@ -1,2 +1,2 @@
 <?php
-$VERSION = "4.8.0";
+$VERSION = "4.8.1-dev";
index 9cf378bdbb458c6f8332ce4450f49528b3aaa908..a7275a521431b812e1d1979fab98d4745d64f35e 100644 (file)
@@ -1,3 +1,5 @@
+Adminer 4.8.1-dev:
+
 Adminer 4.8.0 (released 2021-02-10):
 Support function default values in insert (bug #713)
 Allow SQL pseudo-function in insert