Change codes for db lock issue
[platform/core/appfw/pkgmgr-info.git] / src / pkgmgrinfo_appinfo.c
index 48b041c..232d75e 100644 (file)
@@ -52,6 +52,9 @@ static const char join_app_control[] =
 static const char join_metadata[] =
        " LEFT OUTER JOIN package_app_app_metadata"
        "  ON ai.app_id=package_app_app_metadata.app_id ";
+static const char join_privilege[] =
+       " LEFT OUTER JOIN package_privilege_info"
+       " ON ai.package=package_privilege_info.package ";
 
 static int _get_filtered_query(pkgmgrinfo_filter_x *filter,
        const char *locale, uid_t uid, char **query, GList **bind_params)
@@ -104,6 +107,8 @@ static int _get_filtered_query(pkgmgrinfo_filter_x *filter,
                strncat(tmp_query, join_app_control, sizeof(tmp_query) - strlen(tmp_query) - 1);
        if (joined & E_PMINFO_APPINFO_JOIN_METADATA)
                strncat(tmp_query, join_metadata, sizeof(tmp_query) - strlen(tmp_query) - 1);
+       if (joined & E_PMINFO_APPINFO_JOIN_PRIVILEGE)
+               strncat(tmp_query, join_privilege, sizeof(tmp_query) - strlen(tmp_query) - 1);
 
        strncat(tmp_query, buf, sizeof(tmp_query) - strlen(tmp_query) - 1);
 
@@ -706,6 +711,9 @@ static int _appinfo_get_applications(uid_t db_uid, uid_t uid,
        ret = PMINFO_R_OK;
 
 catch:
+       sqlite3_finalize(stmt);
+       sqlite3_close_v2(db);
+
        if (constraint)
                free(constraint);
 
@@ -713,8 +721,6 @@ catch:
                pkgmgrinfo_basic_free_application(info);
 
        g_list_free_full(bind_params, free);
-       sqlite3_close_v2(db);
-       sqlite3_finalize(stmt);
 
        return ret;
 }