2 * Copyright (c) 2000 - 2017 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 #ifndef __PKGMGR_PARSER_DB_QUERIES_H__
19 #define __PKGMGR_PARSER_DB_QUERIES_H__
21 #define QUERY_CREATE_TABLE_PACKAGE_INFO \
22 "CREATE TABLE IF NOT EXISTS package_info (\n" \
23 " package TEXT PRIMARY KEY NOT NULL,\n" \
24 " package_type TEXT DEFAULT 'tpk',\n" \
25 " package_version TEXT,\n" \
26 " package_api_version TEXT,\n" \
27 " package_tep_name TEXT,\n" \
28 " package_zip_mount_file TEXT,\n" \
29 " install_location TEXT NOT NULL,\n" \
30 " package_size TEXT,\n" \
31 " package_removable TEXT NOT NULL DEFAULT 'true',\n" \
32 " package_preload TEXT NOT NULL DEFAULT 'false',\n" \
33 " package_readonly TEXT NOT NULL DEFAULT 'false',\n" \
34 " package_update TEXT NOT NULL DEFAULT 'false',\n" \
35 " package_appsetting TEXT NOT NULL DEFAULT 'false',\n" \
36 " package_nodisplay TEXT NOT NULL DEFAULT 'false',\n" \
37 " package_system TEXT NOT NULL DEFAULT 'false',\n" \
38 " author_name TEXT,\n" \
39 " author_email TEXT,\n" \
40 " author_href TEXT,\n" \
41 " installed_time TEXT,\n" \
42 " installed_storage TEXT,\n" \
43 " storeclient_id TEXT,\n" \
44 " mainapp_id TEXT,\n" \
45 " package_url TEXT,\n" \
46 " root_path TEXT,\n" \
47 " external_path TEXT,\n" \
49 " package_support_mode TEXT,\n" \
50 " package_support_disable TEXT NOT NULL DEFAULT 'false',\n" \
51 " package_disable TEXT NOT NULL DEFAULT 'false')"
53 #define QUERY_CREATE_TABLE_PACKAGE_LOCALIZED_INFO \
54 "CREATE TABLE IF NOT EXISTS package_localized_info (\n" \
55 " package TEXT NOT NULL,\n" \
56 " package_locale TEXT NOT NULL DEFAULT 'No Locale',\n" \
57 " package_label TEXT,\n" \
58 " package_icon TEXT,\n" \
59 " package_description TEXT,\n" \
60 " package_license TEXT,\n" \
61 " package_author TEXT,\n" \
62 " PRIMARY KEY(package, package_locale),\n" \
63 " FOREIGN KEY(package)\n" \
64 " REFERENCES package_info(package) ON DELETE CASCADE)"
66 #define QUERY_CREATE_TABLE_PACKAGE_PRIVILEGE_INFO \
67 "CREATE TABLE IF NOT EXISTS package_privilege_info (\n" \
68 " package TEXT NOT NULL,\n" \
69 " privilege TEXT NOT NULL,\n" \
70 " type TEXT NOT NULL,\n" \
71 " PRIMARY KEY(package, privilege, type)\n" \
72 " FOREIGN KEY(package)\n" \
73 " REFERENCES package_info(package) ON DELETE CASCADE)"
75 #define QUERY_CREATE_TABLE_PACKAGE_APPDEFINED_PRIVILEGE_INFO \
76 "CREATE TABLE IF NOT EXISTS package_appdefined_privilege_info (\n" \
77 " package TEXT NOT NULL,\n" \
78 " privilege TEXT NOT NULL,\n" \
80 " type TEXT NOT NULL,\n" \
81 " PRIMARY KEY(package, privilege, type)\n" \
82 " FOREIGN KEY(package)\n" \
83 " REFERENCES package_info(package) ON DELETE CASCADE)"
85 #define QUERY_CREATE_TABLE_PACKAGE_UPDATE_INFO \
86 "CREATE TABLE IF NOT EXISTS package_update_info (\n" \
87 " package TEXT NOT NULL,\n" \
88 " update_version TEXT NOT NULL,\n" \
89 " update_type TEXT NOT NULL DEFAULT 'none',\n" \
90 " PRIMARY KEY(package)\n" \
91 " FOREIGN KEY(package)\n" \
92 " REFERENCES package_info(package) ON DELETE CASCADE)"
94 #define QUERY_CREATE_TABLE_PACKAGE_APP_INFO \
95 "CREATE TABLE IF NOT EXISTS package_app_info (\n" \
96 " app_id TEXT PRIMARY KEY NOT NULL,\n" \
97 " app_component TEXT NOT NULL,\n" \
99 " app_nodisplay TEXT NOT NULL DEFAULT 'false',\n" \
100 " app_type TEXT,\n" \
101 " app_onboot TEXT NOT NULL DEFAULT 'false',\n" \
102 " app_multiple TEXT NOT NULL DEFAULT 'false',\n" \
103 " app_autorestart TEXT NOT NULL DEFAULT 'false',\n" \
104 " app_taskmanage TEXT NOT NULL DEFAULT 'false',\n" \
105 " app_hwacceleration TEXT NOT NULL DEFAULT 'use-system-setting',\n" \
106 " app_screenreader TEXT NOT NULL DEFAULT 'use-system-setting',\n" \
107 " app_mainapp TEXT NOT NULL,\n" \
108 " app_recentimage TEXT NOT NULL DEFAULT 'false',\n" \
109 " app_launchcondition TEXT,\n" \
110 " app_indicatordisplay TEXT NOT NULL DEFAULT 'true',\n" \
111 " app_portraitimg TEXT,\n" \
112 " app_landscapeimg TEXT,\n" \
113 " app_guestmodevisibility TEXT NOT NULL DEFAULT 'true',\n" \
114 " app_permissiontype TEXT NOT NULL DEFAULT 'normal',\n" \
115 " app_preload TEXT NOT NULL DEFAULT 'false',\n" \
116 " app_submode TEXT NOT NULL DEFAULT 'false',\n" \
117 " app_submode_mainid TEXT,\n" \
118 " app_installed_storage TEXT NOT NULL,\n" \
119 " app_process_pool TEXT NOT NULL DEFAULT 'false',\n" \
120 " app_launch_mode TEXT NOT NULL DEFAULT 'caller',\n" \
121 " app_ui_gadget TEXT NOT NULL DEFAULT 'false',\n" \
122 " app_support_mode TEXT,\n" \
123 " app_support_disable TEXT NOT NULL DEFAULT 'false',\n" \
124 " app_disable TEXT NOT NULL DEFAULT 'false',\n" \
125 " app_package_type TEXT DEFAULT 'tpk',\n" \
126 " app_package_system TEXT NOT NULL,\n" \
127 " app_removable TEXT NOT NULL DEFAULT 'false',\n" \
128 " app_package_installed_time TEXT,\n" \
129 " app_support_ambient TEXT NOT NULL DEFAULT 'false',\n" \
130 " component_type TEXT,\n" \
131 " package TEXT NOT NULL,\n" \
132 " app_tep_name TEXT,\n" \
133 " app_zip_mount_file TEXT,\n" \
134 " app_background_category INTEGER DEFAULT 0,\n" \
135 " app_root_path TEXT,\n" \
136 " app_api_version TEXT,\n" \
137 " app_effective_appid TEXT,\n" \
138 " app_splash_screen_display TEXT NOT NULL DEFAULT 'true',\n" \
139 " app_external_path TEXT,\n" \
140 " app_setup_appid TEXT,\n" \
141 " FOREIGN KEY(package)\n" \
142 " REFERENCES package_info(package) ON DELETE CASCADE)"
144 #define QUERY_CREATE_TABLE_PACKAGE_APP_LOCALIZED_INFO \
145 "CREATE TABLE IF NOT EXISTS package_app_localized_info (\n" \
146 " app_id TEXT NOT NULL,\n" \
147 " app_locale TEXT NOT NULL DEFAULT 'No Locale',\n" \
148 " app_label TEXT,\n" \
149 " app_icon TEXT,\n" \
150 " PRIMARY KEY(app_id,app_locale)\n" \
151 " FOREIGN KEY(app_id)\n" \
152 " REFERENCES package_app_info(app_id) ON DELETE CASCADE)"
154 #define QUERY_CREATE_TABLE_PACKAGE_APP_APP_CONTROL \
155 "CREATE TABLE IF NOT EXISTS package_app_app_control (\n" \
156 " app_id TEXT NOT NULL,\n" \
157 " app_control TEXT NOT NULL,\n" \
158 " visibility TEXT NOT NULL DEFAULT 'local-only',\n" \
159 " app_control_id TEXT NOT NULL DEFAULT 'no-name-app-control',\n" \
160 " PRIMARY KEY(app_id,app_control)\n" \
161 " FOREIGN KEY(app_id)\n" \
162 " REFERENCES package_app_info(app_id) ON DELETE CASCADE)"
164 #define QUERY_CREATE_TABLE_PACKAGE_APP_APP_CONTROL_PRIVILEGE \
165 "CREATE TABLE IF NOT EXISTS package_app_app_control_privilege (\n" \
166 " app_id TEXT NOT NULL,\n" \
167 " app_control TEXT NOT NULL,\n" \
168 " privilege TEXT NOT NULL,\n" \
169 " FOREIGN KEY(app_id,app_control)\n" \
170 " REFERENCES package_app_app_control(app_id,app_control) ON DELETE CASCADE)"
172 #define QUERY_CREATE_TABLE_PACKAGE_APP_APP_CATEGORY \
173 "CREATE TABLE IF NOT EXISTS package_app_app_category (\n" \
174 " app_id TEXT NOT NULL,\n" \
175 " category TEXT NOT NULL,\n" \
176 " PRIMARY KEY(app_id,category)\n" \
177 " FOREIGN KEY(app_id)\n" \
178 " REFERENCES package_app_info(app_id) ON DELETE CASCADE)"
180 #define QUERY_CREATE_TABLE_PACKAGE_APP_APP_METADATA \
181 "CREATE TABLE IF NOT EXISTS package_app_app_metadata (\n" \
182 " app_id TEXT NOT NULL,\n" \
183 " md_key TEXT NOT NULL,\n" \
184 " md_value TEXT,\n" \
185 " PRIMARY KEY(app_id, md_key, md_value)\n" \
186 " FOREIGN KEY(app_id)\n" \
187 " REFERENCES package_app_info(app_id) ON DELETE CASCADE)"
189 #define QUERY_CREATE_TABLE_PACKAGE_APP_DATA_CONTROL \
190 "CREATE TABLE IF NOT EXISTS package_app_data_control (\n" \
191 " app_id TEXT NOT NULL,\n" \
192 " providerid TEXT NOT NULL,\n" \
193 " access TEXT NOT NULL,\n" \
194 " type TEXT NOT NULL,\n" \
195 " trusted TEXT NOT NULL,\n" \
196 " PRIMARY KEY(providerid, type)\n" \
197 " FOREIGN KEY(app_id)\n" \
198 " REFERENCES package_app_info(app_id) ON DELETE CASCADE)"
200 #define QUERY_CREATE_TABLE_PACKAGE_APP_DATA_CONTROL_PRIVILEGE \
201 "CREATE TABLE IF NOT EXISTS package_app_data_control_privilege (\n" \
202 " providerid TEXT,\n" \
203 " privilege TEXT NOT NULL,\n" \
204 " type TEXT NOT NULL,\n" \
205 " PRIMARY KEY(providerid, privilege, type)\n" \
206 " FOREIGN KEY(providerid, type)\n" \
207 " REFERENCES package_app_data_control(providerid, type) ON DELETE CASCADE)"
209 #define QUERY_CREATE_TABLE_PACKAGE_APP_INFO_FOR_UID \
210 "CREATE TABLE IF NOT EXISTS package_app_info_for_uid (\n" \
211 " app_id TEXT NOT NULL,\n" \
212 " uid INTEGER NOT NULL,\n" \
213 " is_disabled TEXT NOT NULL DEFAULT 'false',\n" \
214 " is_splash_screen_enabled TEXT NOT NULL,\n" \
215 " PRIMARY KEY(app_id, uid)\n" \
216 " FOREIGN KEY(app_id)\n" \
217 " REFERENCES package_app_info(app_id) ON DELETE CASCADE)"
219 #define QUERY_CREATE_TRIGGER_UPDATE_PACKAGE_APP_INFO_FOR_UID \
220 "CREATE TRIGGER IF NOT EXISTS update_package_appinfo_for_uid\n"\
221 "AFTER INSERT ON package_app_info_for_uid\n" \
223 " DELETE FROM package_app_info_for_uid\n"\
224 " WHERE is_splash_screen_enabled=\n" \
225 " (SELECT package_app_info.app_splash_screen_display FROM\n" \
226 " package_app_info, package_app_info_for_uid\n" \
227 " WHERE package_app_info.app_id=NEW.app_id) AND is_disabled='false';\n" \
230 #define QUERY_CREATE_TABLE_PACKAGE_APP_SPLASH_SCREEN \
231 "CREATE TABLE IF NOT EXISTS package_app_splash_screen (\n" \
232 " app_id TEXT NOT NULL,\n" \
233 " src TEXT NOT NULL,\n" \
234 " type TEXT NOT NULL,\n" \
235 " orientation TEXT NOT NULL,\n" \
236 " indicatordisplay TEXT,\n" \
237 " operation TEXT NOT NULL,\n" \
238 " color_depth TEXT NOT NULL DEFAULT '24',\n" \
239 " PRIMARY KEY(app_id, orientation, operation)\n" \
240 " FOREIGN KEY(app_id)\n" \
241 " REFERENCES package_app_info(app_id) ON DELETE CASCADE)"
243 #define QUERY_CREATE_TABLE_PACKAGE_DEPENDENCY_INFO \
244 "CREATE TABLE IF NOT EXISTS package_dependency_info (\n" \
245 " package TEXT NOT NULL,\n" \
246 " depends_on TEXT NOT NULL,\n" \
247 " type TEXT NOT NULL,\n" \
248 " required_version TEXT,\n" \
249 " PRIMARY KEY(package, depends_on),\n" \
250 " FOREIGN KEY(package)\n" \
251 " REFERENCES package_info(package) ON DELETE CASCADE)"
253 #define QUERY_CREATE_TABLE_PACKAGE_PLUGIN_INFO \
254 "CREATE TABLE IF NOT EXISTS package_plugin_info (\n" \
255 " pkgid TEXT NOT NULL,\n" \
257 " plugin_type TEXT NOT NULL,\n" \
258 " plugin_name TEXT NOT NULL)"
260 /* FIXME: duplicated at pkgmgrinfo_db.c */
261 #define QUERY_CREATE_TABLE_PACKAGE_CERT_INDEX_INFO \
262 "CREATE TABLE IF NOT EXISTS package_cert_index_info (\n" \
263 " cert_info TEXT UNIQUE,\n" \
264 " cert_id INTEGER PRIMARY KEY,\n" \
265 " cert_ref_count INTEGER NOT NULL)"
267 #define QUERY_CREATE_TABLE_PACKAGE_CERT_INFO \
268 "CREATE TABLE IF NOT EXISTS package_cert_info (\n" \
269 " package TEXT PRIMARY KEY,\n" \
270 " package_count INTEGER,\n" \
271 " author_root_cert INTEGER,\n" \
272 " author_im_cert INTEGER,\n" \
273 " author_signer_cert INTEGER,\n" \
274 " dist_root_cert INTEGER,\n" \
275 " dist_im_cert INTEGER,\n" \
276 " dist_signer_cert INTEGER,\n" \
277 " dist2_root_cert INTEGER,\n" \
278 " dist2_im_cert INTEGER,\n" \
279 " dist2_signer_cert INTEGER)"
281 #define QUERY_CREATE_TRIGGER_UPDATE_CERT_INFO \
282 "CREATE TRIGGER IF NOT EXISTS update_cert_info\n" \
283 "AFTER UPDATE ON package_cert_info\n" \
284 "WHEN (NEW.package_count = 0)\n" \
286 " DELETE FROM package_cert_info WHERE package=OLD.package;\n" \
289 #define QUERY_CREATE_TRIGGER_UPDATE_CERT_INFO2 \
290 "CREATE TRIGGER IF NOT EXISTS update_cert_info2\n" \
291 "AFTER UPDATE ON package_cert_info\n" \
292 "WHEN (NEW.package_count = OLD.package_count + 1)\n" \
294 " UPDATE package_cert_index_info SET\n" \
295 " cert_ref_count = cert_ref_count - 1\n" \
296 " WHERE cert_id = OLD.author_root_cert\n" \
297 " OR cert_id = OLD.author_im_cert\n" \
298 " OR cert_id = OLD.author_signer_cert\n" \
299 " OR cert_id = OLD.dist_root_cert\n" \
300 " OR cert_id = OLD.dist_im_cert\n" \
301 " OR cert_id = OLD.dist_signer_cert\n" \
302 " OR cert_id = OLD.dist2_root_cert\n" \
303 " OR cert_id = OLD.dist2_im_cert\n" \
304 " OR cert_id = OLD.dist2_signer_cert;\n" \
307 #define QUERY_CREATE_TRIGGER_DELETE_CERT_INFO \
308 "CREATE TRIGGER IF NOT EXISTS delete_cert_info\n" \
309 "AFTER DELETE ON package_cert_info\n" \
311 " UPDATE package_cert_index_info SET\n" \
312 " cert_ref_count = cert_ref_count - 1\n" \
313 " WHERE cert_id = OLD.author_root_cert\n" \
314 " OR cert_id = OLD.author_im_cert\n" \
315 " OR cert_id = OLD.author_signer_cert\n" \
316 " OR cert_id = OLD.dist_root_cert\n" \
317 " OR cert_id = OLD.dist_im_cert\n" \
318 " OR cert_id = OLD.dist_signer_cert\n" \
319 " OR cert_id = OLD.dist2_root_cert\n" \
320 " OR cert_id = OLD.dist2_im_cert\n" \
321 " OR cert_id = OLD.dist2_signer_cert;\n" \
324 #define QUERY_CREATE_TRIGGER_UPDATE_CERT_INDEX_INFO \
325 "CREATE TRIGGER IF NOT EXISTS update_cert_index_info\n" \
326 "AFTER UPDATE ON package_cert_index_info\n" \
327 "WHEN ((SELECT cert_ref_count FROM package_cert_index_info\n" \
328 " WHERE cert_id = OLD.cert_id) = 0)\n"\
330 " DELETE FROM package_cert_index_info WHERE cert_id = OLD.cert_id;\n" \
333 const char *PARSER_TABLES[] = {
335 "package_localized_info",
336 "package_privilege_info",
337 "package_appdefined_privilege_info",
338 "package_update_info",
340 "package_app_localized_info",
341 "package_app_app_control",
342 "package_app_app_control_privilege",
343 "package_app_app_category",
344 "package_app_app_metadata",
345 "package_app_data_control",
346 "package_app_data_control_privilege",
347 "package_app_info_for_uid",
348 "update_package_appinfo_for_uid",
349 "package_app_splash_screen",
350 "package_dependency_info",
351 "package_plugin_info",
355 const char *CERT_TABLES[] = {
357 "package_cert_index_info",
361 "update_cert_index_info",
365 const char *PARSER_INIT_QUERIES[] = {
366 QUERY_CREATE_TABLE_PACKAGE_INFO,
367 QUERY_CREATE_TABLE_PACKAGE_LOCALIZED_INFO,
368 QUERY_CREATE_TABLE_PACKAGE_PRIVILEGE_INFO,
369 QUERY_CREATE_TABLE_PACKAGE_APPDEFINED_PRIVILEGE_INFO,
370 QUERY_CREATE_TABLE_PACKAGE_UPDATE_INFO,
371 QUERY_CREATE_TABLE_PACKAGE_APP_INFO,
372 QUERY_CREATE_TABLE_PACKAGE_APP_LOCALIZED_INFO,
373 QUERY_CREATE_TABLE_PACKAGE_APP_APP_CONTROL,
374 QUERY_CREATE_TABLE_PACKAGE_APP_APP_CONTROL_PRIVILEGE,
375 QUERY_CREATE_TABLE_PACKAGE_APP_APP_CATEGORY,
376 QUERY_CREATE_TABLE_PACKAGE_APP_APP_METADATA,
377 QUERY_CREATE_TABLE_PACKAGE_APP_DATA_CONTROL,
378 QUERY_CREATE_TABLE_PACKAGE_APP_DATA_CONTROL_PRIVILEGE,
379 QUERY_CREATE_TABLE_PACKAGE_APP_INFO_FOR_UID,
380 QUERY_CREATE_TRIGGER_UPDATE_PACKAGE_APP_INFO_FOR_UID,
381 QUERY_CREATE_TABLE_PACKAGE_APP_SPLASH_SCREEN,
382 QUERY_CREATE_TABLE_PACKAGE_DEPENDENCY_INFO,
383 QUERY_CREATE_TABLE_PACKAGE_PLUGIN_INFO,
387 const char *CERT_INIT_QUERIES[] = {
388 QUERY_CREATE_TABLE_PACKAGE_CERT_INFO,
389 QUERY_CREATE_TABLE_PACKAGE_CERT_INDEX_INFO,
390 QUERY_CREATE_TRIGGER_UPDATE_CERT_INFO,
391 QUERY_CREATE_TRIGGER_UPDATE_CERT_INFO2,
392 QUERY_CREATE_TRIGGER_DELETE_CERT_INFO,
393 QUERY_CREATE_TRIGGER_UPDATE_CERT_INDEX_INFO,
397 #endif /* __PKGMGR_PARSER_DB_QUERIES_H__ */