mirror of
https://github.com/postgres/postgres.git
synced 2026-05-28 04:35:45 -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
f154714646
commit
c6f369e585
3 changed files with 17 additions and 0 deletions
|
|
@ -744,6 +744,11 @@ AlterForeignDataWrapper(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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -96,6 +96,13 @@ ERROR: function invalid_fdw_handler must return type fdw_handler
|
|||
CREATE FOREIGN DATA WRAPPER test_fdw HANDLER test_fdw_handler HANDLER invalid_fdw_handler; -- ERROR
|
||||
ERROR: conflicting or redundant options
|
||||
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; -- ERROR
|
||||
|
|
|
|||
|
|
@ -56,6 +56,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