From 9ccc24ebf1d60db0a639522ee241a347ebcbe788 Mon Sep 17 00:00:00 2001
From: Julien Wadel <julien.wadel@belledonne-communications.com>
Date: Mon, 3 Jul 2023 10:36:28 +0200
Subject: [PATCH] Fix mainDb crash: - Replace '==' expression (that doesn't
 exist into WHERE queries in SQL) by '='. - Put 'LEFT JOIN' statement right
 after 'chat_room' table in order to be allowed to be used in on clause.

---
 src/db/main-db.cpp | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/src/db/main-db.cpp b/src/db/main-db.cpp
index 234bc03a91..426889699a 100644
--- a/src/db/main-db.cpp
+++ b/src/db/main-db.cpp
@@ -3752,7 +3752,7 @@ int MainDb::getUnreadChatMessageCount(const ConferenceId &conferenceId) const {
 		         "  SELECT event_id FROM conference_event WHERE chat_room_id = :chatRoomId"
 		         ") AND";
 
-	query += " marked_as_read == 0 ";
+	query += " marked_as_read = 0 ";
 
 	/*
 	DurationLogger durationLogger(
@@ -3786,7 +3786,7 @@ void MainDb::markChatMessagesAsRead(const ConferenceId &conferenceId) const {
 
 	static const string query = "UPDATE conference_chat_message_event"
 	                            "  SET marked_as_read = 1"
-	                            "  WHERE marked_as_read == 0"
+	                            "  WHERE marked_as_read = 0"
 	                            "  AND event_id IN ("
 	                            "    SELECT event_id FROM conference_event WHERE chat_room_id = :chatRoomId"
 	                            "  )";
@@ -3862,7 +3862,7 @@ list<shared_ptr<ChatMessage>> MainDb::getUnreadChatMessages(const ConferenceId &
 #ifdef HAVE_DB_STORAGE
 	// TODO: Optimize.
 	static const string query =
-	    Statements::get(Statements::SelectConferenceEvents) + string(" AND marked_as_read == 0");
+		Statements::get(Statements::SelectConferenceEvents)	+ string(" AND marked_as_read = 0");
 
 	DurationLogger durationLogger(
 	    "Get unread chat messages: (peer=" + conferenceId.getPeerAddress()->toStringUriOnlyOrdered() +
@@ -4583,12 +4583,13 @@ list<shared_ptr<AbstractChatRoom>> MainDb::getChatRooms() const {
 		" creation_time, last_update_time, capabilities, subject, last_notify_id, flags, last_message_id,"
 		" ephemeral_enabled, ephemeral_messages_lifetime,"
 		" unread_messages_count.message_count"
-		" FROM chat_room, sip_address AS peer_sip_address, sip_address AS local_sip_address"
+		" FROM chat_room"
 		" LEFT JOIN (SELECT conference_event.chat_room_id, count(*) as message_count"
 		" FROM conference_chat_message_event, conference_event"
-		" WHERE conference_chat_message_event.event_id=conference_event.event_id AND conference_chat_message_event.marked_as_read==0"
+		" WHERE conference_chat_message_event.event_id=conference_event.event_id AND conference_chat_message_event.marked_as_read = 0"
 		" GROUP BY conference_event.chat_room_id) AS unread_messages_count"
 		" ON unread_messages_count.chat_room_id = chat_room.id"
+		" , sip_address AS peer_sip_address, sip_address AS local_sip_address"
 		" WHERE chat_room.peer_sip_address_id = peer_sip_address.id AND chat_room.local_sip_address_id = local_sip_address.id"
 		" ORDER BY last_update_time DESC";
 
-- 
GitLab