]> git.donarmstrong.com Git - roundcube.git/blob - SQL/postgres.update.sql
94513c53fef603c60718f8d3f4578d6a5c5686ec
[roundcube.git] / SQL / postgres.update.sql
1 -- Roundcube Webmail update script for Postgres databases
2 -- Updates from version 0.1-stable to 0.1.1
3
4 CREATE INDEX cache_user_id_idx ON cache (user_id, cache_key);
5 CREATE INDEX contacts_user_id_idx ON contacts (user_id);
6 CREATE INDEX identities_user_id_idx ON identities (user_id);
7
8 CREATE INDEX users_username_id_idx ON users (username);
9 CREATE INDEX users_alias_id_idx ON users (alias);
10
11 -- added ON DELETE/UPDATE actions
12 ALTER TABLE messages DROP CONSTRAINT messages_user_id_fkey;
13 ALTER TABLE messages ADD FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE;
14 ALTER TABLE identities DROP CONSTRAINT identities_user_id_fkey;
15 ALTER TABLE identities ADD FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE;
16 ALTER TABLE contacts DROP CONSTRAINT contacts_user_id_fkey;
17 ALTER TABLE contacts ADD FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE;
18 ALTER TABLE cache DROP CONSTRAINT cache_user_id_fkey;
19 ALTER TABLE cache ADD FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE;
20
21 -- Updates from version 0.2-alpha
22
23 CREATE INDEX messages_created_idx ON messages (created);
24
25 -- Updates from version 0.2-beta
26
27 ALTER TABLE cache DROP session_id;
28
29 CREATE INDEX session_changed_idx ON session (changed);
30 CREATE INDEX cache_created_idx ON "cache" (created);
31
32 ALTER TABLE users ALTER "language" DROP NOT NULL;
33 ALTER TABLE users ALTER "language" DROP DEFAULT;
34
35 ALTER TABLE identities ALTER del TYPE smallint;
36 ALTER TABLE identities ALTER standard TYPE smallint;
37 ALTER TABLE contacts ALTER del TYPE smallint;
38 ALTER TABLE messages ALTER del TYPE smallint;
39
40 -- Updates from version 0.3-stable
41
42 TRUNCATE messages;
43 CREATE INDEX messages_index_idx ON messages (user_id, cache_key, idx);
44 DROP INDEX contacts_user_id_idx;
45 CREATE INDEX contacts_user_id_idx ON contacts (user_id, email);
46
47 -- Updates from version 0.3.1
48
49 DROP INDEX identities_user_id_idx;
50 CREATE INDEX identities_user_id_idx ON identities (user_id, del);
51
52 ALTER TABLE identities ADD changed timestamp with time zone DEFAULT now() NOT NULL;
53
54 CREATE SEQUENCE contactgroups_ids
55     INCREMENT BY 1
56     NO MAXVALUE
57     NO MINVALUE
58     CACHE 1;
59
60 CREATE TABLE contactgroups (
61     contactgroup_id integer DEFAULT nextval('contactgroups_ids'::text) PRIMARY KEY,
62     user_id     integer         NOT NULL
63         REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE,
64     changed     timestamp with time zone DEFAULT now() NOT NULL,
65     del         smallint        NOT NULL DEFAULT 0,
66     name        varchar(128)    NOT NULL DEFAULT ''
67 );
68
69 CREATE INDEX contactgroups_user_id_idx ON contactgroups (user_id, del);
70
71 CREATE TABLE contactgroupmembers (
72     contactgroup_id     integer NOT NULL
73         REFERENCES contactgroups(contactgroup_id) ON DELETE CASCADE ON UPDATE CASCADE,
74     contact_id          integer NOT NULL
75         REFERENCES contacts(contact_id) ON DELETE CASCADE ON UPDATE CASCADE,
76     created timestamp with time zone DEFAULT now() NOT NULL,
77     PRIMARY KEY (contactgroup_id, contact_id)
78 );
79
80 -- Updates from version 0.4-beta
81
82 ALTER TABLE users ALTER last_login DROP NOT NULL;
83 ALTER TABLE users ALTER last_login SET DEFAULT NULL;
84
85 -- Updates from version 0.4.2
86
87 DROP INDEX users_username_id_idx;
88 ALTER TABLE users ADD CONSTRAINT users_username_key UNIQUE (username, mail_host);
89 ALTER TABLE contacts ALTER email TYPE varchar(255);
90
91 TRUNCATE messages;
92
93 -- Updates from version 0.5.1
94 -- Updates from version 0.5.2
95 -- Updates from version 0.5.3
96 -- Updates from version 0.5.4
97
98 ALTER TABLE contacts ADD words TEXT NULL;
99 CREATE INDEX contactgroupmembers_contact_id_idx ON contactgroupmembers (contact_id);
100
101 TRUNCATE messages;
102 TRUNCATE cache;