From 0297214c5319fe99b6eb23478d7f9fe58dd007f0 Mon Sep 17 00:00:00 2001 From: Guido Fioravantti Date: Fri, 6 Nov 2015 17:22:39 +0100 Subject: [PATCH 01/12] Initial cdb_geocoder_server commit --- server/Makefile | 26 ++++++++++++++++++++++++++ server/README.md | 2 -- server/cdb_geocoder_server--0.0.1.sql | 21 +++++++++++++++++++++ server/cdb_geocoder_server.control | 6 ++++++ server/expected/00_install_test.out | 14 ++++++++++++++ server/expected/10_helper_test.out | 14 ++++++++++++++ server/sql/0.0.1/00_header.sql | 2 ++ server/sql/0.0.1/10_helper.sql | 19 +++++++++++++++++++ server/sql/00_install_test.sql | 16 ++++++++++++++++ server/sql/10_helper_test.sql | 5 +++++ 10 files changed, 123 insertions(+), 2 deletions(-) create mode 100644 server/cdb_geocoder_server--0.0.1.sql create mode 100644 server/expected/00_install_test.out create mode 100644 server/expected/10_helper_test.out create mode 100644 server/sql/0.0.1/00_header.sql create mode 100644 server/sql/0.0.1/10_helper.sql create mode 100644 server/sql/00_install_test.sql create mode 100644 server/sql/10_helper_test.sql diff --git a/server/Makefile b/server/Makefile index e69de29..b7f4973 100644 --- a/server/Makefile +++ b/server/Makefile @@ -0,0 +1,26 @@ +# Makefile to generate the extension out of separate sql source files. +# Once a version is released, it is not meant to be changed. E.g: once version 0.0.1 is out, it SHALL NOT be changed. +EXTENSION = cdb_geocoder_server +EXTVERSION = $(shell grep default_version $(EXTENSION).control | sed -e "s/default_version[[:space:]]*=[[:space:]]*'\([^']*\)'/\1/") + +DATA = $(EXTENSION)--$(EXTVERSION).sql + +REGRESS = $(notdir $(basename $(wildcard sql/*test.sql))) + +# postgres build stuff +PG_CONFIG = pg_config +PGXS := $(shell $(PG_CONFIG) --pgxs) +include $(PGXS) + + +SOURCES_DATA = $(wildcard sql/$(EXTVERSION)/*.sql) + +$(DATA): $(SOURCES_DATA) + rm -f $@ + cat $(SOURCES_DATA) >> $@ + +all: $(DATA) + +# Only meant for development time, do not use once a version is released +devclean: + rm -f $(DATA) diff --git a/server/README.md b/server/README.md index 72af5d8..e69de29 100644 --- a/server/README.md +++ b/server/README.md @@ -1,2 +0,0 @@ -# Geocoder API Server -The CartoDB Geocoder SQL API server diff --git a/server/cdb_geocoder_server--0.0.1.sql b/server/cdb_geocoder_server--0.0.1.sql new file mode 100644 index 0000000..d3f297a --- /dev/null +++ b/server/cdb_geocoder_server--0.0.1.sql @@ -0,0 +1,21 @@ +-- Complain if script is sourced in psql, rather than via CREATE EXTENSION +\echo Use "CREATE EXTENSION cdb_geocoder_server" to load this file. \quit +-- Check if a given host is up by performing a ping -c 1 call. +CREATE OR REPLACE FUNCTION check_host(hostname TEXT) + RETURNS BOOLEAN +AS $$ + import os + + response = os.system("ping -c 1 " + hostname) + + return False if response else True +$$ LANGUAGE plpythonu VOLATILE; + +-- Returns current pwd +CREATE OR REPLACE FUNCTION pwd() + RETURNS TEXT +AS $$ + import os + + return os.getcwd() +$$ LANGUAGE plpythonu VOLATILE; diff --git a/server/cdb_geocoder_server.control b/server/cdb_geocoder_server.control index e69de29..b5fee44 100644 --- a/server/cdb_geocoder_server.control +++ b/server/cdb_geocoder_server.control @@ -0,0 +1,6 @@ +# cdb geocoder server extension +comment = 'CartoDB server geocoder extension' +default_version = '0.0.1' +relocatable = true +requires = cartodb +superuser = true diff --git a/server/expected/00_install_test.out b/server/expected/00_install_test.out new file mode 100644 index 0000000..17fb473 --- /dev/null +++ b/server/expected/00_install_test.out @@ -0,0 +1,14 @@ +-- Install dependencies +CREATE EXTENSION postgis; +CREATE EXTENSION schema_triggers; +CREATE EXTENSION plpythonu; +CREATE EXTENSION cartodb; +-- Install the extension +CREATE EXTENSION cdb_geocoder_server; +-- Mock the varnish invalidation function +CREATE OR REPLACE FUNCTION public.cdb_invalidate_varnish(table_name text) RETURNS void AS $$ +BEGIN + RETURN; +END +$$ +LANGUAGE plpgsql; diff --git a/server/expected/10_helper_test.out b/server/expected/10_helper_test.out new file mode 100644 index 0000000..5af9f10 --- /dev/null +++ b/server/expected/10_helper_test.out @@ -0,0 +1,14 @@ +-- Check that check_host is working +select check_host('cartodb.com'); + check_host +------------ + t +(1 row) + +-- Check that check_pwd is working +select pwd(); + pwd +------------------------------ + /var/lib/postgresql/9.3/main +(1 row) + diff --git a/server/sql/0.0.1/00_header.sql b/server/sql/0.0.1/00_header.sql new file mode 100644 index 0000000..949e06e --- /dev/null +++ b/server/sql/0.0.1/00_header.sql @@ -0,0 +1,2 @@ +-- Complain if script is sourced in psql, rather than via CREATE EXTENSION +\echo Use "CREATE EXTENSION cdb_geocoder_server" to load this file. \quit diff --git a/server/sql/0.0.1/10_helper.sql b/server/sql/0.0.1/10_helper.sql new file mode 100644 index 0000000..86d9b79 --- /dev/null +++ b/server/sql/0.0.1/10_helper.sql @@ -0,0 +1,19 @@ +-- Check if a given host is up by performing a ping -c 1 call. +CREATE OR REPLACE FUNCTION check_host(hostname TEXT) + RETURNS BOOLEAN +AS $$ + import os + + response = os.system("ping -c 1 " + hostname) + + return False if response else True +$$ LANGUAGE plpythonu VOLATILE; + +-- Returns current pwd +CREATE OR REPLACE FUNCTION pwd() + RETURNS TEXT +AS $$ + import os + + return os.getcwd() +$$ LANGUAGE plpythonu VOLATILE; diff --git a/server/sql/00_install_test.sql b/server/sql/00_install_test.sql new file mode 100644 index 0000000..4a2e8b3 --- /dev/null +++ b/server/sql/00_install_test.sql @@ -0,0 +1,16 @@ +-- Install dependencies +CREATE EXTENSION postgis; +CREATE EXTENSION schema_triggers; +CREATE EXTENSION plpythonu; +CREATE EXTENSION cartodb; + +-- Install the extension +CREATE EXTENSION cdb_geocoder_server; + +-- Mock the varnish invalidation function +CREATE OR REPLACE FUNCTION public.cdb_invalidate_varnish(table_name text) RETURNS void AS $$ +BEGIN + RETURN; +END +$$ +LANGUAGE plpgsql; diff --git a/server/sql/10_helper_test.sql b/server/sql/10_helper_test.sql new file mode 100644 index 0000000..e9586c3 --- /dev/null +++ b/server/sql/10_helper_test.sql @@ -0,0 +1,5 @@ +-- Check that check_host is working +select check_host('cartodb.com'); + +-- Check that check_pwd is working +select pwd(); From d772033b45ee264bba856d49099fe6f77135922d Mon Sep 17 00:00:00 2001 From: Guido Fioravantti Date: Fri, 6 Nov 2015 18:13:57 +0100 Subject: [PATCH 02/12] Adds cdb_cartodb_server schema --- server/cdb_geocoder_server--0.0.1.sql | 20 ++++++++++++++++++-- server/cdb_geocoder_server.control | 4 ++-- server/expected/00_install_test.out | 8 -------- server/expected/10_helper_test.out | 10 +++++----- server/sql/0.0.1/10_helper.sql | 4 ++-- server/sql/00_install_test.sql | 8 -------- server/sql/10_helper_test.sql | 4 ++-- 7 files changed, 29 insertions(+), 29 deletions(-) diff --git a/server/cdb_geocoder_server--0.0.1.sql b/server/cdb_geocoder_server--0.0.1.sql index d3f297a..3b13869 100644 --- a/server/cdb_geocoder_server--0.0.1.sql +++ b/server/cdb_geocoder_server--0.0.1.sql @@ -1,7 +1,7 @@ -- Complain if script is sourced in psql, rather than via CREATE EXTENSION \echo Use "CREATE EXTENSION cdb_geocoder_server" to load this file. \quit -- Check if a given host is up by performing a ping -c 1 call. -CREATE OR REPLACE FUNCTION check_host(hostname TEXT) +CREATE OR REPLACE FUNCTION cdb_geocoder_server._check_host(hostname TEXT) RETURNS BOOLEAN AS $$ import os @@ -12,10 +12,26 @@ AS $$ $$ LANGUAGE plpythonu VOLATILE; -- Returns current pwd -CREATE OR REPLACE FUNCTION pwd() +CREATE OR REPLACE FUNCTION cdb_geocoder_server._pwd() RETURNS TEXT AS $$ import os return os.getcwd() $$ LANGUAGE plpythonu VOLATILE; +-- Check if a given host is up by performing a ping -c 1 call. +CREATE OR REPLACE FUNCTION cdb_geocoder_server.geocode_street(searchtext TEXT, state TEXT DEFAULT NULL, country TEXT DEFAULT NULL) + RETURNS Geometry +AS $$ + from heremaps import heremapsgeocoder + + geocoder = heremapsgeocoder.Geocoder(app_id, app_code) + + results = geocoder.geocode_address(searchtext=searchtext, state=state, 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 VOLATILE; diff --git a/server/cdb_geocoder_server.control b/server/cdb_geocoder_server.control index b5fee44..0bb778f 100644 --- a/server/cdb_geocoder_server.control +++ b/server/cdb_geocoder_server.control @@ -1,6 +1,6 @@ # cdb geocoder server extension comment = 'CartoDB server geocoder extension' default_version = '0.0.1' -relocatable = true -requires = cartodb +requires = 'plpythonu, schema_triggers, postgis' superuser = true +schema = cdb_geocoder_server diff --git a/server/expected/00_install_test.out b/server/expected/00_install_test.out index 17fb473..87cd9ce 100644 --- a/server/expected/00_install_test.out +++ b/server/expected/00_install_test.out @@ -2,13 +2,5 @@ CREATE EXTENSION postgis; CREATE EXTENSION schema_triggers; CREATE EXTENSION plpythonu; -CREATE EXTENSION cartodb; -- Install the extension CREATE EXTENSION cdb_geocoder_server; --- Mock the varnish invalidation function -CREATE OR REPLACE FUNCTION public.cdb_invalidate_varnish(table_name text) RETURNS void AS $$ -BEGIN - RETURN; -END -$$ -LANGUAGE plpgsql; diff --git a/server/expected/10_helper_test.out b/server/expected/10_helper_test.out index 5af9f10..4e9a2f5 100644 --- a/server/expected/10_helper_test.out +++ b/server/expected/10_helper_test.out @@ -1,13 +1,13 @@ -- Check that check_host is working -select check_host('cartodb.com'); - check_host ------------- +select cdb_geocoder_server._check_host('cartodb.com'); + _check_host +------------- t (1 row) -- Check that check_pwd is working -select pwd(); - pwd +select cdb_geocoder_server._pwd(); + _pwd ------------------------------ /var/lib/postgresql/9.3/main (1 row) diff --git a/server/sql/0.0.1/10_helper.sql b/server/sql/0.0.1/10_helper.sql index 86d9b79..59f5e02 100644 --- a/server/sql/0.0.1/10_helper.sql +++ b/server/sql/0.0.1/10_helper.sql @@ -1,5 +1,5 @@ -- Check if a given host is up by performing a ping -c 1 call. -CREATE OR REPLACE FUNCTION check_host(hostname TEXT) +CREATE OR REPLACE FUNCTION cdb_geocoder_server._check_host(hostname TEXT) RETURNS BOOLEAN AS $$ import os @@ -10,7 +10,7 @@ AS $$ $$ LANGUAGE plpythonu VOLATILE; -- Returns current pwd -CREATE OR REPLACE FUNCTION pwd() +CREATE OR REPLACE FUNCTION cdb_geocoder_server._pwd() RETURNS TEXT AS $$ import os diff --git a/server/sql/00_install_test.sql b/server/sql/00_install_test.sql index 4a2e8b3..04ee816 100644 --- a/server/sql/00_install_test.sql +++ b/server/sql/00_install_test.sql @@ -2,15 +2,7 @@ CREATE EXTENSION postgis; CREATE EXTENSION schema_triggers; CREATE EXTENSION plpythonu; -CREATE EXTENSION cartodb; -- Install the extension CREATE EXTENSION cdb_geocoder_server; --- Mock the varnish invalidation function -CREATE OR REPLACE FUNCTION public.cdb_invalidate_varnish(table_name text) RETURNS void AS $$ -BEGIN - RETURN; -END -$$ -LANGUAGE plpgsql; diff --git a/server/sql/10_helper_test.sql b/server/sql/10_helper_test.sql index e9586c3..c05abbd 100644 --- a/server/sql/10_helper_test.sql +++ b/server/sql/10_helper_test.sql @@ -1,5 +1,5 @@ -- Check that check_host is working -select check_host('cartodb.com'); +select cdb_geocoder_server._check_host('cartodb.com'); -- Check that check_pwd is working -select pwd(); +select cdb_geocoder_server._pwd(); From 38e84201cb1230ecab132a8c345a64589523e506 Mon Sep 17 00:00:00 2001 From: Guido Fioravantti Date: Fri, 6 Nov 2015 18:23:47 +0100 Subject: [PATCH 03/12] Reorganisation --- server/{ => extension}/Makefile | 0 server/{ => extension}/README.md | 0 .../cdb_geocoder_server--0.0.1.sql | 0 .../{ => extension}/cdb_geocoder_server.control | 0 .../{ => extension}/expected/00_install_test.out | 0 .../{ => extension}/expected/10_helper_test.out | 0 server/{ => extension}/sql/0.0.1/00_header.sql | 0 server/{ => extension}/sql/0.0.1/10_helper.sql | 0 server/extension/sql/0.0.1/20_geocoding.sql | 16 ++++++++++++++++ server/{ => extension}/sql/00_install_test.sql | 0 server/{ => extension}/sql/10_helper_test.sql | 0 11 files changed, 16 insertions(+) rename server/{ => extension}/Makefile (100%) rename server/{ => extension}/README.md (100%) rename server/{ => extension}/cdb_geocoder_server--0.0.1.sql (100%) rename server/{ => extension}/cdb_geocoder_server.control (100%) rename server/{ => extension}/expected/00_install_test.out (100%) rename server/{ => extension}/expected/10_helper_test.out (100%) rename server/{ => extension}/sql/0.0.1/00_header.sql (100%) rename server/{ => extension}/sql/0.0.1/10_helper.sql (100%) create mode 100644 server/extension/sql/0.0.1/20_geocoding.sql rename server/{ => extension}/sql/00_install_test.sql (100%) rename server/{ => extension}/sql/10_helper_test.sql (100%) diff --git a/server/Makefile b/server/extension/Makefile similarity index 100% rename from server/Makefile rename to server/extension/Makefile diff --git a/server/README.md b/server/extension/README.md similarity index 100% rename from server/README.md rename to server/extension/README.md diff --git a/server/cdb_geocoder_server--0.0.1.sql b/server/extension/cdb_geocoder_server--0.0.1.sql similarity index 100% rename from server/cdb_geocoder_server--0.0.1.sql rename to server/extension/cdb_geocoder_server--0.0.1.sql diff --git a/server/cdb_geocoder_server.control b/server/extension/cdb_geocoder_server.control similarity index 100% rename from server/cdb_geocoder_server.control rename to server/extension/cdb_geocoder_server.control diff --git a/server/expected/00_install_test.out b/server/extension/expected/00_install_test.out similarity index 100% rename from server/expected/00_install_test.out rename to server/extension/expected/00_install_test.out diff --git a/server/expected/10_helper_test.out b/server/extension/expected/10_helper_test.out similarity index 100% rename from server/expected/10_helper_test.out rename to server/extension/expected/10_helper_test.out diff --git a/server/sql/0.0.1/00_header.sql b/server/extension/sql/0.0.1/00_header.sql similarity index 100% rename from server/sql/0.0.1/00_header.sql rename to server/extension/sql/0.0.1/00_header.sql diff --git a/server/sql/0.0.1/10_helper.sql b/server/extension/sql/0.0.1/10_helper.sql similarity index 100% rename from server/sql/0.0.1/10_helper.sql rename to server/extension/sql/0.0.1/10_helper.sql diff --git a/server/extension/sql/0.0.1/20_geocoding.sql b/server/extension/sql/0.0.1/20_geocoding.sql new file mode 100644 index 0000000..29ecd3a --- /dev/null +++ b/server/extension/sql/0.0.1/20_geocoding.sql @@ -0,0 +1,16 @@ +-- Check if a given host is up by performing a ping -c 1 call. +CREATE OR REPLACE FUNCTION cdb_geocoder_server.geocode_street(searchtext TEXT, state TEXT DEFAULT NULL, country TEXT DEFAULT NULL) + RETURNS Geometry +AS $$ + from heremaps import heremapsgeocoder + + geocoder = heremapsgeocoder.Geocoder(app_id, app_code) + + results = geocoder.geocode_address(searchtext=searchtext, state=state, 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 VOLATILE; diff --git a/server/sql/00_install_test.sql b/server/extension/sql/00_install_test.sql similarity index 100% rename from server/sql/00_install_test.sql rename to server/extension/sql/00_install_test.sql diff --git a/server/sql/10_helper_test.sql b/server/extension/sql/10_helper_test.sql similarity index 100% rename from server/sql/10_helper_test.sql rename to server/extension/sql/10_helper_test.sql From 97af24c2e08b1f17c6ec85092a7bdcac68d97aca Mon Sep 17 00:00:00 2001 From: Guido Fioravantti Date: Fri, 6 Nov 2015 18:28:29 +0100 Subject: [PATCH 04/12] Removes unused functions --- .../extension/cdb_geocoder_server--0.0.1.sql | 19 ------------------- server/extension/expected/10_helper_test.out | 14 -------------- .../{20_geocoding.sql => 10_geocoding.sql} | 0 server/extension/sql/0.0.1/10_helper.sql | 19 ------------------- server/extension/sql/10_helper_test.sql | 5 ----- 5 files changed, 57 deletions(-) delete mode 100644 server/extension/expected/10_helper_test.out rename server/extension/sql/0.0.1/{20_geocoding.sql => 10_geocoding.sql} (100%) delete mode 100644 server/extension/sql/0.0.1/10_helper.sql delete mode 100644 server/extension/sql/10_helper_test.sql diff --git a/server/extension/cdb_geocoder_server--0.0.1.sql b/server/extension/cdb_geocoder_server--0.0.1.sql index 3b13869..209907f 100644 --- a/server/extension/cdb_geocoder_server--0.0.1.sql +++ b/server/extension/cdb_geocoder_server--0.0.1.sql @@ -1,25 +1,6 @@ -- Complain if script is sourced in psql, rather than via CREATE EXTENSION \echo Use "CREATE EXTENSION cdb_geocoder_server" to load this file. \quit -- Check if a given host is up by performing a ping -c 1 call. -CREATE OR REPLACE FUNCTION cdb_geocoder_server._check_host(hostname TEXT) - RETURNS BOOLEAN -AS $$ - import os - - response = os.system("ping -c 1 " + hostname) - - return False if response else True -$$ LANGUAGE plpythonu VOLATILE; - --- Returns current pwd -CREATE OR REPLACE FUNCTION cdb_geocoder_server._pwd() - RETURNS TEXT -AS $$ - import os - - return os.getcwd() -$$ LANGUAGE plpythonu VOLATILE; --- Check if a given host is up by performing a ping -c 1 call. CREATE OR REPLACE FUNCTION cdb_geocoder_server.geocode_street(searchtext TEXT, state TEXT DEFAULT NULL, country TEXT DEFAULT NULL) RETURNS Geometry AS $$ diff --git a/server/extension/expected/10_helper_test.out b/server/extension/expected/10_helper_test.out deleted file mode 100644 index 4e9a2f5..0000000 --- a/server/extension/expected/10_helper_test.out +++ /dev/null @@ -1,14 +0,0 @@ --- Check that check_host is working -select cdb_geocoder_server._check_host('cartodb.com'); - _check_host -------------- - t -(1 row) - --- Check that check_pwd is working -select cdb_geocoder_server._pwd(); - _pwd ------------------------------- - /var/lib/postgresql/9.3/main -(1 row) - diff --git a/server/extension/sql/0.0.1/20_geocoding.sql b/server/extension/sql/0.0.1/10_geocoding.sql similarity index 100% rename from server/extension/sql/0.0.1/20_geocoding.sql rename to server/extension/sql/0.0.1/10_geocoding.sql diff --git a/server/extension/sql/0.0.1/10_helper.sql b/server/extension/sql/0.0.1/10_helper.sql deleted file mode 100644 index 59f5e02..0000000 --- a/server/extension/sql/0.0.1/10_helper.sql +++ /dev/null @@ -1,19 +0,0 @@ --- Check if a given host is up by performing a ping -c 1 call. -CREATE OR REPLACE FUNCTION cdb_geocoder_server._check_host(hostname TEXT) - RETURNS BOOLEAN -AS $$ - import os - - response = os.system("ping -c 1 " + hostname) - - return False if response else True -$$ LANGUAGE plpythonu VOLATILE; - --- Returns current pwd -CREATE OR REPLACE FUNCTION cdb_geocoder_server._pwd() - RETURNS TEXT -AS $$ - import os - - return os.getcwd() -$$ LANGUAGE plpythonu VOLATILE; diff --git a/server/extension/sql/10_helper_test.sql b/server/extension/sql/10_helper_test.sql deleted file mode 100644 index c05abbd..0000000 --- a/server/extension/sql/10_helper_test.sql +++ /dev/null @@ -1,5 +0,0 @@ --- Check that check_host is working -select cdb_geocoder_server._check_host('cartodb.com'); - --- Check that check_pwd is working -select cdb_geocoder_server._pwd(); From 4a28d8948046340f9cb5f59d73dcf61b6f0ab8db Mon Sep 17 00:00:00 2001 From: Guido Fioravantti Date: Tue, 10 Nov 2015 10:23:47 +0100 Subject: [PATCH 05/12] Fixes typo --- server/extension/sql/0.0.1/10_geocoding.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/extension/sql/0.0.1/10_geocoding.sql b/server/extension/sql/0.0.1/10_geocoding.sql index 29ecd3a..7cae138 100644 --- a/server/extension/sql/0.0.1/10_geocoding.sql +++ b/server/extension/sql/0.0.1/10_geocoding.sql @@ -1,4 +1,4 @@ --- Check if a given host is up by performing a ping -c 1 call. +-- Geocodes a street address given a searchtext and a state and/or country CREATE OR REPLACE FUNCTION cdb_geocoder_server.geocode_street(searchtext TEXT, state TEXT DEFAULT NULL, country TEXT DEFAULT NULL) RETURNS Geometry AS $$ From 607a8ae8013ce0ae47d262515e59c05af188b7af Mon Sep 17 00:00:00 2001 From: Rafa de la Torre Date: Tue, 10 Nov 2015 10:55:20 +0100 Subject: [PATCH 06/12] Remove artifact until we roll-out version 0.0.1 --- .../extension/cdb_geocoder_server--0.0.1.sql | 18 ------------------ 1 file changed, 18 deletions(-) delete mode 100644 server/extension/cdb_geocoder_server--0.0.1.sql diff --git a/server/extension/cdb_geocoder_server--0.0.1.sql b/server/extension/cdb_geocoder_server--0.0.1.sql deleted file mode 100644 index 209907f..0000000 --- a/server/extension/cdb_geocoder_server--0.0.1.sql +++ /dev/null @@ -1,18 +0,0 @@ --- Complain if script is sourced in psql, rather than via CREATE EXTENSION -\echo Use "CREATE EXTENSION cdb_geocoder_server" to load this file. \quit --- Check if a given host is up by performing a ping -c 1 call. -CREATE OR REPLACE FUNCTION cdb_geocoder_server.geocode_street(searchtext TEXT, state TEXT DEFAULT NULL, country TEXT DEFAULT NULL) - RETURNS Geometry -AS $$ - from heremaps import heremapsgeocoder - - geocoder = heremapsgeocoder.Geocoder(app_id, app_code) - - results = geocoder.geocode_address(searchtext=searchtext, state=state, 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 VOLATILE; From 419c07808e8c9d37e7a95b0e2a8958552a684917 Mon Sep 17 00:00:00 2001 From: Rafa de la Torre Date: Tue, 10 Nov 2015 10:56:34 +0100 Subject: [PATCH 07/12] Remove schema from function definition The schema is implicit during extension creation. --- server/extension/sql/0.0.1/10_geocoding.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/extension/sql/0.0.1/10_geocoding.sql b/server/extension/sql/0.0.1/10_geocoding.sql index 7cae138..96e298b 100644 --- a/server/extension/sql/0.0.1/10_geocoding.sql +++ b/server/extension/sql/0.0.1/10_geocoding.sql @@ -1,5 +1,5 @@ -- Geocodes a street address given a searchtext and a state and/or country -CREATE OR REPLACE FUNCTION cdb_geocoder_server.geocode_street(searchtext TEXT, state TEXT DEFAULT NULL, country TEXT DEFAULT NULL) +CREATE OR REPLACE FUNCTION geocode_street(searchtext TEXT, state TEXT DEFAULT NULL, country TEXT DEFAULT NULL) RETURNS Geometry AS $$ from heremaps import heremapsgeocoder From 40c8187deef68ed29bd0a635037842b347f2347f Mon Sep 17 00:00:00 2001 From: Rafa de la Torre Date: Tue, 10 Nov 2015 11:04:48 +0100 Subject: [PATCH 08/12] New README.md for the server extension --- server/extension/README.md | 45 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/server/extension/README.md b/server/extension/README.md index e69de29..198921b 100644 --- a/server/extension/README.md +++ b/server/extension/README.md @@ -0,0 +1,45 @@ +# CartoDB geocoder API server extension +Postgres extension for the CartoDB geocoder API, server side. + +## Dependencies +This extension is thought to be used on top of CartoDB geocoder extension, for the internal geocoder. + +The following is a non-comprehensive list of dependencies: + +- Postgres 9.3+ +- Postgis extension +- Schema triggers extension +- CartoDB extension + +## Installation into the db cluster +This requires root privileges +``` +sudo make all install +``` + +## Execute tests +``` +PGUSER=postgres make installcheck +``` + +## Build, install & test +One-liner: +``` +sudo PGUSER=postgres make all install installcheck +``` + +## Install onto a cartodb user's database + +Remember that **is mandatory to install it on top of cdb_geocoder** + +``` +psql -U postgres cartodb_dev_user_fe3b850a-01c0-48f9-8a26-a82f09e9b53f_db +``` + +and then: + +```sql +CREATE EXTENSION cdb_geocoder_server; +``` + +The extension creation in the user's db requires **superuser** privileges. From deab21dff5e283e9436dde77e67d9f99b4c7c85e Mon Sep 17 00:00:00 2001 From: Rafa de la Torre Date: Tue, 10 Nov 2015 11:09:25 +0100 Subject: [PATCH 09/12] Move .gitignore and add cdb_geocoder_server--0.0.1.sql FTM --- server/{ => extension}/.gitignore | 1 + 1 file changed, 1 insertion(+) rename server/{ => extension}/.gitignore (56%) diff --git a/server/.gitignore b/server/extension/.gitignore similarity index 56% rename from server/.gitignore rename to server/extension/.gitignore index e710f0e..692d013 100644 --- a/server/.gitignore +++ b/server/extension/.gitignore @@ -1,3 +1,4 @@ results/ regression.diffs regression.out +cdb_geocoder_server--0.0.1.sql From f97dfceea694f00048375377c2b9b3aeb65c615d Mon Sep 17 00:00:00 2001 From: Rafa de la Torre Date: Tue, 10 Nov 2015 11:13:21 +0100 Subject: [PATCH 10/12] Add cdb_geocoder as a dependency --- server/extension/cdb_geocoder_server.control | 2 +- server/extension/expected/00_install_test.out | 2 ++ server/extension/sql/00_install_test.sql | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/server/extension/cdb_geocoder_server.control b/server/extension/cdb_geocoder_server.control index 0bb778f..310c9a5 100644 --- a/server/extension/cdb_geocoder_server.control +++ b/server/extension/cdb_geocoder_server.control @@ -1,6 +1,6 @@ # cdb geocoder server extension comment = 'CartoDB server geocoder extension' default_version = '0.0.1' -requires = 'plpythonu, schema_triggers, postgis' +requires = 'plpythonu, schema_triggers, postgis, cdb_geocoder' superuser = true schema = cdb_geocoder_server diff --git a/server/extension/expected/00_install_test.out b/server/extension/expected/00_install_test.out index 87cd9ce..b5b8268 100644 --- a/server/extension/expected/00_install_test.out +++ b/server/extension/expected/00_install_test.out @@ -2,5 +2,7 @@ CREATE EXTENSION postgis; CREATE EXTENSION schema_triggers; CREATE EXTENSION plpythonu; +CREATE EXTENSION cartodb; +CREATE EXTENSION cdb_geocoder; -- Install the extension CREATE EXTENSION cdb_geocoder_server; diff --git a/server/extension/sql/00_install_test.sql b/server/extension/sql/00_install_test.sql index 04ee816..33f8454 100644 --- a/server/extension/sql/00_install_test.sql +++ b/server/extension/sql/00_install_test.sql @@ -2,6 +2,8 @@ CREATE EXTENSION postgis; CREATE EXTENSION schema_triggers; CREATE EXTENSION plpythonu; +CREATE EXTENSION cartodb; +CREATE EXTENSION cdb_geocoder; -- Install the extension CREATE EXTENSION cdb_geocoder_server; From 6bdc517a4562f3117da90b6fa61a0cfb895f6665 Mon Sep 17 00:00:00 2001 From: Guido Fioravantti Date: Tue, 10 Nov 2015 11:34:58 +0100 Subject: [PATCH 11/12] Changes geocode_street signature to include city and rename state_province --- server/extension/sql/0.0.1/10_geocoding.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/extension/sql/0.0.1/10_geocoding.sql b/server/extension/sql/0.0.1/10_geocoding.sql index 96e298b..7fdf14b 100644 --- a/server/extension/sql/0.0.1/10_geocoding.sql +++ b/server/extension/sql/0.0.1/10_geocoding.sql @@ -1,12 +1,12 @@ -- Geocodes a street address given a searchtext and a state and/or country -CREATE OR REPLACE FUNCTION geocode_street(searchtext TEXT, state TEXT DEFAULT NULL, country TEXT DEFAULT NULL) +CREATE OR REPLACE FUNCTION geocode_street(searchtext TEXT, city TEXT DEFAULT NULL, state_province TEXT DEFAULT NULL, country TEXT DEFAULT NULL) RETURNS Geometry AS $$ from heremaps import heremapsgeocoder geocoder = heremapsgeocoder.Geocoder(app_id, app_code) - results = geocoder.geocode_address(searchtext=searchtext, state=state, country=country) + 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"]) From 0e9d1451c6dcf09dbb9bfdb84ba227c5bea4d715 Mon Sep 17 00:00:00 2001 From: Guido Fioravantti Date: Tue, 10 Nov 2015 11:36:48 +0100 Subject: [PATCH 12/12] Removes redundant VOLATILE modifier --- server/extension/sql/0.0.1/10_geocoding.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/extension/sql/0.0.1/10_geocoding.sql b/server/extension/sql/0.0.1/10_geocoding.sql index 7fdf14b..70644b8 100644 --- a/server/extension/sql/0.0.1/10_geocoding.sql +++ b/server/extension/sql/0.0.1/10_geocoding.sql @@ -13,4 +13,4 @@ AS $$ point = plpy.execute(plan, [coordinates[0], coordinates[1]], 1)[0] return point['st_setsrid'] -$$ LANGUAGE plpythonu VOLATILE; +$$ LANGUAGE plpythonu;