annotate OrthancServer/Upgrade4To5.sql @ 1158:badc14fee61f db-changes

speed up db
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 16 Sep 2014 18:01:42 +0200
parents
children 8f9d49192815
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1158
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1 -- This SQLite script updates the version of the Orthanc database from 4 to 5.
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
3
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
4 CREATE TABLE MainResourcesTags(
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
5 id INTEGER REFERENCES Resources(internalId) ON DELETE CASCADE,
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
6 tagGroup INTEGER,
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
7 tagElement INTEGER,
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
8 value TEXT,
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
9 PRIMARY KEY(id, tagGroup, tagElement)
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
10 );
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
11
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
12 CREATE TABLE MainInstancesTags(
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
13 id INTEGER REFERENCES Resources(internalId) ON DELETE CASCADE,
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
14 tagGroup INTEGER,
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
15 tagElement INTEGER,
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
16 value TEXT,
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
17 PRIMARY KEY(id, tagGroup, tagElement)
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
18 );
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
19
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
20 CREATE INDEX MainResourcesTagsIndex1 ON MainResourcesTags(id);
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
21 CREATE INDEX MainResourcesTagsIndex2 ON MainResourcesTags(tagGroup, tagElement);
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
22 CREATE INDEX MainResourcesTagsIndexValues ON MainResourcesTags(value COLLATE BINARY);
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
23 CREATE INDEX MainInstancesTagsIndex ON MainInstancesTags(id);
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
24
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
25
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
26 -- Migrate data from MainDicomTags to MainResourcesTags and MainInstancesTags
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
27 -- Below, the value "4" corresponds to "ResourceType_Instance".
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
28 -- The "8" and "24" correspond to SOPInstanceUID (0x0008, 0x0018)
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
29
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
30 INSERT INTO MainResourcesTags SELECT MainDicomTags.* FROM MainDicomTags
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
31 INNER JOIN Resources ON Resources.internalId = MainDicomTags.id
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
32 WHERE (Resources.resourceType != 4 OR
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
33 (MainDicomTags.tagGroup = 8 AND
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
34 MainDicomTags.tagElement = 24));
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
35
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
36 INSERT INTO MainInstancesTags SELECT MainDicomTags.* FROM MainDicomTags
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
37 INNER JOIN Resources ON Resources.internalId = MainDicomTags.id
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
38 WHERE (Resources.resourceType = 4 AND
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
39 (MainDicomTags.tagGroup != 8 OR
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
40 MainDicomTags.tagElement != 24));
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
41
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
42 -- Remove the MainDicomTags table
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
43
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
44 DROP INDEX MainDicomTagsIndex1;
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
45 DROP INDEX MainDicomTagsIndex2;
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
46 DROP INDEX MainDicomTagsIndexValues;
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
47 DROP TABLE MainDicomTags;
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
48
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
49
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
50 -- Upgrade the "ResourceDeleted" trigger
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
51
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
52 DROP TRIGGER ResourceDeleted;
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
53
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
54 CREATE TRIGGER ResourceDeleted
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
55 AFTER DELETE ON Resources
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
56 BEGIN
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
57 SELECT SignalResourceDeleted(old.publicId, old.resourceType);
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
58 SELECT SignalRemainingAncestor(parent.publicId, parent.resourceType)
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
59 FROM Resources AS parent WHERE internalId = old.parentId;
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
60 END;
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
61
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
62
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
63 -- Change the database version
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
64 -- The "1" corresponds to the "GlobalProperty_DatabaseSchemaVersion" enumeration
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
65
badc14fee61f speed up db
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
66 UPDATE GlobalProperties SET value="5" WHERE property=1;