CDB_Federated_Server_Unregister: Better error handling
This commit is contained in:
@@ -128,14 +128,18 @@ END
|
|||||||
$$
|
$$
|
||||||
LANGUAGE PLPGSQL VOLATILE PARALLEL UNSAFE;
|
LANGUAGE PLPGSQL VOLATILE PARALLEL UNSAFE;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cartodb.CDB_Federated_Server_Unregister(server TEXT)
|
CREATE OR REPLACE FUNCTION @extschema@.CDB_Federated_Server_Unregister(server TEXT)
|
||||||
RETURNS void
|
RETURNS void
|
||||||
AS $$
|
AS $$
|
||||||
DECLARE
|
DECLARE
|
||||||
final_name text := cartodb.__CDB_FS_Generate_Object_Name(server);
|
final_name text := @extschema@.__CDB_FS_Generate_Object_Name(server);
|
||||||
BEGIN
|
BEGIN
|
||||||
-- TODO: Check if the server exists to show a nice error instead of the automatic one (which uses the implementation name)
|
IF NOT EXISTS (SELECT * FROM pg_foreign_server WHERE srvname = final_name)
|
||||||
EXECUTE 'DROP SERVER ' || quote_ident(final_name) || ' CASCADE';
|
THEN
|
||||||
|
RAISE EXCEPTION 'Server "%" does not exist', server;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
EXECUTE @extschema@._CDB_Drop_User_PG_FDW_Server(fdw_input_name := final_name, force := true);
|
||||||
END
|
END
|
||||||
$$
|
$$
|
||||||
LANGUAGE PLPGSQL VOLATILE PARALLEL UNSAFE;
|
LANGUAGE PLPGSQL VOLATILE PARALLEL UNSAFE;
|
||||||
|
|||||||
@@ -271,7 +271,7 @@ $$ LANGUAGE plpgsql VOLATILE PARALLEL UNSAFE;
|
|||||||
CREATE OR REPLACE FUNCTION @extschema@._CDB_Drop_User_PG_FDW_Server(fdw_input_name NAME, force boolean = false)
|
CREATE OR REPLACE FUNCTION @extschema@._CDB_Drop_User_PG_FDW_Server(fdw_input_name NAME, force boolean = false)
|
||||||
RETURNS void AS $$
|
RETURNS void AS $$
|
||||||
DECLARE
|
DECLARE
|
||||||
fdw_objects_name NAME := @extschema@.__CDB_User_FDW_Object_Names(fdw_input_name);
|
fdw_objects_name NAME := fdw_input_name;
|
||||||
cascade_clause NAME;
|
cascade_clause NAME;
|
||||||
BEGIN
|
BEGIN
|
||||||
CASE force
|
CASE force
|
||||||
|
|||||||
@@ -38,6 +38,8 @@ SELECT '2.1', cartodb.CDB_Federated_Server_Register_PG(server := 'myRemote2'::te
|
|||||||
}
|
}
|
||||||
}'::jsonb);
|
}'::jsonb);
|
||||||
SELECT '2.2', cartodb.CDB_Federated_Server_List_Servers();
|
SELECT '2.2', cartodb.CDB_Federated_Server_List_Servers();
|
||||||
|
-- Check that CDB_Federated_Server_List_Servers works with name
|
||||||
|
SELECT '2.3', cartodb.CDB_Federated_Server_List_Servers(server := 'myRemote');
|
||||||
|
|
||||||
|
|
||||||
-- Re-register the second server
|
-- Re-register the second server
|
||||||
|
|||||||
@@ -3,8 +3,9 @@
|
|||||||
2.1|
|
2.1|
|
||||||
2.2|(myRemote,postgres_fdw,localhost,5432,,read-only,fdw_user)
|
2.2|(myRemote,postgres_fdw,localhost,5432,,read-only,fdw_user)
|
||||||
2.2|(myRemote2,postgres_fdw,localhost,5432,fdw_target,read-only,fdw_user)
|
2.2|(myRemote2,postgres_fdw,localhost,5432,fdw_target,read-only,fdw_user)
|
||||||
|
2.3|(myRemote,postgres_fdw,localhost,5432,,read-only,fdw_user)
|
||||||
4.1|
|
4.1|
|
||||||
4.2|(myRemote2,postgres_fdw,localhost,5432,fdw_target,read-only,fdw_user)
|
4.2|(myRemote2,postgres_fdw,localhost,5432,fdw_target,read-only,fdw_user)
|
||||||
ERROR: server "cdb_fs_doesNotExist" does not exist
|
ERROR: Server "doesNotExist" does not exist
|
||||||
5.2|(myRemote2,postgres_fdw,localhost,5432,fdw_target,read-only,fdw_user)
|
5.2|(myRemote2,postgres_fdw,localhost,5432,fdw_target,read-only,fdw_user)
|
||||||
6.1|
|
6.1|
|
||||||
|
|||||||
Reference in New Issue
Block a user