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);
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++);
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);
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++);