diff --git a/scripts-available/CDB_ForeignTable.sql b/scripts-available/CDB_ForeignTable.sql index e4cfc40..7e184f7 100644 --- a/scripts-available/CDB_ForeignTable.sql +++ b/scripts-available/CDB_ForeignTable.sql @@ -241,6 +241,15 @@ BEGIN END $$ LANGUAGE plpgsql VOLATILE PARALLEL UNSAFE SECURITY DEFINER; +CREATE OR REPLACE FUNCTION @extschema@.CDB_Drop_User_Foreign_Server(fdw_name NAME) +RETURNS void AS $$ +BEGIN + EXECUTE FORMAT ('DROP SCHEMA %I', fdw_name); + EXECUTE FORMAT ('DROP USER MAPPING FOR public SERVER %I', fdw_name); + EXECUTE FORMAT ('DROP SERVER %I', fdw_name); +END +$$ LANGUAGE plpgsql VOLATILE PARALLEL UNSAFE; + -- Set up a user foreign table -- E.g: diff --git a/test/extension/test.sh b/test/extension/test.sh index 58b2ead..3c8b334 100755 --- a/test/extension/test.sh +++ b/test/extension/test.sh @@ -624,11 +624,8 @@ EOF DATABASE=fdw_target sql postgres 'REVOKE SELECT ON cdb_tablemetadata_text FROM fdw_user;' DATABASE=fdw_target sql postgres 'DROP ROLE fdw_user;' - # TODO add to function to delete stuff - sql postgres 'DROP FOREIGN TABLE test_user_fdw.foo;' - sql postgres 'DROP schema test_user_fdw;' - sql postgres 'DROP USER MAPPING FOR public SERVER test_user_fdw;' - sql postgres 'DROP SERVER test_user_fdw;' + sql cdb_testmember_1 "DROP FOREIGN TABLE test_user_fdw.foo;" + sql cdb_testmember_1 "SELECT cartodb.CDB_Drop_User_Foreign_Server('test_user_fdw')" sql postgres "select pg_terminate_backend(pid) from pg_stat_activity where datname='fdw_target';" DATABASE=fdw_target tear_down_database