From ba7b8cfa7d670ce74e8377f1bce93a1bc52c1fef Mon Sep 17 00:00:00 2001 From: Mario de Frutos Date: Wed, 2 Dec 2015 18:54:27 +0100 Subject: [PATCH 1/4] Function to get the username based user type (org or non-org) --- client/sql/0.0.1/15_config_management.sql | 27 +++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 client/sql/0.0.1/15_config_management.sql diff --git a/client/sql/0.0.1/15_config_management.sql b/client/sql/0.0.1/15_config_management.sql new file mode 100644 index 0000000..86958b6 --- /dev/null +++ b/client/sql/0.0.1/15_config_management.sql @@ -0,0 +1,27 @@ +-- +-- Get username function +-- +-- The purpose of this function is to retrieve the username from +-- a) schema where he/her is the owner in case is an organization user +-- b) entity_name from the cdb_conf database in case is a non organization user + +CREATE OR REPLACE FUNCTION cdb_geocoder_client._cdb_username() +RETURNS text AS $$ +DECLARE + is_organization boolean; + username text; +BEGIN + SELECT cartodb.cdb_conf_getconf('user_config')->'is_organization' INTO is_organization; + IF is_organization IS NULL THEN + RAISE EXCEPTION 'User must have user configuration in the config table'; + ELSIF is_organization = TRUE THEN + SELECT nspname + FROM pg_namespace s + LEFT JOIN pg_roles r ON s.nspowner = r.oid + WHERE r.rolname = session_user INTO username; + ELSE + SELECT cartodb.cdb_conf_getconf('user_config')::json->'entity_name' INTO username; + END IF; + RETURN username; +END; +$$ LANGUAGE 'plpgsql' SECURITY DEFINER; \ No newline at end of file From 941e7084e6e8ccd36eb633b19b766ef5d95869de Mon Sep 17 00:00:00 2001 From: Mario de Frutos Date: Wed, 2 Dec 2015 18:54:49 +0100 Subject: [PATCH 2/4] Change functions to user username and remove JSON config passed as argument --- client/expected/00_installation_test.out | 7 -- client/expected/10_admin0_test.out | 10 +-- client/expected/20_admin1_test.out | 20 +++--- client/expected/30_namedplaces_test.out | 30 ++++---- client/expected/40_postalcodes_test.out | 20 +++--- client/expected/50_ipaddresses_test.out | 10 +-- client/expected/90_permissions_test.out | 72 +++++++++---------- client/sql/00_installation_test.sql | 2 - client/sql/10_admin0_test.sql | 4 +- client/sql/20_admin1_test.sql | 8 +-- client/sql/30_namedplaces_test.sql | 12 ++-- client/sql/40_postalcodes_test.sql | 8 +-- client/sql/50_ipaddresses_test.sql | 4 +- client/sql/90_permissions_test.sql | 18 ++--- client/templates/20_public_functions.erb | 8 +-- client/templates/30_plproxy_functions.erb | 4 +- interface.yaml | 18 ----- server/extension/expected/30_admin0_test.out | 6 +- server/extension/expected/40_admin1_test.out | 12 ++-- .../expected/50_namedplaces_test.out | 24 +++---- .../expected/60_postalcodes_test.out | 18 ++--- server/extension/expected/70_ips_test.out | 6 +- server/extension/sql/0.0.1/30_admin0.sql | 4 +- server/extension/sql/0.0.1/40_admin1.sql | 8 +-- server/extension/sql/0.0.1/50_namedplaces.sql | 12 ++-- server/extension/sql/0.0.1/60_postalcodes.sql | 16 ++--- server/extension/sql/0.0.1/70_ips.sql | 4 +- server/extension/sql/30_admin0_test.sql | 6 +- server/extension/sql/40_admin1_test.sql | 12 ++-- server/extension/sql/50_namedplaces_test.sql | 24 +++---- server/extension/sql/60_postalcodes_test.sql | 18 ++--- server/extension/sql/70_ips_test.sql | 6 +- 32 files changed, 201 insertions(+), 230 deletions(-) diff --git a/client/expected/00_installation_test.out b/client/expected/00_installation_test.out index ee46a3f..cbeef05 100644 --- a/client/expected/00_installation_test.out +++ b/client/expected/00_installation_test.out @@ -20,13 +20,6 @@ SELECT cartodb.cdb_conf_setconf('user_config', '{"is_organization": false, "enti (1 row) --- Mock the geocoder configuration -SELECT cartodb.cdb_conf_setconf('geocoder_config', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}'); - cdb_conf_setconf ------------------- - -(1 row) - -- Mock the server schema CREATE SCHEMA cdb_geocoder_server; -- Create a test user to check permissions diff --git a/client/expected/10_admin0_test.out b/client/expected/10_admin0_test.out index ac5c4d8..41d3ade 100644 --- a/client/expected/10_admin0_test.out +++ b/client/expected/10_admin0_test.out @@ -1,18 +1,18 @@ -- Add to the search path the schema SET search_path TO public,cartodb,cdb_geocoder_client; -- Mock the server function -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin0_polygon(user_id name, user_config JSON, geocoder_config JSON, country_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin0_polygon(username text, country_name text) RETURNS Geometry AS $$ BEGIN - RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_admin0_polygon invoked with params (%, %, %, %)', user_id, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}' , country_name; + RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_admin0_polygon invoked with params (%, %)', username, country_name; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; -- Exercise the public and the proxied function SELECT cdb_geocode_admin0_polygon('Spain'); -NOTICE: cdb_geocoder_client._cdb_geocode_admin0_polygon(4): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin0_polygon invoked with params (postgres, {"is_organization": false, "entity_name": "test_user"}, {"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}, Spain) -CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin0_polygon(session_user, user_config, geocoder_config, country_name)" -PL/pgSQL function cdb_geocode_admin0_polygon(text) line 12 at SQL statement +NOTICE: cdb_geocoder_client._cdb_geocode_admin0_polygon(2): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin0_polygon invoked with params ("test_user", Spain) +CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin0_polygon(username, country_name)" +PL/pgSQL function cdb_geocode_admin0_polygon(text) line 10 at SQL statement cdb_geocode_admin0_polygon ---------------------------- diff --git a/client/expected/20_admin1_test.out b/client/expected/20_admin1_test.out index 190edf8..693c478 100644 --- a/client/expected/20_admin1_test.out +++ b/client/expected/20_admin1_test.out @@ -1,34 +1,34 @@ -- Add to the search path the schema SET search_path TO public,cartodb,cdb_geocoder_client; -- Mock the server functions -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin1_polygon(user_id name, user_config JSON, geocoder_config JSON, admin1_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin1_polygon(username text, admin1_name text) RETURNS Geometry AS $$ BEGIN - RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params (%, %, %, %)', user_id, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', admin1_name; + RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params (%, %)', username, admin1_name; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin1_polygon(user_id name, user_config JSON, geocoder_config JSON, admin1_name text, country_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin1_polygon(username text, admin1_name text, country_name text) RETURNS Geometry AS $$ BEGIN - RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params (%, %, %, %, %)', user_id, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', admin1_name, country_name; + RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params (%, %, %)', username, admin1_name, country_name; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; -- Exercise the public and the proxied function SELECT cdb_geocode_admin1_polygon('California'); -NOTICE: cdb_geocoder_client._cdb_geocode_admin1_polygon(4): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params (postgres, {"is_organization": false, "entity_name": "test_user"}, {"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}, California) -CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin1_polygon(session_user, user_config, geocoder_config, admin1_name)" -PL/pgSQL function cdb_geocode_admin1_polygon(text) line 12 at SQL statement +NOTICE: cdb_geocoder_client._cdb_geocode_admin1_polygon(2): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params ("test_user", California) +CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin1_polygon(username, admin1_name)" +PL/pgSQL function cdb_geocode_admin1_polygon(text) line 10 at SQL statement cdb_geocode_admin1_polygon ---------------------------- (1 row) SELECT cdb_geocode_admin1_polygon('California', 'United States'); -NOTICE: cdb_geocoder_client._cdb_geocode_admin1_polygon(5): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params (postgres, {"is_organization": false, "entity_name": "test_user"}, {"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}, California, United States) -CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin1_polygon(session_user, user_config, geocoder_config, admin1_name, country_name)" -PL/pgSQL function cdb_geocode_admin1_polygon(text,text) line 12 at SQL statement +NOTICE: cdb_geocoder_client._cdb_geocode_admin1_polygon(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params ("test_user", California, United States) +CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin1_polygon(username, admin1_name, country_name)" +PL/pgSQL function cdb_geocode_admin1_polygon(text,text) line 10 at SQL statement cdb_geocode_admin1_polygon ---------------------------- diff --git a/client/expected/30_namedplaces_test.out b/client/expected/30_namedplaces_test.out index 4f705a0..e4891fd 100644 --- a/client/expected/30_namedplaces_test.out +++ b/client/expected/30_namedplaces_test.out @@ -1,50 +1,50 @@ -- Add to the search path the schema SET search_path TO public,cartodb,cdb_geocoder_client; -- Mock the server functions -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(user_id name, user_config JSON, geocoder_config JSON, city_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(username text, city_name text) RETURNS Geometry AS $$ BEGIN - RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (%, %, %, %)', user_id, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', city_name; + RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (%, %)', username, city_name; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(user_id name, user_config JSON, geocoder_config JSON, city_name text, country_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(username text, city_name text, country_name text) RETURNS Geometry AS $$ BEGIN - RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (%, %, %, %, %)', user_id, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', city_name, country_name; + RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (%, %, %)', username, city_name, country_name; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(user_id name, user_config JSON, geocoder_config JSON, city_name text, admin1_name text, country_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(username text, city_name text, admin1_name text, country_name text) RETURNS Geometry AS $$ BEGIN - RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (%, %, %, %, %, %)', user_id, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', city_name, admin1_name, country_name; + RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (%, %, %, %)', username, city_name, admin1_name, country_name; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; -- Exercise the public and the proxied function SELECT cdb_geocode_namedplace_point('Elx'); -NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(4): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (postgres, {"is_organization": false, "entity_name": "test_user"}, {"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}, Elx) -CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(session_user, user_config, geocoder_config, city_name)" -PL/pgSQL function cdb_geocode_namedplace_point(text) line 12 at SQL statement +NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(2): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params ("test_user", Elx) +CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(username, city_name)" +PL/pgSQL function cdb_geocode_namedplace_point(text) line 10 at SQL statement cdb_geocode_namedplace_point ------------------------------ (1 row) SELECT cdb_geocode_namedplace_point('Elx', 'Spain'); -NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(5): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (postgres, {"is_organization": false, "entity_name": "test_user"}, {"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}, Elx, Spain) -CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(session_user, user_config, geocoder_config, city_name, country_name)" -PL/pgSQL function cdb_geocode_namedplace_point(text,text) line 12 at SQL statement +NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params ("test_user", Elx, Spain) +CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(username, city_name, country_name)" +PL/pgSQL function cdb_geocode_namedplace_point(text,text) line 10 at SQL statement cdb_geocode_namedplace_point ------------------------------ (1 row) SELECT cdb_geocode_namedplace_point('Elx', 'Valencia', 'Spain'); -NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(6): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (postgres, {"is_organization": false, "entity_name": "test_user"}, {"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}, Elx, Valencia, Spain) -CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(session_user, user_config, geocoder_config, city_name, admin1_name, country_name)" -PL/pgSQL function cdb_geocode_namedplace_point(text,text,text) line 12 at SQL statement +NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(4): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params ("test_user", Elx, Valencia, Spain) +CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(username, city_name, admin1_name, country_name)" +PL/pgSQL function cdb_geocode_namedplace_point(text,text,text) line 10 at SQL statement cdb_geocode_namedplace_point ------------------------------ diff --git a/client/expected/40_postalcodes_test.out b/client/expected/40_postalcodes_test.out index 46d2c9c..478bb72 100644 --- a/client/expected/40_postalcodes_test.out +++ b/client/expected/40_postalcodes_test.out @@ -1,34 +1,34 @@ -- Add to the search path the schema SET search_path TO public,cartodb,cdb_geocoder_client; -- Mock the server functions -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_polygon(user_id name, user_config JSON, geocoder_config JSON, postal_code text, country_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_polygon(username text, postal_code text, country_name text) RETURNS Geometry AS $$ BEGIN - RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_postalcode_polygon invoked with params (%, %, %, %, %)', user_id, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', postal_code, country_name; + RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_postalcode_polygon invoked with params (%, %, %)', username, postal_code, country_name; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_point(user_id name, user_config JSON, geocoder_config JSON, postal_code text, country_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_point(username text, postal_code text, country_name text) RETURNS Geometry AS $$ BEGIN - RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_postalcode_point invoked with params (%, %, %, %, %)', user_id, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', postal_code, country_name; + RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_postalcode_point invoked with params (%, %, %)', username, postal_code, country_name; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; -- Exercise the public and the proxied function SELECT cdb_geocode_postalcode_polygon('03204', 'Spain'); -NOTICE: cdb_geocoder_client._cdb_geocode_postalcode_polygon(5): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_postalcode_polygon invoked with params (postgres, {"is_organization": false, "entity_name": "test_user"}, {"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}, 03204, Spain) -CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_postalcode_polygon(session_user, user_config, geocoder_config, postal_code, country_name)" -PL/pgSQL function cdb_geocode_postalcode_polygon(text,text) line 12 at SQL statement +NOTICE: cdb_geocoder_client._cdb_geocode_postalcode_polygon(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_postalcode_polygon invoked with params ("test_user", 03204, Spain) +CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_postalcode_polygon(username, postal_code, country_name)" +PL/pgSQL function cdb_geocode_postalcode_polygon(text,text) line 10 at SQL statement cdb_geocode_postalcode_polygon -------------------------------- (1 row) SELECT cdb_geocode_postalcode_point('03204', 'Spain'); -NOTICE: cdb_geocoder_client._cdb_geocode_postalcode_point(5): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_postalcode_point invoked with params (postgres, {"is_organization": false, "entity_name": "test_user"}, {"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}, 03204, Spain) -CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_postalcode_point(session_user, user_config, geocoder_config, postal_code, country_name)" -PL/pgSQL function cdb_geocode_postalcode_point(text,text) line 12 at SQL statement +NOTICE: cdb_geocoder_client._cdb_geocode_postalcode_point(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_postalcode_point invoked with params ("test_user", 03204, Spain) +CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_postalcode_point(username, postal_code, country_name)" +PL/pgSQL function cdb_geocode_postalcode_point(text,text) line 10 at SQL statement cdb_geocode_postalcode_point ------------------------------ diff --git a/client/expected/50_ipaddresses_test.out b/client/expected/50_ipaddresses_test.out index a4ae569..fb49053 100644 --- a/client/expected/50_ipaddresses_test.out +++ b/client/expected/50_ipaddresses_test.out @@ -1,18 +1,18 @@ -- Add to the search path the schema SET search_path TO public,cartodb,cdb_geocoder_client; -- Mock the server functions -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_ipaddress_point(user_id name, user_config JSON, geocoder_config JSON, ip_address text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_ipaddress_point(username text, ip_address text) RETURNS Geometry AS $$ BEGIN - RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_ipaddress_point invoked with params (%, %, %, %)', user_id, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', ip_address; + RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_ipaddress_point invoked with params (%, %)', username, ip_address; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; -- Exercise the public and the proxied function SELECT cdb_geocode_ipaddress_point('8.8.8.8'); -NOTICE: cdb_geocoder_client._cdb_geocode_ipaddress_point(4): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_ipaddress_point invoked with params (postgres, {"is_organization": false, "entity_name": "test_user"}, {"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}, 8.8.8.8) -CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_ipaddress_point(session_user, user_config, geocoder_config, ip_address)" -PL/pgSQL function cdb_geocode_ipaddress_point(text) line 12 at SQL statement +NOTICE: cdb_geocoder_client._cdb_geocode_ipaddress_point(2): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_ipaddress_point invoked with params ("test_user", 8.8.8.8) +CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_ipaddress_point(username, ip_address)" +PL/pgSQL function cdb_geocode_ipaddress_point(text) line 10 at SQL statement cdb_geocode_ipaddress_point ----------------------------- diff --git a/client/expected/90_permissions_test.out b/client/expected/90_permissions_test.out index 4622cf4..8b0c6c9 100644 --- a/client/expected/90_permissions_test.out +++ b/client/expected/90_permissions_test.out @@ -5,102 +5,102 @@ SET search_path TO public,cartodb,cdb_geocoder_client; -- Exercise the public function -- it is public, it shall work SELECT cdb_geocode_admin0_polygon('Spain'); -NOTICE: cdb_geocoder_client._cdb_geocode_admin0_polygon(4): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin0_polygon invoked with params (postgres, {"is_organization": false, "entity_name": "test_user"}, {"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}, Spain) -CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin0_polygon(session_user, user_config, geocoder_config, country_name)" -PL/pgSQL function cdb_geocode_admin0_polygon(text) line 12 at SQL statement +NOTICE: cdb_geocoder_client._cdb_geocode_admin0_polygon(2): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin0_polygon invoked with params ("test_user", Spain) +CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin0_polygon(username, country_name)" +PL/pgSQL function cdb_geocode_admin0_polygon(text) line 10 at SQL statement cdb_geocode_admin0_polygon ---------------------------- (1 row) SELECT cdb_geocode_admin1_polygon('California'); -NOTICE: cdb_geocoder_client._cdb_geocode_admin1_polygon(4): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params (postgres, {"is_organization": false, "entity_name": "test_user"}, {"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}, California) -CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin1_polygon(session_user, user_config, geocoder_config, admin1_name)" -PL/pgSQL function cdb_geocode_admin1_polygon(text) line 12 at SQL statement +NOTICE: cdb_geocoder_client._cdb_geocode_admin1_polygon(2): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params ("test_user", California) +CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin1_polygon(username, admin1_name)" +PL/pgSQL function cdb_geocode_admin1_polygon(text) line 10 at SQL statement cdb_geocode_admin1_polygon ---------------------------- (1 row) SELECT cdb_geocode_admin1_polygon('California', 'United States'); -NOTICE: cdb_geocoder_client._cdb_geocode_admin1_polygon(5): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params (postgres, {"is_organization": false, "entity_name": "test_user"}, {"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}, California, United States) -CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin1_polygon(session_user, user_config, geocoder_config, admin1_name, country_name)" -PL/pgSQL function cdb_geocode_admin1_polygon(text,text) line 12 at SQL statement +NOTICE: cdb_geocoder_client._cdb_geocode_admin1_polygon(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params ("test_user", California, United States) +CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin1_polygon(username, admin1_name, country_name)" +PL/pgSQL function cdb_geocode_admin1_polygon(text,text) line 10 at SQL statement cdb_geocode_admin1_polygon ---------------------------- (1 row) SELECT cdb_geocode_namedplace_point('Elx'); -NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(4): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (postgres, {"is_organization": false, "entity_name": "test_user"}, {"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}, Elx) -CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(session_user, user_config, geocoder_config, city_name)" -PL/pgSQL function cdb_geocode_namedplace_point(text) line 12 at SQL statement +NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(2): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params ("test_user", Elx) +CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(username, city_name)" +PL/pgSQL function cdb_geocode_namedplace_point(text) line 10 at SQL statement cdb_geocode_namedplace_point ------------------------------ (1 row) SELECT cdb_geocode_namedplace_point('Elx', 'Valencia'); -NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(5): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (postgres, {"is_organization": false, "entity_name": "test_user"}, {"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}, Elx, Valencia) -CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(session_user, user_config, geocoder_config, city_name, country_name)" -PL/pgSQL function cdb_geocode_namedplace_point(text,text) line 12 at SQL statement +NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params ("test_user", Elx, Valencia) +CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(username, city_name, country_name)" +PL/pgSQL function cdb_geocode_namedplace_point(text,text) line 10 at SQL statement cdb_geocode_namedplace_point ------------------------------ (1 row) SELECT cdb_geocode_namedplace_point('Elx', 'Valencia', 'Spain'); -NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(6): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (postgres, {"is_organization": false, "entity_name": "test_user"}, {"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}, Elx, Valencia, Spain) -CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(session_user, user_config, geocoder_config, city_name, admin1_name, country_name)" -PL/pgSQL function cdb_geocode_namedplace_point(text,text,text) line 12 at SQL statement +NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(4): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params ("test_user", Elx, Valencia, Spain) +CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(username, city_name, admin1_name, country_name)" +PL/pgSQL function cdb_geocode_namedplace_point(text,text,text) line 10 at SQL statement cdb_geocode_namedplace_point ------------------------------ (1 row) SELECT cdb_geocode_postalcode_polygon('03204', 'Spain'); -NOTICE: cdb_geocoder_client._cdb_geocode_postalcode_polygon(5): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_postalcode_polygon invoked with params (postgres, {"is_organization": false, "entity_name": "test_user"}, {"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}, 03204, Spain) -CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_postalcode_polygon(session_user, user_config, geocoder_config, postal_code, country_name)" -PL/pgSQL function cdb_geocode_postalcode_polygon(text,text) line 12 at SQL statement +NOTICE: cdb_geocoder_client._cdb_geocode_postalcode_polygon(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_postalcode_polygon invoked with params ("test_user", 03204, Spain) +CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_postalcode_polygon(username, postal_code, country_name)" +PL/pgSQL function cdb_geocode_postalcode_polygon(text,text) line 10 at SQL statement cdb_geocode_postalcode_polygon -------------------------------- (1 row) SELECT cdb_geocode_postalcode_point('03204', 'Spain'); -NOTICE: cdb_geocoder_client._cdb_geocode_postalcode_point(5): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_postalcode_point invoked with params (postgres, {"is_organization": false, "entity_name": "test_user"}, {"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}, 03204, Spain) -CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_postalcode_point(session_user, user_config, geocoder_config, postal_code, country_name)" -PL/pgSQL function cdb_geocode_postalcode_point(text,text) line 12 at SQL statement +NOTICE: cdb_geocoder_client._cdb_geocode_postalcode_point(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_postalcode_point invoked with params ("test_user", 03204, Spain) +CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_postalcode_point(username, postal_code, country_name)" +PL/pgSQL function cdb_geocode_postalcode_point(text,text) line 10 at SQL statement cdb_geocode_postalcode_point ------------------------------ (1 row) SELECT cdb_geocode_ipaddress_point('8.8.8.8'); -NOTICE: cdb_geocoder_client._cdb_geocode_ipaddress_point(4): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_ipaddress_point invoked with params (postgres, {"is_organization": false, "entity_name": "test_user"}, {"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}, 8.8.8.8) -CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_ipaddress_point(session_user, user_config, geocoder_config, ip_address)" -PL/pgSQL function cdb_geocode_ipaddress_point(text) line 12 at SQL statement +NOTICE: cdb_geocoder_client._cdb_geocode_ipaddress_point(2): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_ipaddress_point invoked with params ("test_user", 8.8.8.8) +CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_ipaddress_point(username, ip_address)" +PL/pgSQL function cdb_geocode_ipaddress_point(text) line 10 at SQL statement cdb_geocode_ipaddress_point ----------------------------- (1 row) -- Check the regular user has no permissions on private functions -SELECT _cdb_geocode_admin0_polygon('evil_user', '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Hell'); +SELECT _cdb_geocode_admin0_polygon('evil_user', 'Hell'); ERROR: permission denied for function _cdb_geocode_admin0_polygon -SELECT _cdb_geocode_admin1_polygon('evil_user', '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Hell'); +SELECT _cdb_geocode_admin1_polygon('evil_user', 'Hell'); ERROR: permission denied for function _cdb_geocode_admin1_polygon -SELECT _cdb_geocode_admin1_polygon('evil_user', '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Sheol', 'Hell'); +SELECT _cdb_geocode_admin1_polygon('evil_user', 'Sheol', 'Hell'); ERROR: permission denied for function _cdb_geocode_admin1_polygon -SELECT _cdb_geocode_namedplace_point('evil_user', '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Sheol'); +SELECT _cdb_geocode_namedplace_point('evil_user', 'Sheol'); ERROR: permission denied for function _cdb_geocode_namedplace_point -SELECT _cdb_geocode_namedplace_point('evil_user', '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Sheol', 'Hell'); +SELECT _cdb_geocode_namedplace_point('evil_user', 'Sheol', 'Hell'); ERROR: permission denied for function _cdb_geocode_namedplace_point -SELECT _cdb_geocode_namedplace_point('evil_user', '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Sheol', 'Hell', 'Ugly world'); +SELECT _cdb_geocode_namedplace_point('evil_user', 'Sheol', 'Hell', 'Ugly world'); ERROR: permission denied for function _cdb_geocode_namedplace_point -SELECT _cdb_geocode_postalcode_polygon('evil_user', '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '66666', 'Hell'); +SELECT _cdb_geocode_postalcode_polygon('evil_user', '66666', 'Hell'); ERROR: permission denied for function _cdb_geocode_postalcode_polygon -SELECT _cdb_geocode_postalcode_point('evil_user', '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '66666', 'Hell'); +SELECT _cdb_geocode_postalcode_point('evil_user', '66666', 'Hell'); ERROR: permission denied for function _cdb_geocode_postalcode_point -SELECT _cdb_geocode_ipaddress_point('evil_user', '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '8.8.8.8'); +SELECT _cdb_geocode_ipaddress_point('evil_user', '8.8.8.8'); ERROR: permission denied for function _cdb_geocode_ipaddress_point diff --git a/client/sql/00_installation_test.sql b/client/sql/00_installation_test.sql index 842299a..784fa03 100644 --- a/client/sql/00_installation_test.sql +++ b/client/sql/00_installation_test.sql @@ -12,8 +12,6 @@ CREATE EXTENSION cdb_geocoder_client; SELECT cartodb.cdb_conf_setconf('geocoder_server_config', '{"connection_str": "dbname=contrib_regression host=127.0.0.1 user=postgres"}'); -- Mock the user configuration SELECT cartodb.cdb_conf_setconf('user_config', '{"is_organization": false, "entity_name": "test_user"}'); --- Mock the geocoder configuration -SELECT cartodb.cdb_conf_setconf('geocoder_config', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}'); -- Mock the server schema CREATE SCHEMA cdb_geocoder_server; diff --git a/client/sql/10_admin0_test.sql b/client/sql/10_admin0_test.sql index 6ca045c..b50deef 100644 --- a/client/sql/10_admin0_test.sql +++ b/client/sql/10_admin0_test.sql @@ -2,10 +2,10 @@ SET search_path TO public,cartodb,cdb_geocoder_client; -- Mock the server function -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin0_polygon(user_id name, user_config JSON, geocoder_config JSON, country_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin0_polygon(username text, country_name text) RETURNS Geometry AS $$ BEGIN - RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_admin0_polygon invoked with params (%, %, %, %)', user_id, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}' , country_name; + RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_admin0_polygon invoked with params (%, %)', username, country_name; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; diff --git a/client/sql/20_admin1_test.sql b/client/sql/20_admin1_test.sql index 55f34cc..aaa79e2 100644 --- a/client/sql/20_admin1_test.sql +++ b/client/sql/20_admin1_test.sql @@ -2,18 +2,18 @@ SET search_path TO public,cartodb,cdb_geocoder_client; -- Mock the server functions -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin1_polygon(user_id name, user_config JSON, geocoder_config JSON, admin1_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin1_polygon(username text, admin1_name text) RETURNS Geometry AS $$ BEGIN - RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params (%, %, %, %)', user_id, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', admin1_name; + RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params (%, %)', username, admin1_name; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin1_polygon(user_id name, user_config JSON, geocoder_config JSON, admin1_name text, country_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin1_polygon(username text, admin1_name text, country_name text) RETURNS Geometry AS $$ BEGIN - RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params (%, %, %, %, %)', user_id, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', admin1_name, country_name; + RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params (%, %, %)', username, admin1_name, country_name; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; diff --git a/client/sql/30_namedplaces_test.sql b/client/sql/30_namedplaces_test.sql index 6b3cacc..bc6d02c 100644 --- a/client/sql/30_namedplaces_test.sql +++ b/client/sql/30_namedplaces_test.sql @@ -2,26 +2,26 @@ SET search_path TO public,cartodb,cdb_geocoder_client; -- Mock the server functions -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(user_id name, user_config JSON, geocoder_config JSON, city_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(username text, city_name text) RETURNS Geometry AS $$ BEGIN - RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (%, %, %, %)', user_id, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', city_name; + RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (%, %)', username, city_name; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(user_id name, user_config JSON, geocoder_config JSON, city_name text, country_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(username text, city_name text, country_name text) RETURNS Geometry AS $$ BEGIN - RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (%, %, %, %, %)', user_id, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', city_name, country_name; + RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (%, %, %)', username, city_name, country_name; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(user_id name, user_config JSON, geocoder_config JSON, city_name text, admin1_name text, country_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(username text, city_name text, admin1_name text, country_name text) RETURNS Geometry AS $$ BEGIN - RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (%, %, %, %, %, %)', user_id, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', city_name, admin1_name, country_name; + RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (%, %, %, %)', username, city_name, admin1_name, country_name; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; diff --git a/client/sql/40_postalcodes_test.sql b/client/sql/40_postalcodes_test.sql index e0c46c4..3300878 100644 --- a/client/sql/40_postalcodes_test.sql +++ b/client/sql/40_postalcodes_test.sql @@ -2,18 +2,18 @@ SET search_path TO public,cartodb,cdb_geocoder_client; -- Mock the server functions -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_polygon(user_id name, user_config JSON, geocoder_config JSON, postal_code text, country_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_polygon(username text, postal_code text, country_name text) RETURNS Geometry AS $$ BEGIN - RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_postalcode_polygon invoked with params (%, %, %, %, %)', user_id, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', postal_code, country_name; + RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_postalcode_polygon invoked with params (%, %, %)', username, postal_code, country_name; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_point(user_id name, user_config JSON, geocoder_config JSON, postal_code text, country_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_point(username text, postal_code text, country_name text) RETURNS Geometry AS $$ BEGIN - RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_postalcode_point invoked with params (%, %, %, %, %)', user_id, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', postal_code, country_name; + RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_postalcode_point invoked with params (%, %, %)', username, postal_code, country_name; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; diff --git a/client/sql/50_ipaddresses_test.sql b/client/sql/50_ipaddresses_test.sql index 1cb7472..457f561 100644 --- a/client/sql/50_ipaddresses_test.sql +++ b/client/sql/50_ipaddresses_test.sql @@ -2,10 +2,10 @@ SET search_path TO public,cartodb,cdb_geocoder_client; -- Mock the server functions -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_ipaddress_point(user_id name, user_config JSON, geocoder_config JSON, ip_address text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_ipaddress_point(username text, ip_address text) RETURNS Geometry AS $$ BEGIN - RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_ipaddress_point invoked with params (%, %, %, %)', user_id, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', ip_address; + RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_ipaddress_point invoked with params (%, %)', username, ip_address; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; diff --git a/client/sql/90_permissions_test.sql b/client/sql/90_permissions_test.sql index 9fcdebf..992d119 100644 --- a/client/sql/90_permissions_test.sql +++ b/client/sql/90_permissions_test.sql @@ -17,12 +17,12 @@ SELECT cdb_geocode_postalcode_point('03204', 'Spain'); SELECT cdb_geocode_ipaddress_point('8.8.8.8'); -- Check the regular user has no permissions on private functions -SELECT _cdb_geocode_admin0_polygon('evil_user', '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Hell'); -SELECT _cdb_geocode_admin1_polygon('evil_user', '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Hell'); -SELECT _cdb_geocode_admin1_polygon('evil_user', '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Sheol', 'Hell'); -SELECT _cdb_geocode_namedplace_point('evil_user', '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Sheol'); -SELECT _cdb_geocode_namedplace_point('evil_user', '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Sheol', 'Hell'); -SELECT _cdb_geocode_namedplace_point('evil_user', '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Sheol', 'Hell', 'Ugly world'); -SELECT _cdb_geocode_postalcode_polygon('evil_user', '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '66666', 'Hell'); -SELECT _cdb_geocode_postalcode_point('evil_user', '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '66666', 'Hell'); -SELECT _cdb_geocode_ipaddress_point('evil_user', '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '8.8.8.8'); +SELECT _cdb_geocode_admin0_polygon('evil_user', 'Hell'); +SELECT _cdb_geocode_admin1_polygon('evil_user', 'Hell'); +SELECT _cdb_geocode_admin1_polygon('evil_user', 'Sheol', 'Hell'); +SELECT _cdb_geocode_namedplace_point('evil_user', 'Sheol'); +SELECT _cdb_geocode_namedplace_point('evil_user', 'Sheol', 'Hell'); +SELECT _cdb_geocode_namedplace_point('evil_user', 'Sheol', 'Hell', 'Ugly world'); +SELECT _cdb_geocode_postalcode_polygon('evil_user', '66666', 'Hell'); +SELECT _cdb_geocode_postalcode_point('evil_user', '66666', 'Hell'); +SELECT _cdb_geocode_ipaddress_point('evil_user', '8.8.8.8'); diff --git a/client/templates/20_public_functions.erb b/client/templates/20_public_functions.erb index fe213f9..d4a6072 100644 --- a/client/templates/20_public_functions.erb +++ b/client/templates/20_public_functions.erb @@ -8,15 +8,13 @@ CREATE OR REPLACE FUNCTION <%= GEOCODER_CLIENT_SCHEMA %>.<%= name %> (<%= params RETURNS <%= return_type %> AS $$ DECLARE ret <%= return_type %>; - user_config json; - geocoder_config json; + username text; BEGIN IF session_user = 'publicuser' OR session_user ~ 'cartodb_publicuser_*' THEN RAISE EXCEPTION 'The api_key must be provided'; END IF; - SELECT cartodb.CDB_Conf_GetConf('<%= user_config_key %>') INTO user_config; - SELECT cartodb.CDB_Conf_GetConf('<%= geocoder_config_key %>') INTO geocoder_config; - SELECT <%= GEOCODER_CLIENT_SCHEMA %>._<%= name %>(session_user, user_config, geocoder_config, <%= params %>) INTO ret; + SELECT _CDB_username() INTO username; + SELECT <%= GEOCODER_CLIENT_SCHEMA %>._<%= name %>(username, <%= params %>) INTO ret; RETURN ret; END; $$ LANGUAGE 'plpgsql' SECURITY DEFINER; diff --git a/client/templates/30_plproxy_functions.erb b/client/templates/30_plproxy_functions.erb index 766cf4a..b787647 100644 --- a/client/templates/30_plproxy_functions.erb +++ b/client/templates/30_plproxy_functions.erb @@ -1,6 +1,6 @@ -CREATE OR REPLACE FUNCTION <%= GEOCODER_CLIENT_SCHEMA %>._<%= name %> (user_id name, user_config json, geocoder_config json, <%= params_with_type %>) +CREATE OR REPLACE FUNCTION <%= GEOCODER_CLIENT_SCHEMA %>._<%= name %> (username text, <%= params_with_type %>) RETURNS <%= return_type %> AS $$ CONNECT <%= GEOCODER_CLIENT_SCHEMA %>._server_conn_str(); - SELECT cdb_geocoder_server.<%= name %> (user_id, user_config, geocoder_config, <%= params %>); + SELECT cdb_geocoder_server.<%= name %> (username, <%= params %>); $$ LANGUAGE plproxy; diff --git a/interface.yaml b/interface.yaml index 535c02d..c789cd3 100644 --- a/interface.yaml +++ b/interface.yaml @@ -1,45 +1,33 @@ --- - name: cdb_geocode_admin0_polygon return_type: Geometry - user_config_key: user_config - geocoder_config_key: geocoder_config params: - { name: country_name, type: text } - name: cdb_geocode_admin1_polygon return_type: Geometry - user_config_key: user_config - geocoder_config_key: geocoder_config params: - { name: admin1_name, type: text } - name: cdb_geocode_admin1_polygon return_type: Geometry - user_config_key: user_config - geocoder_config_key: geocoder_config params: - { name: admin1_name, type: text } - { name: country_name, type: text } - name: cdb_geocode_namedplace_point return_type: Geometry - user_config_key: user_config - geocoder_config_key: geocoder_config params: - { name: city_name, type: text} - name: cdb_geocode_namedplace_point return_type: Geometry - user_config_key: user_config - geocoder_config_key: geocoder_config params: - { name: city_name, type: text} - { name: country_name, type: text} - name: cdb_geocode_namedplace_point return_type: Geometry - user_config_key: user_config - geocoder_config_key: geocoder_config params: - { name: city_name, type: text} - { name: admin1_name, type: text} @@ -48,24 +36,18 @@ - name: cdb_geocode_postalcode_polygon return_type: Geometry - user_config_key: user_config - geocoder_config_key: geocoder_config params: - { name: postal_code, type: text} - { name: country_name, type: text} - name: cdb_geocode_postalcode_point return_type: Geometry - user_config_key: user_config - geocoder_config_key: geocoder_config params: - { name: postal_code, type: text} - { name: country_name, type: text} - name: cdb_geocode_ipaddress_point return_type: Geometry - user_config_key: user_config - geocoder_config_key: geocoder_config params: - { name: ip_address, type: text} diff --git a/server/extension/expected/30_admin0_test.out b/server/extension/expected/30_admin0_test.out index d4aa801..725e6e9 100644 --- a/server/extension/expected/30_admin0_test.out +++ b/server/extension/expected/30_admin0_test.out @@ -1,6 +1,6 @@ -- Check that the public function is callable, even with no data -- It should return NULL -SELECT cdb_geocoder_server.cdb_geocode_admin0_polygon(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 0, "nokia_soft_geocoder_limit": false}', 'Spain'); +SELECT cdb_geocoder_server.cdb_geocode_admin0_polygon('test_user', 'Spain'); cdb_geocode_admin0_polygon ---------------------------- @@ -16,7 +16,7 @@ INSERT INTO ne_admin0_v3 (adm0_a3, the_geom) VALUES('ESP', ST_GeomFromText( -71.1031880899493 42.3152774590236))',4326) ); -- This should return the polygon inserted above -SELECT cdb_geocoder_server.cdb_geocode_admin0_polygon(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 0, "nokia_soft_geocoder_limit": false}', 'Spain'); +SELECT cdb_geocoder_server.cdb_geocode_admin0_polygon('test_user', 'Spain'); cdb_geocode_admin0_polygon -------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0103000020E61000000100000004000000D0EA37A29AC651C00FD603035B284540FEFCFB379AC651C0C0503E9F5B284540FFDDDD4D96C651C033AC3B284F284540D0EA37A29AC651C00FD603035B284540 @@ -28,7 +28,7 @@ SELECT exists(SELECT * INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) WHERE ns.nspname = 'cdb_geocoder_server' AND proname = 'cdb_geocode_admin0_polygon' - AND oidvectortypes(p.proargtypes) = 'name, json, json, text'); + AND oidvectortypes(p.proargtypes) = 'text, text'); exists -------- t diff --git a/server/extension/expected/40_admin1_test.out b/server/extension/expected/40_admin1_test.out index 0b130bc..db2619a 100644 --- a/server/extension/expected/40_admin1_test.out +++ b/server/extension/expected/40_admin1_test.out @@ -1,12 +1,12 @@ -- Check that the public function is callable, even with no data -- It should return NULL -SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'California'); +SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon('test_user', 'California'); cdb_geocode_admin1_polygon ---------------------------- (1 row) -SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'California', 'United States'); +SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon('test_user', 'California', 'United States'); cdb_geocode_admin1_polygon ---------------------------- @@ -22,13 +22,13 @@ INSERT INTO global_province_polygons (synonyms, iso3, the_geom) VALUES (Array['c -71.1031880899493 42.3152774590236))',4326) ); -- This should return the polygon inserted above -SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 0, "nokia_soft_geocoder_limit": false}', 'California'); +SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon('test_user', 'California'); cdb_geocode_admin1_polygon -------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0103000020E61000000100000004000000D0EA37A29AC651C00FD603035B284540FEFCFB379AC651C0C0503E9F5B284540FFDDDD4D96C651C033AC3B284F284540D0EA37A29AC651C00FD603035B284540 (1 row) -SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 0, "nokia_soft_geocoder_limit": false}', 'California', 'United States'); +SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon('test_user', 'California', 'United States'); cdb_geocode_admin1_polygon -------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0103000020E61000000100000004000000D0EA37A29AC651C00FD603035B284540FEFCFB379AC651C0C0503E9F5B284540FFDDDD4D96C651C033AC3B284F284540D0EA37A29AC651C00FD603035B284540 @@ -40,7 +40,7 @@ SELECT exists(SELECT * INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) WHERE ns.nspname = 'cdb_geocoder_server' AND proname = 'cdb_geocode_admin1_polygon' - AND oidvectortypes(p.proargtypes) = 'name, json, json, text'); + AND oidvectortypes(p.proargtypes) = 'text, text'); exists -------- t @@ -51,7 +51,7 @@ SELECT exists(SELECT * INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) WHERE ns.nspname = 'cdb_geocoder_server' AND proname = 'cdb_geocode_admin1_polygon' - AND oidvectortypes(p.proargtypes) = 'name, json, json, text, text'); + AND oidvectortypes(p.proargtypes) = 'text, text, text'); exists -------- t diff --git a/server/extension/expected/50_namedplaces_test.out b/server/extension/expected/50_namedplaces_test.out index 86f9e80..f175d17 100644 --- a/server/extension/expected/50_namedplaces_test.out +++ b/server/extension/expected/50_namedplaces_test.out @@ -1,18 +1,18 @@ -- Check that the public function is callable, even with no data -- It should return NULL -SELECT cdb_geocoder_server.cdb_geocode_namedplace_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Elx'); +SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'Elx'); cdb_geocode_namedplace_point ------------------------------ (1 row) -SELECT cdb_geocoder_server.cdb_geocode_namedplace_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Elx', 'Spain'); +SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'Elx', 'Spain'); cdb_geocode_namedplace_point ------------------------------ (1 row) -SELECT cdb_geocoder_server.cdb_geocode_namedplace_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Elx', 'Valencia', 'Spain'); +SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'Elx', 'Valencia', 'Spain'); cdb_geocode_namedplace_point ------------------------------ @@ -31,37 +31,37 @@ INSERT INTO country_decoder (synonyms, iso2) VALUES (Array['spain'], 'ES'); -- Insert dummy data into admin1 decoder table INSERT INTO admin1_decoder (admin1, synonyms, iso2) VALUES ('Valencia', Array['valencia', 'Valencia'], 'ES'); -- This should return the point inserted above -SELECT cdb_geocoder_server.cdb_geocode_namedplace_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Elx'); +SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'Elx'); cdb_geocode_namedplace_point ---------------------------------------------------- 0101000020E6100000637FD93D7958E63F2ECA6C9049A24340 (1 row) -SELECT cdb_geocoder_server.cdb_geocode_namedplace_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Elche'); +SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'Elche'); cdb_geocode_namedplace_point ---------------------------------------------------- 0101000020E6100000637FD93D7958E63F2ECA6C9049A24340 (1 row) -SELECT cdb_geocoder_server.cdb_geocode_namedplace_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Elx', 'Spain'); +SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'Elx', 'Spain'); cdb_geocode_namedplace_point ---------------------------------------------------- 0101000020E6100000637FD93D7958E63F2ECA6C9049A24340 (1 row) -SELECT cdb_geocoder_server.cdb_geocode_namedplace_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Elche', 'Spain'); +SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'Elche', 'Spain'); cdb_geocode_namedplace_point ---------------------------------------------------- 0101000020E6100000637FD93D7958E63F2ECA6C9049A24340 (1 row) -SELECT cdb_geocoder_server.cdb_geocode_namedplace_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Elx', 'Valencia', 'Spain'); +SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'Elx', 'Valencia', 'Spain'); cdb_geocode_namedplace_point ---------------------------------------------------- 0101000020E6100000637FD93D7958E63F2ECA6C9049A24340 (1 row) -SELECT cdb_geocoder_server.cdb_geocode_namedplace_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Elche', 'valencia', 'Spain'); +SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'Elche', 'valencia', 'Spain'); cdb_geocode_namedplace_point ---------------------------------------------------- 0101000020E6100000637FD93D7958E63F2ECA6C9049A24340 @@ -73,7 +73,7 @@ SELECT exists(SELECT * INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) WHERE ns.nspname = 'cdb_geocoder_server' AND proname = 'cdb_geocode_namedplace_point' - AND oidvectortypes(p.proargtypes) = 'name, json, json, text'); + AND oidvectortypes(p.proargtypes) = 'text, text'); exists -------- t @@ -84,7 +84,7 @@ SELECT exists(SELECT * INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) WHERE ns.nspname = 'cdb_geocoder_server' AND proname = 'cdb_geocode_namedplace_point' - AND oidvectortypes(p.proargtypes) = 'name, json, json, text, text'); + AND oidvectortypes(p.proargtypes) = 'text, text, text'); exists -------- t @@ -95,7 +95,7 @@ SELECT exists(SELECT * INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) WHERE ns.nspname = 'cdb_geocoder_server' AND proname = 'cdb_geocode_namedplace_point' - AND oidvectortypes(p.proargtypes) = 'name, json, json, text, text'); + AND oidvectortypes(p.proargtypes) = 'text, text, text'); exists -------- t diff --git a/server/extension/expected/60_postalcodes_test.out b/server/extension/expected/60_postalcodes_test.out index 3c012bf..1032f1b 100644 --- a/server/extension/expected/60_postalcodes_test.out +++ b/server/extension/expected/60_postalcodes_test.out @@ -6,7 +6,7 @@ DELETE FROM available_services; DELETE FROM admin0_synonyms; -- Check that the public function is callable, even with no data -- It should return NULL -SELECT cdb_geocoder_server.cdb_geocode_postalcode_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '03204'); +SELECT cdb_geocoder_server.cdb_geocode_postalcode_point('test_user', '03204'); cdb_geocode_postalcode_point ------------------------------ @@ -42,25 +42,25 @@ INSERT INTO admin0_synonyms (adm0_a3, name, name_, rank) VALUES ( 3 ); -- This should return the polygon inserted above -SELECT cdb_geocoder_server.cdb_geocode_postalcode_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '03204'); +SELECT cdb_geocoder_server.cdb_geocode_postalcode_point('test_user', '03204'); cdb_geocode_postalcode_point ---------------------------------------------------- 0101000020E61000000000000000E040408036B47414764840 (1 row) -SELECT cdb_geocoder_server.cdb_geocode_postalcode_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '03204', 'spain'); +SELECT cdb_geocoder_server.cdb_geocode_postalcode_point('test_user', '03204', 'spain'); cdb_geocode_postalcode_point ---------------------------------------------------- 0101000020E61000000000000000E040408036B47414764840 (1 row) -SELECT cdb_geocoder_server.cdb_geocode_postalcode_polygon(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '03204'); +SELECT cdb_geocoder_server.cdb_geocode_postalcode_polygon('test_user', '03204'); cdb_geocode_postalcode_polygon -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0106000020E610000001000000010300000001000000040000000000000000E000C01F383D7839B740400000000000E000C0AA3C0EDE220F3B4000000000004812404FB7FCCD04893D400000000000E000C01F383D7839B74040 (1 row) -SELECT cdb_geocoder_server.cdb_geocode_postalcode_polygon(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '03204', 'spain'); +SELECT cdb_geocoder_server.cdb_geocode_postalcode_polygon('test_user', '03204', 'spain'); cdb_geocode_postalcode_polygon -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0106000020E610000001000000010300000001000000040000000000000000E000C01F383D7839B740400000000000E000C0AA3C0EDE220F3B4000000000004812404FB7FCCD04893D400000000000E000C01F383D7839B74040 @@ -78,7 +78,7 @@ SELECT exists(SELECT * INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) WHERE ns.nspname = 'cdb_geocoder_server' AND proname = 'cdb_geocode_postalcode_point' - AND oidvectortypes(p.proargtypes) = 'name, json, json, text'); + AND oidvectortypes(p.proargtypes) = 'text, text'); exists -------- t @@ -89,7 +89,7 @@ SELECT exists(SELECT * INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) WHERE ns.nspname = 'cdb_geocoder_server' AND proname = 'cdb_geocode_postalcode_point' - AND oidvectortypes(p.proargtypes) = 'name, json, json, text, text'); + AND oidvectortypes(p.proargtypes) = 'text, text, text'); exists -------- t @@ -100,7 +100,7 @@ SELECT exists(SELECT * INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) WHERE ns.nspname = 'cdb_geocoder_server' AND proname = 'cdb_geocode_postalcode_polygon' - AND oidvectortypes(p.proargtypes) = 'name, json, json, text'); + AND oidvectortypes(p.proargtypes) = 'text, text'); exists -------- t @@ -111,7 +111,7 @@ SELECT exists(SELECT * INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) WHERE ns.nspname = 'cdb_geocoder_server' AND proname = 'cdb_geocode_postalcode_polygon' - AND oidvectortypes(p.proargtypes) = 'name, json, json, text, text'); + AND oidvectortypes(p.proargtypes) = 'text, text, text'); exists -------- t diff --git a/server/extension/expected/70_ips_test.out b/server/extension/expected/70_ips_test.out index 8548e14..11bad6f 100644 --- a/server/extension/expected/70_ips_test.out +++ b/server/extension/expected/70_ips_test.out @@ -1,6 +1,6 @@ -- Check that the public function is callable, even with no data -- It should return NULL -SELECT cdb_geocoder_server.cdb_geocode_ipaddress_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '0.0.0.0'); +SELECT cdb_geocoder_server.cdb_geocode_ipaddress_point('test_user', '0.0.0.0'); cdb_geocode_ipaddress_point ----------------------------- @@ -9,7 +9,7 @@ SELECT cdb_geocoder_server.cdb_geocode_ipaddress_point(session_user, '{"is_organ -- Insert dummy data into ip_address_locations INSERT INTO ip_address_locations VALUES ('::ffff:0.0.0.0'::inet, (ST_SetSRID(ST_MakePoint('40.40', '3.71'), 4326))); -- This should return the polygon inserted above -SELECT cdb_geocoder_server.cdb_geocode_ipaddress_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '0.0.0.0'); +SELECT cdb_geocoder_server.cdb_geocode_ipaddress_point('test_user', '0.0.0.0'); cdb_geocode_ipaddress_point ---------------------------------------------------- 0101000020E61000003333333333334440AE47E17A14AE0D40 @@ -21,7 +21,7 @@ SELECT exists(SELECT * INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) WHERE ns.nspname = 'cdb_geocoder_server' AND proname = 'cdb_geocode_ipaddress_point' - AND oidvectortypes(p.proargtypes) = 'name, json, json, text'); + AND oidvectortypes(p.proargtypes) = 'text, text'); exists -------- t diff --git a/server/extension/sql/0.0.1/30_admin0.sql b/server/extension/sql/0.0.1/30_admin0.sql index 1a1b7a1..fb676eb 100644 --- a/server/extension/sql/0.0.1/30_admin0.sql +++ b/server/extension/sql/0.0.1/30_admin0.sql @@ -1,9 +1,9 @@ -- Interface of the server extension -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin0_polygon(user_id name, user_config_data JSON, geocoder_config_data JSON, country_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin0_polygon(username text, country_name text) RETURNS Geometry AS $$ plpy.debug('Entering cdb_geocode_admin0_polygons') - plpy.debug('user_id = %s' % user_id) + plpy.debug('user = %s' % username) #--TODO: rate limiting check #--TODO: quota check diff --git a/server/extension/sql/0.0.1/40_admin1.sql b/server/extension/sql/0.0.1/40_admin1.sql index ccb9846..04e36c0 100644 --- a/server/extension/sql/0.0.1/40_admin1.sql +++ b/server/extension/sql/0.0.1/40_admin1.sql @@ -1,10 +1,10 @@ -- Interfacess of the server extension ---- cdb_geocode_admin1_polygon(admin1_name text) -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin1_polygon(user_id name, user_config json, geocoder_config json, admin1_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin1_polygon(username text, admin1_name text) RETURNS Geometry AS $$ plpy.debug('Entering cdb_geocode_admin1_polygon(admin1_name text)') - plpy.debug('user_id = %s' % user_id) + plpy.debug('user = %s' % username) #--TODO: rate limiting check #--TODO: quota check @@ -18,10 +18,10 @@ RETURNS Geometry AS $$ $$ LANGUAGE plpythonu; ---- cdb_geocode_admin1_polygon(admin1_name text, country_name text) -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin1_polygon(user_id name, user_config json, geocoder_config json, admin1_name text, country_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin1_polygon(username text, admin1_name text, country_name text) RETURNS Geometry AS $$ plpy.debug('Entering cdb_geocode_admin1_polygon(admin1_name text, country_name text)') - plpy.debug('user_id = %s' % user_id) + plpy.debug('user = %s' % username) #--TODO: rate limiting check #--TODO: quota check diff --git a/server/extension/sql/0.0.1/50_namedplaces.sql b/server/extension/sql/0.0.1/50_namedplaces.sql index b355ca7..a6aa6f8 100644 --- a/server/extension/sql/0.0.1/50_namedplaces.sql +++ b/server/extension/sql/0.0.1/50_namedplaces.sql @@ -1,10 +1,10 @@ -- Interfacess of the server extension ---- cdb_geocode_namedplace_point(city_name text) -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(user_id name, user_config json, geocoder_config json, city_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(username text, city_name text) RETURNS Geometry AS $$ plpy.debug('Entering cdb_geocode_namedplace_point(city_name text)') - plpy.debug('user_id = %s' % user_id) + plpy.debug('user = %s' % username) #--TODO: rate limiting check #--TODO: quota check @@ -18,10 +18,10 @@ RETURNS Geometry AS $$ $$ LANGUAGE plpythonu; ---- cdb_geocode_namedplace_point(city_name text, country_name text) -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(user_id name, user_config json, geocoder_config json, city_name text, country_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(username text, city_name text, country_name text) RETURNS Geometry AS $$ plpy.debug('Entering cdb_geocode_namedplace_point(city_name text, country_name text)') - plpy.debug('user_id = %s' % user_id) + plpy.debug('user = %s' % username) #--TODO: rate limiting check #--TODO: quota check @@ -35,10 +35,10 @@ RETURNS Geometry AS $$ $$ LANGUAGE plpythonu; ---- cdb_geocode_namedplace_point(city_name text, admin1_name text, country_name text) -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(user_id name, user_config json, geocoder_config json, city_name text, admin1_name text, country_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(username text, city_name text, admin1_name text, country_name text) RETURNS Geometry AS $$ plpy.debug('Entering cdb_geocode_namedplace_point(city_name text, admin1_name text, country_name text)') - plpy.debug('user_id = %s' % user_id) + plpy.debug('user = %s' % username) #--TODO: rate limiting check #--TODO: quota check diff --git a/server/extension/sql/0.0.1/60_postalcodes.sql b/server/extension/sql/0.0.1/60_postalcodes.sql index 1f817d5..299981e 100644 --- a/server/extension/sql/0.0.1/60_postalcodes.sql +++ b/server/extension/sql/0.0.1/60_postalcodes.sql @@ -1,9 +1,9 @@ -- Interface of the server extension -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_point(user_id name, user_config json, geocoder_config json, code text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_point(username text, code text) RETURNS Geometry AS $$ plpy.debug('Entering _cdb_geocode_postalcode_point') - plpy.debug('user_id = %s' % user_id) + plpy.debug('user = %s' % username) #--TODO: rate limiting check #--TODO: quota check @@ -16,10 +16,10 @@ RETURNS Geometry AS $$ return rv[0]["point"] $$ LANGUAGE plpythonu; -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_point(user_id name, user_config json, geocoder_config json, code text, country text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_point(username text, code text, country text) RETURNS Geometry AS $$ plpy.debug('Entering _cdb_geocode_postalcode_point') - plpy.debug('user_id = %s' % user_id) + plpy.debug('user = %s' % username) #--TODO: rate limiting check #--TODO: quota check @@ -32,10 +32,10 @@ RETURNS Geometry AS $$ return rv[0]["point"] $$ LANGUAGE plpythonu; -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_polygon(user_id name, user_config json, geocoder_config json, code text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_polygon(username text, code text) RETURNS Geometry AS $$ plpy.debug('Entering _cdb_geocode_postalcode_polygon') - plpy.debug('user_id = %s' % user_id) + plpy.debug('user = %s' % username) #--TODO: rate limiting check #--TODO: quota check @@ -48,10 +48,10 @@ RETURNS Geometry AS $$ return rv[0]["polygon"] $$ LANGUAGE plpythonu; -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_polygon(user_id name, user_config json, geocoder_config json, code text, country text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_polygon(username text, code text, country text) RETURNS Geometry AS $$ plpy.debug('Entering _cdb_geocode_postalcode_point') - plpy.debug('user_id = %s' % user_id) + plpy.debug('user = %s' % username) #--TODO: rate limiting check #--TODO: quota check diff --git a/server/extension/sql/0.0.1/70_ips.sql b/server/extension/sql/0.0.1/70_ips.sql index ae69d1d..7f326f9 100644 --- a/server/extension/sql/0.0.1/70_ips.sql +++ b/server/extension/sql/0.0.1/70_ips.sql @@ -1,9 +1,9 @@ -- Interface of the server extension -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_ipaddress_point(user_id name, user_config json, geocoder_config json, ip text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_ipaddress_point(username text, ip text) RETURNS Geometry AS $$ plpy.debug('Entering _cdb_geocode_ipaddress_point') - plpy.debug('user_id = %s' % user_id) + plpy.debug('user = %s' % username) #--TODO: rate limiting check #--TODO: quota check diff --git a/server/extension/sql/30_admin0_test.sql b/server/extension/sql/30_admin0_test.sql index df9fbaa..541ad74 100644 --- a/server/extension/sql/30_admin0_test.sql +++ b/server/extension/sql/30_admin0_test.sql @@ -1,6 +1,6 @@ -- Check that the public function is callable, even with no data -- It should return NULL -SELECT cdb_geocoder_server.cdb_geocode_admin0_polygon(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 0, "nokia_soft_geocoder_limit": false}', 'Spain'); +SELECT cdb_geocoder_server.cdb_geocode_admin0_polygon('test_user', 'Spain'); -- Insert some dummy synonym INSERT INTO admin0_synonyms (name, adm0_a3) VALUES ('Spain', 'ESP'); @@ -14,7 +14,7 @@ INSERT INTO ne_admin0_v3 (adm0_a3, the_geom) VALUES('ESP', ST_GeomFromText( ); -- This should return the polygon inserted above -SELECT cdb_geocoder_server.cdb_geocode_admin0_polygon(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 0, "nokia_soft_geocoder_limit": false}', 'Spain'); +SELECT cdb_geocoder_server.cdb_geocode_admin0_polygon('test_user', 'Spain'); -- Check for admin0 signatures SELECT exists(SELECT * @@ -22,7 +22,7 @@ SELECT exists(SELECT * INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) WHERE ns.nspname = 'cdb_geocoder_server' AND proname = 'cdb_geocode_admin0_polygon' - AND oidvectortypes(p.proargtypes) = 'name, json, json, text'); + AND oidvectortypes(p.proargtypes) = 'text, text'); SELECT exists(SELECT * FROM pg_proc p diff --git a/server/extension/sql/40_admin1_test.sql b/server/extension/sql/40_admin1_test.sql index f637b87..966035d 100644 --- a/server/extension/sql/40_admin1_test.sql +++ b/server/extension/sql/40_admin1_test.sql @@ -1,7 +1,7 @@ -- Check that the public function is callable, even with no data -- It should return NULL -SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'California'); -SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'California', 'United States'); +SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon('test_user', 'California'); +SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon('test_user', 'California', 'United States'); -- Insert dummy data into country decoder table INSERT INTO country_decoder (synonyms, iso3) VALUES (Array['united states'], 'USA'); @@ -15,8 +15,8 @@ INSERT INTO global_province_polygons (synonyms, iso3, the_geom) VALUES (Array['c ); -- This should return the polygon inserted above -SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 0, "nokia_soft_geocoder_limit": false}', 'California'); -SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 0, "nokia_soft_geocoder_limit": false}', 'California', 'United States'); +SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon('test_user', 'California'); +SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon('test_user', 'California', 'United States'); -- Check for admin1 signatures SELECT exists(SELECT * @@ -24,14 +24,14 @@ SELECT exists(SELECT * INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) WHERE ns.nspname = 'cdb_geocoder_server' AND proname = 'cdb_geocode_admin1_polygon' - AND oidvectortypes(p.proargtypes) = 'name, json, json, text'); + AND oidvectortypes(p.proargtypes) = 'text, text'); SELECT exists(SELECT * FROM pg_proc p INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) WHERE ns.nspname = 'cdb_geocoder_server' AND proname = 'cdb_geocode_admin1_polygon' - AND oidvectortypes(p.proargtypes) = 'name, json, json, text, text'); + AND oidvectortypes(p.proargtypes) = 'text, text, text'); SELECT exists(SELECT * FROM pg_proc p diff --git a/server/extension/sql/50_namedplaces_test.sql b/server/extension/sql/50_namedplaces_test.sql index 6574ef0..2a85d30 100644 --- a/server/extension/sql/50_namedplaces_test.sql +++ b/server/extension/sql/50_namedplaces_test.sql @@ -1,8 +1,8 @@ -- Check that the public function is callable, even with no data -- It should return NULL -SELECT cdb_geocoder_server.cdb_geocode_namedplace_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Elx'); -SELECT cdb_geocoder_server.cdb_geocode_namedplace_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Elx', 'Spain'); -SELECT cdb_geocoder_server.cdb_geocode_namedplace_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Elx', 'Valencia', 'Spain'); +SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'Elx'); +SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'Elx', 'Spain'); +SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'Elx', 'Valencia', 'Spain'); -- Insert dummy data into points table INSERT INTO global_cities_points_limited (geoname_id, name, iso2, admin1, admin2, population, lowername, the_geom) VALUES (3128760, 'Elche', 'ES', 'Valencia', 'AL', 34534, 'elche', ST_GeomFromText( @@ -21,12 +21,12 @@ INSERT INTO country_decoder (synonyms, iso2) VALUES (Array['spain'], 'ES'); INSERT INTO admin1_decoder (admin1, synonyms, iso2) VALUES ('Valencia', Array['valencia', 'Valencia'], 'ES'); -- This should return the point inserted above -SELECT cdb_geocoder_server.cdb_geocode_namedplace_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Elx'); -SELECT cdb_geocoder_server.cdb_geocode_namedplace_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Elche'); -SELECT cdb_geocoder_server.cdb_geocode_namedplace_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Elx', 'Spain'); -SELECT cdb_geocoder_server.cdb_geocode_namedplace_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Elche', 'Spain'); -SELECT cdb_geocoder_server.cdb_geocode_namedplace_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Elx', 'Valencia', 'Spain'); -SELECT cdb_geocoder_server.cdb_geocode_namedplace_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Elche', 'valencia', 'Spain'); +SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'Elx'); +SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'Elche'); +SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'Elx', 'Spain'); +SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'Elche', 'Spain'); +SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'Elx', 'Valencia', 'Spain'); +SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'Elche', 'valencia', 'Spain'); -- Check for namedplaces signatures SELECT exists(SELECT * @@ -34,21 +34,21 @@ SELECT exists(SELECT * INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) WHERE ns.nspname = 'cdb_geocoder_server' AND proname = 'cdb_geocode_namedplace_point' - AND oidvectortypes(p.proargtypes) = 'name, json, json, text'); + AND oidvectortypes(p.proargtypes) = 'text, text'); SELECT exists(SELECT * FROM pg_proc p INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) WHERE ns.nspname = 'cdb_geocoder_server' AND proname = 'cdb_geocode_namedplace_point' - AND oidvectortypes(p.proargtypes) = 'name, json, json, text, text'); + AND oidvectortypes(p.proargtypes) = 'text, text, text'); SELECT exists(SELECT * FROM pg_proc p INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) WHERE ns.nspname = 'cdb_geocoder_server' AND proname = 'cdb_geocode_namedplace_point' - AND oidvectortypes(p.proargtypes) = 'name, json, json, text, text'); + AND oidvectortypes(p.proargtypes) = 'text, text, text'); SELECT exists(SELECT * FROM pg_proc p diff --git a/server/extension/sql/60_postalcodes_test.sql b/server/extension/sql/60_postalcodes_test.sql index 65e33c6..500c2e5 100644 --- a/server/extension/sql/60_postalcodes_test.sql +++ b/server/extension/sql/60_postalcodes_test.sql @@ -7,7 +7,7 @@ DELETE FROM admin0_synonyms; -- Check that the public function is callable, even with no data -- It should return NULL -SELECT cdb_geocoder_server.cdb_geocode_postalcode_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '03204'); +SELECT cdb_geocoder_server.cdb_geocode_postalcode_point('test_user', '03204'); -- Insert dummy data into ip_address_locations INSERT INTO global_postal_code_points (the_geom, iso3, postal_code, postal_code_num) VALUES ( @@ -44,13 +44,13 @@ INSERT INTO admin0_synonyms (adm0_a3, name, name_, rank) VALUES ( ); -- This should return the polygon inserted above -SELECT cdb_geocoder_server.cdb_geocode_postalcode_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '03204'); +SELECT cdb_geocoder_server.cdb_geocode_postalcode_point('test_user', '03204'); -SELECT cdb_geocoder_server.cdb_geocode_postalcode_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '03204', 'spain'); +SELECT cdb_geocoder_server.cdb_geocode_postalcode_point('test_user', '03204', 'spain'); -SELECT cdb_geocoder_server.cdb_geocode_postalcode_polygon(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '03204'); +SELECT cdb_geocoder_server.cdb_geocode_postalcode_polygon('test_user', '03204'); -SELECT cdb_geocoder_server.cdb_geocode_postalcode_polygon(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '03204', 'spain'); +SELECT cdb_geocoder_server.cdb_geocode_postalcode_polygon('test_user', '03204', 'spain'); -- Clean dbs DELETE FROM global_postal_code_points; @@ -65,28 +65,28 @@ SELECT exists(SELECT * INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) WHERE ns.nspname = 'cdb_geocoder_server' AND proname = 'cdb_geocode_postalcode_point' - AND oidvectortypes(p.proargtypes) = 'name, json, json, text'); + AND oidvectortypes(p.proargtypes) = 'text, text'); SELECT exists(SELECT * FROM pg_proc p INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) WHERE ns.nspname = 'cdb_geocoder_server' AND proname = 'cdb_geocode_postalcode_point' - AND oidvectortypes(p.proargtypes) = 'name, json, json, text, text'); + AND oidvectortypes(p.proargtypes) = 'text, text, text'); SELECT exists(SELECT * FROM pg_proc p INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) WHERE ns.nspname = 'cdb_geocoder_server' AND proname = 'cdb_geocode_postalcode_polygon' - AND oidvectortypes(p.proargtypes) = 'name, json, json, text'); + AND oidvectortypes(p.proargtypes) = 'text, text'); SELECT exists(SELECT * FROM pg_proc p INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) WHERE ns.nspname = 'cdb_geocoder_server' AND proname = 'cdb_geocode_postalcode_polygon' - AND oidvectortypes(p.proargtypes) = 'name, json, json, text, text'); + AND oidvectortypes(p.proargtypes) = 'text, text, text'); SELECT exists(SELECT * FROM pg_proc p diff --git a/server/extension/sql/70_ips_test.sql b/server/extension/sql/70_ips_test.sql index 143d8c3..c67c33f 100644 --- a/server/extension/sql/70_ips_test.sql +++ b/server/extension/sql/70_ips_test.sql @@ -1,12 +1,12 @@ -- Check that the public function is callable, even with no data -- It should return NULL -SELECT cdb_geocoder_server.cdb_geocode_ipaddress_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '0.0.0.0'); +SELECT cdb_geocoder_server.cdb_geocode_ipaddress_point('test_user', '0.0.0.0'); -- Insert dummy data into ip_address_locations INSERT INTO ip_address_locations VALUES ('::ffff:0.0.0.0'::inet, (ST_SetSRID(ST_MakePoint('40.40', '3.71'), 4326))); -- This should return the polygon inserted above -SELECT cdb_geocoder_server.cdb_geocode_ipaddress_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '0.0.0.0'); +SELECT cdb_geocoder_server.cdb_geocode_ipaddress_point('test_user', '0.0.0.0'); -- Check for namedplaces signatures (point and polygon) SELECT exists(SELECT * @@ -14,7 +14,7 @@ SELECT exists(SELECT * INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) WHERE ns.nspname = 'cdb_geocoder_server' AND proname = 'cdb_geocode_ipaddress_point' - AND oidvectortypes(p.proargtypes) = 'name, json, json, text'); + AND oidvectortypes(p.proargtypes) = 'text, text'); SELECT exists(SELECT * FROM pg_proc p From 57c5b3ac19bb27e3f27d6301213e234246626c96 Mon Sep 17 00:00:00 2001 From: Mario de Frutos Date: Wed, 2 Dec 2015 19:12:11 +0100 Subject: [PATCH 3/4] Check for empty username --- client/expected/10_admin0_test.out | 2 +- client/expected/20_admin1_test.out | 4 ++-- client/expected/30_namedplaces_test.out | 6 +++--- client/expected/40_postalcodes_test.out | 4 ++-- client/expected/50_ipaddresses_test.out | 2 +- client/expected/90_permissions_test.out | 18 +++++++++--------- client/templates/20_public_functions.erb | 5 ++++- 7 files changed, 22 insertions(+), 19 deletions(-) diff --git a/client/expected/10_admin0_test.out b/client/expected/10_admin0_test.out index 41d3ade..3cd67d5 100644 --- a/client/expected/10_admin0_test.out +++ b/client/expected/10_admin0_test.out @@ -12,7 +12,7 @@ $$ LANGUAGE 'plpgsql'; SELECT cdb_geocode_admin0_polygon('Spain'); NOTICE: cdb_geocoder_client._cdb_geocode_admin0_polygon(2): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin0_polygon invoked with params ("test_user", Spain) CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin0_polygon(username, country_name)" -PL/pgSQL function cdb_geocode_admin0_polygon(text) line 10 at SQL statement +PL/pgSQL function cdb_geocode_admin0_polygon(text) line 13 at SQL statement cdb_geocode_admin0_polygon ---------------------------- diff --git a/client/expected/20_admin1_test.out b/client/expected/20_admin1_test.out index 693c478..5347364 100644 --- a/client/expected/20_admin1_test.out +++ b/client/expected/20_admin1_test.out @@ -19,7 +19,7 @@ $$ LANGUAGE 'plpgsql'; SELECT cdb_geocode_admin1_polygon('California'); NOTICE: cdb_geocoder_client._cdb_geocode_admin1_polygon(2): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params ("test_user", California) CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin1_polygon(username, admin1_name)" -PL/pgSQL function cdb_geocode_admin1_polygon(text) line 10 at SQL statement +PL/pgSQL function cdb_geocode_admin1_polygon(text) line 13 at SQL statement cdb_geocode_admin1_polygon ---------------------------- @@ -28,7 +28,7 @@ PL/pgSQL function cdb_geocode_admin1_polygon(text) line 10 at SQL statement SELECT cdb_geocode_admin1_polygon('California', 'United States'); NOTICE: cdb_geocoder_client._cdb_geocode_admin1_polygon(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params ("test_user", California, United States) CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin1_polygon(username, admin1_name, country_name)" -PL/pgSQL function cdb_geocode_admin1_polygon(text,text) line 10 at SQL statement +PL/pgSQL function cdb_geocode_admin1_polygon(text,text) line 13 at SQL statement cdb_geocode_admin1_polygon ---------------------------- diff --git a/client/expected/30_namedplaces_test.out b/client/expected/30_namedplaces_test.out index e4891fd..d137f31 100644 --- a/client/expected/30_namedplaces_test.out +++ b/client/expected/30_namedplaces_test.out @@ -26,7 +26,7 @@ $$ LANGUAGE 'plpgsql'; SELECT cdb_geocode_namedplace_point('Elx'); NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(2): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params ("test_user", Elx) CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(username, city_name)" -PL/pgSQL function cdb_geocode_namedplace_point(text) line 10 at SQL statement +PL/pgSQL function cdb_geocode_namedplace_point(text) line 13 at SQL statement cdb_geocode_namedplace_point ------------------------------ @@ -35,7 +35,7 @@ PL/pgSQL function cdb_geocode_namedplace_point(text) line 10 at SQL statement SELECT cdb_geocode_namedplace_point('Elx', 'Spain'); NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params ("test_user", Elx, Spain) CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(username, city_name, country_name)" -PL/pgSQL function cdb_geocode_namedplace_point(text,text) line 10 at SQL statement +PL/pgSQL function cdb_geocode_namedplace_point(text,text) line 13 at SQL statement cdb_geocode_namedplace_point ------------------------------ @@ -44,7 +44,7 @@ PL/pgSQL function cdb_geocode_namedplace_point(text,text) line 10 at SQL stateme SELECT cdb_geocode_namedplace_point('Elx', 'Valencia', 'Spain'); NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(4): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params ("test_user", Elx, Valencia, Spain) CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(username, city_name, admin1_name, country_name)" -PL/pgSQL function cdb_geocode_namedplace_point(text,text,text) line 10 at SQL statement +PL/pgSQL function cdb_geocode_namedplace_point(text,text,text) line 13 at SQL statement cdb_geocode_namedplace_point ------------------------------ diff --git a/client/expected/40_postalcodes_test.out b/client/expected/40_postalcodes_test.out index 478bb72..d17e6ed 100644 --- a/client/expected/40_postalcodes_test.out +++ b/client/expected/40_postalcodes_test.out @@ -19,7 +19,7 @@ $$ LANGUAGE 'plpgsql'; SELECT cdb_geocode_postalcode_polygon('03204', 'Spain'); NOTICE: cdb_geocoder_client._cdb_geocode_postalcode_polygon(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_postalcode_polygon invoked with params ("test_user", 03204, Spain) CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_postalcode_polygon(username, postal_code, country_name)" -PL/pgSQL function cdb_geocode_postalcode_polygon(text,text) line 10 at SQL statement +PL/pgSQL function cdb_geocode_postalcode_polygon(text,text) line 13 at SQL statement cdb_geocode_postalcode_polygon -------------------------------- @@ -28,7 +28,7 @@ PL/pgSQL function cdb_geocode_postalcode_polygon(text,text) line 10 at SQL state SELECT cdb_geocode_postalcode_point('03204', 'Spain'); NOTICE: cdb_geocoder_client._cdb_geocode_postalcode_point(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_postalcode_point invoked with params ("test_user", 03204, Spain) CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_postalcode_point(username, postal_code, country_name)" -PL/pgSQL function cdb_geocode_postalcode_point(text,text) line 10 at SQL statement +PL/pgSQL function cdb_geocode_postalcode_point(text,text) line 13 at SQL statement cdb_geocode_postalcode_point ------------------------------ diff --git a/client/expected/50_ipaddresses_test.out b/client/expected/50_ipaddresses_test.out index fb49053..f8d3456 100644 --- a/client/expected/50_ipaddresses_test.out +++ b/client/expected/50_ipaddresses_test.out @@ -12,7 +12,7 @@ $$ LANGUAGE 'plpgsql'; SELECT cdb_geocode_ipaddress_point('8.8.8.8'); NOTICE: cdb_geocoder_client._cdb_geocode_ipaddress_point(2): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_ipaddress_point invoked with params ("test_user", 8.8.8.8) CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_ipaddress_point(username, ip_address)" -PL/pgSQL function cdb_geocode_ipaddress_point(text) line 10 at SQL statement +PL/pgSQL function cdb_geocode_ipaddress_point(text) line 13 at SQL statement cdb_geocode_ipaddress_point ----------------------------- diff --git a/client/expected/90_permissions_test.out b/client/expected/90_permissions_test.out index 8b0c6c9..d44397c 100644 --- a/client/expected/90_permissions_test.out +++ b/client/expected/90_permissions_test.out @@ -7,7 +7,7 @@ SET search_path TO public,cartodb,cdb_geocoder_client; SELECT cdb_geocode_admin0_polygon('Spain'); NOTICE: cdb_geocoder_client._cdb_geocode_admin0_polygon(2): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin0_polygon invoked with params ("test_user", Spain) CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin0_polygon(username, country_name)" -PL/pgSQL function cdb_geocode_admin0_polygon(text) line 10 at SQL statement +PL/pgSQL function cdb_geocode_admin0_polygon(text) line 13 at SQL statement cdb_geocode_admin0_polygon ---------------------------- @@ -16,7 +16,7 @@ PL/pgSQL function cdb_geocode_admin0_polygon(text) line 10 at SQL statement SELECT cdb_geocode_admin1_polygon('California'); NOTICE: cdb_geocoder_client._cdb_geocode_admin1_polygon(2): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params ("test_user", California) CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin1_polygon(username, admin1_name)" -PL/pgSQL function cdb_geocode_admin1_polygon(text) line 10 at SQL statement +PL/pgSQL function cdb_geocode_admin1_polygon(text) line 13 at SQL statement cdb_geocode_admin1_polygon ---------------------------- @@ -25,7 +25,7 @@ PL/pgSQL function cdb_geocode_admin1_polygon(text) line 10 at SQL statement SELECT cdb_geocode_admin1_polygon('California', 'United States'); NOTICE: cdb_geocoder_client._cdb_geocode_admin1_polygon(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params ("test_user", California, United States) CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin1_polygon(username, admin1_name, country_name)" -PL/pgSQL function cdb_geocode_admin1_polygon(text,text) line 10 at SQL statement +PL/pgSQL function cdb_geocode_admin1_polygon(text,text) line 13 at SQL statement cdb_geocode_admin1_polygon ---------------------------- @@ -34,7 +34,7 @@ PL/pgSQL function cdb_geocode_admin1_polygon(text,text) line 10 at SQL statement SELECT cdb_geocode_namedplace_point('Elx'); NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(2): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params ("test_user", Elx) CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(username, city_name)" -PL/pgSQL function cdb_geocode_namedplace_point(text) line 10 at SQL statement +PL/pgSQL function cdb_geocode_namedplace_point(text) line 13 at SQL statement cdb_geocode_namedplace_point ------------------------------ @@ -43,7 +43,7 @@ PL/pgSQL function cdb_geocode_namedplace_point(text) line 10 at SQL statement SELECT cdb_geocode_namedplace_point('Elx', 'Valencia'); NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params ("test_user", Elx, Valencia) CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(username, city_name, country_name)" -PL/pgSQL function cdb_geocode_namedplace_point(text,text) line 10 at SQL statement +PL/pgSQL function cdb_geocode_namedplace_point(text,text) line 13 at SQL statement cdb_geocode_namedplace_point ------------------------------ @@ -52,7 +52,7 @@ PL/pgSQL function cdb_geocode_namedplace_point(text,text) line 10 at SQL stateme SELECT cdb_geocode_namedplace_point('Elx', 'Valencia', 'Spain'); NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(4): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params ("test_user", Elx, Valencia, Spain) CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(username, city_name, admin1_name, country_name)" -PL/pgSQL function cdb_geocode_namedplace_point(text,text,text) line 10 at SQL statement +PL/pgSQL function cdb_geocode_namedplace_point(text,text,text) line 13 at SQL statement cdb_geocode_namedplace_point ------------------------------ @@ -61,7 +61,7 @@ PL/pgSQL function cdb_geocode_namedplace_point(text,text,text) line 10 at SQL st SELECT cdb_geocode_postalcode_polygon('03204', 'Spain'); NOTICE: cdb_geocoder_client._cdb_geocode_postalcode_polygon(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_postalcode_polygon invoked with params ("test_user", 03204, Spain) CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_postalcode_polygon(username, postal_code, country_name)" -PL/pgSQL function cdb_geocode_postalcode_polygon(text,text) line 10 at SQL statement +PL/pgSQL function cdb_geocode_postalcode_polygon(text,text) line 13 at SQL statement cdb_geocode_postalcode_polygon -------------------------------- @@ -70,7 +70,7 @@ PL/pgSQL function cdb_geocode_postalcode_polygon(text,text) line 10 at SQL state SELECT cdb_geocode_postalcode_point('03204', 'Spain'); NOTICE: cdb_geocoder_client._cdb_geocode_postalcode_point(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_postalcode_point invoked with params ("test_user", 03204, Spain) CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_postalcode_point(username, postal_code, country_name)" -PL/pgSQL function cdb_geocode_postalcode_point(text,text) line 10 at SQL statement +PL/pgSQL function cdb_geocode_postalcode_point(text,text) line 13 at SQL statement cdb_geocode_postalcode_point ------------------------------ @@ -79,7 +79,7 @@ PL/pgSQL function cdb_geocode_postalcode_point(text,text) line 10 at SQL stateme SELECT cdb_geocode_ipaddress_point('8.8.8.8'); NOTICE: cdb_geocoder_client._cdb_geocode_ipaddress_point(2): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_ipaddress_point invoked with params ("test_user", 8.8.8.8) CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_ipaddress_point(username, ip_address)" -PL/pgSQL function cdb_geocode_ipaddress_point(text) line 10 at SQL statement +PL/pgSQL function cdb_geocode_ipaddress_point(text) line 13 at SQL statement cdb_geocode_ipaddress_point ----------------------------- diff --git a/client/templates/20_public_functions.erb b/client/templates/20_public_functions.erb index d4a6072..1880ca6 100644 --- a/client/templates/20_public_functions.erb +++ b/client/templates/20_public_functions.erb @@ -13,7 +13,10 @@ BEGIN IF session_user = 'publicuser' OR session_user ~ 'cartodb_publicuser_*' THEN RAISE EXCEPTION 'The api_key must be provided'; END IF; - SELECT _CDB_username() INTO username; + SELECT _cdb_username() INTO username; + IF username IS NULL OR username = '' THEN + RAISE EXCEPTION 'Username is a mandatory argument, check it out'; + END IF; SELECT <%= GEOCODER_CLIENT_SCHEMA %>._<%= name %>(username, <%= params %>) INTO ret; RETURN ret; END; From 922c531313d72117c31f3944f40f6c9179133946 Mon Sep 17 00:00:00 2001 From: Mario de Frutos Date: Thu, 3 Dec 2015 11:03:10 +0100 Subject: [PATCH 4/4] Added orgname to the arguments we pass to the server --- client/expected/10_admin0_test.out | 10 +-- client/expected/20_admin1_test.out | 20 +++--- client/expected/30_namedplaces_test.out | 30 ++++---- client/expected/40_postalcodes_test.out | 20 +++--- client/expected/50_ipaddresses_test.out | 10 +-- client/expected/90_permissions_test.out | 72 +++++++++---------- client/sql/0.0.1/15_config_management.sql | 28 +++++--- client/sql/10_admin0_test.sql | 4 +- client/sql/20_admin1_test.sql | 8 +-- client/sql/30_namedplaces_test.sql | 12 ++-- client/sql/40_postalcodes_test.sql | 8 +-- client/sql/50_ipaddresses_test.sql | 4 +- client/sql/90_permissions_test.sql | 18 ++--- client/templates/20_public_functions.erb | 8 ++- client/templates/30_plproxy_functions.erb | 4 +- server/extension/expected/30_admin0_test.out | 6 +- server/extension/expected/40_admin1_test.out | 12 ++-- .../expected/50_namedplaces_test.out | 42 +++++------ .../expected/60_postalcodes_test.out | 36 +++++----- server/extension/expected/70_ips_test.out | 6 +- server/extension/sql/0.0.1/30_admin0.sql | 2 +- server/extension/sql/0.0.1/40_admin1.sql | 4 +- server/extension/sql/0.0.1/50_namedplaces.sql | 6 +- server/extension/sql/0.0.1/60_postalcodes.sql | 8 +-- server/extension/sql/0.0.1/70_ips.sql | 2 +- server/extension/sql/30_admin0_test.sql | 6 +- server/extension/sql/40_admin1_test.sql | 12 ++-- server/extension/sql/50_namedplaces_test.sql | 34 ++++----- server/extension/sql/60_postalcodes_test.sql | 28 ++++---- server/extension/sql/70_ips_test.sql | 6 +- 30 files changed, 239 insertions(+), 227 deletions(-) diff --git a/client/expected/10_admin0_test.out b/client/expected/10_admin0_test.out index 3cd67d5..63dfbe0 100644 --- a/client/expected/10_admin0_test.out +++ b/client/expected/10_admin0_test.out @@ -1,18 +1,18 @@ -- Add to the search path the schema SET search_path TO public,cartodb,cdb_geocoder_client; -- Mock the server function -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin0_polygon(username text, country_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin0_polygon(username text, orgname text, country_name text) RETURNS Geometry AS $$ BEGIN - RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_admin0_polygon invoked with params (%, %)', username, country_name; + RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_admin0_polygon invoked with params (%, %, %)', username, orgname, country_name; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; -- Exercise the public and the proxied function SELECT cdb_geocode_admin0_polygon('Spain'); -NOTICE: cdb_geocoder_client._cdb_geocode_admin0_polygon(2): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin0_polygon invoked with params ("test_user", Spain) -CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin0_polygon(username, country_name)" -PL/pgSQL function cdb_geocode_admin0_polygon(text) line 13 at SQL statement +NOTICE: cdb_geocoder_client._cdb_geocode_admin0_polygon(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin0_polygon invoked with params ("test_user", , Spain) +CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin0_polygon(username, orgname, country_name)" +PL/pgSQL function cdb_geocode_admin0_polygon(text) line 15 at SQL statement cdb_geocode_admin0_polygon ---------------------------- diff --git a/client/expected/20_admin1_test.out b/client/expected/20_admin1_test.out index 5347364..3d5d055 100644 --- a/client/expected/20_admin1_test.out +++ b/client/expected/20_admin1_test.out @@ -1,34 +1,34 @@ -- Add to the search path the schema SET search_path TO public,cartodb,cdb_geocoder_client; -- Mock the server functions -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin1_polygon(username text, admin1_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin1_polygon(username text, orgname text, admin1_name text) RETURNS Geometry AS $$ BEGIN - RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params (%, %)', username, admin1_name; + RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params (%, %, %)', username, orgname, admin1_name; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin1_polygon(username text, admin1_name text, country_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin1_polygon(username text, orgname text, admin1_name text, country_name text) RETURNS Geometry AS $$ BEGIN - RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params (%, %, %)', username, admin1_name, country_name; + RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params (%, %, %, %)', username, orgname, admin1_name, country_name; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; -- Exercise the public and the proxied function SELECT cdb_geocode_admin1_polygon('California'); -NOTICE: cdb_geocoder_client._cdb_geocode_admin1_polygon(2): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params ("test_user", California) -CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin1_polygon(username, admin1_name)" -PL/pgSQL function cdb_geocode_admin1_polygon(text) line 13 at SQL statement +NOTICE: cdb_geocoder_client._cdb_geocode_admin1_polygon(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params ("test_user", , California) +CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin1_polygon(username, orgname, admin1_name)" +PL/pgSQL function cdb_geocode_admin1_polygon(text) line 15 at SQL statement cdb_geocode_admin1_polygon ---------------------------- (1 row) SELECT cdb_geocode_admin1_polygon('California', 'United States'); -NOTICE: cdb_geocoder_client._cdb_geocode_admin1_polygon(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params ("test_user", California, United States) -CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin1_polygon(username, admin1_name, country_name)" -PL/pgSQL function cdb_geocode_admin1_polygon(text,text) line 13 at SQL statement +NOTICE: cdb_geocoder_client._cdb_geocode_admin1_polygon(4): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params ("test_user", , California, United States) +CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin1_polygon(username, orgname, admin1_name, country_name)" +PL/pgSQL function cdb_geocode_admin1_polygon(text,text) line 15 at SQL statement cdb_geocode_admin1_polygon ---------------------------- diff --git a/client/expected/30_namedplaces_test.out b/client/expected/30_namedplaces_test.out index d137f31..3ca1a77 100644 --- a/client/expected/30_namedplaces_test.out +++ b/client/expected/30_namedplaces_test.out @@ -1,50 +1,50 @@ -- Add to the search path the schema SET search_path TO public,cartodb,cdb_geocoder_client; -- Mock the server functions -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(username text, city_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(username text, orgname text, city_name text) RETURNS Geometry AS $$ BEGIN - RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (%, %)', username, city_name; + RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (%, %, %)', username, orgname, city_name; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(username text, city_name text, country_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(username text, orgname text, city_name text, country_name text) RETURNS Geometry AS $$ BEGIN - RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (%, %, %)', username, city_name, country_name; + RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (%, %, %, %)', username, orgname, city_name, country_name; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(username text, city_name text, admin1_name text, country_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(username text, orgname text, city_name text, admin1_name text, country_name text) RETURNS Geometry AS $$ BEGIN - RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (%, %, %, %)', username, city_name, admin1_name, country_name; + RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (%, %, %, %, %)', username, orgname, city_name, admin1_name, country_name; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; -- Exercise the public and the proxied function SELECT cdb_geocode_namedplace_point('Elx'); -NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(2): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params ("test_user", Elx) -CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(username, city_name)" -PL/pgSQL function cdb_geocode_namedplace_point(text) line 13 at SQL statement +NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params ("test_user", , Elx) +CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(username, orgname, city_name)" +PL/pgSQL function cdb_geocode_namedplace_point(text) line 15 at SQL statement cdb_geocode_namedplace_point ------------------------------ (1 row) SELECT cdb_geocode_namedplace_point('Elx', 'Spain'); -NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params ("test_user", Elx, Spain) -CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(username, city_name, country_name)" -PL/pgSQL function cdb_geocode_namedplace_point(text,text) line 13 at SQL statement +NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(4): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params ("test_user", , Elx, Spain) +CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(username, orgname, city_name, country_name)" +PL/pgSQL function cdb_geocode_namedplace_point(text,text) line 15 at SQL statement cdb_geocode_namedplace_point ------------------------------ (1 row) SELECT cdb_geocode_namedplace_point('Elx', 'Valencia', 'Spain'); -NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(4): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params ("test_user", Elx, Valencia, Spain) -CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(username, city_name, admin1_name, country_name)" -PL/pgSQL function cdb_geocode_namedplace_point(text,text,text) line 13 at SQL statement +NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(5): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params ("test_user", , Elx, Valencia, Spain) +CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(username, orgname, city_name, admin1_name, country_name)" +PL/pgSQL function cdb_geocode_namedplace_point(text,text,text) line 15 at SQL statement cdb_geocode_namedplace_point ------------------------------ diff --git a/client/expected/40_postalcodes_test.out b/client/expected/40_postalcodes_test.out index d17e6ed..1415fdd 100644 --- a/client/expected/40_postalcodes_test.out +++ b/client/expected/40_postalcodes_test.out @@ -1,34 +1,34 @@ -- Add to the search path the schema SET search_path TO public,cartodb,cdb_geocoder_client; -- Mock the server functions -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_polygon(username text, postal_code text, country_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_polygon(username text, orgname text, postal_code text, country_name text) RETURNS Geometry AS $$ BEGIN - RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_postalcode_polygon invoked with params (%, %, %)', username, postal_code, country_name; + RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_postalcode_polygon invoked with params (%, %, %, %)', username, orgname, postal_code, country_name; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_point(username text, postal_code text, country_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_point(username text, orgname text, postal_code text, country_name text) RETURNS Geometry AS $$ BEGIN - RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_postalcode_point invoked with params (%, %, %)', username, postal_code, country_name; + RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_postalcode_point invoked with params (%, %, %, %)', username, orgname, postal_code, country_name; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; -- Exercise the public and the proxied function SELECT cdb_geocode_postalcode_polygon('03204', 'Spain'); -NOTICE: cdb_geocoder_client._cdb_geocode_postalcode_polygon(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_postalcode_polygon invoked with params ("test_user", 03204, Spain) -CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_postalcode_polygon(username, postal_code, country_name)" -PL/pgSQL function cdb_geocode_postalcode_polygon(text,text) line 13 at SQL statement +NOTICE: cdb_geocoder_client._cdb_geocode_postalcode_polygon(4): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_postalcode_polygon invoked with params ("test_user", , 03204, Spain) +CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_postalcode_polygon(username, orgname, postal_code, country_name)" +PL/pgSQL function cdb_geocode_postalcode_polygon(text,text) line 15 at SQL statement cdb_geocode_postalcode_polygon -------------------------------- (1 row) SELECT cdb_geocode_postalcode_point('03204', 'Spain'); -NOTICE: cdb_geocoder_client._cdb_geocode_postalcode_point(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_postalcode_point invoked with params ("test_user", 03204, Spain) -CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_postalcode_point(username, postal_code, country_name)" -PL/pgSQL function cdb_geocode_postalcode_point(text,text) line 13 at SQL statement +NOTICE: cdb_geocoder_client._cdb_geocode_postalcode_point(4): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_postalcode_point invoked with params ("test_user", , 03204, Spain) +CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_postalcode_point(username, orgname, postal_code, country_name)" +PL/pgSQL function cdb_geocode_postalcode_point(text,text) line 15 at SQL statement cdb_geocode_postalcode_point ------------------------------ diff --git a/client/expected/50_ipaddresses_test.out b/client/expected/50_ipaddresses_test.out index f8d3456..624712d 100644 --- a/client/expected/50_ipaddresses_test.out +++ b/client/expected/50_ipaddresses_test.out @@ -1,18 +1,18 @@ -- Add to the search path the schema SET search_path TO public,cartodb,cdb_geocoder_client; -- Mock the server functions -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_ipaddress_point(username text, ip_address text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_ipaddress_point(username text, orgname text, ip_address text) RETURNS Geometry AS $$ BEGIN - RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_ipaddress_point invoked with params (%, %)', username, ip_address; + RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_ipaddress_point invoked with params (%, %, %)', username, orgname, ip_address; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; -- Exercise the public and the proxied function SELECT cdb_geocode_ipaddress_point('8.8.8.8'); -NOTICE: cdb_geocoder_client._cdb_geocode_ipaddress_point(2): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_ipaddress_point invoked with params ("test_user", 8.8.8.8) -CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_ipaddress_point(username, ip_address)" -PL/pgSQL function cdb_geocode_ipaddress_point(text) line 13 at SQL statement +NOTICE: cdb_geocoder_client._cdb_geocode_ipaddress_point(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_ipaddress_point invoked with params ("test_user", , 8.8.8.8) +CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_ipaddress_point(username, orgname, ip_address)" +PL/pgSQL function cdb_geocode_ipaddress_point(text) line 15 at SQL statement cdb_geocode_ipaddress_point ----------------------------- diff --git a/client/expected/90_permissions_test.out b/client/expected/90_permissions_test.out index d44397c..99def95 100644 --- a/client/expected/90_permissions_test.out +++ b/client/expected/90_permissions_test.out @@ -5,102 +5,102 @@ SET search_path TO public,cartodb,cdb_geocoder_client; -- Exercise the public function -- it is public, it shall work SELECT cdb_geocode_admin0_polygon('Spain'); -NOTICE: cdb_geocoder_client._cdb_geocode_admin0_polygon(2): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin0_polygon invoked with params ("test_user", Spain) -CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin0_polygon(username, country_name)" -PL/pgSQL function cdb_geocode_admin0_polygon(text) line 13 at SQL statement +NOTICE: cdb_geocoder_client._cdb_geocode_admin0_polygon(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin0_polygon invoked with params ("test_user", , Spain) +CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin0_polygon(username, orgname, country_name)" +PL/pgSQL function cdb_geocode_admin0_polygon(text) line 15 at SQL statement cdb_geocode_admin0_polygon ---------------------------- (1 row) SELECT cdb_geocode_admin1_polygon('California'); -NOTICE: cdb_geocoder_client._cdb_geocode_admin1_polygon(2): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params ("test_user", California) -CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin1_polygon(username, admin1_name)" -PL/pgSQL function cdb_geocode_admin1_polygon(text) line 13 at SQL statement +NOTICE: cdb_geocoder_client._cdb_geocode_admin1_polygon(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params ("test_user", , California) +CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin1_polygon(username, orgname, admin1_name)" +PL/pgSQL function cdb_geocode_admin1_polygon(text) line 15 at SQL statement cdb_geocode_admin1_polygon ---------------------------- (1 row) SELECT cdb_geocode_admin1_polygon('California', 'United States'); -NOTICE: cdb_geocoder_client._cdb_geocode_admin1_polygon(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params ("test_user", California, United States) -CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin1_polygon(username, admin1_name, country_name)" -PL/pgSQL function cdb_geocode_admin1_polygon(text,text) line 13 at SQL statement +NOTICE: cdb_geocoder_client._cdb_geocode_admin1_polygon(4): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params ("test_user", , California, United States) +CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin1_polygon(username, orgname, admin1_name, country_name)" +PL/pgSQL function cdb_geocode_admin1_polygon(text,text) line 15 at SQL statement cdb_geocode_admin1_polygon ---------------------------- (1 row) SELECT cdb_geocode_namedplace_point('Elx'); -NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(2): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params ("test_user", Elx) -CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(username, city_name)" -PL/pgSQL function cdb_geocode_namedplace_point(text) line 13 at SQL statement +NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params ("test_user", , Elx) +CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(username, orgname, city_name)" +PL/pgSQL function cdb_geocode_namedplace_point(text) line 15 at SQL statement cdb_geocode_namedplace_point ------------------------------ (1 row) SELECT cdb_geocode_namedplace_point('Elx', 'Valencia'); -NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params ("test_user", Elx, Valencia) -CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(username, city_name, country_name)" -PL/pgSQL function cdb_geocode_namedplace_point(text,text) line 13 at SQL statement +NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(4): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params ("test_user", , Elx, Valencia) +CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(username, orgname, city_name, country_name)" +PL/pgSQL function cdb_geocode_namedplace_point(text,text) line 15 at SQL statement cdb_geocode_namedplace_point ------------------------------ (1 row) SELECT cdb_geocode_namedplace_point('Elx', 'Valencia', 'Spain'); -NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(4): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params ("test_user", Elx, Valencia, Spain) -CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(username, city_name, admin1_name, country_name)" -PL/pgSQL function cdb_geocode_namedplace_point(text,text,text) line 13 at SQL statement +NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(5): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params ("test_user", , Elx, Valencia, Spain) +CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(username, orgname, city_name, admin1_name, country_name)" +PL/pgSQL function cdb_geocode_namedplace_point(text,text,text) line 15 at SQL statement cdb_geocode_namedplace_point ------------------------------ (1 row) SELECT cdb_geocode_postalcode_polygon('03204', 'Spain'); -NOTICE: cdb_geocoder_client._cdb_geocode_postalcode_polygon(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_postalcode_polygon invoked with params ("test_user", 03204, Spain) -CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_postalcode_polygon(username, postal_code, country_name)" -PL/pgSQL function cdb_geocode_postalcode_polygon(text,text) line 13 at SQL statement +NOTICE: cdb_geocoder_client._cdb_geocode_postalcode_polygon(4): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_postalcode_polygon invoked with params ("test_user", , 03204, Spain) +CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_postalcode_polygon(username, orgname, postal_code, country_name)" +PL/pgSQL function cdb_geocode_postalcode_polygon(text,text) line 15 at SQL statement cdb_geocode_postalcode_polygon -------------------------------- (1 row) SELECT cdb_geocode_postalcode_point('03204', 'Spain'); -NOTICE: cdb_geocoder_client._cdb_geocode_postalcode_point(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_postalcode_point invoked with params ("test_user", 03204, Spain) -CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_postalcode_point(username, postal_code, country_name)" -PL/pgSQL function cdb_geocode_postalcode_point(text,text) line 13 at SQL statement +NOTICE: cdb_geocoder_client._cdb_geocode_postalcode_point(4): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_postalcode_point invoked with params ("test_user", , 03204, Spain) +CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_postalcode_point(username, orgname, postal_code, country_name)" +PL/pgSQL function cdb_geocode_postalcode_point(text,text) line 15 at SQL statement cdb_geocode_postalcode_point ------------------------------ (1 row) SELECT cdb_geocode_ipaddress_point('8.8.8.8'); -NOTICE: cdb_geocoder_client._cdb_geocode_ipaddress_point(2): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_ipaddress_point invoked with params ("test_user", 8.8.8.8) -CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_ipaddress_point(username, ip_address)" -PL/pgSQL function cdb_geocode_ipaddress_point(text) line 13 at SQL statement +NOTICE: cdb_geocoder_client._cdb_geocode_ipaddress_point(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_ipaddress_point invoked with params ("test_user", , 8.8.8.8) +CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_ipaddress_point(username, orgname, ip_address)" +PL/pgSQL function cdb_geocode_ipaddress_point(text) line 15 at SQL statement cdb_geocode_ipaddress_point ----------------------------- (1 row) -- Check the regular user has no permissions on private functions -SELECT _cdb_geocode_admin0_polygon('evil_user', 'Hell'); +SELECT _cdb_geocode_admin0_polygon('evil_user', 'evil_orgname', 'Hell'); ERROR: permission denied for function _cdb_geocode_admin0_polygon -SELECT _cdb_geocode_admin1_polygon('evil_user', 'Hell'); +SELECT _cdb_geocode_admin1_polygon('evil_user', 'evil_orgname', 'Hell'); ERROR: permission denied for function _cdb_geocode_admin1_polygon -SELECT _cdb_geocode_admin1_polygon('evil_user', 'Sheol', 'Hell'); +SELECT _cdb_geocode_admin1_polygon('evil_user', 'evil_orgname', 'Sheol', 'Hell'); ERROR: permission denied for function _cdb_geocode_admin1_polygon -SELECT _cdb_geocode_namedplace_point('evil_user', 'Sheol'); +SELECT _cdb_geocode_namedplace_point('evil_user', 'evil_orgname', 'Sheol'); ERROR: permission denied for function _cdb_geocode_namedplace_point -SELECT _cdb_geocode_namedplace_point('evil_user', 'Sheol', 'Hell'); +SELECT _cdb_geocode_namedplace_point('evil_user', 'evil_orgname', 'Sheol', 'Hell'); ERROR: permission denied for function _cdb_geocode_namedplace_point -SELECT _cdb_geocode_namedplace_point('evil_user', 'Sheol', 'Hell', 'Ugly world'); +SELECT _cdb_geocode_namedplace_point('evil_user', 'evil_orgname', 'Sheol', 'Hell', 'Ugly world'); ERROR: permission denied for function _cdb_geocode_namedplace_point -SELECT _cdb_geocode_postalcode_polygon('evil_user', '66666', 'Hell'); +SELECT _cdb_geocode_postalcode_polygon('evil_user', 'evil_orgname', '66666', 'Hell'); ERROR: permission denied for function _cdb_geocode_postalcode_polygon -SELECT _cdb_geocode_postalcode_point('evil_user', '66666', 'Hell'); +SELECT _cdb_geocode_postalcode_point('evil_user', 'evil_orgname', '66666', 'Hell'); ERROR: permission denied for function _cdb_geocode_postalcode_point -SELECT _cdb_geocode_ipaddress_point('evil_user', '8.8.8.8'); +SELECT _cdb_geocode_ipaddress_point('evil_user', 'evil_orgname', '8.8.8.8'); ERROR: permission denied for function _cdb_geocode_ipaddress_point diff --git a/client/sql/0.0.1/15_config_management.sql b/client/sql/0.0.1/15_config_management.sql index 86958b6..6ff3c8d 100644 --- a/client/sql/0.0.1/15_config_management.sql +++ b/client/sql/0.0.1/15_config_management.sql @@ -1,15 +1,21 @@ +CREATE TYPE cdb_geocoder_client._entity_config AS ( + username text, + organization_name text +); + -- --- Get username function +-- Get entity config function -- --- The purpose of this function is to retrieve the username from +-- The purpose of this function is to retrieve the username and organization name from -- a) schema where he/her is the owner in case is an organization user -- b) entity_name from the cdb_conf database in case is a non organization user - -CREATE OR REPLACE FUNCTION cdb_geocoder_client._cdb_username() -RETURNS text AS $$ +CREATE OR REPLACE FUNCTION cdb_geocoder_client._cdb_entity_config() +RETURNS record AS $$ DECLARE - is_organization boolean; - username text; + result cdb_geocoder_client._entity_config; + is_organization boolean; + username text; + organization_name text; BEGIN SELECT cartodb.cdb_conf_getconf('user_config')->'is_organization' INTO is_organization; IF is_organization IS NULL THEN @@ -19,9 +25,13 @@ BEGIN FROM pg_namespace s LEFT JOIN pg_roles r ON s.nspowner = r.oid WHERE r.rolname = session_user INTO username; + SELECT cartodb.cdb_conf_getconf('user_config')->'entity_name' INTO organization_name; ELSE - SELECT cartodb.cdb_conf_getconf('user_config')::json->'entity_name' INTO username; + SELECT cartodb.cdb_conf_getconf('user_config')->'entity_name' INTO username; + organization_name = NULL; END IF; - RETURN username; + result.username = username; + result.organization_name = organization_name; + RETURN result; END; $$ LANGUAGE 'plpgsql' SECURITY DEFINER; \ No newline at end of file diff --git a/client/sql/10_admin0_test.sql b/client/sql/10_admin0_test.sql index b50deef..5c3e488 100644 --- a/client/sql/10_admin0_test.sql +++ b/client/sql/10_admin0_test.sql @@ -2,10 +2,10 @@ SET search_path TO public,cartodb,cdb_geocoder_client; -- Mock the server function -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin0_polygon(username text, country_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin0_polygon(username text, orgname text, country_name text) RETURNS Geometry AS $$ BEGIN - RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_admin0_polygon invoked with params (%, %)', username, country_name; + RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_admin0_polygon invoked with params (%, %, %)', username, orgname, country_name; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; diff --git a/client/sql/20_admin1_test.sql b/client/sql/20_admin1_test.sql index aaa79e2..a8a2075 100644 --- a/client/sql/20_admin1_test.sql +++ b/client/sql/20_admin1_test.sql @@ -2,18 +2,18 @@ SET search_path TO public,cartodb,cdb_geocoder_client; -- Mock the server functions -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin1_polygon(username text, admin1_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin1_polygon(username text, orgname text, admin1_name text) RETURNS Geometry AS $$ BEGIN - RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params (%, %)', username, admin1_name; + RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params (%, %, %)', username, orgname, admin1_name; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin1_polygon(username text, admin1_name text, country_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin1_polygon(username text, orgname text, admin1_name text, country_name text) RETURNS Geometry AS $$ BEGIN - RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params (%, %, %)', username, admin1_name, country_name; + RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params (%, %, %, %)', username, orgname, admin1_name, country_name; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; diff --git a/client/sql/30_namedplaces_test.sql b/client/sql/30_namedplaces_test.sql index bc6d02c..3309cf5 100644 --- a/client/sql/30_namedplaces_test.sql +++ b/client/sql/30_namedplaces_test.sql @@ -2,26 +2,26 @@ SET search_path TO public,cartodb,cdb_geocoder_client; -- Mock the server functions -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(username text, city_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(username text, orgname text, city_name text) RETURNS Geometry AS $$ BEGIN - RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (%, %)', username, city_name; + RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (%, %, %)', username, orgname, city_name; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(username text, city_name text, country_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(username text, orgname text, city_name text, country_name text) RETURNS Geometry AS $$ BEGIN - RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (%, %, %)', username, city_name, country_name; + RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (%, %, %, %)', username, orgname, city_name, country_name; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(username text, city_name text, admin1_name text, country_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(username text, orgname text, city_name text, admin1_name text, country_name text) RETURNS Geometry AS $$ BEGIN - RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (%, %, %, %)', username, city_name, admin1_name, country_name; + RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (%, %, %, %, %)', username, orgname, city_name, admin1_name, country_name; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; diff --git a/client/sql/40_postalcodes_test.sql b/client/sql/40_postalcodes_test.sql index 3300878..b5aafc6 100644 --- a/client/sql/40_postalcodes_test.sql +++ b/client/sql/40_postalcodes_test.sql @@ -2,18 +2,18 @@ SET search_path TO public,cartodb,cdb_geocoder_client; -- Mock the server functions -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_polygon(username text, postal_code text, country_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_polygon(username text, orgname text, postal_code text, country_name text) RETURNS Geometry AS $$ BEGIN - RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_postalcode_polygon invoked with params (%, %, %)', username, postal_code, country_name; + RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_postalcode_polygon invoked with params (%, %, %, %)', username, orgname, postal_code, country_name; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_point(username text, postal_code text, country_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_point(username text, orgname text, postal_code text, country_name text) RETURNS Geometry AS $$ BEGIN - RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_postalcode_point invoked with params (%, %, %)', username, postal_code, country_name; + RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_postalcode_point invoked with params (%, %, %, %)', username, orgname, postal_code, country_name; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; diff --git a/client/sql/50_ipaddresses_test.sql b/client/sql/50_ipaddresses_test.sql index 457f561..09a3342 100644 --- a/client/sql/50_ipaddresses_test.sql +++ b/client/sql/50_ipaddresses_test.sql @@ -2,10 +2,10 @@ SET search_path TO public,cartodb,cdb_geocoder_client; -- Mock the server functions -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_ipaddress_point(username text, ip_address text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_ipaddress_point(username text, orgname text, ip_address text) RETURNS Geometry AS $$ BEGIN - RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_ipaddress_point invoked with params (%, %)', username, ip_address; + RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_ipaddress_point invoked with params (%, %, %)', username, orgname, ip_address; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; diff --git a/client/sql/90_permissions_test.sql b/client/sql/90_permissions_test.sql index 992d119..d33ab6c 100644 --- a/client/sql/90_permissions_test.sql +++ b/client/sql/90_permissions_test.sql @@ -17,12 +17,12 @@ SELECT cdb_geocode_postalcode_point('03204', 'Spain'); SELECT cdb_geocode_ipaddress_point('8.8.8.8'); -- Check the regular user has no permissions on private functions -SELECT _cdb_geocode_admin0_polygon('evil_user', 'Hell'); -SELECT _cdb_geocode_admin1_polygon('evil_user', 'Hell'); -SELECT _cdb_geocode_admin1_polygon('evil_user', 'Sheol', 'Hell'); -SELECT _cdb_geocode_namedplace_point('evil_user', 'Sheol'); -SELECT _cdb_geocode_namedplace_point('evil_user', 'Sheol', 'Hell'); -SELECT _cdb_geocode_namedplace_point('evil_user', 'Sheol', 'Hell', 'Ugly world'); -SELECT _cdb_geocode_postalcode_polygon('evil_user', '66666', 'Hell'); -SELECT _cdb_geocode_postalcode_point('evil_user', '66666', 'Hell'); -SELECT _cdb_geocode_ipaddress_point('evil_user', '8.8.8.8'); +SELECT _cdb_geocode_admin0_polygon('evil_user', 'evil_orgname', 'Hell'); +SELECT _cdb_geocode_admin1_polygon('evil_user', 'evil_orgname', 'Hell'); +SELECT _cdb_geocode_admin1_polygon('evil_user', 'evil_orgname', 'Sheol', 'Hell'); +SELECT _cdb_geocode_namedplace_point('evil_user', 'evil_orgname', 'Sheol'); +SELECT _cdb_geocode_namedplace_point('evil_user', 'evil_orgname', 'Sheol', 'Hell'); +SELECT _cdb_geocode_namedplace_point('evil_user', 'evil_orgname', 'Sheol', 'Hell', 'Ugly world'); +SELECT _cdb_geocode_postalcode_polygon('evil_user', 'evil_orgname', '66666', 'Hell'); +SELECT _cdb_geocode_postalcode_point('evil_user', 'evil_orgname', '66666', 'Hell'); +SELECT _cdb_geocode_ipaddress_point('evil_user', 'evil_orgname', '8.8.8.8'); diff --git a/client/templates/20_public_functions.erb b/client/templates/20_public_functions.erb index 1880ca6..6ee473d 100644 --- a/client/templates/20_public_functions.erb +++ b/client/templates/20_public_functions.erb @@ -9,15 +9,17 @@ RETURNS <%= return_type %> AS $$ DECLARE ret <%= return_type %>; username text; + orgname text; BEGIN IF session_user = 'publicuser' OR session_user ~ 'cartodb_publicuser_*' THEN RAISE EXCEPTION 'The api_key must be provided'; END IF; - SELECT _cdb_username() INTO username; - IF username IS NULL OR username = '' THEN + SELECT u, o INTO username, orgname FROM _cdb_entity_config() AS (u text, o text); + -- JSON value stored "" is taken as literal + IF username IS NULL OR username = '' OR username = '""' THEN RAISE EXCEPTION 'Username is a mandatory argument, check it out'; END IF; - SELECT <%= GEOCODER_CLIENT_SCHEMA %>._<%= name %>(username, <%= params %>) INTO ret; + SELECT <%= GEOCODER_CLIENT_SCHEMA %>._<%= name %>(username, orgname, <%= params %>) INTO ret; RETURN ret; END; $$ LANGUAGE 'plpgsql' SECURITY DEFINER; diff --git a/client/templates/30_plproxy_functions.erb b/client/templates/30_plproxy_functions.erb index b787647..71ebdc4 100644 --- a/client/templates/30_plproxy_functions.erb +++ b/client/templates/30_plproxy_functions.erb @@ -1,6 +1,6 @@ -CREATE OR REPLACE FUNCTION <%= GEOCODER_CLIENT_SCHEMA %>._<%= name %> (username text, <%= params_with_type %>) +CREATE OR REPLACE FUNCTION <%= GEOCODER_CLIENT_SCHEMA %>._<%= name %> (username text, organization_name text, <%= params_with_type %>) RETURNS <%= return_type %> AS $$ CONNECT <%= GEOCODER_CLIENT_SCHEMA %>._server_conn_str(); - SELECT cdb_geocoder_server.<%= name %> (username, <%= params %>); + SELECT cdb_geocoder_server.<%= name %> (username, organization_name, <%= params %>); $$ LANGUAGE plproxy; diff --git a/server/extension/expected/30_admin0_test.out b/server/extension/expected/30_admin0_test.out index 725e6e9..52850c4 100644 --- a/server/extension/expected/30_admin0_test.out +++ b/server/extension/expected/30_admin0_test.out @@ -1,6 +1,6 @@ -- Check that the public function is callable, even with no data -- It should return NULL -SELECT cdb_geocoder_server.cdb_geocode_admin0_polygon('test_user', 'Spain'); +SELECT cdb_geocoder_server.cdb_geocode_admin0_polygon('test_user', 'test_orgname', 'Spain'); cdb_geocode_admin0_polygon ---------------------------- @@ -16,7 +16,7 @@ INSERT INTO ne_admin0_v3 (adm0_a3, the_geom) VALUES('ESP', ST_GeomFromText( -71.1031880899493 42.3152774590236))',4326) ); -- This should return the polygon inserted above -SELECT cdb_geocoder_server.cdb_geocode_admin0_polygon('test_user', 'Spain'); +SELECT cdb_geocoder_server.cdb_geocode_admin0_polygon('test_user', 'test_orgname', 'Spain'); cdb_geocode_admin0_polygon -------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0103000020E61000000100000004000000D0EA37A29AC651C00FD603035B284540FEFCFB379AC651C0C0503E9F5B284540FFDDDD4D96C651C033AC3B284F284540D0EA37A29AC651C00FD603035B284540 @@ -28,7 +28,7 @@ SELECT exists(SELECT * INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) WHERE ns.nspname = 'cdb_geocoder_server' AND proname = 'cdb_geocode_admin0_polygon' - AND oidvectortypes(p.proargtypes) = 'text, text'); + AND oidvectortypes(p.proargtypes) = 'text, text, text'); exists -------- t diff --git a/server/extension/expected/40_admin1_test.out b/server/extension/expected/40_admin1_test.out index db2619a..9897f34 100644 --- a/server/extension/expected/40_admin1_test.out +++ b/server/extension/expected/40_admin1_test.out @@ -1,12 +1,12 @@ -- Check that the public function is callable, even with no data -- It should return NULL -SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon('test_user', 'California'); +SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon('test_user', 'test_orgname', 'California'); cdb_geocode_admin1_polygon ---------------------------- (1 row) -SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon('test_user', 'California', 'United States'); +SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon('test_user', 'test_orgname', 'California', 'United States'); cdb_geocode_admin1_polygon ---------------------------- @@ -22,13 +22,13 @@ INSERT INTO global_province_polygons (synonyms, iso3, the_geom) VALUES (Array['c -71.1031880899493 42.3152774590236))',4326) ); -- This should return the polygon inserted above -SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon('test_user', 'California'); +SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon('test_user', 'test_orgname', 'California'); cdb_geocode_admin1_polygon -------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0103000020E61000000100000004000000D0EA37A29AC651C00FD603035B284540FEFCFB379AC651C0C0503E9F5B284540FFDDDD4D96C651C033AC3B284F284540D0EA37A29AC651C00FD603035B284540 (1 row) -SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon('test_user', 'California', 'United States'); +SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon('test_user', 'test_orgname', 'California', 'United States'); cdb_geocode_admin1_polygon -------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0103000020E61000000100000004000000D0EA37A29AC651C00FD603035B284540FEFCFB379AC651C0C0503E9F5B284540FFDDDD4D96C651C033AC3B284F284540D0EA37A29AC651C00FD603035B284540 @@ -40,7 +40,7 @@ SELECT exists(SELECT * INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) WHERE ns.nspname = 'cdb_geocoder_server' AND proname = 'cdb_geocode_admin1_polygon' - AND oidvectortypes(p.proargtypes) = 'text, text'); + AND oidvectortypes(p.proargtypes) = 'text, text, text'); exists -------- t @@ -51,7 +51,7 @@ SELECT exists(SELECT * INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) WHERE ns.nspname = 'cdb_geocoder_server' AND proname = 'cdb_geocode_admin1_polygon' - AND oidvectortypes(p.proargtypes) = 'text, text, text'); + AND oidvectortypes(p.proargtypes) = 'text, text, text, text'); exists -------- t diff --git a/server/extension/expected/50_namedplaces_test.out b/server/extension/expected/50_namedplaces_test.out index f175d17..1ac8d73 100644 --- a/server/extension/expected/50_namedplaces_test.out +++ b/server/extension/expected/50_namedplaces_test.out @@ -1,18 +1,18 @@ -- Check that the public function is callable, even with no data -- It should return NULL -SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'Elx'); +SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'test_orgname', 'Elx'); cdb_geocode_namedplace_point ------------------------------ (1 row) -SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'Elx', 'Spain'); +SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'test_orgname', 'Elx', 'Spain'); cdb_geocode_namedplace_point ------------------------------ (1 row) -SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'Elx', 'Valencia', 'Spain'); +SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'test_orgname', 'Elx', 'Valencia', 'Spain'); cdb_geocode_namedplace_point ------------------------------ @@ -31,54 +31,43 @@ INSERT INTO country_decoder (synonyms, iso2) VALUES (Array['spain'], 'ES'); -- Insert dummy data into admin1 decoder table INSERT INTO admin1_decoder (admin1, synonyms, iso2) VALUES ('Valencia', Array['valencia', 'Valencia'], 'ES'); -- This should return the point inserted above -SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'Elx'); +SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'test_orgname', 'Elx'); cdb_geocode_namedplace_point ---------------------------------------------------- 0101000020E6100000637FD93D7958E63F2ECA6C9049A24340 (1 row) -SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'Elche'); +SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'test_orgname', 'Elche'); cdb_geocode_namedplace_point ---------------------------------------------------- 0101000020E6100000637FD93D7958E63F2ECA6C9049A24340 (1 row) -SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'Elx', 'Spain'); +SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'test_orgname', 'Elx', 'Spain'); cdb_geocode_namedplace_point ---------------------------------------------------- 0101000020E6100000637FD93D7958E63F2ECA6C9049A24340 (1 row) -SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'Elche', 'Spain'); +SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'test_orgname', 'Elche', 'Spain'); cdb_geocode_namedplace_point ---------------------------------------------------- 0101000020E6100000637FD93D7958E63F2ECA6C9049A24340 (1 row) -SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'Elx', 'Valencia', 'Spain'); +SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'test_orgname', 'Elx', 'Valencia', 'Spain'); cdb_geocode_namedplace_point ---------------------------------------------------- 0101000020E6100000637FD93D7958E63F2ECA6C9049A24340 (1 row) -SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'Elche', 'valencia', 'Spain'); +SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'test_orgname', 'Elche', 'valencia', 'Spain'); cdb_geocode_namedplace_point ---------------------------------------------------- 0101000020E6100000637FD93D7958E63F2ECA6C9049A24340 (1 row) -- Check for namedplaces signatures -SELECT exists(SELECT * - FROM pg_proc p - INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) - WHERE ns.nspname = 'cdb_geocoder_server' - AND proname = 'cdb_geocode_namedplace_point' - AND oidvectortypes(p.proargtypes) = 'text, text'); - exists --------- - t -(1 row) - SELECT exists(SELECT * FROM pg_proc p INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) @@ -95,7 +84,18 @@ SELECT exists(SELECT * INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) WHERE ns.nspname = 'cdb_geocoder_server' AND proname = 'cdb_geocode_namedplace_point' - AND oidvectortypes(p.proargtypes) = 'text, text, text'); + AND oidvectortypes(p.proargtypes) = 'text, text, text, text'); + exists +-------- + t +(1 row) + +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = 'cdb_geocode_namedplace_point' + AND oidvectortypes(p.proargtypes) = 'text, text, text, text'); exists -------- t diff --git a/server/extension/expected/60_postalcodes_test.out b/server/extension/expected/60_postalcodes_test.out index 1032f1b..01aa003 100644 --- a/server/extension/expected/60_postalcodes_test.out +++ b/server/extension/expected/60_postalcodes_test.out @@ -6,7 +6,7 @@ DELETE FROM available_services; DELETE FROM admin0_synonyms; -- Check that the public function is callable, even with no data -- It should return NULL -SELECT cdb_geocoder_server.cdb_geocode_postalcode_point('test_user', '03204'); +SELECT cdb_geocoder_server.cdb_geocode_postalcode_point('test_user', 'test_org', '03204'); cdb_geocode_postalcode_point ------------------------------ @@ -42,25 +42,25 @@ INSERT INTO admin0_synonyms (adm0_a3, name, name_, rank) VALUES ( 3 ); -- This should return the polygon inserted above -SELECT cdb_geocoder_server.cdb_geocode_postalcode_point('test_user', '03204'); +SELECT cdb_geocoder_server.cdb_geocode_postalcode_point('test_user', 'test_org', '03204'); cdb_geocode_postalcode_point ---------------------------------------------------- 0101000020E61000000000000000E040408036B47414764840 (1 row) -SELECT cdb_geocoder_server.cdb_geocode_postalcode_point('test_user', '03204', 'spain'); +SELECT cdb_geocoder_server.cdb_geocode_postalcode_point('test_user', 'test_org', '03204', 'spain'); cdb_geocode_postalcode_point ---------------------------------------------------- 0101000020E61000000000000000E040408036B47414764840 (1 row) -SELECT cdb_geocoder_server.cdb_geocode_postalcode_polygon('test_user', '03204'); +SELECT cdb_geocoder_server.cdb_geocode_postalcode_polygon('test_user', 'test_org', '03204'); cdb_geocode_postalcode_polygon -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0106000020E610000001000000010300000001000000040000000000000000E000C01F383D7839B740400000000000E000C0AA3C0EDE220F3B4000000000004812404FB7FCCD04893D400000000000E000C01F383D7839B74040 (1 row) -SELECT cdb_geocoder_server.cdb_geocode_postalcode_polygon('test_user', '03204', 'spain'); +SELECT cdb_geocoder_server.cdb_geocode_postalcode_polygon('test_user', 'test_org', '03204', 'spain'); cdb_geocode_postalcode_polygon -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0106000020E610000001000000010300000001000000040000000000000000E000C01F383D7839B740400000000000E000C0AA3C0EDE220F3B4000000000004812404FB7FCCD04893D400000000000E000C01F383D7839B74040 @@ -78,7 +78,7 @@ SELECT exists(SELECT * INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) WHERE ns.nspname = 'cdb_geocoder_server' AND proname = 'cdb_geocode_postalcode_point' - AND oidvectortypes(p.proargtypes) = 'text, text'); + AND oidvectortypes(p.proargtypes) = 'text, text, text'); exists -------- t @@ -89,18 +89,7 @@ SELECT exists(SELECT * INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) WHERE ns.nspname = 'cdb_geocoder_server' AND proname = 'cdb_geocode_postalcode_point' - AND oidvectortypes(p.proargtypes) = 'text, text, text'); - exists --------- - t -(1 row) - -SELECT exists(SELECT * - FROM pg_proc p - INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) - WHERE ns.nspname = 'cdb_geocoder_server' - AND proname = 'cdb_geocode_postalcode_polygon' - AND oidvectortypes(p.proargtypes) = 'text, text'); + AND oidvectortypes(p.proargtypes) = 'text, text, text, text'); exists -------- t @@ -117,6 +106,17 @@ SELECT exists(SELECT * t (1 row) +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = 'cdb_geocode_postalcode_polygon' + AND oidvectortypes(p.proargtypes) = 'text, text, text, text'); + exists +-------- + t +(1 row) + SELECT exists(SELECT * FROM pg_proc p INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) diff --git a/server/extension/expected/70_ips_test.out b/server/extension/expected/70_ips_test.out index 11bad6f..2386200 100644 --- a/server/extension/expected/70_ips_test.out +++ b/server/extension/expected/70_ips_test.out @@ -1,6 +1,6 @@ -- Check that the public function is callable, even with no data -- It should return NULL -SELECT cdb_geocoder_server.cdb_geocode_ipaddress_point('test_user', '0.0.0.0'); +SELECT cdb_geocoder_server.cdb_geocode_ipaddress_point('test_user', 'test_orgname', '0.0.0.0'); cdb_geocode_ipaddress_point ----------------------------- @@ -9,7 +9,7 @@ SELECT cdb_geocoder_server.cdb_geocode_ipaddress_point('test_user', '0.0.0.0'); -- Insert dummy data into ip_address_locations INSERT INTO ip_address_locations VALUES ('::ffff:0.0.0.0'::inet, (ST_SetSRID(ST_MakePoint('40.40', '3.71'), 4326))); -- This should return the polygon inserted above -SELECT cdb_geocoder_server.cdb_geocode_ipaddress_point('test_user', '0.0.0.0'); +SELECT cdb_geocoder_server.cdb_geocode_ipaddress_point('test_user', 'test_orgname', '0.0.0.0'); cdb_geocode_ipaddress_point ---------------------------------------------------- 0101000020E61000003333333333334440AE47E17A14AE0D40 @@ -21,7 +21,7 @@ SELECT exists(SELECT * INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) WHERE ns.nspname = 'cdb_geocoder_server' AND proname = 'cdb_geocode_ipaddress_point' - AND oidvectortypes(p.proargtypes) = 'text, text'); + AND oidvectortypes(p.proargtypes) = 'text, text, text'); exists -------- t diff --git a/server/extension/sql/0.0.1/30_admin0.sql b/server/extension/sql/0.0.1/30_admin0.sql index fb676eb..96bbc43 100644 --- a/server/extension/sql/0.0.1/30_admin0.sql +++ b/server/extension/sql/0.0.1/30_admin0.sql @@ -1,6 +1,6 @@ -- Interface of the server extension -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin0_polygon(username text, country_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin0_polygon(username text, orgname text, country_name text) RETURNS Geometry AS $$ plpy.debug('Entering cdb_geocode_admin0_polygons') plpy.debug('user = %s' % username) diff --git a/server/extension/sql/0.0.1/40_admin1.sql b/server/extension/sql/0.0.1/40_admin1.sql index 04e36c0..44a1953 100644 --- a/server/extension/sql/0.0.1/40_admin1.sql +++ b/server/extension/sql/0.0.1/40_admin1.sql @@ -1,7 +1,7 @@ -- Interfacess of the server extension ---- cdb_geocode_admin1_polygon(admin1_name text) -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin1_polygon(username text, admin1_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin1_polygon(username text, orgname text, admin1_name text) RETURNS Geometry AS $$ plpy.debug('Entering cdb_geocode_admin1_polygon(admin1_name text)') plpy.debug('user = %s' % username) @@ -18,7 +18,7 @@ RETURNS Geometry AS $$ $$ LANGUAGE plpythonu; ---- cdb_geocode_admin1_polygon(admin1_name text, country_name text) -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin1_polygon(username text, admin1_name text, country_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin1_polygon(username text, orgname text, admin1_name text, country_name text) RETURNS Geometry AS $$ plpy.debug('Entering cdb_geocode_admin1_polygon(admin1_name text, country_name text)') plpy.debug('user = %s' % username) diff --git a/server/extension/sql/0.0.1/50_namedplaces.sql b/server/extension/sql/0.0.1/50_namedplaces.sql index a6aa6f8..44069f2 100644 --- a/server/extension/sql/0.0.1/50_namedplaces.sql +++ b/server/extension/sql/0.0.1/50_namedplaces.sql @@ -1,7 +1,7 @@ -- Interfacess of the server extension ---- cdb_geocode_namedplace_point(city_name text) -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(username text, city_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(username text, orgname text, city_name text) RETURNS Geometry AS $$ plpy.debug('Entering cdb_geocode_namedplace_point(city_name text)') plpy.debug('user = %s' % username) @@ -18,7 +18,7 @@ RETURNS Geometry AS $$ $$ LANGUAGE plpythonu; ---- cdb_geocode_namedplace_point(city_name text, country_name text) -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(username text, city_name text, country_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(username text, orgname text, city_name text, country_name text) RETURNS Geometry AS $$ plpy.debug('Entering cdb_geocode_namedplace_point(city_name text, country_name text)') plpy.debug('user = %s' % username) @@ -35,7 +35,7 @@ RETURNS Geometry AS $$ $$ LANGUAGE plpythonu; ---- cdb_geocode_namedplace_point(city_name text, admin1_name text, country_name text) -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(username text, city_name text, admin1_name text, country_name text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(username text, orgname text, city_name text, admin1_name text, country_name text) RETURNS Geometry AS $$ plpy.debug('Entering cdb_geocode_namedplace_point(city_name text, admin1_name text, country_name text)') plpy.debug('user = %s' % username) diff --git a/server/extension/sql/0.0.1/60_postalcodes.sql b/server/extension/sql/0.0.1/60_postalcodes.sql index 299981e..1a20379 100644 --- a/server/extension/sql/0.0.1/60_postalcodes.sql +++ b/server/extension/sql/0.0.1/60_postalcodes.sql @@ -1,6 +1,6 @@ -- Interface of the server extension -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_point(username text, code text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_point(username text, orgname text, code text) RETURNS Geometry AS $$ plpy.debug('Entering _cdb_geocode_postalcode_point') plpy.debug('user = %s' % username) @@ -16,7 +16,7 @@ RETURNS Geometry AS $$ return rv[0]["point"] $$ LANGUAGE plpythonu; -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_point(username text, code text, country text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_point(username text, orgname text, code text, country text) RETURNS Geometry AS $$ plpy.debug('Entering _cdb_geocode_postalcode_point') plpy.debug('user = %s' % username) @@ -32,7 +32,7 @@ RETURNS Geometry AS $$ return rv[0]["point"] $$ LANGUAGE plpythonu; -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_polygon(username text, code text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_polygon(username text, orgname text, code text) RETURNS Geometry AS $$ plpy.debug('Entering _cdb_geocode_postalcode_polygon') plpy.debug('user = %s' % username) @@ -48,7 +48,7 @@ RETURNS Geometry AS $$ return rv[0]["polygon"] $$ LANGUAGE plpythonu; -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_polygon(username text, code text, country text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_polygon(username text, orgname text, code text, country text) RETURNS Geometry AS $$ plpy.debug('Entering _cdb_geocode_postalcode_point') plpy.debug('user = %s' % username) diff --git a/server/extension/sql/0.0.1/70_ips.sql b/server/extension/sql/0.0.1/70_ips.sql index 7f326f9..5480c2d 100644 --- a/server/extension/sql/0.0.1/70_ips.sql +++ b/server/extension/sql/0.0.1/70_ips.sql @@ -1,6 +1,6 @@ -- Interface of the server extension -CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_ipaddress_point(username text, ip text) +CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_ipaddress_point(username text, orgname text, ip text) RETURNS Geometry AS $$ plpy.debug('Entering _cdb_geocode_ipaddress_point') plpy.debug('user = %s' % username) diff --git a/server/extension/sql/30_admin0_test.sql b/server/extension/sql/30_admin0_test.sql index 541ad74..3851d4f 100644 --- a/server/extension/sql/30_admin0_test.sql +++ b/server/extension/sql/30_admin0_test.sql @@ -1,6 +1,6 @@ -- Check that the public function is callable, even with no data -- It should return NULL -SELECT cdb_geocoder_server.cdb_geocode_admin0_polygon('test_user', 'Spain'); +SELECT cdb_geocoder_server.cdb_geocode_admin0_polygon('test_user', 'test_orgname', 'Spain'); -- Insert some dummy synonym INSERT INTO admin0_synonyms (name, adm0_a3) VALUES ('Spain', 'ESP'); @@ -14,7 +14,7 @@ INSERT INTO ne_admin0_v3 (adm0_a3, the_geom) VALUES('ESP', ST_GeomFromText( ); -- This should return the polygon inserted above -SELECT cdb_geocoder_server.cdb_geocode_admin0_polygon('test_user', 'Spain'); +SELECT cdb_geocoder_server.cdb_geocode_admin0_polygon('test_user', 'test_orgname', 'Spain'); -- Check for admin0 signatures SELECT exists(SELECT * @@ -22,7 +22,7 @@ SELECT exists(SELECT * INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) WHERE ns.nspname = 'cdb_geocoder_server' AND proname = 'cdb_geocode_admin0_polygon' - AND oidvectortypes(p.proargtypes) = 'text, text'); + AND oidvectortypes(p.proargtypes) = 'text, text, text'); SELECT exists(SELECT * FROM pg_proc p diff --git a/server/extension/sql/40_admin1_test.sql b/server/extension/sql/40_admin1_test.sql index 966035d..d3080bf 100644 --- a/server/extension/sql/40_admin1_test.sql +++ b/server/extension/sql/40_admin1_test.sql @@ -1,7 +1,7 @@ -- Check that the public function is callable, even with no data -- It should return NULL -SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon('test_user', 'California'); -SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon('test_user', 'California', 'United States'); +SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon('test_user', 'test_orgname', 'California'); +SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon('test_user', 'test_orgname', 'California', 'United States'); -- Insert dummy data into country decoder table INSERT INTO country_decoder (synonyms, iso3) VALUES (Array['united states'], 'USA'); @@ -15,8 +15,8 @@ INSERT INTO global_province_polygons (synonyms, iso3, the_geom) VALUES (Array['c ); -- This should return the polygon inserted above -SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon('test_user', 'California'); -SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon('test_user', 'California', 'United States'); +SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon('test_user', 'test_orgname', 'California'); +SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon('test_user', 'test_orgname', 'California', 'United States'); -- Check for admin1 signatures SELECT exists(SELECT * @@ -24,14 +24,14 @@ SELECT exists(SELECT * INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) WHERE ns.nspname = 'cdb_geocoder_server' AND proname = 'cdb_geocode_admin1_polygon' - AND oidvectortypes(p.proargtypes) = 'text, text'); + AND oidvectortypes(p.proargtypes) = 'text, text, text'); SELECT exists(SELECT * FROM pg_proc p INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) WHERE ns.nspname = 'cdb_geocoder_server' AND proname = 'cdb_geocode_admin1_polygon' - AND oidvectortypes(p.proargtypes) = 'text, text, text'); + AND oidvectortypes(p.proargtypes) = 'text, text, text, text'); SELECT exists(SELECT * FROM pg_proc p diff --git a/server/extension/sql/50_namedplaces_test.sql b/server/extension/sql/50_namedplaces_test.sql index 2a85d30..47c304a 100644 --- a/server/extension/sql/50_namedplaces_test.sql +++ b/server/extension/sql/50_namedplaces_test.sql @@ -1,8 +1,8 @@ -- Check that the public function is callable, even with no data -- It should return NULL -SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'Elx'); -SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'Elx', 'Spain'); -SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'Elx', 'Valencia', 'Spain'); +SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'test_orgname', 'Elx'); +SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'test_orgname', 'Elx', 'Spain'); +SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'test_orgname', 'Elx', 'Valencia', 'Spain'); -- Insert dummy data into points table INSERT INTO global_cities_points_limited (geoname_id, name, iso2, admin1, admin2, population, lowername, the_geom) VALUES (3128760, 'Elche', 'ES', 'Valencia', 'AL', 34534, 'elche', ST_GeomFromText( @@ -21,21 +21,14 @@ INSERT INTO country_decoder (synonyms, iso2) VALUES (Array['spain'], 'ES'); INSERT INTO admin1_decoder (admin1, synonyms, iso2) VALUES ('Valencia', Array['valencia', 'Valencia'], 'ES'); -- This should return the point inserted above -SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'Elx'); -SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'Elche'); -SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'Elx', 'Spain'); -SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'Elche', 'Spain'); -SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'Elx', 'Valencia', 'Spain'); -SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'Elche', 'valencia', 'Spain'); +SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'test_orgname', 'Elx'); +SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'test_orgname', 'Elche'); +SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'test_orgname', 'Elx', 'Spain'); +SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'test_orgname', 'Elche', 'Spain'); +SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'test_orgname', 'Elx', 'Valencia', 'Spain'); +SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'test_orgname', 'Elche', 'valencia', 'Spain'); -- Check for namedplaces signatures -SELECT exists(SELECT * - FROM pg_proc p - INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) - WHERE ns.nspname = 'cdb_geocoder_server' - AND proname = 'cdb_geocode_namedplace_point' - AND oidvectortypes(p.proargtypes) = 'text, text'); - SELECT exists(SELECT * FROM pg_proc p INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) @@ -48,7 +41,14 @@ SELECT exists(SELECT * INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) WHERE ns.nspname = 'cdb_geocoder_server' AND proname = 'cdb_geocode_namedplace_point' - AND oidvectortypes(p.proargtypes) = 'text, text, text'); + AND oidvectortypes(p.proargtypes) = 'text, text, text, text'); + +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = 'cdb_geocode_namedplace_point' + AND oidvectortypes(p.proargtypes) = 'text, text, text, text'); SELECT exists(SELECT * FROM pg_proc p diff --git a/server/extension/sql/60_postalcodes_test.sql b/server/extension/sql/60_postalcodes_test.sql index 500c2e5..2a8192e 100644 --- a/server/extension/sql/60_postalcodes_test.sql +++ b/server/extension/sql/60_postalcodes_test.sql @@ -7,7 +7,7 @@ DELETE FROM admin0_synonyms; -- Check that the public function is callable, even with no data -- It should return NULL -SELECT cdb_geocoder_server.cdb_geocode_postalcode_point('test_user', '03204'); +SELECT cdb_geocoder_server.cdb_geocode_postalcode_point('test_user', 'test_org', '03204'); -- Insert dummy data into ip_address_locations INSERT INTO global_postal_code_points (the_geom, iso3, postal_code, postal_code_num) VALUES ( @@ -44,13 +44,13 @@ INSERT INTO admin0_synonyms (adm0_a3, name, name_, rank) VALUES ( ); -- This should return the polygon inserted above -SELECT cdb_geocoder_server.cdb_geocode_postalcode_point('test_user', '03204'); +SELECT cdb_geocoder_server.cdb_geocode_postalcode_point('test_user', 'test_org', '03204'); -SELECT cdb_geocoder_server.cdb_geocode_postalcode_point('test_user', '03204', 'spain'); +SELECT cdb_geocoder_server.cdb_geocode_postalcode_point('test_user', 'test_org', '03204', 'spain'); -SELECT cdb_geocoder_server.cdb_geocode_postalcode_polygon('test_user', '03204'); +SELECT cdb_geocoder_server.cdb_geocode_postalcode_polygon('test_user', 'test_org', '03204'); -SELECT cdb_geocoder_server.cdb_geocode_postalcode_polygon('test_user', '03204', 'spain'); +SELECT cdb_geocoder_server.cdb_geocode_postalcode_polygon('test_user', 'test_org', '03204', 'spain'); -- Clean dbs DELETE FROM global_postal_code_points; @@ -65,21 +65,14 @@ SELECT exists(SELECT * INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) WHERE ns.nspname = 'cdb_geocoder_server' AND proname = 'cdb_geocode_postalcode_point' - AND oidvectortypes(p.proargtypes) = 'text, text'); + AND oidvectortypes(p.proargtypes) = 'text, text, text'); SELECT exists(SELECT * FROM pg_proc p INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) WHERE ns.nspname = 'cdb_geocoder_server' AND proname = 'cdb_geocode_postalcode_point' - AND oidvectortypes(p.proargtypes) = 'text, text, text'); - -SELECT exists(SELECT * - FROM pg_proc p - INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) - WHERE ns.nspname = 'cdb_geocoder_server' - AND proname = 'cdb_geocode_postalcode_polygon' - AND oidvectortypes(p.proargtypes) = 'text, text'); + AND oidvectortypes(p.proargtypes) = 'text, text, text, text'); SELECT exists(SELECT * FROM pg_proc p @@ -88,6 +81,13 @@ SELECT exists(SELECT * AND proname = 'cdb_geocode_postalcode_polygon' AND oidvectortypes(p.proargtypes) = 'text, text, text'); +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = 'cdb_geocode_postalcode_polygon' + AND oidvectortypes(p.proargtypes) = 'text, text, text, text'); + SELECT exists(SELECT * FROM pg_proc p INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) diff --git a/server/extension/sql/70_ips_test.sql b/server/extension/sql/70_ips_test.sql index c67c33f..f9875f1 100644 --- a/server/extension/sql/70_ips_test.sql +++ b/server/extension/sql/70_ips_test.sql @@ -1,12 +1,12 @@ -- Check that the public function is callable, even with no data -- It should return NULL -SELECT cdb_geocoder_server.cdb_geocode_ipaddress_point('test_user', '0.0.0.0'); +SELECT cdb_geocoder_server.cdb_geocode_ipaddress_point('test_user', 'test_orgname', '0.0.0.0'); -- Insert dummy data into ip_address_locations INSERT INTO ip_address_locations VALUES ('::ffff:0.0.0.0'::inet, (ST_SetSRID(ST_MakePoint('40.40', '3.71'), 4326))); -- This should return the polygon inserted above -SELECT cdb_geocoder_server.cdb_geocode_ipaddress_point('test_user', '0.0.0.0'); +SELECT cdb_geocoder_server.cdb_geocode_ipaddress_point('test_user', 'test_orgname', '0.0.0.0'); -- Check for namedplaces signatures (point and polygon) SELECT exists(SELECT * @@ -14,7 +14,7 @@ SELECT exists(SELECT * INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) WHERE ns.nspname = 'cdb_geocoder_server' AND proname = 'cdb_geocode_ipaddress_point' - AND oidvectortypes(p.proargtypes) = 'text, text'); + AND oidvectortypes(p.proargtypes) = 'text, text, text'); SELECT exists(SELECT * FROM pg_proc p