Open spantaleev opened 9 months ago
In the past we've seen this sort of int-bool confusion happen on SQLite, because:
BOOLEAN
in the schema0
and 1
), whereas postgres stored booleans as booleans.I think what's happened here is different. Take is_guest
as an example: it's stored as a smallint
: https://github.com/matrix-org/synapse/blob/0a38c7ec6d46b6e51bfa53ff44e51637d3c63f5c/synapse/storage/schema/main/full_schemas/72/full.sql.postgres#L948 so was presumably going to be returned as an integer... until recently. Let me see if I can dig up what changed...
Duplicate to #13519
Duplicate to #13519
Maybe related, but not a duplicate I think, since this behavior is new: GET /_synapse/admin/v2/users
is in fact sending bool values for is_guest
and admin
in the response instead of int, which is causing bugs in software expecting int values as documented.
It was probably one of the removal of cursor_to_dict
PRs. bool
is more appropriate though and I'd recommend updating the docs.
It was probably one of the removal of
cursor_to_dict
PRs.bool
is more appropriate though and I'd recommend updating the docs.
Those values being bool
absolutely makes sense. Can we assume this change won't be reverted and updating the docs is the way to go?
Description
The List Accounts User Admin API (
GET /_synapse/admin/v2/users
) used to be returning certain boolean-like fields as integers (e.g."is_guest": 0
).The v1.97.0 documentation page shows examples that use integers (e.g.
"is_guest": 0
) while actually saying something like:This is confusing - is it an integer or a boolean that we're receiving?
However, going back to the documentation for an ancient version (like v1.35.0), one can read the same exact thing.
On that old version, I believe the API was definitely returning integers, not booleans.
However, on v1.97.0 (at least.. possibly even earlier), the API seems to have started returning booleans. It may be an accidental change. It may have been announced in some release notes and I may have missed it.
Nevertheless, I believe the documentation page is confusing (is it a bool or an integer?) and potentially out of date now - it needs fixes.
Related to: https://github.com/devture/matrix-corporal/issues/30
Steps to reproduce
GET /_synapse/admin/v2/users
API with an admin tokenis_guest
,admin
,deactivated
,shadow_banned
,approved
,erased
,locked
) all a boolean type of value (false
ortrue
). On previous versions, integers (0
,1
) were used.Homeserver
another homeserver
Synapse Version
1.97.0
Installation Method
Docker (matrixdotorg/synapse)
Database
PostgreSQL (irrelevant)
Workers
Multiple workers
Platform
VM + containers
Configuration
No response
Relevant log output
Anything else that would be useful to know?
No response