Duplicated path error ignored
authorKrzysztof Jackiewicz <k.jackiewicz@samsung.com>
Tue, 12 Nov 2013 08:38:43 +0000 (09:38 +0100)
committerKrzysztof Jackiewicz <k.jackiewicz@samsung.com>
Thu, 14 Nov 2013 13:20:27 +0000 (14:20 +0100)
[Issue#] N/A
[Feature/Bug] N/A
[Problem] Path related rules are not correctly generated after application
upgrade (adding settings folder)
[Cause] Adding existing path to and application causes error and results in a
rollback during perm_end.
[Solution] INSERT in path_view_insert_trigger changed to INSERT OR IGNORE.

[Verification] Upgrade an application. It should succeed despite of registering
paths that already exist in db

Change-Id: Ia0ddfdcac906e44401e6152f839321be967bcb76

db/rules-db.sql
src/rules-db-internals.c

index d6691e2..a7fba4c 100644 (file)
@@ -544,7 +544,7 @@ BEGIN
     INSERT OR IGNORE INTO label(name) VALUES (NEW.path_label_name);
 
     -- Add the path
-    INSERT INTO app_path(app_id, path, label_id, access, access_reverse, app_path_type_id)
+    INSERT OR IGNORE INTO app_path(app_id, path, label_id, access, access_reverse, app_path_type_id)
     SELECT  application_view.app_id,
             NEW.path,
             label.label_id,
index 9d8a555..68b0b5c 100644 (file)
@@ -335,7 +335,7 @@ int check_app_label_internal(sqlite3 *p_db,
        if(ret == SQLITE_ROW) {
                // There is such application label
                ret = PC_ERR_DB_LABEL_TAKEN;
-       } if(ret == SQLITE_DONE) {
+       } else if(ret == SQLITE_DONE) {
                // No such application label
                ret = PC_OPERATION_SUCCESS;
        } else {