]> git.joonet.de Git - adminer.git/commitdiff
Avoid errors when alter table column
authorTakashi SHIRAI <shirai@nintendo.co.jp>
Tue, 26 Mar 2019 04:50:52 +0000 (13:50 +0900)
committerJakub Vrana <jakub@vrana.cz>
Tue, 9 Feb 2021 08:57:00 +0000 (09:57 +0100)
Signed-off-by: Takashi SHIRAI <shirai@nintendo.co.jp>
adminer/drivers/oracle.inc.php

index 45e0e5396e82a092b95cf4da67c761ddc52a5a3d..1bd1a1e9754495891ca858060748daac6c523fc0 100644 (file)
@@ -342,11 +342,19 @@ ORDER BY ac.constraint_type, aic.column_position", $connection2) as $row) {
 
        function alter_table($table, $name, $fields, $foreign, $comment, $engine, $collation, $auto_increment, $partitioning) {
                $alter = $drop = array();
+               $orig_fields = ($table ? fields($table) : array());
                foreach ($fields as $field) {
                        $val = $field[1];
                        if ($val && $field[0] != "" && idf_escape($field[0]) != $val[0]) {
                                queries("ALTER TABLE " . table($table) . " RENAME COLUMN " . idf_escape($field[0]) . " TO $val[0]");
                        }
+                       $orig_field = $orig_fields[$field[0]];
+                       if ($val && $orig_field) {
+                               $old = process_field($orig_field, $orig_field);
+                               if ($val[2] == $old[2]) {
+                                       $val[2] = "";
+                               }
+                       }
                        if ($val) {
                                $alter[] = ($table != "" ? ($field[0] != "" ? "MODIFY (" : "ADD (") : "  ") . implode($val) . ($table != "" ? ")" : ""); //! error with name change only
                        } else {