Make sure ime_info table created 70/163370/1
authorSungmin Kwak <sungmin.kwak@samsung.com>
Sat, 9 Dec 2017 00:43:25 +0000 (09:43 +0900)
committerSungmin Kwak <sungmin.kwak@samsung.com>
Mon, 11 Dec 2017 00:40:47 +0000 (09:40 +0900)
Use CREATE TABLE IF NOT EXISTS command

Change-Id: Icf3a2ed182791eadf8e6a078b8f3f8349e6e2970

ism/src/isf_query_utility.cpp

index 71b3ae172a78e41300bbd35fda67c23ae5ae5801..73435110a92cdaff72952d40ea3ffb0727ab58bd 100644 (file)
@@ -67,7 +67,7 @@ using namespace scim;
  * | appid | label | pkgid |  pkgtype | exec | mname | mpath | mode | options | is_enabled | is_preinstalled | has_option | disp_lang |
  * +-------+-------+-------+----------+------+-------+-------+------+---------+------------+-----------------+------------+-----------+
  *
- * CREATE TABLE ime_info (appid TEXT PRIMARY KEY NOT NULL, label TEXT, pkgid TEXT, pkgtype TEXT, exec TEXT mname TEXT, mpath TEXT, mode INTEGER, options INTEGER, is_enabled INTEGER, is_preinstalled INTEGER, has_option INTEGER, disp_lang TEXT);
+ * CREATE TABLE IF NOT EXISTS ime_info (appid TEXT PRIMARY KEY NOT NULL, label TEXT, pkgid TEXT, pkgtype TEXT, exec TEXT mname TEXT, mpath TEXT, mode INTEGER, options INTEGER, is_enabled INTEGER, is_preinstalled INTEGER, has_option INTEGER, disp_lang TEXT);
  *
  */
 
@@ -196,7 +196,7 @@ static inline int _db_integrity_check_cb(void *NotUsed, int argc, char **argv, c
 static inline int _db_create_ime_info(void)
 {
     char* pException = NULL;
-    static const char* pQuery = "CREATE TABLE ime_info (appid TEXT PRIMARY KEY NOT NULL, label TEXT, pkgid TEXT, pkgtype TEXT, exec TEXT, mname TEXT, mpath TEXT, mode INTEGER, options INTEGER, is_enabled INTEGER, is_preinstalled INTEGER, has_option INTEGER, disp_lang TEXT);";
+    static const char* pQuery = "CREATE TABLE IF NOT EXISTS ime_info (appid TEXT PRIMARY KEY NOT NULL, label TEXT, pkgid TEXT, pkgtype TEXT, exec TEXT, mname TEXT, mpath TEXT, mode INTEGER, options INTEGER, is_enabled INTEGER, is_preinstalled INTEGER, has_option INTEGER, disp_lang TEXT);";
     int ret = sqlite3_exec(databaseInfo.pHandle, pQuery, NULL, NULL, &pException);
     if (ret != SQLITE_OK) {
         LOGE ("sqlite3_exec returned %d: %s", ret, pException);
@@ -205,22 +205,21 @@ static inline int _db_create_ime_info(void)
         return -EIO;
     }
 
-    LOGD("CREATE TABLE ime_info");
-
     return 0;
 }
 
-static inline void _db_create_table(void)
+static inline int _db_create_table(void)
 {
     _begin_transaction();
 
     int ret = _db_create_ime_info();
     if (ret < 0) {
         _rollback_transaction();
-        return;
+        return ret;
     }
 
     _commit_transaction();
+    return ret;
 }
 
 static inline int _db_init(void)
@@ -243,7 +242,7 @@ static inline int _db_init(void)
             db_util_close(databaseInfo.pHandle);
         databaseInfo.pHandle = NULL;
         databaseInfo.need_reset = true;
-        return -EIO;
+        return -ENOENT;
     }
 
     if (!S_ISREG(stat.st_mode)) {
@@ -255,9 +254,13 @@ static inline int _db_init(void)
         return -EINVAL;
     }
 
-    if (!stat.st_size) {
-        LOGE ("The empty db");
-        _db_create_table();
+    if (!_db_create_table()) {
+        LOGE ("CREATE TABLE IF NOT EXISTS ime_info ~ failed.");
+        if (databaseInfo.pHandle)
+            db_util_close(databaseInfo.pHandle);
+        databaseInfo.pHandle = NULL;
+        databaseInfo.need_reset = true;
+        return -EIO;
     }
 
     if (databaseInfo.pHandle) {