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',\n" \
52 " light_user_switch_mode TEXT NOT NULL DEFAULT 'default')"
54 #define QUERY_CREATE_TABLE_PACKAGE_LOCALIZED_INFO \
55 "CREATE TABLE IF NOT EXISTS package_localized_info (\n" \
56 " package TEXT NOT NULL,\n" \
57 " package_locale TEXT NOT NULL DEFAULT 'No Locale',\n" \
58 " package_label TEXT,\n" \
59 " package_icon TEXT,\n" \
60 " package_description TEXT,\n" \
61 " package_license TEXT,\n" \
62 " package_author TEXT,\n" \
63 " PRIMARY KEY(package, package_locale),\n" \
64 " FOREIGN KEY(package)\n" \
65 " REFERENCES package_info(package) ON DELETE CASCADE)"
67 #define QUERY_CREATE_TABLE_PACKAGE_PRIVILEGE_INFO \
68 "CREATE TABLE IF NOT EXISTS package_privilege_info (\n" \
69 " package TEXT NOT NULL,\n" \
70 " privilege TEXT NOT NULL,\n" \
71 " type TEXT NOT NULL,\n" \
72 " PRIMARY KEY(package, privilege, type)\n" \
73 " FOREIGN KEY(package)\n" \
74 " REFERENCES package_info(package) ON DELETE CASCADE)"
76 #define QUERY_CREATE_TABLE_PACKAGE_APPDEFINED_PRIVILEGE_INFO \
77 "CREATE TABLE IF NOT EXISTS package_appdefined_privilege_info (\n" \
78 " package TEXT NOT NULL,\n" \
79 " privilege TEXT NOT NULL,\n" \
81 " type TEXT NOT NULL,\n" \
82 " PRIMARY KEY(package, privilege, type)\n" \
83 " FOREIGN KEY(package)\n" \
84 " REFERENCES package_info(package) ON DELETE CASCADE)"
86 #define QUERY_CREATE_TABLE_PACKAGE_UPDATE_INFO \
87 "CREATE TABLE IF NOT EXISTS package_update_info (\n" \
88 " package TEXT NOT NULL,\n" \
89 " update_version TEXT NOT NULL,\n" \
90 " update_type TEXT NOT NULL DEFAULT 'none',\n" \
91 " PRIMARY KEY(package)\n" \
92 " FOREIGN KEY(package)\n" \
93 " REFERENCES package_info(package) ON DELETE CASCADE)"
95 #define QUERY_CREATE_TABLE_PACKAGE_APP_INFO \
96 "CREATE TABLE IF NOT EXISTS package_app_info (\n" \
97 " app_id TEXT PRIMARY KEY NOT NULL,\n" \
98 " app_component TEXT NOT NULL,\n" \
100 " app_nodisplay TEXT NOT NULL DEFAULT 'false',\n" \
101 " app_type TEXT,\n" \
102 " app_onboot TEXT NOT NULL DEFAULT 'false',\n" \
103 " app_multiple TEXT NOT NULL DEFAULT 'false',\n" \
104 " app_autorestart TEXT NOT NULL DEFAULT 'false',\n" \
105 " app_taskmanage TEXT NOT NULL DEFAULT 'false',\n" \
106 " app_hwacceleration TEXT NOT NULL DEFAULT 'use-system-setting',\n" \
107 " app_screenreader TEXT NOT NULL DEFAULT 'use-system-setting',\n" \
108 " app_mainapp TEXT NOT NULL,\n" \
109 " app_recentimage TEXT NOT NULL DEFAULT 'false',\n" \
110 " app_launchcondition TEXT,\n" \
111 " app_indicatordisplay TEXT NOT NULL DEFAULT 'true',\n" \
112 " app_portraitimg TEXT,\n" \
113 " app_landscapeimg TEXT,\n" \
114 " app_guestmodevisibility TEXT NOT NULL DEFAULT 'true',\n" \
115 " app_permissiontype TEXT NOT NULL DEFAULT 'normal',\n" \
116 " app_preload TEXT NOT NULL DEFAULT 'false',\n" \
117 " app_submode TEXT NOT NULL DEFAULT 'false',\n" \
118 " app_submode_mainid TEXT,\n" \
119 " app_installed_storage TEXT NOT NULL,\n" \
120 " app_process_pool TEXT NOT NULL DEFAULT 'false',\n" \
121 " app_launch_mode TEXT NOT NULL DEFAULT 'caller',\n" \
122 " app_ui_gadget TEXT NOT NULL DEFAULT 'false',\n" \
123 " app_support_mode TEXT,\n" \
124 " app_support_disable TEXT NOT NULL DEFAULT 'false',\n" \
125 " app_disable TEXT NOT NULL DEFAULT 'false',\n" \
126 " app_package_type TEXT DEFAULT 'tpk',\n" \
127 " app_package_system TEXT NOT NULL,\n" \
128 " app_removable TEXT NOT NULL DEFAULT 'false',\n" \
129 " app_package_installed_time TEXT,\n" \
130 " app_support_ambient TEXT NOT NULL DEFAULT 'false',\n" \
131 " component_type TEXT,\n" \
132 " package TEXT NOT NULL,\n" \
133 " app_tep_name TEXT,\n" \
134 " app_zip_mount_file TEXT,\n" \
135 " app_background_category INTEGER DEFAULT 0,\n" \
136 " app_root_path TEXT,\n" \
137 " app_api_version TEXT,\n" \
138 " app_effective_appid TEXT,\n" \
139 " app_splash_screen_display TEXT NOT NULL DEFAULT 'true',\n" \
140 " app_external_path TEXT,\n" \
141 " app_setup_appid TEXT,\n" \
142 " light_user_switch_mode TEXT NOT NULL DEFAULT 'default',\n" \
143 " FOREIGN KEY(package)\n" \
144 " REFERENCES package_info(package) ON DELETE CASCADE)"
146 #define QUERY_CREATE_TABLE_PACKAGE_APP_LOCALIZED_INFO \
147 "CREATE TABLE IF NOT EXISTS package_app_localized_info (\n" \
148 " app_id TEXT NOT NULL,\n" \
149 " app_locale TEXT NOT NULL DEFAULT 'No Locale',\n" \
150 " app_label TEXT,\n" \
151 " app_icon TEXT,\n" \
152 " PRIMARY KEY(app_id,app_locale)\n" \
153 " FOREIGN KEY(app_id)\n" \
154 " REFERENCES package_app_info(app_id) ON DELETE CASCADE)"
156 #define QUERY_CREATE_TABLE_PACKAGE_APP_APP_CONTROL \
157 "CREATE TABLE IF NOT EXISTS package_app_app_control (\n" \
158 " app_id TEXT NOT NULL,\n" \
159 " app_control TEXT NOT NULL,\n" \
160 " visibility TEXT NOT NULL DEFAULT 'local-only',\n" \
161 " app_control_id TEXT NOT NULL DEFAULT 'no-name-app-control',\n" \
162 " PRIMARY KEY(app_id,app_control)\n" \
163 " FOREIGN KEY(app_id)\n" \
164 " REFERENCES package_app_info(app_id) ON DELETE CASCADE)"
166 #define QUERY_CREATE_TABLE_PACKAGE_APP_APP_CONTROL_PRIVILEGE \
167 "CREATE TABLE IF NOT EXISTS package_app_app_control_privilege (\n" \
168 " app_id TEXT NOT NULL,\n" \
169 " app_control TEXT NOT NULL,\n" \
170 " privilege TEXT NOT NULL,\n" \
171 " FOREIGN KEY(app_id,app_control)\n" \
172 " REFERENCES package_app_app_control(app_id,app_control) ON DELETE CASCADE)"
174 #define QUERY_CREATE_TABLE_PACKAGE_APP_APP_CATEGORY \
175 "CREATE TABLE IF NOT EXISTS package_app_app_category (\n" \
176 " app_id TEXT NOT NULL,\n" \
177 " category TEXT NOT NULL,\n" \
178 " PRIMARY KEY(app_id,category)\n" \
179 " FOREIGN KEY(app_id)\n" \
180 " REFERENCES package_app_info(app_id) ON DELETE CASCADE)"
182 #define QUERY_CREATE_TABLE_PACKAGE_APP_APP_METADATA \
183 "CREATE TABLE IF NOT EXISTS package_app_app_metadata (\n" \
184 " app_id TEXT NOT NULL,\n" \
185 " md_key TEXT NOT NULL,\n" \
186 " md_value TEXT,\n" \
187 " PRIMARY KEY(app_id, md_key, md_value)\n" \
188 " FOREIGN KEY(app_id)\n" \
189 " REFERENCES package_app_info(app_id) ON DELETE CASCADE)"
191 #define QUERY_CREATE_TABLE_PACKAGE_APP_DATA_CONTROL \
192 "CREATE TABLE IF NOT EXISTS package_app_data_control (\n" \
193 " app_id TEXT NOT NULL,\n" \
194 " providerid TEXT NOT NULL,\n" \
195 " access TEXT NOT NULL,\n" \
196 " type TEXT NOT NULL,\n" \
197 " trusted TEXT NOT NULL,\n" \
198 " PRIMARY KEY(providerid, type)\n" \
199 " FOREIGN KEY(app_id)\n" \
200 " REFERENCES package_app_info(app_id) ON DELETE CASCADE)"
202 #define QUERY_CREATE_TABLE_PACKAGE_APP_DATA_CONTROL_PRIVILEGE \
203 "CREATE TABLE IF NOT EXISTS package_app_data_control_privilege (\n" \
204 " providerid TEXT,\n" \
205 " privilege TEXT NOT NULL,\n" \
206 " type TEXT NOT NULL,\n" \
207 " PRIMARY KEY(providerid, privilege, type)\n" \
208 " FOREIGN KEY(providerid, type)\n" \
209 " REFERENCES package_app_data_control(providerid, type) ON DELETE CASCADE)"
211 #define QUERY_CREATE_TABLE_PACKAGE_APP_INFO_FOR_UID \
212 "CREATE TABLE IF NOT EXISTS package_app_info_for_uid (\n" \
213 " app_id TEXT NOT NULL,\n" \
214 " uid INTEGER NOT NULL,\n" \
215 " is_disabled TEXT NOT NULL DEFAULT 'false',\n" \
216 " is_splash_screen_enabled TEXT NOT NULL,\n" \
217 " PRIMARY KEY(app_id, uid)\n" \
218 " FOREIGN KEY(app_id)\n" \
219 " REFERENCES package_app_info(app_id) ON DELETE CASCADE)"
221 #define QUERY_CREATE_TRIGGER_UPDATE_PACKAGE_APP_INFO_FOR_UID \
222 "CREATE TRIGGER IF NOT EXISTS update_package_appinfo_for_uid\n"\
223 "AFTER INSERT ON package_app_info_for_uid\n" \
225 " DELETE FROM package_app_info_for_uid\n"\
226 " WHERE is_splash_screen_enabled=\n" \
227 " (SELECT package_app_info.app_splash_screen_display FROM\n" \
228 " package_app_info, package_app_info_for_uid\n" \
229 " WHERE package_app_info.app_id=NEW.app_id) AND is_disabled='false';\n" \
232 #define QUERY_CREATE_TABLE_PACKAGE_APP_SPLASH_SCREEN \
233 "CREATE TABLE IF NOT EXISTS package_app_splash_screen (\n" \
234 " app_id TEXT NOT NULL,\n" \
235 " src TEXT NOT NULL,\n" \
236 " type TEXT NOT NULL,\n" \
237 " orientation TEXT NOT NULL,\n" \
238 " indicatordisplay TEXT,\n" \
239 " operation TEXT NOT NULL,\n" \
240 " color_depth TEXT NOT NULL DEFAULT '24',\n" \
241 " PRIMARY KEY(app_id, orientation, operation)\n" \
242 " FOREIGN KEY(app_id)\n" \
243 " REFERENCES package_app_info(app_id) ON DELETE CASCADE)"
245 #define QUERY_CREATE_TABLE_PACKAGE_APP_RES_CONTROL \
246 "CREATE TABLE IF NOT EXISTS package_app_res_control (\n" \
247 " app_id TEXT NOT NULL,\n" \
248 " res_type TEXT NOT NULL,\n" \
249 " min_res_version TEXT,\n" \
250 " max_res_version TEXT,\n" \
251 " auto_close TEXT,\n" \
252 " PRIMARY KEY(app_id, res_type)\n" \
253 " FOREIGN KEY(app_id)\n" \
254 " REFERENCES package_app_info(app_id) ON DELETE CASCADE)"
256 #define QUERY_CREATE_TABLE_PACKAGE_DEPENDENCY_INFO \
257 "CREATE TABLE IF NOT EXISTS package_dependency_info (\n" \
258 " package TEXT NOT NULL,\n" \
259 " depends_on TEXT NOT NULL,\n" \
260 " type TEXT NOT NULL,\n" \
261 " required_version TEXT,\n" \
262 " PRIMARY KEY(package, depends_on),\n" \
263 " FOREIGN KEY(package)\n" \
264 " REFERENCES package_info(package) ON DELETE CASCADE)"
266 #define QUERY_CREATE_TABLE_PACKAGE_PLUGIN_INFO \
267 "CREATE TABLE IF NOT EXISTS package_plugin_info (\n" \
268 " pkgid TEXT NOT NULL,\n" \
270 " plugin_type TEXT NOT NULL,\n" \
271 " plugin_name TEXT NOT NULL)"
273 #define QUERY_CREATE_TABLE_PACKAGE_RES_INFO \
274 "CREATE TABLE IF NOT EXISTS package_res_info (\n" \
275 " package TEXT NOT NULL,\n" \
276 " res_type TEXT NOT NULL,\n" \
277 " res_version TEXT NOT NULL,\n" \
278 " PRIMARY KEY(res_type, res_version)\n" \
279 " FOREIGN KEY(package)\n" \
280 " REFERENCES package_info(package) ON DELETE CASCADE)"
282 #define QUERY_CREATE_TABLE_PACKAGE_RES_ALLOWED_PACKAGE \
283 "CREATE TABLE IF NOT EXISTS package_res_allowed_package (\n" \
284 " package TEXT NOT NULL,\n" \
285 " allowed_package TEXT NOT NULL,\n" \
286 " required_privilege TEXT,\n" \
287 " PRIMARY KEY(package, allowed_package, required_privilege)\n" \
288 " FOREIGN KEY(package)\n" \
289 " REFERENCES package_info(package) ON DELETE CASCADE)"
291 #define QUERY_CREATE_TABLE_PACKAGE_METADATA \
292 "CREATE TABLE IF NOT EXISTS package_metadata (\n" \
293 " package TEXT NOT NULL,\n" \
294 " md_key TEXT NOT NULL,\n" \
295 " md_value TEXT,\n" \
296 " PRIMARY KEY(package, md_key, md_value)\n" \
297 " FOREIGN KEY(package)\n" \
298 " REFERENCES package_info(package) ON DELETE CASCADE)"
300 /* FIXME: duplicated at pkgmgrinfo_db.c */
301 #define QUERY_CREATE_TABLE_PACKAGE_CERT_INDEX_INFO \
302 "CREATE TABLE IF NOT EXISTS package_cert_index_info (\n" \
303 " cert_info TEXT UNIQUE,\n" \
304 " cert_id INTEGER PRIMARY KEY,\n" \
305 " cert_ref_count INTEGER NOT NULL)"
307 #define QUERY_CREATE_TABLE_PACKAGE_CERT_INFO \
308 "CREATE TABLE IF NOT EXISTS package_cert_info (\n" \
309 " package TEXT PRIMARY KEY,\n" \
310 " package_count INTEGER,\n" \
311 " author_root_cert INTEGER,\n" \
312 " author_im_cert INTEGER,\n" \
313 " author_signer_cert INTEGER,\n" \
314 " dist_root_cert INTEGER,\n" \
315 " dist_im_cert INTEGER,\n" \
316 " dist_signer_cert INTEGER,\n" \
317 " dist2_root_cert INTEGER,\n" \
318 " dist2_im_cert INTEGER,\n" \
319 " dist2_signer_cert INTEGER)"
321 #define QUERY_CREATE_TRIGGER_UPDATE_CERT_INFO \
322 "CREATE TRIGGER IF NOT EXISTS update_cert_info\n" \
323 "AFTER UPDATE ON package_cert_info\n" \
324 "WHEN (NEW.package_count = 0)\n" \
326 " DELETE FROM package_cert_info WHERE package=OLD.package;\n" \
329 #define QUERY_CREATE_TRIGGER_UPDATE_CERT_INFO2 \
330 "CREATE TRIGGER IF NOT EXISTS update_cert_info2\n" \
331 "AFTER UPDATE ON package_cert_info\n" \
332 "WHEN (NEW.package_count = OLD.package_count + 1)\n" \
334 " UPDATE package_cert_index_info SET\n" \
335 " cert_ref_count = cert_ref_count - 1\n" \
336 " WHERE cert_id = OLD.author_root_cert\n" \
337 " OR cert_id = OLD.author_im_cert\n" \
338 " OR cert_id = OLD.author_signer_cert\n" \
339 " OR cert_id = OLD.dist_root_cert\n" \
340 " OR cert_id = OLD.dist_im_cert\n" \
341 " OR cert_id = OLD.dist_signer_cert\n" \
342 " OR cert_id = OLD.dist2_root_cert\n" \
343 " OR cert_id = OLD.dist2_im_cert\n" \
344 " OR cert_id = OLD.dist2_signer_cert;\n" \
347 #define QUERY_CREATE_TRIGGER_DELETE_CERT_INFO \
348 "CREATE TRIGGER IF NOT EXISTS delete_cert_info\n" \
349 "AFTER DELETE ON package_cert_info\n" \
351 " UPDATE package_cert_index_info SET\n" \
352 " cert_ref_count = cert_ref_count - 1\n" \
353 " WHERE cert_id = OLD.author_root_cert\n" \
354 " OR cert_id = OLD.author_im_cert\n" \
355 " OR cert_id = OLD.author_signer_cert\n" \
356 " OR cert_id = OLD.dist_root_cert\n" \
357 " OR cert_id = OLD.dist_im_cert\n" \
358 " OR cert_id = OLD.dist_signer_cert\n" \
359 " OR cert_id = OLD.dist2_root_cert\n" \
360 " OR cert_id = OLD.dist2_im_cert\n" \
361 " OR cert_id = OLD.dist2_signer_cert;\n" \
364 #define QUERY_CREATE_TRIGGER_UPDATE_CERT_INDEX_INFO \
365 "CREATE TRIGGER IF NOT EXISTS update_cert_index_info\n" \
366 "AFTER UPDATE ON package_cert_index_info\n" \
367 "WHEN ((SELECT cert_ref_count FROM package_cert_index_info\n" \
368 " WHERE cert_id = OLD.cert_id) = 0)\n"\
370 " DELETE FROM package_cert_index_info WHERE cert_id = OLD.cert_id;\n" \
373 const char *PARSER_TABLES[] = {
375 "package_localized_info",
376 "package_privilege_info",
377 "package_appdefined_privilege_info",
378 "package_update_info",
380 "package_app_localized_info",
381 "package_app_app_control",
382 "package_app_app_control_privilege",
383 "package_app_app_category",
384 "package_app_app_metadata",
385 "package_app_data_control",
386 "package_app_data_control_privilege",
387 "package_app_info_for_uid",
388 "update_package_appinfo_for_uid",
389 "package_app_splash_screen",
390 "package_dependency_info",
391 "package_plugin_info",
396 const char *CERT_TABLES[] = {
398 "package_cert_index_info",
402 "update_cert_index_info",
406 const char *PARSER_INIT_QUERIES[] = {
407 QUERY_CREATE_TABLE_PACKAGE_INFO,
408 QUERY_CREATE_TABLE_PACKAGE_LOCALIZED_INFO,
409 QUERY_CREATE_TABLE_PACKAGE_PRIVILEGE_INFO,
410 QUERY_CREATE_TABLE_PACKAGE_APPDEFINED_PRIVILEGE_INFO,
411 QUERY_CREATE_TABLE_PACKAGE_UPDATE_INFO,
412 QUERY_CREATE_TABLE_PACKAGE_APP_INFO,
413 QUERY_CREATE_TABLE_PACKAGE_APP_LOCALIZED_INFO,
414 QUERY_CREATE_TABLE_PACKAGE_APP_APP_CONTROL,
415 QUERY_CREATE_TABLE_PACKAGE_APP_APP_CONTROL_PRIVILEGE,
416 QUERY_CREATE_TABLE_PACKAGE_APP_APP_CATEGORY,
417 QUERY_CREATE_TABLE_PACKAGE_APP_APP_METADATA,
418 QUERY_CREATE_TABLE_PACKAGE_APP_DATA_CONTROL,
419 QUERY_CREATE_TABLE_PACKAGE_APP_DATA_CONTROL_PRIVILEGE,
420 QUERY_CREATE_TABLE_PACKAGE_APP_INFO_FOR_UID,
421 QUERY_CREATE_TRIGGER_UPDATE_PACKAGE_APP_INFO_FOR_UID,
422 QUERY_CREATE_TABLE_PACKAGE_APP_SPLASH_SCREEN,
423 QUERY_CREATE_TABLE_PACKAGE_DEPENDENCY_INFO,
424 QUERY_CREATE_TABLE_PACKAGE_PLUGIN_INFO,
425 QUERY_CREATE_TABLE_PACKAGE_APP_RES_CONTROL,
426 QUERY_CREATE_TABLE_PACKAGE_RES_INFO,
427 QUERY_CREATE_TABLE_PACKAGE_RES_ALLOWED_PACKAGE,
428 QUERY_CREATE_TABLE_PACKAGE_METADATA,
432 const char *CERT_INIT_QUERIES[] = {
433 QUERY_CREATE_TABLE_PACKAGE_CERT_INFO,
434 QUERY_CREATE_TABLE_PACKAGE_CERT_INDEX_INFO,
435 QUERY_CREATE_TRIGGER_UPDATE_CERT_INFO,
436 QUERY_CREATE_TRIGGER_UPDATE_CERT_INFO2,
437 QUERY_CREATE_TRIGGER_DELETE_CERT_INFO,
438 QUERY_CREATE_TRIGGER_UPDATE_CERT_INDEX_INFO,
442 #endif /* __PKGMGR_PARSER_DB_QUERIES_H__ */