1 files changed, 15 insertions, 0 deletions
diff --git a/synapse/storage/stats.py b/synapse/storage/stats.py
index 1c0b183a56..1f39ef211a 100644
--- a/synapse/storage/stats.py
+++ b/synapse/storage/stats.py
@@ -328,6 +328,21 @@ class StatsStore(StateDeltasStore):
room_id (str)
fields (dict[str:Any])
"""
+
+ # For whatever reason some of the fields may contain null bytes, which
+ # postgres isn't a fan of, so we replace those fields with null.
+ for col in (
+ "join_rules",
+ "history_visibility",
+ "encryption",
+ "name",
+ "topic",
+ "avatar",
+ "canonical_alias"
+ ):
+ if "\0" in fields.get(col, ""):
+ fields[col] = None
+
return self._simple_upsert(
table="room_state",
keyvalues={"room_id": room_id},
|