QUERY_CREATE_TABLE_PACKAGE_INFO,
QUERY_CREATE_TABLE_PACKAGE_LOCALIZED_INFO,
QUERY_CREATE_TABLE_PACKAGE_PRIVILEGE_INFO,
+ QUERY_CREATE_TABLE_PACKAGE_UPDATE_INFO,
QUERY_CREATE_TABLE_PACKAGE_APP_INFO,
QUERY_CREATE_TABLE_PACKAGE_APP_LOCALIZED_INFO,
QUERY_CREATE_TABLE_PACKAGE_APP_ICON_SECTION_INFO, /* ? */
if (ret != SQLITE_OK)
return ret;
+ ret = sqlite3_busy_handler(*db, __db_busy_handler, NULL);
+ if (ret != SQLITE_OK) {
+ _LOGE("failed to register busy handler: %s",
+ sqlite3_errmsg(*db));
+ sqlite3_close_v2(*db);
+ return ret;
+ }
+
if (flags & SQLITE_OPEN_CREATE) {
ret = __initialize_db(*db, path, uid);
if (ret) {
return ret;
}
- ret = sqlite3_busy_handler(*db, __db_busy_handler, NULL);
- if (ret != SQLITE_OK) {
- _LOGE("failed to register busy handler: %s",
- sqlite3_errmsg(*db));
- sqlite3_close_v2(*db);
- return ret;
- }
-
return ret;
}
sqlite3_reset(stmt);
- if (strcasecmp(app->mainapp, "true")) {
+ if (strcasecmp(app->mainapp, "true") == 0) {
if (__insert_mainapp_localized_info(db, app, locale,
label, icon))
_LOGE("insert mainapp localized info failed");
" ?, LOWER(?),"
" ?, LOWER(?), LOWER(?),"
" ?, ?, LOWER(?),"
- " ?, LOWER(?), ?,"
+ " COALESCE(?, 'single'), LOWER(?), ?,"
" LOWER(?), ?, ?, ?,"
" ?, ?,"
" ?, ?, ?,"
return 0;
}
+static int __insert_package_update_info(sqlite3 *db, manifest_x *mfx)
+{
+ static const char query[] =
+ "INSERT INTO package_update_info (package, update_version) "
+ "VALUES (?, ?)";
+ int ret;
+ int idx;
+ sqlite3_stmt *stmt;
+
+ ret = sqlite3_prepare_v2(db, query, strlen(query), &stmt, NULL);
+ if (ret != SQLITE_OK) {
+ _LOGE("prepare failed: %s", sqlite3_errmsg(db));
+ return -1;
+ }
+
+ idx = 1;
+ __BIND_TEXT(db, stmt, idx++, mfx->package);
+ __BIND_TEXT(db, stmt, idx, mfx->version);
+ ret = sqlite3_step(stmt);
+ if (ret != SQLITE_DONE) {
+ _LOGE("step failed: %s", sqlite3_errmsg(db));
+ sqlite3_finalize(stmt);
+ return -1;
+ }
+ sqlite3_finalize(stmt);
+
+ return 0;
+}
+
static int __insert_package_localized_info(sqlite3 *db, manifest_x *mfx)
{
static const char query[] =
sqlite3_finalize(stmt);
+ if (__insert_package_update_info(db, mfx))
+ return -1;
if (__insert_package_localized_info(db, mfx))
return -1;
if (__insert_application_info(db, mfx))
return PM_PARSER_R_EINVAL;
}
- dbpath = __get_parser_db_path(uid);
+ dbpath = __get_parser_db_path(GLOBAL_USER);
- ret = __open_db(uid, dbpath, &db, SQLITE_OPEN_READWRITE);
+ ret = __open_db(GLOBAL_USER, dbpath, &db, SQLITE_OPEN_READWRITE);
if (ret != SQLITE_OK) {
_LOGE("open db failed: %d", ret);
return PM_PARSER_R_ERROR;
return PM_PARSER_R_EINVAL;
}
- dbpath = __get_parser_db_path(uid);
+ dbpath = __get_parser_db_path(GLOBAL_USER);
- ret = __open_db(uid, dbpath, &db, SQLITE_OPEN_READWRITE);
+ ret = __open_db(GLOBAL_USER, dbpath, &db, SQLITE_OPEN_READWRITE);
if (ret != SQLITE_OK) {
_LOGE("open db failed: %d", ret);
return PM_PARSER_R_ERROR;