From c589f5f7a07efcbf9e101a81195b4eba9bab8490 Mon Sep 17 00:00:00 2001 From: Junghyun Yeon Date: Mon, 25 Feb 2019 20:42:57 +0900 Subject: [PATCH] Change codes to let initdb could have deferred lock - Use deffered lock when initialize db to create table more fast when other processes try to get pkg dbinfo. Change-Id: I1deecc0c4d9e63bcca40277fe560cec2aa948492 Signed-off-by: Junghyun Yeon --- parser/src/pkgmgr_parser_db.c | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/parser/src/pkgmgr_parser_db.c b/parser/src/pkgmgr_parser_db.c index e065349..8f4c854 100644 --- a/parser/src/pkgmgr_parser_db.c +++ b/parser/src/pkgmgr_parser_db.c @@ -343,11 +343,23 @@ static const char *cert_init_queries[] = { NULL }; -static int __initialize_db(sqlite3 *db, const char *dbpath, uid_t uid) +static int __create_tables(sqlite3 *db, const char **queries) { int ret; - const char **queries; int i; + for (i = 0; queries[i] != NULL; i++) { + ret = sqlite3_exec(db, queries[i], NULL, NULL, NULL); + if (ret != SQLITE_OK) { + _LOGE("exec failed: %s", sqlite3_errmsg(db)); + return -1; + } + } + return 0; +} + +static int __initialize_db(sqlite3 *db, const char *dbpath, uid_t uid) +{ + const char **queries; if (__set_db_version(db)) return -1; @@ -361,13 +373,9 @@ static int __initialize_db(sqlite3 *db, const char *dbpath, uid_t uid) return -1; } - for (i = 0; queries[i] != NULL; i++) { - ret = sqlite3_exec(db, queries[i], NULL, NULL, NULL); - if (ret != SQLITE_OK) { - _LOGE("exec failed: %s", sqlite3_errmsg(db)); - return -1; - } - } + __BEGIN_TRANSACTION(db); + __DO_TRANSACTION(db, __create_tables(db, queries)); + __END_TRANSACTION(db); if (__set_db_permission(dbpath, uid)) _LOGE("failed to set db permission"); -- 2.7.4