From 6cb7786912ab18e53d8de0bbe436e46bf6d61782 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Thu, 03 Apr 2008 07:03:54 -0400
Subject: [PATCH] #1484854

---
 SQL/mysql5.initial.sql   |    4 +++-
 SQL/sqlite.update.sql    |    2 ++
 SQL/postgres.update.sql  |   17 ++++++++++++++++-
 SQL/mysql.update.sql     |    4 ++++
 SQL/postgres.initial.sql |   13 ++++++++-----
 SQL/mysql.initial.sql    |    4 +++-
 SQL/sqlite.initial.sql   |    2 ++
 7 files changed, 38 insertions(+), 8 deletions(-)

diff --git a/SQL/mysql.initial.sql b/SQL/mysql.initial.sql
index ae195e4..019675e 100644
--- a/SQL/mysql.initial.sql
+++ b/SQL/mysql.initial.sql
@@ -91,7 +91,9 @@
   `last_login` datetime NOT NULL default '0000-00-00 00:00:00',
   `language` varchar(5) NOT NULL default 'en',
   `preferences` text,
-  PRIMARY KEY  (`user_id`)
+  PRIMARY KEY  (`user_id`),
+  INDEX `username_index` (`username`),
+  INDEX `alias_index` (`alias`)
 );
 
 -- --------------------------------------------------------
diff --git a/SQL/mysql.update.sql b/SQL/mysql.update.sql
index 7023078..07b1817 100644
--- a/SQL/mysql.update.sql
+++ b/SQL/mysql.update.sql
@@ -11,3 +11,7 @@
   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`);
diff --git a/SQL/mysql5.initial.sql b/SQL/mysql5.initial.sql
index 58e220f..881344b 100644
--- a/SQL/mysql5.initial.sql
+++ b/SQL/mysql5.initial.sql
@@ -29,7 +29,9 @@
  `last_login` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `language` varchar(5) NOT NULL DEFAULT 'en',
  `preferences` text,
- PRIMARY KEY(`user_id`)
+ PRIMARY KEY(`user_id`),
+ INDEX `username_index` (`username`),
+ INDEX `alias_index` (`alias`)
 ) TYPE=INNODB CHARACTER SET utf8 COLLATE utf8_general_ci;
 
 
diff --git a/SQL/postgres.initial.sql b/SQL/postgres.initial.sql
index c742836..05c6192 100644
--- a/SQL/postgres.initial.sql
+++ b/SQL/postgres.initial.sql
@@ -25,6 +25,8 @@
     preferences text DEFAULT ''::text NOT NULL
 );
 
+CREATE INDEX users_username_id_idx ON users (username);
+CREATE INDEX users_alias_id_idx ON users (alias);
 
   
 --
@@ -61,7 +63,7 @@
 
 CREATE TABLE identities (
     identity_id integer DEFAULT nextval('identity_ids'::text) PRIMARY KEY,
-    user_id integer NOT NULL REFERENCES users (user_id),
+    user_id integer NOT NULL REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
     del integer DEFAULT 0 NOT NULL,
     standard integer DEFAULT 0 NOT NULL,
     name character varying(128) NOT NULL,
@@ -73,6 +75,7 @@
     html_signature integer DEFAULT 0 NOT NULL
 );
 
+CREATE INDEX identities_user_id_idx ON identities (user_id);
 
 
 --
@@ -94,7 +97,7 @@
 
 CREATE TABLE contacts (
     contact_id integer DEFAULT nextval('contact_ids'::text) PRIMARY KEY,
-    user_id integer NOT NULL REFERENCES users (user_id),
+    user_id integer NOT NULL REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
     changed timestamp with time zone DEFAULT now() NOT NULL,
     del integer DEFAULT 0 NOT NULL,
     name character varying(128) DEFAULT ''::character varying NOT NULL,
@@ -104,7 +107,7 @@
     vcard text
 );
 
-
+CREATE INDEX contacts_user_id_idx ON contacts (user_id);
 
 --
 -- Sequence "cache_ids"
@@ -124,7 +127,7 @@
 
 CREATE TABLE "cache" (
     cache_id integer DEFAULT nextval('cache_ids'::text) PRIMARY KEY,
-    user_id integer NOT NULL REFERENCES users (user_id),
+    user_id integer NOT NULL REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
     session_id character varying(40) REFERENCES "session" (sess_id),
     cache_key character varying(128) DEFAULT ''::character varying NOT NULL,
     created timestamp with time zone DEFAULT now() NOT NULL,
@@ -151,7 +154,7 @@
 
 CREATE TABLE "messages" (
     message_id integer DEFAULT nextval('message_ids'::text) PRIMARY KEY,
-    user_id integer NOT NULL REFERENCES users (user_id),
+    user_id integer NOT NULL REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
     del integer DEFAULT 0 NOT NULL,
     cache_key character varying(128) DEFAULT ''::character varying NOT NULL,
     created timestamp with time zone DEFAULT now() NOT NULL,
diff --git a/SQL/postgres.update.sql b/SQL/postgres.update.sql
index add454a..e0afa61 100644
--- a/SQL/postgres.update.sql
+++ b/SQL/postgres.update.sql
@@ -1,4 +1,19 @@
 -- RoundCube Webmail update script for Postgres databases
 -- Updates from version 0.1-stable to 0.1.1
 
-ALTER TABLE "cache" ADD INDEX (user_id, cache_key);
+CREATE INDEX cache_user_id_idx ON cache (user_id, cache_key);
+CREATE INDEX contacts_user_id_idx ON contacts (user_id);
+CREATE INDEX identities_user_id_idx ON identities (user_id);
+
+CREATE INDEX users_username_id_idx ON users (username);
+CREATE INDEX users_alias_id_idx ON users (alias);
+
+-- added ON DELETE/UPDATE actions
+ALTER TABLE messages DROP CONSTRAINT messages_user_id_fkey;
+ALTER TABLE messages ADD FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE;
+ALTER TABLE identities DROP CONSTRAINT identities_user_id_fkey;
+ALTER TABLE identities ADD FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE;
+ALTER TABLE contacts DROP CONSTRAINT contacts_user_id_fkey;
+ALTER TABLE contacts ADD FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE;
+ALTER TABLE cache DROP CONSTRAINT cache_user_id_fkey;
+ALTER TABLE cache ADD FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE;
diff --git a/SQL/sqlite.initial.sql b/SQL/sqlite.initial.sql
index a1eaeb8..6adcf4d 100644
--- a/SQL/sqlite.initial.sql
+++ b/SQL/sqlite.initial.sql
@@ -80,6 +80,8 @@
   preferences text NOT NULL default ''
 );
 
+CREATE INDEX ix_users_username ON users(username);
+CREATE INDEX ix_users_alias ON users(alias);
 
 -- --------------------------------------------------------
 
diff --git a/SQL/sqlite.update.sql b/SQL/sqlite.update.sql
index ed0ad20..047fe67 100644
--- a/SQL/sqlite.update.sql
+++ b/SQL/sqlite.update.sql
@@ -23,3 +23,5 @@
 
 CREATE INDEX ix_messages_user_cache_uid ON messages(user_id,cache_key,uid);
 
+CREATE INDEX ix_users_username ON users(username);
+CREATE INDEX ix_users_alias ON users(alias);

--
Gitblit v1.9.1