messages: Use "\x07" as topic for DMs and group DMs.

This commit updates code to use "\x07" as value for
"subject" field of Message objects for DMs and group
DMs, so that we have a unique value for DMs and group
DMs which cannot be used for channel messages.

This helps in avoiding having an empty string value as
topic for DMs, which is also used for "general chat"
channel messages, as large number of DMs in the realm
resulted in PostgreSQL query planner thinking that there
are too many "general chat" messages and thus generated
bad query plans for operations like fetching
"general chat" messages in a stream or moving messages
to and from "general chat" topic.

This change as done for ArchivedMessage and
ScheduledMessage objects as well.

Note that the clients still get "subject" value as
an empty string "".

This commit also adds tests for checking that "\x07"
cannot be used as topic for channel messages.

Fixes #34360.
This commit is contained in:
Sahil Batra
2025-05-22 12:35:28 +05:30
committed by Tim Abbott
parent 5a45779634
commit b655bd14ea
17 changed files with 136 additions and 17 deletions

View File

@@ -1837,6 +1837,7 @@ def check_message(
message.set_topic_name(topic_name)
message.is_channel_message = True
else:
message.set_topic_name(Message.DM_TOPIC)
message.is_channel_message = False
if forged and forged_timestamp is not None:
# Forged messages come with a timestamp