Index: mysql5.initial.sql
===================================================================
--- mysql5.initial.sql	(revision 2099)
+++ mysql5.initial.sql	(working copy)
@@ -1,22 +1,22 @@
 -- RoundCube Webmail initial database structure
--- Version 0.1
+-- Version 0.2-beta
 
 -- --------------------------------------------------------
 
-SET FOREIGN_KEY_CHECKS=0;
+/*!40014  SET FOREIGN_KEY_CHECKS=0; */
 
 
 -- Table structure for table `session`
 
 CREATE TABLE `session` (
- `sess_id` varchar(40) NOT NULL,
- `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `changed` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `ip` varchar(40) NOT NULL,
+ `sess_id` varchar(40) NOT NULL, -- TODO: can we use "binary char" here?
+ `created` datetime NOT NULL,
+ `changed` datetime NOT NULL,
+ `ip` varchar(15) NOT NULL, -- TODO: are  we expecting ipv4 only? 15 is the max length, then
  `vars` text NOT NULL,
  PRIMARY KEY(`sess_id`),
  INDEX `changed_index` (`changed`)
-) TYPE=INNODB CHARACTER SET utf8 COLLATE utf8_general_ci;
+)) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
 
 
 -- Table structure for table `users`
@@ -26,32 +26,32 @@
  `username` varchar(128) NOT NULL,
  `mail_host` varchar(128) NOT NULL,
  `alias` varchar(128) NOT NULL,
- `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `last_login` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `created` datetime NOT NULL,
+ `last_login` datetime NOT NULL,
  `language` varchar(5),
  `preferences` text,
  PRIMARY KEY(`user_id`),
  INDEX `username_index` (`username`),
  INDEX `alias_index` (`alias`)
-) TYPE=INNODB CHARACTER SET utf8 COLLATE utf8_general_ci;
+) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
 
 
 -- Table structure for table `messages`
 
 CREATE TABLE `messages` (
- `message_id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
- `user_id` int(10) UNSIGNED NOT NULL DEFAULT '0',
+ `message_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+ `user_id` int(10) UNSIGNED NOT NULL,
  `del` tinyint(1) NOT NULL DEFAULT '0',
- `cache_key` varchar(128) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL,
- `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `idx` int(11) UNSIGNED NOT NULL DEFAULT '0',
- `uid` int(11) UNSIGNED NOT NULL DEFAULT '0',
+ `cache_key` varchar(128) /*!40101 CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL*/, -- TODO: can we use "binary char" here?
+ `created` datetime NOT NULL,
+ `idx` int(11) UNSIGNED NOT NULL,
+ `uid` int(11) UNSIGNED NOT NULL,
  `subject` varchar(255) NOT NULL,
  `from` varchar(255) NOT NULL,
  `to` varchar(255) NOT NULL,
  `cc` varchar(255) NOT NULL,
- `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `size` int(11) UNSIGNED NOT NULL DEFAULT '0',
+ `date` datetime NOT NULL,
+ `size` int(10) UNSIGNED NOT NULL,
  `headers` text NOT NULL,
  `structure` text,
  PRIMARY KEY(`message_id`),
@@ -59,27 +59,40 @@
  UNIQUE `uniqueness` (`user_id`, `cache_key`, `uid`),
  CONSTRAINT `user_id_fk_messages` FOREIGN KEY (`user_id`)
    REFERENCES `users`(`user_id`)
+     /*!40008
      ON DELETE CASCADE
      ON UPDATE CASCADE
-) TYPE=INNODB CHARACTER SET utf8 COLLATE utf8_general_ci;
+     */
+) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
 
 
 -- Table structure for table `cache`
 
 CREATE TABLE `cache` (
  `cache_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
- `cache_key` varchar(128) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL,
- `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `cache_key` varchar(128) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL, -- TODO: can we use "binary char" here?
+ `created` datetime NOT NULL,
  `data` longtext NOT NULL,
- `user_id` int(10) UNSIGNED NOT NULL DEFAULT '0',
+ `user_id` int(10) UNSIGNED NOT NULL,
+ `session_id` varchar(40) CHARACTER SET ascii COLLATE ascii_general_ci, -- TODO: can we use "binary char" here?, TODO: is it still used?
  PRIMARY KEY(`cache_id`),
  INDEX `created_index` (`created`),
  INDEX `user_cache_index` (`user_id`,`cache_key`),
+ INDEX `user_id` (`user_id`),
  CONSTRAINT `user_id_fk_cache` FOREIGN KEY (`user_id`)
    REFERENCES `users`(`user_id`)
+     /*!40008
      ON DELETE CASCADE
      ON UPDATE CASCADE
-) TYPE=INNODB CHARACTER SET utf8 COLLATE utf8_general_ci;
+     */
+ INDEX `session_id` (`session_id`),
+ CONSTRAINT `user_id_fk_cache` FOREIGN KEY (`sess_id`)
+   REFERENCES `session`(`user_id`)
+     /*!40008
+     ON DELETE CASCADE
+     ON UPDATE CASCADE
+     */
+) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
 
 
 -- Table structure for table `contacts`
@@ -93,13 +106,16 @@
  `firstname` varchar(128) NOT NULL,
  `surname` varchar(128) NOT NULL,
  `vcard` text NULL,
- `user_id` int(10) UNSIGNED NOT NULL DEFAULT '0',
+ `user_id` int(10) UNSIGNED NOT NULL,
  PRIMARY KEY(`contact_id`),
+ KEY `user_id` (`user_id`),
  CONSTRAINT `user_id_fk_contacts` FOREIGN KEY (`user_id`)
    REFERENCES `users`(`user_id`)
+     /*!40008
      ON DELETE CASCADE
      ON UPDATE CASCADE
-) TYPE=INNODB CHARACTER SET utf8 COLLATE utf8_general_ci;
+     */
+) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
 
 
 -- Table structure for table `identities`
@@ -115,13 +131,16 @@
  `bcc` varchar(128) NOT NULL DEFAULT '',
  `signature` text,
  `html_signature` tinyint(1) NOT NULL DEFAULT '0',
- `user_id` int(10) UNSIGNED NOT NULL DEFAULT '0',
+ `user_id` int(10) UNSIGNED NOT NULL,
  PRIMARY KEY(`identity_id`),
- CONSTRAINT `user_id_fk_identities` FOREIGN KEY (`user_id`)
-   REFERENCES `users`(`user_id`)
+ INDEX `user_id` (`user_id`),
+ CONSTRAINT `session_id_fk_session` FOREIGN KEY (`user_id`)
+   REFERENCES `session`(`user_id`)
+     /*!40008
      ON DELETE CASCADE
      ON UPDATE CASCADE
-) TYPE=INNODB CHARACTER SET utf8 COLLATE utf8_general_ci;
+     */
+) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
 
 
-SET FOREIGN_KEY_CHECKS=1;
+/*!40014 SET FOREIGN_KEY_CHECKS=1; */
