diff --git a/db/update18.5.sql b/db/update18.5.sql index f6f09d4829..1a0e0621bc 100644 --- a/db/update18.5.sql +++ b/db/update18.5.sql @@ -61,10 +61,17 @@ CREATE INDEX `project` ON `zt_actionrecent`(`project`); CREATE INDEX `action` ON `zt_actionrecent`(`action`); CREATE INDEX `objectID` ON `zt_actionrecent`(`objectID`); -ALTER TABLE `zt_notify` MODIFY `toList` text NOT NULL; -ALTER TABLE `zt_notify` MODIFY `subject` text NOT NULL; -DROP INDEX `objectType_toList_status` ON `zt_notify`; +ALTER TABLE `zt_notify` ADD `toListCopy` text NOT NULL; +UPDATE `zt_notify` SET `toListCopy` = `toList`; +ALTER TABLE `zt_notify` DROP `toList`; +ALTER TABLE `zt_notify` CHANGE COLUMN `toListCopy` `toList`; +ALTER TABLE `zt_notify` ADD `subjectCopy` text NOT NULL; +UPDATE `zt_notify` SET `subjectCopy` = `subject`; +ALTER TABLE `zt_notify` DROP `subject`; +ALTER TABLE `zt_notify` CHANGE COLUMN `subjectCopy` `subject`; + +DROP INDEX `objectType_toList_status` ON `zt_notify`; CREATE INDEX `objectType` ON `zt_notify` (`objectType`); CREATE INDEX `status` ON `zt_notify` (`status`); @@ -81,4 +88,8 @@ CREATE INDEX `module` ON `zt_config`(`module`); CREATE INDEX `key` ON `zt_config`(`key`); UPDATE `zt_programoutput` SET `activity` = (SELECT `activity` FROM `zt_zoutput` WHERE `zt_programoutput`.`output` = `zt_zoutput`.`id`); -ALTER TABLE `zt_reviewissue` MODIFY `opinion` mediumtext NOT NULL DEFAULT ''; + +ALTER TABLE `zt_reviewissue` ADD `opinionCopy` mediumtext NOT NULL DEFAULT ''; +UPDATE `zt_reviewissue` SET `opinionCopy` = `opinion`; +ALTER TABLE `zt_reviewissue` DROP `opinion`; +ALTER TABLE `zt_reviewissue` CHANGE COLUMN `opinionCopy` `opinion`; diff --git a/lib/dbh/dbh.class.php b/lib/dbh/dbh.class.php index 32a8cb7734..9e5f5234d2 100644 --- a/lib/dbh/dbh.class.php +++ b/lib/dbh/dbh.class.php @@ -256,9 +256,9 @@ class dbh public function formatDmSQL($sql) { $sql = trim($sql); - /* '\\\\n' try to compatible screen json like \u0232\\nBug. */ - $sql = str_replace(array('\\\\n', '\r', '\n'), ' ', $sql); $sql = $this->formatFunction($sql); + $sql = $this->processDmChangeColumn($sql); + $sql = $this->processDmTableIndex($sql); $actionPos = strpos($sql, ' '); $action = strtoupper(substr($sql, 0, $actionPos)); @@ -372,6 +372,32 @@ class dbh } } + /** + * Format dm table index. + * + * @param string $sql + * @access public + * @return string + */ + public function processDmTableIndex($sql) + { + if(strpos($sql, 'DROP INDEX') === FALSE) return $sql; + return preg_replace('/DROP INDEX `(\w+)` ON `zt_(\w+)`;/', 'DROP INDEX `$2_$1`;', $sql); + } + + /** + * Format dm change column. + * + * @param string $sql + * @access public + * @return string + */ + public function processDmChangeColumn($sql) + { + if(strpos($sql, 'CHANGE COLUMN') === FALSE) return $sql; + return preg_replace('/ALTER TABLE `([^`]+)` CHANGE COLUMN `([^`]+)` `([^`]+)`/', 'ALTER TABLE `$1` RENAME COLUMN `$2` TO `$3`;', $sql); + } + /** * Format function. *