Files
synapse/tests
Erik JohnstonandClaude Opus 4.8 56e3472252 Wire the startup path for the Rust Postgres backend
Startup opens a bootstrap connection via `make_conn` (outside the runtime pool)
and validates it with `engine.check_database` before `prepare_database` runs.
Neither worked for the Rust backend: the Rust module has no `module.connect`,
and check_database/server_version were NotImplementedError stubs. Fill them in:

  - `rust_dbapi.build_dsn` turns the libpq-style `args` into a DSN string, and
    `rust_dbapi.connect` opens a standalone connection (a pool of one, kept
    alive by the returned Connection) for one-off bootstrap use.
  - `make_conn` routes the Rust engine through `rust_dbapi.connect` (with the
    engine's synchronous_commit / statement_timeout) instead of
    `engine.module.connect`; psycopg2 and sqlite are unchanged.
  - `RustPostgresEngine.check_database` reads the server version over a cursor
    (`SHOW server_version_num`) rather than psycopg2's `conn.server_version`,
    and applies the same version / encoding / collation / ctype checks;
    `server_version` is derived from the cached value.

Tested: build_dsn quoting; and, against a live Postgres, make_conn +
check_database + server_version + a query. psycopg2 and sqlite homeserver boots
(make_conn → check_database) remain green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W3G4M92AmwSSZCbmtMJU3d
2026-07-11 09:04:57 +00:00
..
2026-06-02 11:05:38 +01:00