| 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; |
|---|
| 103 | |
|---|
| 104 | -- Updates from version 0.6 |
|---|
| 105 | |
|---|
| 106 | CREATE 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 | |
|---|
| 114 | CREATE SEQUENCE search_ids |
|---|
| 115 | INCREMENT BY 1 |
|---|
| 116 | NO MAXVALUE |
|---|
| 117 | NO MINVALUE |
|---|
| 118 | CACHE 1; |
|---|
| 119 | |
|---|
| 120 | CREATE 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 | |
|---|
| 130 | DROP SEQUENCE message_ids; |
|---|
| 131 | DROP TABLE messages; |
|---|
| 132 | |
|---|
| 133 | CREATE 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 | |
|---|
| 143 | CREATE INDEX cache_index_changed_idx ON cache_index (changed); |
|---|
| 144 | |
|---|
| 145 | CREATE 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 | |
|---|
| 154 | CREATE INDEX cache_thread_changed_idx ON cache_thread (changed); |
|---|
| 155 | |
|---|
| 156 | CREATE 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 | |
|---|
| 167 | CREATE INDEX cache_messages_changed_idx ON cache_messages (changed); |
|---|
| 168 | |
|---|
| 169 | -- Updates from version 0.7-beta |
|---|
| 170 | |
|---|
| 171 | ALTER TABLE "session" ALTER sess_id TYPE varchar(128); |
|---|
| 172 | |
|---|
| 173 | -- Updates from version 0.7 |
|---|
| 174 | |
|---|
| 175 | DROP INDEX contacts_user_id_idx; |
|---|
| 176 | CREATE INDEX contacts_user_id_idx ON contacts USING btree (user_id, del); |
|---|
| 177 | ALTER TABLE contacts ALTER email TYPE text; |
|---|
| 178 | |
|---|
| 179 | -- Updates from version 0.8 |
|---|
| 180 | |
|---|
| 181 | ALTER TABLE cache DROP COLUMN cache_id; |
|---|
| 182 | DROP SEQUENCE cache_ids; |
|---|
| 183 | |
|---|
| 184 | ALTER TABLE users DROP COLUMN alias; |
|---|
| 185 | CREATE INDEX identities_email_idx ON identities (email, del); |
|---|