Fix infobox with DPR != 1.
[pr0n] / sql / upgrade-v2.40.sql
1 --
2 -- Upgrades pre-v2.40 databases to 2.40 format -- basically, the unique event identifier
3 -- has changed from (event) to (vhost,event) and we need to handle that.
4 --
5
6 ALTER TABLE events RENAME COLUMN id TO event;
7
8 -- Create the new index that will eventually replace the old one
9 CREATE UNIQUE INDEX events_pkey2 ON events ( vhost, event );
10
11 -- Add a vhost column to the images table, populate it, and make a new foreign
12 -- key constraint
13 ALTER TABLE images ADD COLUMN vhost varchar;
14 UPDATE images SET vhost=( SELECT vhost FROM events WHERE event=images.event );
15 ALTER TABLE images ADD FOREIGN KEY (vhost, event) REFERENCES events (vhost,event);
16 ALTER TABLE images ALTER COLUMN vhost SET NOT NULL;
17
18 -- Same for fake_files
19 ALTER TABLE fake_files ADD COLUMN vhost varchar;
20 UPDATE fake_files SET vhost=( SELECT vhost FROM events WHERE event=fake_files.event );
21 ALTER TABLE fake_files ADD FOREIGN KEY (vhost, event) REFERENCES events (vhost,event);
22 ALTER TABLE fake_files ALTER COLUMN vhost SET NOT NULL;
23
24 -- and last_picture_cache
25 ALTER TABLE last_picture_cache ADD COLUMN vhost varchar;
26 UPDATE last_picture_cache SET vhost=( SELECT vhost FROM events WHERE event=last_picture_cache.event );
27 ALTER TABLE last_picture_cache ADD FOREIGN KEY (vhost, event) REFERENCES events (vhost,event);
28 ALTER TABLE last_picture_cache ALTER COLUMN vhost SET NOT NULL;
29
30 ALTER TABLE last_picture_cache DROP CONSTRAINT last_picture_cache_pkey;
31 ALTER TABLE last_picture_cache ADD PRIMARY KEY (vhost,event);
32
33 -- and deleted_images
34 ALTER TABLE deleted_images ADD COLUMN vhost varchar;
35 UPDATE deleted_images SET vhost=( SELECT vhost FROM events WHERE event=deleted_images.event );
36
37 -- and shadow_files
38 ALTER TABLE shadow_files ADD COLUMN vhost varchar;
39 UPDATE shadow_files SET vhost=( SELECT vhost FROM events WHERE event=shadow_files.event );
40 ALTER TABLE shadow_files ALTER COLUMN vhost SET NOT NULL;
41
42 -- Drop the old index
43 ALTER TABLE events DROP CONSTRAINT events_pkey CASCADE;
44
45 -- Finally, fix up some unique constraints
46 DROP INDEX unique_filenames;
47 CREATE UNIQUE INDEX unique_filenames ON images (vhost,event,filename);
48
49 ALTER TABLE fake_files DROP CONSTRAINT fake_files_pkey;
50 ALTER TABLE fake_files ADD PRIMARY KEY (vhost,event,filename);
51
52 -- And some old sillyness from waaay back (the MySQL days)
53 ALTER TABLE deleted_images ALTER COLUMN event TYPE varchar;
54 ALTER TABLE deleted_images ALTER COLUMN filename TYPE varchar;
55 ALTER TABLE deleted_images ALTER COLUMN uploadedby TYPE varchar;
56 ALTER TABLE deleted_images ALTER COLUMN takenby TYPE varchar;
57
58 ALTER TABLE fake_files ALTER COLUMN event TYPE varchar;
59 ALTER TABLE fake_files ALTER COLUMN filename TYPE varchar;
60
61 ALTER TABLE shadow_files ALTER COLUMN event TYPE varchar;
62 ALTER TABLE shadow_files ALTER COLUMN filename TYPE varchar;
63
64 ALTER TABLE users ALTER COLUMN username TYPE varchar;
65 ALTER TABLE users ALTER COLUMN vhost TYPE varchar;
66
67 -- Reclaim space from the old indexes
68 VACUUM FULL ANALYZE;
69