mirror of
https://github.com/postgres/postgres.git
synced 2026-04-12 04:26:44 -04:00
Fix dependency on FDW handler.
ALTER FOREIGN DATA WRAPPER could drop the dependency on the handler function if it wasn't explicitly specified. Reviewed-by: Nathan Bossart <nathandbossart@gmail.com> Discussion: https://postgr.es/m/35c44a4b7fb76d35418c4d66b775a88f4ce60c86.camel@j-davis.com Backpatch-through: 14
This commit is contained in:
parent
8ee536c895
commit
876fa84a27
3 changed files with 17 additions and 0 deletions
|
|
@ -740,6 +740,11 @@ AlterForeignDataWrapper(ParseState *pstate, AlterFdwStmt *stmt)
|
|||
ereport(WARNING,
|
||||
(errmsg("changing the foreign-data wrapper handler can change behavior of existing foreign tables")));
|
||||
}
|
||||
else
|
||||
{
|
||||
/* handler unchanged */
|
||||
fdwhandler = fdwForm->fdwhandler;
|
||||
}
|
||||
|
||||
if (validator_given)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -106,6 +106,13 @@ ERROR: conflicting or redundant options
|
|||
LINE 1: ...GN DATA WRAPPER test_fdw HANDLER test_fdw_handler HANDLER in...
|
||||
^
|
||||
CREATE FOREIGN DATA WRAPPER test_fdw HANDLER test_fdw_handler;
|
||||
-- should preserve dependency on test_fdw_handler
|
||||
ALTER FOREIGN DATA WRAPPER test_fdw VALIDATOR postgresql_fdw_validator;
|
||||
WARNING: changing the foreign-data wrapper validator can cause the options for dependent objects to become invalid
|
||||
DROP FUNCTION test_fdw_handler(); -- ERROR
|
||||
ERROR: cannot drop function test_fdw_handler() because other objects depend on it
|
||||
DETAIL: foreign-data wrapper test_fdw depends on function test_fdw_handler()
|
||||
HINT: Use DROP ... CASCADE to drop the dependent objects too.
|
||||
DROP FOREIGN DATA WRAPPER test_fdw;
|
||||
-- ALTER FOREIGN DATA WRAPPER
|
||||
ALTER FOREIGN DATA WRAPPER foo OPTIONS (nonexistent 'fdw'); -- ERROR
|
||||
|
|
|
|||
|
|
@ -67,6 +67,11 @@ CREATE FUNCTION invalid_fdw_handler() RETURNS int LANGUAGE SQL AS 'SELECT 1;';
|
|||
CREATE FOREIGN DATA WRAPPER test_fdw HANDLER invalid_fdw_handler; -- ERROR
|
||||
CREATE FOREIGN DATA WRAPPER test_fdw HANDLER test_fdw_handler HANDLER invalid_fdw_handler; -- ERROR
|
||||
CREATE FOREIGN DATA WRAPPER test_fdw HANDLER test_fdw_handler;
|
||||
|
||||
-- should preserve dependency on test_fdw_handler
|
||||
ALTER FOREIGN DATA WRAPPER test_fdw VALIDATOR postgresql_fdw_validator;
|
||||
DROP FUNCTION test_fdw_handler(); -- ERROR
|
||||
|
||||
DROP FOREIGN DATA WRAPPER test_fdw;
|
||||
|
||||
-- ALTER FOREIGN DATA WRAPPER
|
||||
|
|
|
|||
Loading…
Reference in a new issue