FederatedServer: Use NAME for internal types

This commit is contained in:
Raul Marin
2019-11-06 17:12:40 +01:00
parent 01258530ff
commit 899a12fc53
2 changed files with 11 additions and 11 deletions
+10 -10
View File
@@ -59,7 +59,7 @@ LANGUAGE SQL IMMUTABLE PARALLEL SAFE;
-- --
-- Produce a valid name for a schema generated for the Federated Server -- Produce a valid name for a schema generated for the Federated Server
-- --
CREATE OR REPLACE FUNCTION @extschema@.__CDB_FS_Generate_Schema_Name(internal_server_name TEXT, schema_name TEXT) CREATE OR REPLACE FUNCTION @extschema@.__CDB_FS_Generate_Schema_Name(internal_server_name NAME, schema_name TEXT)
RETURNS NAME RETURNS NAME
AS $$ AS $$
DECLARE DECLARE
@@ -77,7 +77,7 @@ LANGUAGE PLPGSQL IMMUTABLE PARALLEL SAFE;
-- Produce a valid name for a role generated for the Federated Server -- Produce a valid name for a role generated for the Federated Server
-- This needs to include the current database in its hash to avoid collisions in clusters with more than one database -- This needs to include the current database in its hash to avoid collisions in clusters with more than one database
-- --
CREATE OR REPLACE FUNCTION @extschema@.__CDB_FS_Generate_Server_Role_Name(internal_server_name TEXT) CREATE OR REPLACE FUNCTION @extschema@.__CDB_FS_Generate_Server_Role_Name(internal_server_name NAME)
RETURNS NAME RETURNS NAME
AS $$ AS $$
DECLARE DECLARE
@@ -93,12 +93,12 @@ LANGUAGE PLPGSQL IMMUTABLE PARALLEL SAFE;
-- Creates (if not exist) a schema to place the objects for a remote schema -- Creates (if not exist) a schema to place the objects for a remote schema
-- The schema is with the same AUTHORIZATION as the server -- The schema is with the same AUTHORIZATION as the server
-- --
CREATE OR REPLACE FUNCTION @extschema@.__CDB_FS_Create_Schema(internal_server_name TEXT, schema_name TEXT) CREATE OR REPLACE FUNCTION @extschema@.__CDB_FS_Create_Schema(internal_server_name NAME, schema_name TEXT)
RETURNS NAME RETURNS NAME
AS $$ AS $$
DECLARE DECLARE
schema_name text := @extschema@.__CDB_FS_Generate_Schema_Name(internal_server_name, schema_name); schema_name name := @extschema@.__CDB_FS_Generate_Schema_Name(internal_server_name, schema_name);
role_name text := @extschema@.__CDB_FS_Generate_Server_Role_Name(internal_server_name); role_name name := @extschema@.__CDB_FS_Generate_Server_Role_Name(internal_server_name);
BEGIN BEGIN
-- By changing the local role to the owner of the server we have an -- By changing the local role to the owner of the server we have an
-- easy way to check for permissions and keep all objects under the same owner -- easy way to check for permissions and keep all objects under the same owner
@@ -125,13 +125,13 @@ LANGUAGE PLPGSQL VOLATILE PARALLEL UNSAFE;
-- Returns the type of a server by internal name -- Returns the type of a server by internal name
-- Currently all of them should be postgres_fdw -- Currently all of them should be postgres_fdw
-- --
CREATE OR REPLACE FUNCTION @extschema@.__CDB_FS_server_type(remote_server name) CREATE OR REPLACE FUNCTION @extschema@.__CDB_FS_server_type(internal_server_name NAME)
RETURNS name RETURNS name
AS $$ AS $$
SELECT f.fdwname SELECT f.fdwname
FROM pg_foreign_server s FROM pg_foreign_server s
JOIN pg_foreign_data_wrapper f ON s.srvfdw = f.oid JOIN pg_foreign_data_wrapper f ON s.srvfdw = f.oid
WHERE s.srvname = remote_server; WHERE s.srvname = internal_server_name;
$$ $$
LANGUAGE SQL VOLATILE PARALLEL UNSAFE; LANGUAGE SQL VOLATILE PARALLEL UNSAFE;
@@ -287,7 +287,7 @@ CREATE OR REPLACE FUNCTION @extschema@.CDB_Federated_Server_Unregister(server TE
RETURNS void RETURNS void
AS $$ AS $$
DECLARE DECLARE
server_internal text := @extschema@.__CDB_FS_Generate_Server_Name(input_name := server, check_existence := true); server_internal name := @extschema@.__CDB_FS_Generate_Server_Name(input_name := server, check_existence := true);
role_name name := @extschema@.__CDB_FS_Generate_Server_Role_Name(server_internal); role_name name := @extschema@.__CDB_FS_Generate_Server_Role_Name(server_internal);
BEGIN BEGIN
SET client_min_messages = ERROR; SET client_min_messages = ERROR;
@@ -351,7 +351,7 @@ CREATE OR REPLACE FUNCTION @extschema@.CDB_Federated_Server_Grant_Access(server
RETURNS void RETURNS void
AS $$ AS $$
DECLARE DECLARE
server_internal text := @extschema@.__CDB_FS_Generate_Server_Name(input_name := server, check_existence := true); server_internal name := @extschema@.__CDB_FS_Generate_Server_Name(input_name := server, check_existence := true);
server_role_name name := @extschema@.__CDB_FS_Generate_Server_Role_Name(server_internal); server_role_name name := @extschema@.__CDB_FS_Generate_Server_Role_Name(server_internal);
BEGIN BEGIN
IF (db_role IS NULL) THEN IF (db_role IS NULL) THEN
@@ -376,7 +376,7 @@ CREATE OR REPLACE FUNCTION @extschema@.CDB_Federated_Server_Revoke_Access(server
RETURNS void RETURNS void
AS $$ AS $$
DECLARE DECLARE
server_internal text := @extschema@.__CDB_FS_Generate_Server_Name(input_name := server, check_existence := true); server_internal name := @extschema@.__CDB_FS_Generate_Server_Name(input_name := server, check_existence := true);
server_role_name name := @extschema@.__CDB_FS_Generate_Server_Role_Name(server_internal); server_role_name name := @extschema@.__CDB_FS_Generate_Server_Role_Name(server_internal);
BEGIN BEGIN
IF (db_role IS NULL) THEN IF (db_role IS NULL) THEN
@@ -22,7 +22,7 @@ DECLARE
inf_schema name := 'information_schema'; inf_schema name := 'information_schema';
remote_table name := 'schemata'; remote_table name := 'schemata';
local_schema name := @extschema@.__CDB_FS_Create_Schema(server_internal, inf_schema); local_schema name := @extschema@.__CDB_FS_Create_Schema(server_internal, inf_schema);
role_name text := @extschema@.__CDB_FS_Generate_Server_Role_Name(server_internal); role_name name := @extschema@.__CDB_FS_Generate_Server_Role_Name(server_internal);
BEGIN BEGIN
-- Import the foreign schemata table -- Import the foreign schemata table
IF NOT EXISTS ( IF NOT EXISTS (