Fix in GetGroups implementation 15/99315/5
authorRadoslaw Bartosiak <r.bartosiak@samsung.com>
Tue, 22 Nov 2016 09:47:00 +0000 (10:47 +0100)
committerKrzysztof Jackiewicz <k.jackiewicz@samsung.com>
Wed, 30 Nov 2016 09:24:12 +0000 (01:24 -0800)
SQL query is changed in order to return group only once.

Change-Id: Ibaec3ea6033544f35ebe67beec056580bcbea373
Signed-off-by: Radoslaw Bartosiak <r.bartosiak@samsung.com>
src/common/include/privilege_db.h
src/common/privilege_db.cpp

index 200d8186e5a925bc69f5579832cef8dd558f5976..827ab21c901b68bc15acce992da544b3455dc776 100644 (file)
@@ -72,6 +72,7 @@ enum class StmtType {
     EGetAllPackages,
     EGetAppsInPkg,
     EGetGroups,
+    EGetGroupsRelatedPrivileges,
     EGetPkgAuthorId,
     EAuthorIdExists,
     EGetAuthorIdByName,
@@ -124,7 +125,8 @@ private:
         { StmtType::EGetUserPkgs, "SELECT DISTINCT pkg_name FROM user_app_pkg_view WHERE uid=?" },
         { StmtType::EGetAllPackages,  "SELECT DISTINCT pkg_name FROM user_app_pkg_view" },
         { StmtType::EGetAppsInPkg, " SELECT app_name FROM user_app_pkg_view WHERE pkg_name = ?" },
-        { StmtType::EGetGroups, "SELECT DISTINCT group_name, privilege_name FROM privilege_group" },
+        { StmtType::EGetGroups, "SELECT DISTINCT group_name FROM privilege_group" },
+        { StmtType::EGetGroupsRelatedPrivileges, "SELECT DISTINCT group_name, privilege_name FROM privilege_group" },
         { StmtType::EGetPkgAuthorId, "SELECT author_id FROM pkg WHERE name = ? AND author_id IS NOT NULL"},
         { StmtType::EAuthorIdExists, "SELECT count(*) FROM author where author_id=?"},
         { StmtType::EGetAuthorIdByName, "SELECT author_id FROM author WHERE name=?"},
index 80d7933f5631a4b8efec59ff3d45578bc0f63c3a..c8657e207def642da20e620f565d9fe712f89afa 100644 (file)
@@ -517,7 +517,7 @@ void PrivilegeDb::GetGroups(std::vector<std::string> &groups)
 void PrivilegeDb::GetGroupsRelatedPrivileges(std::vector<std::pair<std::string, std::string>> &privileges)
 {
     try_catch<void>([&] {
-        auto command = getStatement(StmtType::EGetGroups);
+        auto command = getStatement(StmtType::EGetGroupsRelatedPrivileges);
 
         while (command->Step()) {
             const auto &groupName = command->GetColumnString(0);