Handle multiple query in QueryHandler
authorIlho Kim <ilho159.kim@samsung.com>
Wed, 9 Jun 2021 06:21:40 +0000 (15:21 +0900)
committer연정현/Tizen Platform Lab(SR)/Staff Engineer/삼성전자 <jungh.yeon@samsung.com>
Fri, 18 Jun 2021 07:55:09 +0000 (16:55 +0900)
Signed-off-by: Ilho Kim <ilho159.kim@samsung.com>
src/server/database/query_handler.cc

index c1b9a40..a03eaf9 100644 (file)
@@ -251,30 +251,32 @@ int QueryHandler::Execute() {
   int ret;
   if (GetOpType() == pkgmgr_common::DBOperationType::OPERATION_TYPE_READ) {
     for (auto& conn : conn_list) {
-      GList* list = nullptr;
-      int row = 0;
-      int col = 0;
-
-      query_args* params = (query_args*)args_list->data;
-      ret = get_query_result(conn.first, (const char *)queries->data,
-          params->argument, &list, &row, &col);
-      if (ret == PMINFO_R_ERROR) {
-        _LOGE("Failed to execute query");
-        __free_query_list(queries, args_list);
-        return ret;
-      }
+      for (GList* it = args_list; it; it = it->next) {
+        GList* list = nullptr;
+        int row = 0;
+        int col = 0;
+
+        query_args* params = (query_args*)it->data;
+        ret = get_query_result(conn.first, (const char *)queries->data,
+            params->argument, &list, &row, &col);
+        if (ret == PMINFO_R_ERROR) {
+          _LOGE("Failed to execute query");
+          __free_query_list(queries, args_list);
+          return ret;
+        }
 
-      GList* tmp = list;
-      for (int i = 0; i < row; ++i) {
-        std::vector<std::string> vt;
-        for (int j = 0; j < col; ++j) {
-          vt.emplace_back(reinterpret_cast<char *>(tmp->data));
-          tmp = tmp->next;
+        GList* tmp = list;
+        for (int i = 0; i < row; ++i) {
+          std::vector<std::string> vt;
+          for (int j = 0; j < col; ++j) {
+            vt.emplace_back(reinterpret_cast<char *>(tmp->data));
+            tmp = tmp->next;
+          }
+          result_.emplace_back(std::move(vt));
         }
-        result_.emplace_back(std::move(vt));
-      }
 
-      g_list_free_full(list, free);
+        g_list_free_full(list, free);
+      }
     }
     __free_query_list(queries, args_list);