Implement retrieval of remote postgis version
This commit is contained in:
@@ -41,12 +41,40 @@ $$
|
|||||||
LANGUAGE PLPGSQL VOLATILE PARALLEL UNSAFE;
|
LANGUAGE PLPGSQL VOLATILE PARALLEL UNSAFE;
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Get the PostGIS extension version of a remote PG server
|
||||||
|
--
|
||||||
CREATE OR REPLACE FUNCTION @extschema@.__CDB_FS_Foreign_PostGIS_Version_PG(server_internal name)
|
CREATE OR REPLACE FUNCTION @extschema@.__CDB_FS_Foreign_PostGIS_Version_PG(server_internal name)
|
||||||
RETURNS text
|
RETURNS text
|
||||||
AS $$
|
AS $$
|
||||||
|
DECLARE
|
||||||
|
-- Import pg_settings from pg_catalog
|
||||||
|
remote_schema name := 'pg_catalog';
|
||||||
|
remote_table name := 'pg_extension';
|
||||||
|
local_schema name := @extschema@.__CDB_FS_Create_Schema(server_internal, remote_schema);
|
||||||
|
role_name name := @extschema@.__CDB_FS_Generate_Server_Role_Name(server_internal);
|
||||||
|
remote_postgis_version text;
|
||||||
BEGIN
|
BEGIN
|
||||||
-- TODO implement
|
-- Import the foreign pg_extension table
|
||||||
RETURN '4.0';
|
IF NOT EXISTS (
|
||||||
|
SELECT * FROM pg_class
|
||||||
|
WHERE relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = local_schema)
|
||||||
|
AND relname = remote_table
|
||||||
|
) THEN
|
||||||
|
EXECUTE format('IMPORT FOREIGN SCHEMA %I LIMIT TO (%I) FROM SERVER %I INTO %I',
|
||||||
|
remote_schema, remote_table, server_internal, local_schema);
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
EXECUTE format('
|
||||||
|
SELECT extversion FROM %I.%I WHERE extname = ''postgis'';
|
||||||
|
', local_schema, remote_table) INTO remote_postgis_version;
|
||||||
|
EXCEPTION WHEN OTHERS THEN
|
||||||
|
RAISE EXCEPTION 'Not enough permissions to access the server "%"',
|
||||||
|
@extschema@.__CDB_FS_Extract_Server_Name(server_internal);
|
||||||
|
END;
|
||||||
|
|
||||||
|
RETURN remote_postgis_version;
|
||||||
END
|
END
|
||||||
$$
|
$$
|
||||||
LANGUAGE PLPGSQL VOLATILE PARALLEL UNSAFE;
|
LANGUAGE PLPGSQL VOLATILE PARALLEL UNSAFE;
|
||||||
|
|||||||
@@ -22,6 +22,10 @@ SELECT 'C1', cartodb.CDB_Federated_Server_Register_PG(server => 'loopback'::text
|
|||||||
"password": "cdb_fs_passwd"
|
"password": "cdb_fs_passwd"
|
||||||
}
|
}
|
||||||
}'::jsonb);
|
}'::jsonb);
|
||||||
|
|
||||||
|
\c cdb_fs_tester postgres
|
||||||
|
CREATE EXTENSION postgis;
|
||||||
|
\c contrib_regression postgres
|
||||||
\set QUIET off
|
\set QUIET off
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user