mirror of
https://github.com/element-hq/synapse.git
synced 2026-08-28 05:04:38 +00:00
Bind filter_id as an int in get_user_filter, matching the BIGINT column
`get_user_filter` receives `filter_id` as `int | str` — from a sync request it arrives as a string — and bound it straight into the `user_filters.filter_id` BIGINT column. psycopg2 coerced the numeric string; the native Rust driver binds typed parameters and rejects it (error serializing parameter), 500ing filtered syncs. The function already validated it with `int(filter_id)`; use that value so an int is bound. psycopg2 and sqlite are unaffected. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W3G4M92AmwSSZCbmtMJU3d
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
a2d6f4b00e
commit
bcf5c4c4aa
@@ -154,7 +154,9 @@ class FilteringWorkerStore(SQLBaseStore):
|
||||
self, user_id: UserID, filter_id: int | str
|
||||
) -> JsonMapping:
|
||||
# filter_id is BIGINT UNSIGNED, so if it isn't a number, fail
|
||||
# with a coherent error message rather than 500 M_UNKNOWN.
|
||||
# with a coherent error message rather than 500 M_UNKNOWN. Bind the int
|
||||
# (the value often arrives as a string from the request) so it matches
|
||||
# the BIGINT column rather than relying on the driver to coerce it.
|
||||
try:
|
||||
filter_id = int(filter_id)
|
||||
except ValueError:
|
||||
|
||||
Reference in New Issue
Block a user