FederatedServer: Use NAME for internal types
This commit is contained in:
@@ -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 (
|
||||||
|
|||||||
Reference in New Issue
Block a user