Check the server is of type PG and return jsonb
This commit is contained in:
@@ -1,12 +1,38 @@
|
|||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- Private functions
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
CREATE OR REPLACE FUNCTION @extschema@.__CDB_FS_Server_Diagnostics_PG(server_internal name)
|
||||||
|
RETURNS jsonb
|
||||||
|
AS $$
|
||||||
|
BEGIN
|
||||||
|
RETURN '{}'::jsonb;
|
||||||
|
END
|
||||||
|
$$
|
||||||
|
LANGUAGE PLPGSQL VOLATILE PARALLEL UNSAFE;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- Public functions
|
-- Public functions
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- TODO: function documentation
|
||||||
|
--
|
||||||
CREATE OR REPLACE FUNCTION @extschema@.CDB_Federated_Server_Diagnostics(server TEXT)
|
CREATE OR REPLACE FUNCTION @extschema@.CDB_Federated_Server_Diagnostics(server TEXT)
|
||||||
RETURNS json -- TODO decide if json or jsonb
|
RETURNS jsonb
|
||||||
AS $$
|
AS $$
|
||||||
|
DECLARE
|
||||||
|
server_internal name := @extschema@.__CDB_FS_Generate_Server_Name(input_name => server, check_existence => true);
|
||||||
|
server_type name := @extschema@.__CDB_FS_server_type(server_internal);
|
||||||
BEGIN
|
BEGIN
|
||||||
RETURN '{}'::json;
|
CASE server_type
|
||||||
|
WHEN 'postgres_fdw' THEN
|
||||||
|
RETURN @extschema@.__CDB_FS_Server_Diagnostics_PG(server_internal);
|
||||||
|
ELSE
|
||||||
|
RAISE EXCEPTION 'Not implemented server type % for remote server %', server_type, server;
|
||||||
|
END CASE;
|
||||||
END
|
END
|
||||||
$$
|
$$
|
||||||
LANGUAGE PLPGSQL VOLATILE PARALLEL UNSAFE;
|
LANGUAGE PLPGSQL VOLATILE PARALLEL UNSAFE;
|
||||||
|
|||||||
@@ -1,2 +1,50 @@
|
|||||||
|
-- ===================================================================
|
||||||
|
-- create FDW objects
|
||||||
|
-- ===================================================================
|
||||||
|
\set QUIET on
|
||||||
|
SET client_min_messages TO error;
|
||||||
|
\set VERBOSITY terse
|
||||||
|
CREATE EXTENSION postgres_fdw;
|
||||||
|
|
||||||
|
CREATE ROLE cdb_fs_tester LOGIN PASSWORD 'cdb_fs_passwd';
|
||||||
|
GRANT CONNECT ON DATABASE contrib_regression TO cdb_fs_tester;
|
||||||
|
|
||||||
|
-- Create database to be used as remote
|
||||||
|
CREATE DATABASE cdb_fs_tester OWNER cdb_fs_tester;
|
||||||
|
|
||||||
|
SELECT 'C1', cartodb.CDB_Federated_Server_Register_PG(server => 'loopback'::text, config => '{
|
||||||
|
"server": {
|
||||||
|
"host": "localhost",
|
||||||
|
"port": @@PGPORT@@
|
||||||
|
},
|
||||||
|
"credentials": {
|
||||||
|
"username": "cdb_fs_tester",
|
||||||
|
"password": "cdb_fs_passwd"
|
||||||
|
}
|
||||||
|
}'::jsonb);
|
||||||
|
\set QUIET off
|
||||||
|
|
||||||
|
|
||||||
|
-- ===================================================================
|
||||||
|
-- Test server diagnostics function(s)
|
||||||
|
-- ===================================================================
|
||||||
\echo '%% It raises an error if the server does not exist'
|
\echo '%% It raises an error if the server does not exist'
|
||||||
SELECT '1.1', cartodb.CDB_Federated_Server_Diagnostics(server => 'doesNotExist');
|
SELECT '1.1', cartodb.CDB_Federated_Server_Diagnostics(server => 'doesNotExist');
|
||||||
|
|
||||||
|
\echo '%% It returns a jsonb object'
|
||||||
|
SELECT '1.2', pg_typeof(cartodb.CDB_Federated_Server_Diagnostics(server => 'loopback'));
|
||||||
|
|
||||||
|
|
||||||
|
-- ===================================================================
|
||||||
|
-- Cleanup
|
||||||
|
-- ===================================================================
|
||||||
|
\set QUIET on
|
||||||
|
SELECT 'D1', cartodb.CDB_Federated_Server_Unregister(server => 'loopback'::text);
|
||||||
|
DROP DATABASE cdb_fs_tester;
|
||||||
|
|
||||||
|
-- Drop role
|
||||||
|
REVOKE CONNECT ON DATABASE contrib_regression FROM cdb_fs_tester;
|
||||||
|
DROP ROLE cdb_fs_tester;
|
||||||
|
|
||||||
|
DROP EXTENSION postgres_fdw;
|
||||||
|
\set QUIET off
|
||||||
|
|||||||
@@ -1,2 +1,6 @@
|
|||||||
|
C1|
|
||||||
%% It raises an error if the server does not exist
|
%% It raises an error if the server does not exist
|
||||||
1.1|{}
|
ERROR: Server "doesNotExist" does not exist
|
||||||
|
%% It returns a jsonb object
|
||||||
|
1.2|jsonb
|
||||||
|
D1|
|
||||||
|
|||||||
Reference in New Issue
Block a user