postgres_fdw: Give user mapping precedence for use_scram_passthrough

Previously, when use_scram_passthrough was specified on both a foreign server
and a user mapping, the server-level setting took precedence over the
user-mapping setting. This was inconsistent with the usual semantics of
postgres_fdw options, where foreign server options provide shared defaults
and user mapping options override them on a per-user basis.

This commit updates postgres_fdw so that the user-mapping setting takes
precedence when use_scram_passthrough is specified in both places. This
matches the behavior of other connection options such as sslcert and sslkey.

Backpatch to v18, where use_scram_passthrough was introduced. In v18,
this only affects limited configurations that specify conflicting values
at both the foreign server and user-mapping levels. In such cases, users
would naturally expect the user-mapping setting to override the server-level
setting, so changing the behavior should be minimally disruptive.
Also keeping v18 as the only branch with different semantics for
use_scram_passthrough would be unnecessarily confusing, so backpatch
this fix to v18.

Author: Matheus Alcantara <[email protected]>
Reviewed-by: Fujii Masao <[email protected]>
Discussion: 
https://postgr.es/m/cahgqgwej8rzjmbovcicyr4vbulio082bntde0wnoswawr9w...@mail.gmail.com
Backpatch-through: 18

Branch
------
REL_18_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/88d7748d2ab7017c29c0f7bec04612b2680552d0

Modified Files
--------------
contrib/postgres_fdw/connection.c        | 10 ++++++++--
contrib/postgres_fdw/t/001_auth_scram.pl | 30 ++++++++++++++++++++++++++++++
doc/src/sgml/postgres-fdw.sgml           |  4 +++-
3 files changed, 41 insertions(+), 3 deletions(-)

Reply via email to