lihongyuan99 bc0167636f
fix(persistence): keep a literal plus in a postgres DSN query (#5978)
dsn_with_search_path rebuilt the query with parse_qsl + urlencode. parse_qsl
decodes '+' as a space, an HTML-form rule libpq does not apply, so any existing
parameter carrying a literal plus came back as %20 and the server received a
different value: application_name=web+app became 'web app', and
options=-c%20timezone%3DUTC+8 became '-c timezone=UTC 8'. The function's own
docstring already states the %XX-only rule and that existing parameters are
preserved.

Rebuild the query from the raw pairs instead, passing every non-options
parameter through untouched and decoding options with unquote.
2026-09-28 09:04:26 +08:00
..