* | 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);
*
*/
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);
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)
db_util_close(databaseInfo.pHandle);
databaseInfo.pHandle = NULL;
databaseInfo.need_reset = true;
- return -EIO;
+ return -ENOENT;
}
if (!S_ISREG(stat.st_mode)) {
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) {