Enhance db querying for getting thread list and thread info 11/112111/2 accepted/tizen/common/20170131.162928 accepted/tizen/ivi/20170201.003836 accepted/tizen/mobile/20170201.003805 accepted/tizen/wearable/20170201.003819 submit/tizen/20170131.012439
authorKyeonghun Lee <kh9090.lee@samsung.com>
Thu, 26 Jan 2017 04:41:46 +0000 (13:41 +0900)
committerKyeonghun Lee <kh9090.lee@samsung.com>
Tue, 31 Jan 2017 00:49:35 +0000 (09:49 +0900)
- from slp git

Change-Id: I8acbd892e789046e46c0b8a3c622900973f6b671
Signed-off-by: Kyeonghun Lee <kh9090.lee@samsung.com>
framework/storage-handler/MsgStorageMessage.cpp
utils/MsgUtilStorage.cpp

index b623b6c..00d5847 100755 (executable)
@@ -2787,20 +2787,20 @@ msg_error_t MsgStoGetThreadInfo(msg_thread_id_t threadId, MSG_THREAD_VIEW_S *pTh
 
        snprintf(sqlQuery, sizeof(sqlQuery), "SELECT A.CONV_ID, A.UNREAD_CNT, A.SMS_CNT, A.MMS_CNT, "
                        "A.MAIN_TYPE, A.SUB_TYPE, A.MSG_DIRECTION, A.DISPLAY_TIME, A.DISPLAY_NAME, A.MSG_TEXT, "
-                       "(SELECT COUNT(MSG_ID) FROM %s M WHERE M.CONV_ID = A.CONV_ID AND M.PROTECTED = 1) AS PROTECTED, "
+                       "(COUNT(CASE WHEN M.PROTECTED = 1 THEN 1 END)) AS PROTECTED, "
                        "(CASE WHEN B.FOLDER_ID = %d THEN 1 END) AS DRAFT, "
                        "(CASE WHEN B.NETWORK_STATUS = %d THEN 1 END) AS FAILED, "
                        "(CASE WHEN B.NETWORK_STATUS = %d THEN 1 END) AS SENDING "
                        "FROM %s A "
-                       "LEFT OUTER JOIN "
-                       "%s B ON A.LAST_MSG_ID = B.MSG_ID "
+                       "LEFT OUTER JOIN %s B ON A.LAST_MSG_ID = B.MSG_ID "
+                       "LEFT OUTER JOIN %s M ON A.CONV_ID = M.CONV_ID "
                        "WHERE A.CONV_ID = %d AND A.SMS_CNT + A.MMS_CNT > 0;",
-                       MSGFW_MESSAGE_TABLE_NAME,
                        MSG_DRAFT_ID,
                        MSG_NETWORK_SEND_FAIL,
                        MSG_NETWORK_SENDING,
                        MSGFW_CONVERSATION_TABLE_NAME,
                        MSGFW_MESSAGE_TABLE_NAME,
+                       MSGFW_MESSAGE_TABLE_NAME,
                        threadId);
 
        msg_error_t err = dbHandle->getTable(sqlQuery, &rowCnt, &index);
@@ -2837,7 +2837,7 @@ msg_error_t MsgStoGetThreadInfo(msg_thread_id_t threadId, MSG_THREAD_VIEW_S *pTh
                memset(pThreadInfo->threadData, 0x00, sizeof(pThreadInfo->threadData));
                dbHandle->getColumnToString(index++, MAX_THREAD_DATA_LEN, pThreadInfo->threadData);
 
-               pThreadInfo->bProtected = dbHandle->getColumnToInt(index++);
+               pThreadInfo->bProtected = (dbHandle->getColumnToInt(index++) > 0) ? true : false;
                pThreadInfo->bDraft = dbHandle->getColumnToInt(index++);
                pThreadInfo->bSendFailed = dbHandle->getColumnToInt(index++);
                pThreadInfo->bSending = dbHandle->getColumnToInt(index++);
index f5c2e49..f2645fd 100755 (executable)
@@ -1711,20 +1711,20 @@ msg_error_t MsgStoGetThreadViewList(const MSG_SORT_RULE_S *pSortRule, msg_struct
 
        snprintf(sqlQuery, sizeof(sqlQuery), "SELECT A.CONV_ID, A.UNREAD_CNT, A.SMS_CNT, A.MMS_CNT, A.MAIN_TYPE, A.SUB_TYPE, "
                        "A.MSG_DIRECTION, A.DISPLAY_TIME, A.DISPLAY_NAME, A.MSG_TEXT, "
-                       "(SELECT COUNT(MSG_ID) FROM %s M WHERE M.CONV_ID = A.CONV_ID AND M.PROTECTED = 1) AS PROTECTED, "
+                       "(COUNT(CASE WHEN M.PROTECTED = 1 THEN 1 END)) AS PROTECTED, "
                        "(CASE WHEN B.FOLDER_ID = %d THEN 1 END) AS DRAFT, "
                        "(CASE WHEN B.NETWORK_STATUS = %d THEN 1 END) AS FAILED, "
                        "(CASE WHEN B.NETWORK_STATUS = %d THEN 1 END) AS SENDING "
                        "FROM %s A "
-                       "LEFT OUTER JOIN "
-                       "%s B ON A.LAST_MSG_ID = B.MSG_ID "
+                       "LEFT OUTER JOIN %s B ON A.LAST_MSG_ID = B.MSG_ID "
+                       "LEFT OUTER JOIN %s M ON A.CONV_ID = M.CONV_ID "
                        "WHERE A.SMS_CNT + A.MMS_CNT > 0 "
                        "GROUP BY A.CONV_ID ORDER BY A.DISPLAY_TIME DESC;",
-                       MSGFW_MESSAGE_TABLE_NAME,
                        MSG_DRAFT_ID,
                        MSG_NETWORK_SEND_FAIL,
                        MSG_NETWORK_SENDING,
                        MSGFW_CONVERSATION_TABLE_NAME,
+                       MSGFW_MESSAGE_TABLE_NAME,
                        MSGFW_MESSAGE_TABLE_NAME);
 
        msg_error_t err = dbHandle->getTable(sqlQuery, &rowCnt, &index);
@@ -1781,7 +1781,7 @@ msg_error_t MsgStoGetThreadViewList(const MSG_SORT_RULE_S *pSortRule, msg_struct
                memset(pTmp->threadData, 0x00, sizeof(pTmp->threadData));
                dbHandle->getColumnToString(index++, MAX_THREAD_DATA_LEN, pTmp->threadData);
 
-               pTmp->bProtected = dbHandle->getColumnToInt(index++);
+               pTmp->bProtected = (dbHandle->getColumnToInt(index++) > 0) ? true : false;
                pTmp->bDraft = dbHandle->getColumnToInt(index++);
                pTmp->bSendFailed = dbHandle->getColumnToInt(index++);
                pTmp->bSending = dbHandle->getColumnToInt(index++);