Added schema to client functions and fixed some errors
This commit is contained in:
parent
c973cdb0b1
commit
65ffb5d645
@ -4,35 +4,35 @@
|
||||
-- The table and the function are considered to be private and therefore
|
||||
-- no permissions are granted for any other user but the creator.
|
||||
|
||||
CREATE TABLE IF NOT EXISTS _config ( KEY TEXT PRIMARY KEY, VALUE JSON NOT NULL );
|
||||
CREATE TABLE IF NOT EXISTS cdb_geocoder_client._config ( KEY TEXT PRIMARY KEY, VALUE JSON NOT NULL );
|
||||
|
||||
-- Needed to dump config in backups
|
||||
-- This can only be called from an SQL script executed by CREATE EXTENSION
|
||||
SELECT pg_catalog.pg_extension_config_dump('_config', '');
|
||||
SELECT pg_catalog.pg_extension_config_dump('cdb_geocoder_client._config', '');
|
||||
|
||||
|
||||
CREATE OR REPLACE FUNCTION _config_set(key text, value JSON)
|
||||
CREATE OR REPLACE FUNCTION cdb_geocoder_client._config_set(key text, value JSON)
|
||||
RETURNS VOID AS $$
|
||||
BEGIN
|
||||
PERFORM _config_remove(key);
|
||||
EXECUTE 'INSERT INTO _config (KEY, VALUE) VALUES ($1, $2);' USING key, value;
|
||||
PERFORM cdb_geocoder_client._config_remove(key);
|
||||
EXECUTE 'INSERT INTO cdb_geocoder_client._config (KEY, VALUE) VALUES ($1, $2);' USING key, value;
|
||||
END
|
||||
$$ LANGUAGE PLPGSQL VOLATILE;
|
||||
|
||||
|
||||
CREATE OR REPLACE FUNCTION _config_remove(key text)
|
||||
CREATE OR REPLACE FUNCTION cdb_geocoder_client._config_remove(key text)
|
||||
RETURNS VOID AS $$
|
||||
BEGIN
|
||||
EXECUTE 'DELETE FROM _config WHERE KEY = $1;' USING key;
|
||||
EXECUTE 'DELETE FROM cdb_geocoder_client._config WHERE KEY = $1;' USING key;
|
||||
END
|
||||
$$ LANGUAGE PLPGSQL VOLATILE;
|
||||
|
||||
CREATE OR REPLACE FUNCTION _config_get(key text)
|
||||
CREATE OR REPLACE FUNCTION cdb_geocoder_client._config_get(key text)
|
||||
RETURNS JSON AS $$
|
||||
DECLARE
|
||||
value JSON;
|
||||
BEGIN
|
||||
EXECUTE 'SELECT VALUE FROM _config WHERE KEY = $1;' INTO value USING key;
|
||||
EXECUTE 'SELECT VALUE FROM cdb_geocoder_client._config WHERE KEY = $1;' INTO value USING key;
|
||||
RETURN value;
|
||||
END
|
||||
$$ LANGUAGE PLPGSQL STABLE;
|
||||
$$ LANGUAGE PLPGSQL STABLE;
|
@ -4,14 +4,15 @@
|
||||
-- These are the only ones with permissions to publicuser role
|
||||
-- and should also be the only ones with SECURITY DEFINER
|
||||
|
||||
CREATE OR REPLACE FUNCTION geocode_admin0_polygons(country_name text)
|
||||
CREATE OR REPLACE FUNCTION cdb_geocoder_client.geocode_admin0_polygons(country_name text)
|
||||
RETURNS Geometry AS $$
|
||||
DECLARE
|
||||
db_connection_str text;
|
||||
ret Geometry;
|
||||
BEGIN
|
||||
SELECT _config_get('db_connection_str') INTO db_connection_str;
|
||||
SELECT _geocode_admin0_polygons(session_user, txid_current(), db_connection_str, country_name) INTO ret;
|
||||
SELECT cdb_geocoder_client._config_get('db_server_config')->'connection_str' INTO db_connection_str;
|
||||
SELECT trim(both '"' FROM db_connection_str) INTO db_connection_str;
|
||||
SELECT cdb_geocoder_client._geocode_admin0_polygons(session_user, txid_current(), db_connection_str, country_name) INTO ret;
|
||||
RETURN ret;
|
||||
END;
|
||||
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;
|
||||
@ -21,9 +22,9 @@ $$ LANGUAGE 'plpgsql' SECURITY DEFINER;
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
CREATE OR REPLACE FUNCTION _geocode_admin0_polygons(user_id name, tx_id bigint, db_connection_str text, country_name text)
|
||||
CREATE OR REPLACE FUNCTION cdb_geocoder_client._geocode_admin0_polygons(user_id name, tx_id bigint, db_connection_str text, country_name text)
|
||||
RETURNS Geometry AS $$
|
||||
-- TODO check if we can move the config to its own function
|
||||
CONNECT db_connection_str;
|
||||
SELECT geocode_admin0(user_id, tx_id, country_name);
|
||||
SELECT cdb_geocoder_server.geocode_admin0_polygons(user_id, tx_id, country_name);
|
||||
$$ LANGUAGE plproxy;
|
||||
|
Loading…
Reference in New Issue
Block a user