Previously, dblink accepted the use_scram_passthrough option on
foreign-data wrappers via ALTER FOREIGN DATA WRAPPER dblink_fdw
OPTIONS, even though the setting had no effect there.
use_scram_passthrough should be only meaningful for foreign servers
and user mappings, so this commit updates dblink to accept the option
only in those contexts.
Backpatch to v18, where use_scram_passthrough was introduced.
Author: Matheus Alcantara <matheusssilv97@gmail.com>
Reviewed-by: Fujii Masao <masao.fujii@gmail.com>
Discussion: https://postgr.es/m/CAHGQGwEJ8rZjmbOvCicyr4vbuLio082bNTde0WNoSWaWr9wVcg@mail.gmail.com
Backpatch-through: 18
is_valid_dblink_fdw_option(const PQconninfoOption *options, const char *option,
Oid context)
{
- if (strcmp(option, "use_scram_passthrough") == 0)
- return true;
+ /*
+ * These options are only valid for foreign server or user mapping
+ * contexts
+ */
+ if (context == ForeignServerRelationId || context == UserMappingRelationId)
+ {
+ if (strcmp(option, "use_scram_passthrough") == 0)
+ return true;
+ }
return is_valid_dblink_option(options, option, context);
}
postgres
(1 row)
+-- Check that adding use_scram_passthrough option on an foreign data wrapper is
+-- not allowed
+ALTER FOREIGN DATA WRAPPER dblink_fdw OPTIONS(add use_scram_passthrough 'true');
+ERROR: invalid option "use_scram_passthrough"
+HINT: There are no valid options in this context.
-- Clean up GUC-setting tests
SELECT dblink_disconnect('myconn');
dblink_disconnect
SHOW datestyle;
SHOW intervalstyle;
+-- Check that adding use_scram_passthrough option on an foreign data wrapper is
+-- not allowed
+ALTER FOREIGN DATA WRAPPER dblink_fdw OPTIONS(add use_scram_passthrough 'true');
+
-- Clean up GUC-setting tests
SELECT dblink_disconnect('myconn');
RESET datestyle;