2 * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License
18 * @author Maciej Karpiuk (m.karpiuk2@samsung.com)
20 * @brief DB migration script from schema version 2 to schema version 3.
25 DROP INDEX perm_index_idx;
26 DROP INDEX name_index_idx;
29 -- create new structure
30 CREATE TABLE SCHEMA_INFO(name TEXT PRIMARY KEY NOT NULL,
32 ALTER TABLE NAME_TABLE RENAME TO NAMES;
33 CREATE INDEX name_index_idx ON NAMES(idx);
34 -- need to create OBJECT table from scratch,
35 -- as SQLite does not support "ALTER COLUMN"
36 -- (REFERENCES NAME_TABLE --> NAMES)
37 CREATE TABLE OBJECTS(exportable INTEGER NOT NULL,
38 dataType INTEGER NOT NULL,
39 algorithmType INTEGER NOT NULL,
40 encryptionScheme INTEGER NOT NULL,
42 dataSize INTEGER NOT NULL,
46 FOREIGN KEY(idx) REFERENCES NAMES(idx) ON DELETE CASCADE,
47 PRIMARY KEY(idx, dataType));
48 ALTER TABLE KEY_TABLE RENAME TO KEYS;
49 CREATE TABLE PERMISSIONS(permissionLabel TEXT NOT NULL,
50 permissionMask INTEGER NOT NULL,
52 FOREIGN KEY(idx) REFERENCES NAMES(idx) ON DELETE CASCADE,
53 PRIMARY KEY(permissionLabel, idx));
54 CREATE INDEX perm_index_idx ON PERMISSIONS(idx);
55 CREATE VIEW [join_name_object_tables] AS
56 SELECT N.name, N.label, O.* FROM NAMES AS N
57 JOIN OBJECTS AS O ON O.idx=N.idx;
58 CREATE VIEW [join_name_permission_tables] AS
59 SELECT N.name, N.label, P.permissionMask, P.permissionLabel FROM NAMES AS N
60 JOIN PERMISSIONS AS P ON P.idx=N.idx;
61 CREATE VIEW [join_all_tables] AS
62 SELECT N.*, P.permissionLabel, P.permissionMask, O.dataType FROM NAMES AS N
63 JOIN OBJECTS AS O ON O.idx=N.idx
64 JOIN PERMISSIONS AS P ON P.idx=N.idx;
68 INSERT INTO OBJECTS SELECT * FROM OBJECT_TABLE;
69 INSERT INTO PERMISSIONS(permissionLabel, permissionMask, idx) SELECT label, 1, idx FROM PERMISSION_TABLE WHERE accessFlags='R';
70 INSERT INTO PERMISSIONS(permissionLabel, permissionMask, idx) SELECT label, 3, idx FROM PERMISSION_TABLE WHERE accessFlags='RD';
71 INSERT INTO PERMISSIONS(permissionLabel, permissionMask, idx) SELECT label, 3, idx FROM NAMES;
75 DROP TABLE OBJECT_TABLE;
76 DROP TABLE PERMISSION_TABLE;