Fix pkg parser connection logic 00/210000/1
authorJunghyun Yeon <jungh.yeon@samsung.com>
Mon, 15 Jul 2019 01:30:34 +0000 (10:30 +0900)
committerJunghyun Yeon <jungh.yeon@samsung.com>
Mon, 15 Jul 2019 04:54:51 +0000 (13:54 +0900)
Journaling mode of parser db has changed into WAL so
AUL code should be changed.

Change-Id: Ib093d0f1139bec7c53a9f81fcdba1b82254350db
Signed-off-by: Junghyun Yeon <jungh.yeon@samsung.com>
src/service_db.c

index 5fa39f0..93c22c4 100755 (executable)
@@ -205,6 +205,8 @@ static int __init_app_info_db(uid_t uid, sqlite3 **app_info_db, sqlite3 **global
 {
        int rc;
        char *db_path;
+       int persist_wal = 1;
+       int no_checkpoint = 1;
 
        if (*app_info_db && *global_app_info_db) {
                _D("Already initialized");
@@ -226,10 +228,26 @@ static int __init_app_info_db(uid_t uid, sqlite3 **app_info_db, sqlite3 **global
                goto err;
        }
 
-       rc = sqlite3_exec(*app_info_db, "PRAGMA journal_mode = PERSIST",
-                                       NULL, NULL, NULL);
-       if (SQLITE_OK != rc) {
-               _D("Fail to change journal mode");
+       rc = sqlite3_file_control(*app_info_db, NULL,
+                       SQLITE_FCNTL_PERSIST_WAL, &persist_wal);
+       if (rc) {
+               _E("failed to sqlite3_file_control: %s",
+                               sqlite3_errmsg(*app_info_db));
+               goto err;
+       }
+
+       rc = sqlite3_wal_autocheckpoint(*app_info_db, 0);
+       if (rc) {
+               _E("failed to sqlite3_wal_autocheckpoint: %s",
+                               sqlite3_errmsg(*app_info_db));
+               goto err;
+       }
+
+       rc = sqlite3_db_config(*app_info_db, SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE,
+                       &no_checkpoint);
+       if (rc) {
+               _E("failed to execute sqlite3_db_config: %s",
+                               sqlite3_errmsg(*app_info_db));
                goto err;
        }
 
@@ -245,10 +263,27 @@ static int __init_app_info_db(uid_t uid, sqlite3 **app_info_db, sqlite3 **global
                goto err;
        }
 
-       rc = sqlite3_exec(*global_app_info_db, "PRAGMA journal_mode = PERSIST",
-                       NULL, NULL, NULL);
-       if (SQLITE_OK != rc) {
-               _D("Fail to change journal mode");
+       rc = sqlite3_file_control(*global_app_info_db, NULL,
+                       SQLITE_FCNTL_PERSIST_WAL, &persist_wal);
+       if (rc) {
+               _E("failed to sqlite3_file_control: %s",
+                               sqlite3_errmsg(*global_app_info_db));
+               goto err;
+       }
+
+       rc = sqlite3_wal_autocheckpoint(*global_app_info_db, 0);
+       if (rc) {
+               _E("failed to sqlite3_wal_autocheckpoint: %s",
+                               sqlite3_errmsg(*global_app_info_db));
+               goto err;
+       }
+
+       rc = sqlite3_db_config(*global_app_info_db,
+                       SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE,
+                       &no_checkpoint);
+       if (rc) {
+               _E("failed to execute sqlite3_db_config: %s",
+                               sqlite3_errmsg(*global_app_info_db));
                goto err;
        }