Compare commits
8 Commits
0.1.0
...
0.1.0-beta
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a00c2eac32 | ||
|
|
bb629dfe4b | ||
|
|
b417e8f1fc | ||
|
|
343bcf539a | ||
|
|
b4b1cd9592 | ||
|
|
2409d548b6 | ||
|
|
35b59c448f | ||
|
|
5309a6eae5 |
@@ -31,7 +31,7 @@ BEGIN
|
|||||||
END;
|
END;
|
||||||
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;
|
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_geocoder_client.cdb_geocode_street_point_v2 (searchtext text, city text DEFAULT NULL, state_province text DEFAULT NULL, country text DEFAULT NULL)
|
CREATE OR REPLACE FUNCTION cdb_geocoder_client.cdb_geocode_street_point (searchtext text, city text DEFAULT NULL, state_province text DEFAULT NULL, country text DEFAULT NULL)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
DECLARE
|
DECLARE
|
||||||
ret Geometry;
|
ret Geometry;
|
||||||
@@ -46,15 +46,15 @@ BEGIN
|
|||||||
IF username IS NULL OR username = '' OR username = '""' THEN
|
IF username IS NULL OR username = '' OR username = '""' THEN
|
||||||
RAISE EXCEPTION 'Username is a mandatory argument, check it out';
|
RAISE EXCEPTION 'Username is a mandatory argument, check it out';
|
||||||
END IF;
|
END IF;
|
||||||
SELECT cdb_geocoder_client._cdb_geocode_street_point_v2(username, orgname, searchtext, city, state_province, country) INTO ret;
|
SELECT cdb_geocoder_client._cdb_geocode_street_point(username, orgname, searchtext, city, state_province, country) INTO ret;
|
||||||
RETURN ret;
|
RETURN ret;
|
||||||
END;
|
END;
|
||||||
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;
|
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_geocoder_client._cdb_geocode_street_point_v2 (username text, organization_name text, searchtext text, city text DEFAULT NULL, state_province text DEFAULT NULL, country text DEFAULT NULL)
|
CREATE OR REPLACE FUNCTION cdb_geocoder_client._cdb_geocode_street_point (username text, organization_name text, searchtext text, city text DEFAULT NULL, state_province text DEFAULT NULL, country text DEFAULT NULL)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
CONNECT cdb_geocoder_client._server_conn_str();
|
CONNECT cdb_geocoder_client._server_conn_str();
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_street_point_v2 (username, organization_name, searchtext, city, state_province, country);
|
SELECT cdb_geocoder_server.cdb_geocode_street_point (username, organization_name, searchtext, city, state_province, country);
|
||||||
$$ LANGUAGE plproxy;
|
$$ LANGUAGE plproxy;
|
||||||
|
|
||||||
GRANT EXECUTE ON FUNCTION cdb_geocoder_client.cdb_geocode_street_point_v2(searchtext text, city text, state_province text, country text) TO publicuser;
|
GRANT EXECUTE ON FUNCTION cdb_geocoder_client.cdb_geocode_street_point(searchtext text, city text, state_province text, country text) TO publicuser;
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
|
DROP FUNCTION IF EXISTS cdb_geocoder_client.cdb_geocode_street_point (text, text, text, text);
|
||||||
|
DROP FUNCTION IF EXISTS cdb_geocoder_client._cdb_geocode_street_point (text, text, text, text);
|
||||||
|
-- This functions could exists due a first deploy with this name
|
||||||
DROP FUNCTION IF EXISTS cdb_geocoder_client.cdb_geocode_street_point_v2 (text, text, text, text);
|
DROP FUNCTION IF EXISTS cdb_geocoder_client.cdb_geocode_street_point_v2 (text, text, text, text);
|
||||||
DROP FUNCTION IF EXISTS cdb_geocoder_client._cdb_geocode_street_point_v2 (text, text, text, text);
|
DROP FUNCTION IF EXISTS cdb_geocoder_client._cdb_geocode_street_point_v2 (text, text, text, text, text, text);
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Get entity config function
|
-- Get entity config function
|
||||||
@@ -32,4 +35,4 @@ BEGIN
|
|||||||
result.organization_name = organization_name;
|
result.organization_name = organization_name;
|
||||||
RETURN result;
|
RETURN result;
|
||||||
END;
|
END;
|
||||||
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;
|
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;
|
||||||
|
|||||||
101
client/test/0.1.0/expected/60_street_test.out
Normal file
101
client/test/0.1.0/expected/60_street_test.out
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
-- 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_street_point (username text, orgname text, searchtext text, city text DEFAULT NULL, state_province text DEFAULT NULL, country text DEFAULT NULL)
|
||||||
|
RETURNS Geometry AS $$
|
||||||
|
BEGIN
|
||||||
|
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_geocoder_street_point invoked with params (%, %, %, %, %, %)', username, orgname, searchtext, city, state_province, country;
|
||||||
|
RETURN NULL;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE 'plpgsql';
|
||||||
|
-- Exercise the public and the proxied function
|
||||||
|
SELECT cdb_geocode_street_point('One street, 1');
|
||||||
|
NOTICE: cdb_geocoder_client._cdb_geocode_street_point(6): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_geocoder_street_point invoked with params (test_user, <NULL>, One street, 1, <NULL>, <NULL>, <NULL>)
|
||||||
|
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_street_point(username, orgname, searchtext, city, state_province, country)"
|
||||||
|
PL/pgSQL function cdb_geocode_street_point(text,text,text,text) line 15 at SQL statement
|
||||||
|
cdb_geocode_street_point
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT cdb_geocode_street_point('One street', 'city');
|
||||||
|
NOTICE: cdb_geocoder_client._cdb_geocode_street_point(6): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_geocoder_street_point invoked with params (test_user, <NULL>, One street, city, <NULL>, <NULL>)
|
||||||
|
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_street_point(username, orgname, searchtext, city, state_province, country)"
|
||||||
|
PL/pgSQL function cdb_geocode_street_point(text,text,text,text) line 15 at SQL statement
|
||||||
|
cdb_geocode_street_point
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT cdb_geocode_street_point('One street', 'city', 'state');
|
||||||
|
NOTICE: cdb_geocoder_client._cdb_geocode_street_point(6): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_geocoder_street_point invoked with params (test_user, <NULL>, One street, city, state, <NULL>)
|
||||||
|
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_street_point(username, orgname, searchtext, city, state_province, country)"
|
||||||
|
PL/pgSQL function cdb_geocode_street_point(text,text,text,text) line 15 at SQL statement
|
||||||
|
cdb_geocode_street_point
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT cdb_geocode_street_point('One street', 'city', 'state', 'country');
|
||||||
|
NOTICE: cdb_geocoder_client._cdb_geocode_street_point(6): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_geocoder_street_point invoked with params (test_user, <NULL>, One street, city, state, country)
|
||||||
|
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_street_point(username, orgname, searchtext, city, state_province, country)"
|
||||||
|
PL/pgSQL function cdb_geocode_street_point(text,text,text,text) line 15 at SQL statement
|
||||||
|
cdb_geocode_street_point
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT cdb_geocode_street_point('One street', 'city', NULL, 'country');
|
||||||
|
NOTICE: cdb_geocoder_client._cdb_geocode_street_point(6): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_geocoder_street_point invoked with params (test_user, <NULL>, One street, city, <NULL>, country)
|
||||||
|
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_street_point(username, orgname, searchtext, city, state_province, country)"
|
||||||
|
PL/pgSQL function cdb_geocode_street_point(text,text,text,text) line 15 at SQL statement
|
||||||
|
cdb_geocode_street_point
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT cdb_geocode_street_point('One street, 1');
|
||||||
|
NOTICE: cdb_geocoder_client._cdb_geocode_street_point(6): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_geocoder_street_point invoked with params (test_user, <NULL>, One street, 1, <NULL>, <NULL>, <NULL>)
|
||||||
|
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_street_point(username, orgname, searchtext, city, state_province, country)"
|
||||||
|
PL/pgSQL function cdb_geocode_street_point(text,text,text,text) line 15 at SQL statement
|
||||||
|
cdb_geocode_street_point
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT cdb_geocode_street_point('One street', 'city');
|
||||||
|
NOTICE: cdb_geocoder_client._cdb_geocode_street_point(6): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_geocoder_street_point invoked with params (test_user, <NULL>, One street, city, <NULL>, <NULL>)
|
||||||
|
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_street_point(username, orgname, searchtext, city, state_province, country)"
|
||||||
|
PL/pgSQL function cdb_geocode_street_point(text,text,text,text) line 15 at SQL statement
|
||||||
|
cdb_geocode_street_point
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT cdb_geocode_street_point('One street', 'city', 'state');
|
||||||
|
NOTICE: cdb_geocoder_client._cdb_geocode_street_point(6): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_geocoder_street_point invoked with params (test_user, <NULL>, One street, city, state, <NULL>)
|
||||||
|
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_street_point(username, orgname, searchtext, city, state_province, country)"
|
||||||
|
PL/pgSQL function cdb_geocode_street_point(text,text,text,text) line 15 at SQL statement
|
||||||
|
cdb_geocode_street_point
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT cdb_geocode_street_point('One street', 'city', 'state', 'country');
|
||||||
|
NOTICE: cdb_geocoder_client._cdb_geocode_street_point(6): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_geocoder_street_point invoked with params (test_user, <NULL>, One street, city, state, country)
|
||||||
|
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_street_point(username, orgname, searchtext, city, state_province, country)"
|
||||||
|
PL/pgSQL function cdb_geocode_street_point(text,text,text,text) line 15 at SQL statement
|
||||||
|
cdb_geocode_street_point
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT cdb_geocode_street_point('One street', 'city', NULL, 'country');
|
||||||
|
NOTICE: cdb_geocoder_client._cdb_geocode_street_point(6): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_geocoder_street_point invoked with params (test_user, <NULL>, One street, city, <NULL>, country)
|
||||||
|
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_street_point(username, orgname, searchtext, city, state_province, country)"
|
||||||
|
PL/pgSQL function cdb_geocode_street_point(text,text,text,text) line 15 at SQL statement
|
||||||
|
cdb_geocode_street_point
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
@@ -1,101 +0,0 @@
|
|||||||
-- 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_street_point_v2 (username text, orgname text, searchtext text, city text DEFAULT NULL, state_province text DEFAULT NULL, country text DEFAULT NULL)
|
|
||||||
RETURNS Geometry AS $$
|
|
||||||
BEGIN
|
|
||||||
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_geocoder_street_point_v2 invoked with params (%, %, %, %, %, %)', username, orgname, searchtext, city, state_province, country;
|
|
||||||
RETURN NULL;
|
|
||||||
END;
|
|
||||||
$$ LANGUAGE 'plpgsql';
|
|
||||||
-- Exercise the public and the proxied function
|
|
||||||
SELECT cdb_geocode_street_point_v2('One street, 1');
|
|
||||||
NOTICE: cdb_geocoder_client._cdb_geocode_street_point_v2(6): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_geocoder_street_point_v2 invoked with params (test_user, <NULL>, One street, 1, <NULL>, <NULL>, <NULL>)
|
|
||||||
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_street_point_v2(username, orgname, searchtext, city, state_province, country)"
|
|
||||||
PL/pgSQL function cdb_geocode_street_point_v2(text,text,text,text) line 15 at SQL statement
|
|
||||||
cdb_geocode_street_point_v2
|
|
||||||
-----------------------------
|
|
||||||
|
|
||||||
(1 row)
|
|
||||||
|
|
||||||
SELECT cdb_geocode_street_point_v2('One street', 'city');
|
|
||||||
NOTICE: cdb_geocoder_client._cdb_geocode_street_point_v2(6): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_geocoder_street_point_v2 invoked with params (test_user, <NULL>, One street, city, <NULL>, <NULL>)
|
|
||||||
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_street_point_v2(username, orgname, searchtext, city, state_province, country)"
|
|
||||||
PL/pgSQL function cdb_geocode_street_point_v2(text,text,text,text) line 15 at SQL statement
|
|
||||||
cdb_geocode_street_point_v2
|
|
||||||
-----------------------------
|
|
||||||
|
|
||||||
(1 row)
|
|
||||||
|
|
||||||
SELECT cdb_geocode_street_point_v2('One street', 'city', 'state');
|
|
||||||
NOTICE: cdb_geocoder_client._cdb_geocode_street_point_v2(6): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_geocoder_street_point_v2 invoked with params (test_user, <NULL>, One street, city, state, <NULL>)
|
|
||||||
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_street_point_v2(username, orgname, searchtext, city, state_province, country)"
|
|
||||||
PL/pgSQL function cdb_geocode_street_point_v2(text,text,text,text) line 15 at SQL statement
|
|
||||||
cdb_geocode_street_point_v2
|
|
||||||
-----------------------------
|
|
||||||
|
|
||||||
(1 row)
|
|
||||||
|
|
||||||
SELECT cdb_geocode_street_point_v2('One street', 'city', 'state', 'country');
|
|
||||||
NOTICE: cdb_geocoder_client._cdb_geocode_street_point_v2(6): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_geocoder_street_point_v2 invoked with params (test_user, <NULL>, One street, city, state, country)
|
|
||||||
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_street_point_v2(username, orgname, searchtext, city, state_province, country)"
|
|
||||||
PL/pgSQL function cdb_geocode_street_point_v2(text,text,text,text) line 15 at SQL statement
|
|
||||||
cdb_geocode_street_point_v2
|
|
||||||
-----------------------------
|
|
||||||
|
|
||||||
(1 row)
|
|
||||||
|
|
||||||
SELECT cdb_geocode_street_point_v2('One street', 'city', NULL, 'country');
|
|
||||||
NOTICE: cdb_geocoder_client._cdb_geocode_street_point_v2(6): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_geocoder_street_point_v2 invoked with params (test_user, <NULL>, One street, city, <NULL>, country)
|
|
||||||
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_street_point_v2(username, orgname, searchtext, city, state_province, country)"
|
|
||||||
PL/pgSQL function cdb_geocode_street_point_v2(text,text,text,text) line 15 at SQL statement
|
|
||||||
cdb_geocode_street_point_v2
|
|
||||||
-----------------------------
|
|
||||||
|
|
||||||
(1 row)
|
|
||||||
|
|
||||||
SELECT cdb_geocode_street_point_v2('One street, 1');
|
|
||||||
NOTICE: cdb_geocoder_client._cdb_geocode_street_point_v2(6): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_geocoder_street_point_v2 invoked with params (test_user, <NULL>, One street, 1, <NULL>, <NULL>, <NULL>)
|
|
||||||
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_street_point_v2(username, orgname, searchtext, city, state_province, country)"
|
|
||||||
PL/pgSQL function cdb_geocode_street_point_v2(text,text,text,text) line 15 at SQL statement
|
|
||||||
cdb_geocode_street_point_v2
|
|
||||||
-----------------------------
|
|
||||||
|
|
||||||
(1 row)
|
|
||||||
|
|
||||||
SELECT cdb_geocode_street_point_v2('One street', 'city');
|
|
||||||
NOTICE: cdb_geocoder_client._cdb_geocode_street_point_v2(6): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_geocoder_street_point_v2 invoked with params (test_user, <NULL>, One street, city, <NULL>, <NULL>)
|
|
||||||
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_street_point_v2(username, orgname, searchtext, city, state_province, country)"
|
|
||||||
PL/pgSQL function cdb_geocode_street_point_v2(text,text,text,text) line 15 at SQL statement
|
|
||||||
cdb_geocode_street_point_v2
|
|
||||||
-----------------------------
|
|
||||||
|
|
||||||
(1 row)
|
|
||||||
|
|
||||||
SELECT cdb_geocode_street_point_v2('One street', 'city', 'state');
|
|
||||||
NOTICE: cdb_geocoder_client._cdb_geocode_street_point_v2(6): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_geocoder_street_point_v2 invoked with params (test_user, <NULL>, One street, city, state, <NULL>)
|
|
||||||
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_street_point_v2(username, orgname, searchtext, city, state_province, country)"
|
|
||||||
PL/pgSQL function cdb_geocode_street_point_v2(text,text,text,text) line 15 at SQL statement
|
|
||||||
cdb_geocode_street_point_v2
|
|
||||||
-----------------------------
|
|
||||||
|
|
||||||
(1 row)
|
|
||||||
|
|
||||||
SELECT cdb_geocode_street_point_v2('One street', 'city', 'state', 'country');
|
|
||||||
NOTICE: cdb_geocoder_client._cdb_geocode_street_point_v2(6): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_geocoder_street_point_v2 invoked with params (test_user, <NULL>, One street, city, state, country)
|
|
||||||
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_street_point_v2(username, orgname, searchtext, city, state_province, country)"
|
|
||||||
PL/pgSQL function cdb_geocode_street_point_v2(text,text,text,text) line 15 at SQL statement
|
|
||||||
cdb_geocode_street_point_v2
|
|
||||||
-----------------------------
|
|
||||||
|
|
||||||
(1 row)
|
|
||||||
|
|
||||||
SELECT cdb_geocode_street_point_v2('One street', 'city', NULL, 'country');
|
|
||||||
NOTICE: cdb_geocoder_client._cdb_geocode_street_point_v2(6): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_geocoder_street_point_v2 invoked with params (test_user, <NULL>, One street, city, <NULL>, country)
|
|
||||||
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_street_point_v2(username, orgname, searchtext, city, state_province, country)"
|
|
||||||
PL/pgSQL function cdb_geocode_street_point_v2(text,text,text,text) line 15 at SQL statement
|
|
||||||
cdb_geocode_street_point_v2
|
|
||||||
-----------------------------
|
|
||||||
|
|
||||||
(1 row)
|
|
||||||
|
|
||||||
@@ -85,12 +85,12 @@ PL/pgSQL function cdb_geocode_ipaddress_point(text) line 15 at SQL statement
|
|||||||
|
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT cdb_geocode_street_point_v2('one street, 1');
|
SELECT cdb_geocode_street_point('one street, 1');
|
||||||
NOTICE: cdb_geocoder_client._cdb_geocode_street_point_v2(6): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_geocoder_street_point_v2 invoked with params (test_user, <NULL>, one street, 1, <NULL>, <NULL>, <NULL>)
|
NOTICE: cdb_geocoder_client._cdb_geocode_street_point(6): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_geocoder_street_point invoked with params (test_user, <NULL>, one street, 1, <NULL>, <NULL>, <NULL>)
|
||||||
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_street_point_v2(username, orgname, searchtext, city, state_province, country)"
|
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_street_point(username, orgname, searchtext, city, state_province, country)"
|
||||||
PL/pgSQL function cdb_geocode_street_point_v2(text,text,text,text) line 15 at SQL statement
|
PL/pgSQL function cdb_geocode_street_point(text,text,text,text) line 15 at SQL statement
|
||||||
cdb_geocode_street_point_v2
|
cdb_geocode_street_point
|
||||||
-----------------------------
|
--------------------------
|
||||||
|
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
@@ -113,5 +113,5 @@ SELECT _cdb_geocode_postalcode_point('evil_user', 'evil_orgname', '66666', 'Hell
|
|||||||
ERROR: permission denied for function _cdb_geocode_postalcode_point
|
ERROR: permission denied for function _cdb_geocode_postalcode_point
|
||||||
SELECT _cdb_geocode_ipaddress_point('evil_user', 'evil_orgname', '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
|
ERROR: permission denied for function _cdb_geocode_ipaddress_point
|
||||||
SELECT _cdb_geocode_street_point_v2('evil_user', 'evil_orgname', 'one street, 1');
|
SELECT _cdb_geocode_street_point('evil_user', 'evil_orgname', 'one street, 1');
|
||||||
ERROR: permission denied for function _cdb_geocode_street_point_v2
|
ERROR: permission denied for function _cdb_geocode_street_point
|
||||||
|
|||||||
24
client/test/0.1.0/sql/60_street_test.sql
Normal file
24
client/test/0.1.0/sql/60_street_test.sql
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
-- 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_street_point (username text, orgname text, searchtext text, city text DEFAULT NULL, state_province text DEFAULT NULL, country text DEFAULT NULL)
|
||||||
|
RETURNS Geometry AS $$
|
||||||
|
BEGIN
|
||||||
|
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_geocoder_street_point invoked with params (%, %, %, %, %, %)', username, orgname, searchtext, city, state_province, country;
|
||||||
|
RETURN NULL;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE 'plpgsql';
|
||||||
|
|
||||||
|
|
||||||
|
-- Exercise the public and the proxied function
|
||||||
|
SELECT cdb_geocode_street_point('One street, 1');
|
||||||
|
SELECT cdb_geocode_street_point('One street', 'city');
|
||||||
|
SELECT cdb_geocode_street_point('One street', 'city', 'state');
|
||||||
|
SELECT cdb_geocode_street_point('One street', 'city', 'state', 'country');
|
||||||
|
SELECT cdb_geocode_street_point('One street', 'city', NULL, 'country');
|
||||||
|
SELECT cdb_geocode_street_point('One street, 1');
|
||||||
|
SELECT cdb_geocode_street_point('One street', 'city');
|
||||||
|
SELECT cdb_geocode_street_point('One street', 'city', 'state');
|
||||||
|
SELECT cdb_geocode_street_point('One street', 'city', 'state', 'country');
|
||||||
|
SELECT cdb_geocode_street_point('One street', 'city', NULL, 'country');
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
-- 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_street_point_v2 (username text, orgname text, searchtext text, city text DEFAULT NULL, state_province text DEFAULT NULL, country text DEFAULT NULL)
|
|
||||||
RETURNS Geometry AS $$
|
|
||||||
BEGIN
|
|
||||||
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_geocoder_street_point_v2 invoked with params (%, %, %, %, %, %)', username, orgname, searchtext, city, state_province, country;
|
|
||||||
RETURN NULL;
|
|
||||||
END;
|
|
||||||
$$ LANGUAGE 'plpgsql';
|
|
||||||
|
|
||||||
|
|
||||||
-- Exercise the public and the proxied function
|
|
||||||
SELECT cdb_geocode_street_point_v2('One street, 1');
|
|
||||||
SELECT cdb_geocode_street_point_v2('One street', 'city');
|
|
||||||
SELECT cdb_geocode_street_point_v2('One street', 'city', 'state');
|
|
||||||
SELECT cdb_geocode_street_point_v2('One street', 'city', 'state', 'country');
|
|
||||||
SELECT cdb_geocode_street_point_v2('One street', 'city', NULL, 'country');
|
|
||||||
SELECT cdb_geocode_street_point_v2('One street, 1');
|
|
||||||
SELECT cdb_geocode_street_point_v2('One street', 'city');
|
|
||||||
SELECT cdb_geocode_street_point_v2('One street', 'city', 'state');
|
|
||||||
SELECT cdb_geocode_street_point_v2('One street', 'city', 'state', 'country');
|
|
||||||
SELECT cdb_geocode_street_point_v2('One street', 'city', NULL, 'country');
|
|
||||||
@@ -15,7 +15,7 @@ SELECT cdb_geocode_namedplace_point('Elx', 'Valencia', 'Spain');
|
|||||||
SELECT cdb_geocode_postalcode_polygon('03204', 'Spain');
|
SELECT cdb_geocode_postalcode_polygon('03204', 'Spain');
|
||||||
SELECT cdb_geocode_postalcode_point('03204', 'Spain');
|
SELECT cdb_geocode_postalcode_point('03204', 'Spain');
|
||||||
SELECT cdb_geocode_ipaddress_point('8.8.8.8');
|
SELECT cdb_geocode_ipaddress_point('8.8.8.8');
|
||||||
SELECT cdb_geocode_street_point_v2('one street, 1');
|
SELECT cdb_geocode_street_point('one street, 1');
|
||||||
|
|
||||||
-- Check the regular user has no permissions on private functions
|
-- Check the regular user has no permissions on private functions
|
||||||
SELECT _cdb_geocode_admin0_polygon('evil_user', 'evil_orgname', 'Hell');
|
SELECT _cdb_geocode_admin0_polygon('evil_user', 'evil_orgname', 'Hell');
|
||||||
@@ -27,4 +27,4 @@ SELECT _cdb_geocode_namedplace_point('evil_user', 'evil_orgname', 'Sheol', 'Hell
|
|||||||
SELECT _cdb_geocode_postalcode_polygon('evil_user', 'evil_orgname', '66666', 'Hell');
|
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_postalcode_point('evil_user', 'evil_orgname', '66666', 'Hell');
|
||||||
SELECT _cdb_geocode_ipaddress_point('evil_user', 'evil_orgname', '8.8.8.8');
|
SELECT _cdb_geocode_ipaddress_point('evil_user', 'evil_orgname', '8.8.8.8');
|
||||||
SELECT _cdb_geocode_street_point_v2('evil_user', 'evil_orgname', 'one street, 1');
|
SELECT _cdb_geocode_street_point('evil_user', 'evil_orgname', 'one street, 1');
|
||||||
|
|||||||
@@ -51,7 +51,7 @@
|
|||||||
params:
|
params:
|
||||||
- { name: ip_address, type: text}
|
- { name: ip_address, type: text}
|
||||||
|
|
||||||
- name: cdb_geocode_street_point_v2
|
- name: cdb_geocode_street_point
|
||||||
return_type: Geometry
|
return_type: Geometry
|
||||||
params:
|
params:
|
||||||
- { name: searchtext, type: text}
|
- { name: searchtext, type: text}
|
||||||
|
|||||||
@@ -46,7 +46,8 @@ RETURNS boolean AS $$
|
|||||||
'redis_metrics_connection': redis_metrics_connection,
|
'redis_metrics_connection': redis_metrics_connection,
|
||||||
}
|
}
|
||||||
return True
|
return True
|
||||||
$$ LANGUAGE plpythonu;
|
$$ LANGUAGE plpythonu SECURITY DEFINER;
|
||||||
|
|
||||||
-- Get the Redis configuration from the _conf table --
|
-- Get the Redis configuration from the _conf table --
|
||||||
CREATE OR REPLACE FUNCTION cdb_geocoder_server._get_geocoder_config(username text, orgname text)
|
CREATE OR REPLACE FUNCTION cdb_geocoder_server._get_geocoder_config(username text, orgname text)
|
||||||
RETURNS boolean AS $$
|
RETURNS boolean AS $$
|
||||||
@@ -71,9 +72,11 @@ RETURNS boolean AS $$
|
|||||||
# --for this user session but...
|
# --for this user session but...
|
||||||
GD[cache_key] = geocoder_config
|
GD[cache_key] = geocoder_config
|
||||||
return True
|
return True
|
||||||
$$ LANGUAGE plpythonu;
|
$$ LANGUAGE plpythonu SECURITY DEFINER;
|
||||||
|
|
||||||
-- Geocodes a street address given a searchtext and a state and/or country
|
-- Geocodes a street address given a searchtext and a state and/or country
|
||||||
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_street_point_v2(username TEXT, orgname TEXT, searchtext TEXT, city TEXT DEFAULT NULL, state_province TEXT DEFAULT NULL, country TEXT DEFAULT NULL)
|
DROP FUNCTION IF EXISTS cdb_geocoder_server.cdb_geocode_street_point(TEXT, TEXT, TEXT, TEXT);
|
||||||
|
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_street_point(username TEXT, orgname TEXT, searchtext TEXT, city TEXT DEFAULT NULL, state_province TEXT DEFAULT NULL, country TEXT DEFAULT NULL)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
plpy.execute("SELECT cdb_geocoder_server._connect_to_redis('{0}')".format(username))
|
plpy.execute("SELECT cdb_geocoder_server._connect_to_redis('{0}')".format(username))
|
||||||
redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection']
|
redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection']
|
||||||
@@ -130,3 +133,10 @@ RETURNS Geometry AS $$
|
|||||||
plpy.error('Google geocoder is not available yet')
|
plpy.error('Google geocoder is not available yet')
|
||||||
return None
|
return None
|
||||||
$$ LANGUAGE plpythonu;
|
$$ LANGUAGE plpythonu;
|
||||||
|
|
||||||
|
-- We apply again the grants to include the new functions
|
||||||
|
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA cdb_geocoder_server TO geocoder_api;
|
||||||
|
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO geocoder_api;
|
||||||
|
GRANT USAGE ON SCHEMA cdb_geocoder_server TO geocoder_api;
|
||||||
|
GRANT USAGE ON SCHEMA public TO geocoder_api;
|
||||||
|
GRANT SELECT ON ALL TABLES IN SCHEMA public TO geocoder_api;
|
||||||
|
|||||||
@@ -1,6 +1,29 @@
|
|||||||
DROP FUNCTION IF EXISTS cdb_geocoder_server._get_redis_conf_v2(text);
|
DROP FUNCTION IF EXISTS cdb_geocoder_server._get_redis_conf_v2(text);
|
||||||
DROP FUNCTION IF EXISTS cdb_geocoder_server._connect_to_redis(text);
|
DROP FUNCTION IF EXISTS cdb_geocoder_server._connect_to_redis(text);
|
||||||
DROP FUNCTION IF EXISTS cdb_geocoder_server._get_geocoder_config(text, text);
|
DROP FUNCTION IF EXISTS cdb_geocoder_server._get_geocoder_config(text, text);
|
||||||
|
DROP FUNCTION IF EXISTS cdb_geocoder_server.cdb_geocode_street_point(TEXT, TEXT, TEXT, TEXT, TEXT, TEXT);
|
||||||
DROP FUNCTION IF EXISTS cdb_geocoder_server.cdb_geocode_street_point_v2(TEXT, TEXT, TEXT, TEXT, TEXT, TEXT);
|
DROP FUNCTION IF EXISTS cdb_geocoder_server.cdb_geocode_street_point_v2(TEXT, TEXT, TEXT, TEXT, TEXT, TEXT);
|
||||||
DROP FUNCTION IF EXISTS cdb_geocoder_server._cdb_here_geocode_street_point(TEXT, TEXT, TEXT, TEXT, TEXT, TEXT);
|
DROP FUNCTION IF EXISTS cdb_geocoder_server._cdb_here_geocode_street_point(TEXT, TEXT, TEXT, TEXT, TEXT, TEXT);
|
||||||
DROP FUNCTION IF EXISTS cdb_geocoder_server._cdb_google_geocode_street_point(TEXT, TEXT, TEXT, TEXT, TEXT, TEXT);
|
DROP FUNCTION IF EXISTS cdb_geocoder_server._cdb_google_geocode_street_point(TEXT, TEXT, TEXT, TEXT, TEXT, TEXT);
|
||||||
|
|
||||||
|
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_street_point(searchtext TEXT, city TEXT DEFAULT NULL, state_province TEXT DEFAULT NULL, country TEXT DEFAULT NULL)
|
||||||
|
RETURNS Geometry
|
||||||
|
AS $$
|
||||||
|
import json
|
||||||
|
from heremaps import heremapsgeocoder
|
||||||
|
|
||||||
|
heremaps_conf = json.loads(plpy.execute("SELECT cdb_geocoder_server._get_conf('heremaps')", 1)[0]['get_conf'])
|
||||||
|
|
||||||
|
app_id = heremaps_conf['geocoder']['app_id']
|
||||||
|
app_code = heremaps_conf['geocoder']['app_code']
|
||||||
|
|
||||||
|
geocoder = heremapsgeocoder.Geocoder(app_id, app_code)
|
||||||
|
|
||||||
|
results = geocoder.geocode_address(searchtext=searchtext, city=city, state=state_province, country=country)
|
||||||
|
coordinates = geocoder.extract_lng_lat_from_result(results[0])
|
||||||
|
|
||||||
|
plan = plpy.prepare("SELECT ST_SetSRID(ST_MakePoint($1, $2), 4326); ", ["double precision", "double precision"])
|
||||||
|
point = plpy.execute(plan, [coordinates[0], coordinates[1]], 1)[0]
|
||||||
|
|
||||||
|
return point['st_setsrid']
|
||||||
|
$$ LANGUAGE plpythonu;
|
||||||
|
|||||||
@@ -54,4 +54,4 @@ RETURNS boolean AS $$
|
|||||||
'redis_metrics_connection': redis_metrics_connection,
|
'redis_metrics_connection': redis_metrics_connection,
|
||||||
}
|
}
|
||||||
return True
|
return True
|
||||||
$$ LANGUAGE plpythonu;
|
$$ LANGUAGE plpythonu SECURITY DEFINER;
|
||||||
|
|||||||
@@ -22,4 +22,4 @@ RETURNS boolean AS $$
|
|||||||
# --for this user session but...
|
# --for this user session but...
|
||||||
GD[cache_key] = geocoder_config
|
GD[cache_key] = geocoder_config
|
||||||
return True
|
return True
|
||||||
$$ LANGUAGE plpythonu;
|
$$ LANGUAGE plpythonu SECURITY DEFINER;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
-- Geocodes a street address given a searchtext and a state and/or country
|
-- Geocodes a street address given a searchtext and a state and/or country
|
||||||
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_street_point_v2(username TEXT, orgname TEXT, searchtext TEXT, city TEXT DEFAULT NULL, state_province TEXT DEFAULT NULL, country TEXT DEFAULT NULL)
|
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_street_point(username TEXT, orgname TEXT, searchtext TEXT, city TEXT DEFAULT NULL, state_province TEXT DEFAULT NULL, country TEXT DEFAULT NULL)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
plpy.execute("SELECT cdb_geocoder_server._connect_to_redis('{0}')".format(username))
|
plpy.execute("SELECT cdb_geocoder_server._connect_to_redis('{0}')".format(username))
|
||||||
redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection']
|
redis_conn = GD["redis_connection_{0}".format(username)]['redis_metrics_connection']
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ SELECT exists(SELECT *
|
|||||||
FROM pg_proc p
|
FROM pg_proc p
|
||||||
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
||||||
WHERE ns.nspname = 'cdb_geocoder_server'
|
WHERE ns.nspname = 'cdb_geocoder_server'
|
||||||
AND proname = 'cdb_geocode_street_point_v2'
|
AND proname = 'cdb_geocode_street_point'
|
||||||
AND oidvectortypes(p.proargtypes) = 'text, text, text, text, text, text');
|
AND oidvectortypes(p.proargtypes) = 'text, text, text, text, text, text');
|
||||||
exists
|
exists
|
||||||
--------
|
--------
|
||||||
|
|||||||
@@ -3,5 +3,5 @@ SELECT exists(SELECT *
|
|||||||
FROM pg_proc p
|
FROM pg_proc p
|
||||||
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
||||||
WHERE ns.nspname = 'cdb_geocoder_server'
|
WHERE ns.nspname = 'cdb_geocoder_server'
|
||||||
AND proname = 'cdb_geocode_street_point_v2'
|
AND proname = 'cdb_geocode_street_point'
|
||||||
AND oidvectortypes(p.proargtypes) = 'text, text, text, text, text, text');
|
AND oidvectortypes(p.proargtypes) = 'text, text, text, text, text, text');
|
||||||
|
|||||||
2
test/fixtures/geocoder_api_test_dataset.csv
vendored
2
test/fixtures/geocoder_api_test_dataset.csv
vendored
@@ -1,3 +1,3 @@
|
|||||||
id,country,province,city,postalcode,ip,street
|
id,country,province,city,postalcode,ip,street
|
||||||
1,Spain,Castilla y León,Valladolid,47010,8.8.8.8,Calle Amor de Dios
|
1,Spain,Castilla y León,Valladolid,47010,8.8.8.8,Calle Amor de Dios
|
||||||
2,USA,New York,Manhattn,10001,8.8.8.8,NonExistentStreet
|
2,USA,New York,Manhattn,10001,8.8.8.8,135 W 30th St
|
||||||
|
|||||||
|
@@ -15,7 +15,7 @@ class TestStreetFunctions(TestCase):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def test_if_select_with_street_point_is_ok(self):
|
def test_if_select_with_street_point_is_ok(self):
|
||||||
query = "SELECT cdb_geocode_street_point_v2_(street) " \
|
query = "SELECT cdb_geocode_street_point(street) " \
|
||||||
"as geometry FROM {0} LIMIT 1&api_key={1}".format(
|
"as geometry FROM {0} LIMIT 1&api_key={1}".format(
|
||||||
self.env_variables['table_name'],
|
self.env_variables['table_name'],
|
||||||
self.env_variables['api_key'])
|
self.env_variables['api_key'])
|
||||||
@@ -23,7 +23,7 @@ class TestStreetFunctions(TestCase):
|
|||||||
assert_not_equal(geometry, None)
|
assert_not_equal(geometry, None)
|
||||||
|
|
||||||
def test_if_select_with_street_without_api_key_raise_error(self):
|
def test_if_select_with_street_without_api_key_raise_error(self):
|
||||||
query = "SELECT cdb_geocode_street_point_v2_(street) " \
|
query = "SELECT cdb_geocode_street_point(street) " \
|
||||||
"as geometry FROM {0} LIMIT 1".format(
|
"as geometry FROM {0} LIMIT 1".format(
|
||||||
self.env_variables['table_name'])
|
self.env_variables['table_name'])
|
||||||
try:
|
try:
|
||||||
|
|||||||
Reference in New Issue
Block a user