From 94fe9ca1a87b20ddeee55024986e95ca72097af6 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Sat, 06 Mar 2010 09:13:25 -0500
Subject: [PATCH] - re-fix (#1486474) + require MySQL 4.0.8 + add index/update in identities table

---
 SQL/mysql.update.sql |  111 +++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 74 insertions(+), 37 deletions(-)

diff --git a/SQL/mysql.update.sql b/SQL/mysql.update.sql
index e93fc98..8d86867 100644
--- a/SQL/mysql.update.sql
+++ b/SQL/mysql.update.sql
@@ -1,49 +1,86 @@
 -- RoundCube Webmail update script for MySQL databases
--- Version 0.1-20051007
+-- Updates from version 0.1-stable to 0.3.1
 
+TRUNCATE TABLE `messages`;
 
-ALTER TABLE `session` ADD `ip` VARCHAR(15) NOT NULL AFTER changed;
-ALTER TABLE `users` ADD `alias` VARCHAR(128) NOT NULL AFTER mail_host;
+ALTER TABLE `messages`
+  DROP INDEX `idx`,
+  DROP INDEX `uid`;
 
+ALTER TABLE `cache`
+  DROP INDEX `cache_key`,
+  DROP INDEX `session_id`,
+  ADD INDEX `user_cache_index` (`user_id`,`cache_key`);
 
+ALTER TABLE `users`
+    ADD INDEX `username_index` (`username`),
+    ADD INDEX `alias_index` (`alias`);
 
--- RoundCube Webmail update script for MySQL databases
--- Version 0.1-20051021
+-- Updates from version 0.1.1
 
-ALTER TABLE `session` CHANGE `sess_id` `sess_id` VARCHAR(40) NOT NULL;
+ALTER TABLE `identities`
+    MODIFY `signature` text, 
+    MODIFY `bcc` varchar(128) NOT NULL DEFAULT '', 
+    MODIFY `reply-to` varchar(128) NOT NULL DEFAULT '', 
+    MODIFY `organization` varchar(128) NOT NULL DEFAULT '',
+    MODIFY `name` varchar(128) NOT NULL, 
+    MODIFY `email` varchar(128) NOT NULL; 
 
-ALTER TABLE `contacts` CHANGE `del` `del` TINYINT(1) NOT NULL;
-ALTER TABLE `contacts` ADD `changed` DATETIME NOT NULL AFTER `user_id`;
+-- Updates from version 0.2-alpha
 
-UPDATE `contacts`  SET `del`=0 WHERE `del`=1;
-UPDATE `contacts`  SET `del`=1 WHERE `del`=2;
+ALTER TABLE `messages`
+    ADD INDEX `created_index` (`created`);
 
-ALTER TABLE `identities` CHANGE `default` `standard` TINYINT(1) NOT NULL;
-ALTER TABLE `identities` CHANGE `del` `del` TINYINT(1) NOT NULL;
+-- Updates from version 0.2-beta (InnoDB only)
 
-UPDATE `identities`  SET `del`=0 WHERE `del`=1;
-UPDATE `identities`  SET `del`=1 WHERE `del`=2;
-UPDATE `identities`  SET `standard`=0 WHERE `standard`=1;
-UPDATE `identities`  SET `standard`=1 WHERE `standard`=2;
+ALTER TABLE `cache`
+    DROP `session_id`;
+    
+ALTER TABLE `session`
+    ADD INDEX `changed_index` (`changed`);
 
-CREATE TABLE `messages` (
-  `message_id` int(11) unsigned NOT NULL auto_increment,
-  `user_id` int(11) unsigned NOT NULL default '0',
-  `del` tinyint(1) NOT NULL default '0',
-  `cache_key` varchar(128) NOT NULL default '',
-  `idx` int(11) unsigned NOT NULL default '0',
-  `uid` int(11) unsigned NOT NULL default '0',
-  `subject` varchar(255) NOT NULL default '',
-  `from` varchar(255) NOT NULL default '',
-  `to` varchar(255) NOT NULL default '',
-  `cc` varchar(255) NOT NULL default '',
-  `date` datetime NOT NULL default '0000-00-00 00:00:00',
-  `size` int(11) unsigned NOT NULL default '0',
-  `headers` text NOT NULL,
-  `body` longtext,
-  PRIMARY KEY  (`message_id`),
-  KEY `user_id` (`user_id`),
-  KEY `cache_key` (`cache_key`),
-  KEY `idx` (`idx`),
-  KEY `uid` (`uid`)
-) TYPE=MyISAM;
+ALTER TABLE `cache`
+    ADD INDEX `created_index` (`created`);
+
+ALTER TABLE `users`
+    CHANGE `language` `language` varchar(5);
+
+-- Updates from version 0.3-stable
+
+TRUNCATE `messages`;
+
+ALTER TABLE `messages`
+    ADD INDEX `index_index` (`user_id`, `cache_key`, `idx`);
+
+ALTER TABLE `session` 
+    CHANGE `vars` `vars` MEDIUMTEXT NOT NULL;
+
+ALTER TABLE `contacts`
+    ADD INDEX `user_contacts_index` (`user_id`,`email`);
+
+-- Updates from version 0.3.1
+
+/* MySQL bug workaround: http://bugs.mysql.com/bug.php?id=46293 */
+/*!40014 SET FOREIGN_KEY_CHECKS=0 */;
+
+ALTER TABLE `messages` DROP FOREIGN KEY `user_id_fk_messages`;
+ALTER TABLE `cache` DROP FOREIGN KEY `user_id_fk_cache`;
+ALTER TABLE `contacts` DROP FOREIGN KEY `user_id_fk_contacts`;
+ALTER TABLE `identities` DROP FOREIGN KEY `user_id_fk_identities`;
+
+ALTER TABLE `messages` ADD CONSTRAINT `user_id_fk_messages` FOREIGN KEY (`user_id`)
+ REFERENCES `users`(`user_id`);
+ALTER TABLE `cache` ADD CONSTRAINT `user_id_fk_cache` FOREIGN KEY (`user_id`)
+ REFERENCES `users`(`user_id`);
+ALTER TABLE `contacts` ADD CONSTRAINT `user_id_fk_contacts` FOREIGN KEY (`user_id`)
+ REFERENCES `users`(`user_id`);
+ALTER TABLE `identities` ADD CONSTRAINT `user_id_fk_identities` FOREIGN KEY (`user_id`)
+ REFERENCES `users`(`user_id`);
+
+ALTER TABLE `contacts` ALTER `name` SET DEFAULT '';
+ALTER TABLE `contacts` ALTER `firstname` SET DEFAULT '';
+ALTER TABLE `contacts` ALTER `surname` SET DEFAULT '';
+
+ALTER TABLE `identities` INDEX `user_identities_index` (`user_id`, `del`);
+
+/*!40014 SET FOREIGN_KEY_CHECKS=1 */;

--
Gitblit v1.9.1