summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--SQL/mysql.initial.sql4
-rw-r--r--SQL/mysql.update.sql4
-rw-r--r--SQL/mysql5.initial.sql4
-rw-r--r--SQL/postgres.initial.sql13
-rw-r--r--SQL/postgres.update.sql17
-rw-r--r--SQL/sqlite.initial.sql2
-rw-r--r--SQL/sqlite.update.sql2
7 files changed, 38 insertions, 8 deletions
diff --git a/SQL/mysql.initial.sql b/SQL/mysql.initial.sql
index ae195e438..019675ec4 100644
--- a/SQL/mysql.initial.sql
+++ b/SQL/mysql.initial.sql
@@ -91,7 +91,9 @@ CREATE TABLE `users` (
`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 70230784b..07b18174b 100644
--- a/SQL/mysql.update.sql
+++ b/SQL/mysql.update.sql
@@ -11,3 +11,7 @@ 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`);
diff --git a/SQL/mysql5.initial.sql b/SQL/mysql5.initial.sql
index 58e220f7d..881344b98 100644
--- a/SQL/mysql5.initial.sql
+++ b/SQL/mysql5.initial.sql
@@ -29,7 +29,9 @@ CREATE TABLE `users` (
`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 c7428369f..05c61924a 100644
--- a/SQL/postgres.initial.sql
+++ b/SQL/postgres.initial.sql
@@ -25,6 +25,8 @@ CREATE TABLE users (
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 SEQUENCE identity_ids
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 @@ CREATE TABLE identities (
html_signature integer DEFAULT 0 NOT NULL
);
+CREATE INDEX identities_user_id_idx ON identities (user_id);
--
@@ -94,7 +97,7 @@ CREATE SEQUENCE contact_ids
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 @@ CREATE TABLE contacts (
vcard text
);
-
+CREATE INDEX contacts_user_id_idx ON contacts (user_id);
--
-- Sequence "cache_ids"
@@ -124,7 +127,7 @@ CREATE SEQUENCE cache_ids
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 SEQUENCE message_ids
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 add454ab8..e0afa61ca 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 a1eaeb8be..6adcf4dff 100644
--- a/SQL/sqlite.initial.sql
+++ b/SQL/sqlite.initial.sql
@@ -80,6 +80,8 @@ CREATE TABLE users (
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 ed0ad2012..047fe6731 100644
--- a/SQL/sqlite.update.sql
+++ b/SQL/sqlite.update.sql
@@ -23,3 +23,5 @@ CREATE TABLE messages (
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);