Add missing functions to make geom and webmercator params optional

This commit is contained in:
Rafa de la Torre 2019-10-09 17:40:10 +02:00
parent 1b815d0674
commit 8e1b659caf

View File

@ -149,7 +149,7 @@ LANGUAGE PLPGSQL VOLATILE PARALLEL UNSAFE;
-- 'my_remote_table', -- mandatory, table name
-- 'id', -- mandatory, name of the id column
-- 'geom', -- optional, name of the geom column, preferably in 4326
-- 'webmercator', -- optional, must be in 3857 if present
-- 'webmercator' -- optional, should be in 3857 if present
-- );
--
CREATE OR REPLACE FUNCTION @extschema@.CDB_SetUp_PG_Federated_Table(
@ -215,7 +215,76 @@ BEGIN
id_column,
geom_expression,
webmercator_expression,
array_to_string(rest_of_cols, ','), -- rest of columns
array_to_string(rest_of_cols, ','),
src_table
);
-- Grant perms to the view
EXECUTE format('GRANT SELECT ON %I TO %s', table_name, fdw_objects_name);
END
$$
LANGUAGE PLPGSQL VOLATILE PARALLEL UNSAFE;
CREATE OR REPLACE FUNCTION @extschema@.CDB_SetUp_PG_Federated_Table(
server_alias text,
schema_name name,
table_name name,
id_column name,
geom_column name
)
RETURNS void
AS $$
SELECT @extschema@.CDB_SetUp_PG_Federated_Table(
server_alias,
schema_name,
table_name,
id_column,
geom_column,
geom_column
);
$$
LANGUAGE SQL VOLATILE PARALLEL UNSAFE;
CREATE OR REPLACE FUNCTION @extschema@.CDB_SetUp_PG_Federated_Table(
server_alias text,
schema_name name,
table_name name,
id_column name
)
RETURNS void
AS $$
DECLARE
fdw_objects_name NAME := @extschema@.__CDB_User_FDW_Object_Names(server_alias);
src_table REGCLASS;
rest_of_cols TEXT[];
BEGIN
-- Import the foreign table
PERFORM CDB_SetUp_User_PG_FDW_Table(server_alias, schema_name, table_name);
src_table := format('%s.%s', fdw_objects_name, table_name);
-- Check id_column is numeric
PERFORM @extschema@.__ft_assert_numeric(src_table, id_column);
-- Get a list of columns excluding the id
SELECT ARRAY(
SELECT quote_ident(c) FROM @extschema@.__ft_getcolumns(src_table) AS c
WHERE c <> id_column
) INTO rest_of_cols;
-- Create a view with homogeneous CDB fields
EXECUTE format(
'CREATE OR REPLACE VIEW %1$I AS
SELECT
t.%2$I AS cartodb_id,
NULL AS the_geom,
NULL AS the_geom_webmercator,
%3$s
FROM %4$s t',
table_name,
id_column,
array_to_string(rest_of_cols, ','),
src_table
);