source: github/SQL/postgres.update.sql @ 565c472

Last change on this file since 565c472 was 565c472, checked in by Aleksander Machniak <alec@…>, 10 months ago

Removed users.alias column, added option ('user_aliases')
to use email address from identities as username (#1488581)

  • Property mode set to 100644
File size: 5.9 KB
Line 
1-- Roundcube Webmail update script for Postgres databases
2-- Updates from version 0.1-stable to 0.1.1
3
4CREATE INDEX cache_user_id_idx ON cache (user_id, cache_key);
5CREATE INDEX contacts_user_id_idx ON contacts (user_id);
6CREATE INDEX identities_user_id_idx ON identities (user_id);
7
8CREATE INDEX users_username_id_idx ON users (username);
9CREATE INDEX users_alias_id_idx ON users (alias);
10
11-- added ON DELETE/UPDATE actions
12ALTER TABLE messages DROP CONSTRAINT messages_user_id_fkey;
13ALTER TABLE messages ADD FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE;
14ALTER TABLE identities DROP CONSTRAINT identities_user_id_fkey;
15ALTER TABLE identities ADD FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE;
16ALTER TABLE contacts DROP CONSTRAINT contacts_user_id_fkey;
17ALTER TABLE contacts ADD FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE;
18ALTER TABLE cache DROP CONSTRAINT cache_user_id_fkey;
19ALTER 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
23CREATE INDEX messages_created_idx ON messages (created);
24
25-- Updates from version 0.2-beta
26
27ALTER TABLE cache DROP session_id;
28
29CREATE INDEX session_changed_idx ON session (changed);
30CREATE INDEX cache_created_idx ON "cache" (created);
31
32ALTER TABLE users ALTER "language" DROP NOT NULL;
33ALTER TABLE users ALTER "language" DROP DEFAULT;
34
35ALTER TABLE identities ALTER del TYPE smallint;
36ALTER TABLE identities ALTER standard TYPE smallint;
37ALTER TABLE contacts ALTER del TYPE smallint;
38ALTER TABLE messages ALTER del TYPE smallint;
39
40-- Updates from version 0.3-stable
41
42TRUNCATE messages;
43CREATE INDEX messages_index_idx ON messages (user_id, cache_key, idx);
44DROP INDEX contacts_user_id_idx;
45CREATE INDEX contacts_user_id_idx ON contacts (user_id, email);
46
47-- Updates from version 0.3.1
48
49DROP INDEX identities_user_id_idx;
50CREATE INDEX identities_user_id_idx ON identities (user_id, del);
51
52ALTER TABLE identities ADD changed timestamp with time zone DEFAULT now() NOT NULL;
53
54CREATE SEQUENCE contactgroups_ids
55    INCREMENT BY 1
56    NO MAXVALUE
57    NO MINVALUE
58    CACHE 1;
59
60CREATE 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
69CREATE INDEX contactgroups_user_id_idx ON contactgroups (user_id, del);
70
71CREATE 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
82ALTER TABLE users ALTER last_login DROP NOT NULL;
83ALTER TABLE users ALTER last_login SET DEFAULT NULL;
84
85-- Updates from version 0.4.2
86
87DROP INDEX users_username_id_idx;
88ALTER TABLE users ADD CONSTRAINT users_username_key UNIQUE (username, mail_host);
89ALTER TABLE contacts ALTER email TYPE varchar(255);
90
91TRUNCATE 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
98ALTER TABLE contacts ADD words TEXT NULL;
99CREATE INDEX contactgroupmembers_contact_id_idx ON contactgroupmembers (contact_id);
100
101TRUNCATE messages;
102TRUNCATE cache;
103
104-- Updates from version 0.6
105
106CREATE TABLE dictionary (
107    user_id integer DEFAULT NULL
108        REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
109   "language" varchar(5) NOT NULL,
110    data text NOT NULL,
111    CONSTRAINT dictionary_user_id_language_key UNIQUE (user_id, "language")
112);
113
114CREATE SEQUENCE search_ids
115    INCREMENT BY 1
116    NO MAXVALUE
117    NO MINVALUE
118    CACHE 1;
119
120CREATE TABLE searches (
121    search_id integer DEFAULT nextval('search_ids'::text) PRIMARY KEY,
122    user_id integer NOT NULL
123        REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
124    "type" smallint DEFAULT 0 NOT NULL,
125    name varchar(128) NOT NULL,
126    data text NOT NULL,
127    CONSTRAINT searches_user_id_key UNIQUE (user_id, "type", name)
128);
129
130DROP SEQUENCE message_ids;
131DROP TABLE messages;
132
133CREATE TABLE cache_index (
134    user_id integer NOT NULL
135        REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
136    mailbox varchar(255) NOT NULL,
137    changed timestamp with time zone DEFAULT now() NOT NULL,
138    valid smallint NOT NULL DEFAULT 0,
139    data text NOT NULL,
140    PRIMARY KEY (user_id, mailbox)
141);
142
143CREATE INDEX cache_index_changed_idx ON cache_index (changed);
144
145CREATE TABLE cache_thread (
146    user_id integer NOT NULL
147        REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
148    mailbox varchar(255) NOT NULL,
149    changed timestamp with time zone DEFAULT now() NOT NULL,
150    data text NOT NULL,
151    PRIMARY KEY (user_id, mailbox)
152);
153
154CREATE INDEX cache_thread_changed_idx ON cache_thread (changed);
155
156CREATE TABLE cache_messages (
157    user_id integer NOT NULL
158        REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
159    mailbox varchar(255) NOT NULL,
160    uid integer NOT NULL,
161    changed timestamp with time zone DEFAULT now() NOT NULL,
162    data text NOT NULL,
163    flags integer NOT NULL DEFAULT 0,
164    PRIMARY KEY (user_id, mailbox, uid)
165);
166
167CREATE INDEX cache_messages_changed_idx ON cache_messages (changed);
168
169-- Updates from version 0.7-beta
170
171ALTER TABLE "session" ALTER sess_id TYPE varchar(128);
172
173-- Updates from version 0.7
174
175DROP INDEX contacts_user_id_idx;
176CREATE INDEX contacts_user_id_idx ON contacts USING btree (user_id, del);
177ALTER TABLE contacts ALTER email TYPE text;
178
179-- Updates from version 0.8
180
181ALTER TABLE cache DROP COLUMN cache_id;
182DROP SEQUENCE cache_ids;
183
184ALTER TABLE users DROP COLUMN alias;
185CREATE INDEX identities_email_idx ON identities (email, del);
Note: See TracBrowser for help on using the repository browser.