summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralecpl <alec@alec.pl>2010-10-06 13:00:12 +0000
committeralecpl <alec@alec.pl>2010-10-06 13:00:12 +0000
commitace511a771656c983046919333cee501339c98a1 (patch)
treee0cf919256f349da6ee939f582fd04428cc8d6d4
parentfec0704423075a1a5199d1c455a3ee0f7ea00ab3 (diff)
- Add unique index on users.username+users.mail_host
-rw-r--r--CHANGELOG1
-rw-r--r--SQL/mssql.initial.sql2
-rw-r--r--SQL/mssql.upgrade.sql7
-rw-r--r--SQL/mysql.initial.sql2
-rw-r--r--SQL/mysql.update.sql6
-rw-r--r--SQL/postgres.initial.sql10
-rw-r--r--SQL/postgres.update.sql8
-rw-r--r--SQL/sqlite.initial.sql2
-rw-r--r--SQL/sqlite.update.sql6
9 files changed, 35 insertions, 9 deletions
diff --git a/CHANGELOG b/CHANGELOG
index a0b0f36f8..0b7c8500c 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -18,6 +18,7 @@ CHANGELOG Roundcube Webmail
- Fix confirmation message isn't displayed after sending mail on Chrome (#1486177)
- Fix keyboard doesn't work with autocomplete list with Chrome (#1487029)
- Improve tabs to fixed width and add tabs in identities info (#1486974)
+- Add unique index on users.username+users.mail_host
RELEASE 0.4.2
-------------
diff --git a/SQL/mssql.initial.sql b/SQL/mssql.initial.sql
index 553e68a48..6b031a256 100644
--- a/SQL/mssql.initial.sql
+++ b/SQL/mssql.initial.sql
@@ -255,7 +255,7 @@ ALTER TABLE [dbo].[users] ADD
CONSTRAINT [DF_users_created] DEFAULT (getdate()) FOR [created]
GO
-CREATE INDEX [IX_users_username] ON [dbo].[users]([username]) ON [PRIMARY]
+CREATE UNIQUE INDEX [IX_users_username] ON [dbo].[users]([username],[mail_host]) ON [PRIMARY]
GO
CREATE INDEX [IX_users_alias] ON [dbo].[users]([alias]) ON [PRIMARY]
diff --git a/SQL/mssql.upgrade.sql b/SQL/mssql.upgrade.sql
index 1aa771b1f..6b3cd6d03 100644
--- a/SQL/mssql.upgrade.sql
+++ b/SQL/mssql.upgrade.sql
@@ -87,3 +87,10 @@ ALTER TABLE [dbo].[contactgroups] ADD CONSTRAINT [FK_contactgroups_user_id]
ON DELETE CASCADE ON UPDATE CASCADE
GO
+-- Updates from version 0.4.2
+
+DROP INDEX [IX_users_username]
+GO
+CREATE UNIQUE INDEX [IX_users_username] ON [dbo].[users]([username],[mail_host]) ON [PRIMARY]
+GO
+
diff --git a/SQL/mysql.initial.sql b/SQL/mysql.initial.sql
index fdab11505..456a48313 100644
--- a/SQL/mysql.initial.sql
+++ b/SQL/mysql.initial.sql
@@ -28,7 +28,7 @@ CREATE TABLE `users` (
`language` varchar(5),
`preferences` text,
PRIMARY KEY(`user_id`),
- INDEX `username_index` (`username`),
+ UNIQUE `username` (`username`, `mail_host`),
INDEX `alias_index` (`alias`)
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
diff --git a/SQL/mysql.update.sql b/SQL/mysql.update.sql
index 28ebf6f49..b9ab59ea9 100644
--- a/SQL/mysql.update.sql
+++ b/SQL/mysql.update.sql
@@ -123,3 +123,9 @@ CREATE TABLE `contactgroupmembers` (
ALTER TABLE `users` CHANGE `last_login` `last_login` datetime DEFAULT NULL;
UPDATE `users` SET `last_login` = NULL WHERE `last_login` = '1000-01-01 00:00:00';
+
+-- Updates from version 0.4.2
+
+ALTER TABLE `users` DROP INDEX `username_index`;
+ALTER TABLE `users` ADD UNIQUE `username` (`username`, `mail_host`);
+
diff --git a/SQL/postgres.initial.sql b/SQL/postgres.initial.sql
index ac59efb18..84a9afd40 100644
--- a/SQL/postgres.initial.sql
+++ b/SQL/postgres.initial.sql
@@ -24,10 +24,10 @@ CREATE TABLE users (
created timestamp with time zone DEFAULT now() NOT NULL,
last_login timestamp with time zone DEFAULT NULL,
"language" varchar(5),
- preferences text DEFAULT ''::text NOT NULL
+ preferences text DEFAULT ''::text NOT NULL,
+ UNIQUE (username, mail_host)
);
-CREATE INDEX users_username_id_idx ON users (username);
CREATE INDEX users_alias_id_idx ON users (alias);
@@ -146,7 +146,7 @@ CREATE INDEX contactgroups_user_id_idx ON contactgroups (user_id, del);
-- Table "contactgroupmembers"
-- Name: contactgroupmembers; Type: TABLE; Schema: public; Owner: postgres
--
-
+
CREATE TABLE contactgroupmembers (
contactgroup_id integer NOT NULL
REFERENCES contactgroups(contactgroup_id) ON DELETE CASCADE ON UPDATE CASCADE,
@@ -216,9 +216,9 @@ CREATE TABLE messages (
date timestamp with time zone NOT NULL,
size integer DEFAULT 0 NOT NULL,
headers text NOT NULL,
- structure text
+ structure text,
+ UNIQUE (user_id, cache_key, uid)
);
-ALTER TABLE messages ADD UNIQUE (user_id, cache_key, uid);
CREATE INDEX messages_index_idx ON messages (user_id, cache_key, idx);
CREATE INDEX messages_created_idx ON messages (created);
diff --git a/SQL/postgres.update.sql b/SQL/postgres.update.sql
index 1ef93d8b6..99b9c0e29 100644
--- a/SQL/postgres.update.sql
+++ b/SQL/postgres.update.sql
@@ -56,7 +56,7 @@ CREATE SEQUENCE contactgroups_ids
NO MAXVALUE
NO MINVALUE
CACHE 1;
-
+
CREATE TABLE contactgroups (
contactgroup_id integer DEFAULT nextval('contactgroups_ids'::text) PRIMARY KEY,
user_id integer NOT NULL
@@ -81,3 +81,9 @@ CREATE TABLE contactgroupmembers (
ALTER TABLE users ALTER last_login DROP NOT NULL;
ALTER TABLE users ALTER last_login SET DEFAULT NULL;
+
+-- Updates from version 0.4.2
+
+DROP INDEX users_username_id_idx;
+ALTER TABLE users ADD UNIQUE (username, mail_host);
+
diff --git a/SQL/sqlite.initial.sql b/SQL/sqlite.initial.sql
index e7faeedea..ea7650cb7 100644
--- a/SQL/sqlite.initial.sql
+++ b/SQL/sqlite.initial.sql
@@ -97,7 +97,7 @@ CREATE TABLE users (
preferences text NOT NULL default ''
);
-CREATE INDEX ix_users_username ON users(username);
+CREATE UNIQUE INDEX ix_users_username ON users(username, mail_host);
CREATE INDEX ix_users_alias ON users(alias);
-- --------------------------------------------------------
diff --git a/SQL/sqlite.update.sql b/SQL/sqlite.update.sql
index 2db782153..78e283e2d 100644
--- a/SQL/sqlite.update.sql
+++ b/SQL/sqlite.update.sql
@@ -140,3 +140,9 @@ INSERT INTO users (user_id, username, mail_host, alias, created, last_login, lan
CREATE INDEX ix_users_username ON users(username);
CREATE INDEX ix_users_alias ON users(alias);
DROP TABLE tmp_users;
+
+-- Updates from version 0.4.2
+
+DROP INDEX ix_users_username;
+CREATE UNIQUE INDEX ix_users_username ON users(username, mail_host);
+