Adds pending build instructions + fixed tests
This commit is contained in:
@@ -6,6 +6,7 @@ CREATE TYPE geocode_namedplace_v1 AS (q TEXT, geom GEOMETRY, success BOOLEAN);
|
|||||||
CREATE TYPE geocode_postalint_country_v1 AS (q TEXT, c TEXT, geom GEOMETRY, success BOOLEAN);
|
CREATE TYPE geocode_postalint_country_v1 AS (q TEXT, c TEXT, geom GEOMETRY, success BOOLEAN);
|
||||||
CREATE TYPE geocode_namedplace_country_v1 AS (q TEXT, c TEXT, geom GEOMETRY, success BOOLEAN);
|
CREATE TYPE geocode_namedplace_country_v1 AS (q TEXT, c TEXT, geom GEOMETRY, success BOOLEAN);
|
||||||
CREATE TYPE available_services_v1 AS (q text, adm0_a3 text, postal_code_points boolean, postal_code_polygons boolean);
|
CREATE TYPE available_services_v1 AS (q text, adm0_a3 text, postal_code_points boolean, postal_code_polygons boolean);
|
||||||
|
CREATE TYPE geocode_place_country_iso_v1 AS (q text, c text, iso3 text, geom geometry, success boolean);
|
||||||
|
|
||||||
-- Public API functions --
|
-- Public API functions --
|
||||||
--- Geocoding function ---
|
--- Geocoding function ---
|
||||||
@@ -391,8 +392,8 @@ CREATE SEQUENCE available_services_cartodb_id_seq
|
|||||||
NO MAXVALUE
|
NO MAXVALUE
|
||||||
CACHE 1;
|
CACHE 1;
|
||||||
|
|
||||||
ALTER SEQUENCE available_services_cartodb_id_seq_cartodb_id_seq OWNED BY available_services.cartodb_id;
|
ALTER SEQUENCE available_services_cartodb_id_seq OWNED BY available_services.cartodb_id;
|
||||||
ALTER TABLE ONLY available_services ALTER COLUMN cartodb_id SET DEFAULT nextval('available_services_cartodb_id_seq_cartodb_id_seq'::regclass);
|
ALTER TABLE ONLY available_services ALTER COLUMN cartodb_id SET DEFAULT nextval('available_services_cartodb_id_seq'::regclass);
|
||||||
|
|
||||||
|
|
||||||
ALTER TABLE ONLY available_services
|
ALTER TABLE ONLY available_services
|
||||||
@@ -409,3 +410,114 @@ CREATE INDEX available_services_the_geom_webmercator_idx ON available_services U
|
|||||||
CREATE TRIGGER track_updates AFTER INSERT OR DELETE OR UPDATE OR TRUNCATE ON available_services FOR EACH STATEMENT EXECUTE PROCEDURE cartodb.cdb_tablemetadata_trigger();
|
CREATE TRIGGER track_updates AFTER INSERT OR DELETE OR UPDATE OR TRUNCATE ON available_services FOR EACH STATEMENT EXECUTE PROCEDURE cartodb.cdb_tablemetadata_trigger();
|
||||||
CREATE TRIGGER update_the_geom_webmercator_trigger BEFORE INSERT OR UPDATE OF the_geom ON available_services FOR EACH ROW EXECUTE PROCEDURE cartodb._cdb_update_the_geom_webmercator();
|
CREATE TRIGGER update_the_geom_webmercator_trigger BEFORE INSERT OR UPDATE OF the_geom ON available_services FOR EACH ROW EXECUTE PROCEDURE cartodb._cdb_update_the_geom_webmercator();
|
||||||
CREATE TRIGGER update_updated_at_trigger BEFORE UPDATE ON available_services FOR EACH ROW EXECUTE PROCEDURE cartodb._cdb_update_updated_at();
|
CREATE TRIGGER update_updated_at_trigger BEFORE UPDATE ON available_services FOR EACH ROW EXECUTE PROCEDURE cartodb._cdb_update_updated_at();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE country_decoder (
|
||||||
|
name text,
|
||||||
|
nativename text,
|
||||||
|
tld text,
|
||||||
|
iso2 text,
|
||||||
|
ccn3 text,
|
||||||
|
iso3 text,
|
||||||
|
currency text,
|
||||||
|
callingcode text,
|
||||||
|
capital text,
|
||||||
|
altspellings text,
|
||||||
|
relevance text,
|
||||||
|
region text,
|
||||||
|
subregion text,
|
||||||
|
language text,
|
||||||
|
languagescodes text,
|
||||||
|
translations text,
|
||||||
|
population text,
|
||||||
|
latlng text,
|
||||||
|
demonym text,
|
||||||
|
borders text,
|
||||||
|
the_geom geometry(Geometry,4326),
|
||||||
|
cartodb_id integer NOT NULL,
|
||||||
|
created_at timestamp with time zone DEFAULT now() NOT NULL,
|
||||||
|
updated_at timestamp with time zone DEFAULT now() NOT NULL,
|
||||||
|
the_geom_webmercator geometry(Geometry,3857),
|
||||||
|
synbu text[],
|
||||||
|
synonyms text[],
|
||||||
|
users double precision
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE SEQUENCE country_decoder_cartodb_id_seq
|
||||||
|
START WITH 1
|
||||||
|
INCREMENT BY 1
|
||||||
|
NO MINVALUE
|
||||||
|
NO MAXVALUE
|
||||||
|
CACHE 1;
|
||||||
|
|
||||||
|
ALTER SEQUENCE available_services_cartodb_id_seq OWNED BY country_decoder.cartodb_id;
|
||||||
|
ALTER TABLE ONLY country_decoder ALTER COLUMN cartodb_id SET DEFAULT nextval('country_decoder_cartodb_id_seq'::regclass);
|
||||||
|
|
||||||
|
|
||||||
|
ALTER TABLE ONLY country_decoder
|
||||||
|
ADD CONSTRAINT country_decoder_cartodb_id_key UNIQUE (cartodb_id);
|
||||||
|
ALTER TABLE ONLY country_decoder
|
||||||
|
ADD CONSTRAINT country_decoder_pkey PRIMARY KEY (cartodb_id);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CREATE INDEX country_decoder_the_geom_idx ON country_decoder USING gist (the_geom);
|
||||||
|
CREATE INDEX country_decoder_the_geom_webmercator_idx ON country_decoder USING gist (the_geom_webmercator);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TRIGGER track_updates AFTER INSERT OR DELETE OR UPDATE OR TRUNCATE ON country_decoder FOR EACH STATEMENT EXECUTE PROCEDURE cartodb.cdb_tablemetadata_trigger();
|
||||||
|
CREATE TRIGGER update_the_geom_webmercator_trigger BEFORE INSERT OR UPDATE OF the_geom ON country_decoder FOR EACH ROW EXECUTE PROCEDURE cartodb._cdb_update_the_geom_webmercator();
|
||||||
|
CREATE TRIGGER update_updated_at_trigger BEFORE UPDATE ON country_decoder FOR EACH ROW EXECUTE PROCEDURE cartodb._cdb_update_updated_at();
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE admin0_synonyms (
|
||||||
|
name text,
|
||||||
|
rank double precision,
|
||||||
|
created_at timestamp with time zone DEFAULT now() NOT NULL,
|
||||||
|
updated_at timestamp with time zone DEFAULT now() NOT NULL,
|
||||||
|
the_geom geometry(Geometry,4326),
|
||||||
|
the_geom_webmercator geometry(Geometry,3857),
|
||||||
|
cartodb_id integer NOT NULL,
|
||||||
|
adm0_a3 text,
|
||||||
|
name_ text
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE SEQUENCE admin0_synonyms_cartodb_id_seq
|
||||||
|
START WITH 1
|
||||||
|
INCREMENT BY 1
|
||||||
|
NO MINVALUE
|
||||||
|
NO MAXVALUE
|
||||||
|
CACHE 1;
|
||||||
|
ALTER SEQUENCE admin0_synonyms_cartodb_id_seq OWNED BY admin0_synonyms.cartodb_id;
|
||||||
|
ALTER TABLE ONLY admin0_synonyms ALTER COLUMN cartodb_id SET DEFAULT nextval('admin0_synonyms_cartodb_id_seq'::regclass);
|
||||||
|
|
||||||
|
|
||||||
|
ALTER TABLE ONLY admin0_synonyms
|
||||||
|
ADD CONSTRAINT admin0_synonyms_cartodb_id_key UNIQUE (cartodb_id);
|
||||||
|
ALTER TABLE ONLY admin0_synonyms
|
||||||
|
ADD CONSTRAINT admin0_synonyms_pkey PRIMARY KEY (cartodb_id);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE INDEX admin0_synonyms_the_geom_idx ON admin0_synonyms USING gist (the_geom);
|
||||||
|
CREATE INDEX admin0_synonyms_the_geom_webmercator_idx ON admin0_synonyms USING gist (the_geom_webmercator);
|
||||||
|
CREATE INDEX idx_admin0_synonyms_nam ON admin0_synonyms USING btree (name);
|
||||||
|
CREATE INDEX idx_admin0_synonyms_name ON admin0_synonyms USING btree (lower(regexp_replace(name, '\W+'::text, ''::text)));
|
||||||
|
CREATE INDEX idx_admin0_synonyms_name_ ON admin0_synonyms USING btree (name_);
|
||||||
|
CREATE INDEX idx_admin0_synonyms_name_patt ON admin0_synonyms USING btree (name_ text_pattern_ops);
|
||||||
|
CREATE INDEX idx_admin0_synonyms_name_rank ON admin0_synonyms USING btree (name_, rank);
|
||||||
|
CREATE INDEX idx_admin0_synonyms_rank ON admin0_synonyms USING btree (rank);
|
||||||
|
|
||||||
|
-- create trigger function. used in both admin0 and admin1 synonym tables
|
||||||
|
CREATE OR REPLACE FUNCTION alpha_numeric_identifiers() RETURNS trigger AS $alpha_numeric_identifiers$
|
||||||
|
BEGIN
|
||||||
|
NEW.name_ := lower(regexp_replace(NEW.name, '[^a-zA-Z\u00C0-\u00ff]+', '', 'g'));
|
||||||
|
RETURN NEW;
|
||||||
|
END;
|
||||||
|
$alpha_numeric_identifiers$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
CREATE TRIGGER admin0_synonyms_name_update BEFORE INSERT OR UPDATE OF name ON admin0_synonyms FOR EACH ROW EXECUTE PROCEDURE alpha_numeric_identifiers();
|
||||||
|
CREATE TRIGGER track_updates AFTER INSERT OR DELETE OR UPDATE OR TRUNCATE ON admin0_synonyms FOR EACH STATEMENT EXECUTE PROCEDURE cartodb.cdb_tablemetadata_trigger();
|
||||||
|
CREATE TRIGGER update_the_geom_webmercator_trigger BEFORE INSERT OR UPDATE OF the_geom ON admin0_synonyms FOR EACH ROW EXECUTE PROCEDURE cartodb._cdb_update_the_geom_webmercator();
|
||||||
|
CREATE TRIGGER update_updated_at_trigger BEFORE UPDATE ON admin0_synonyms FOR EACH ROW EXECUTE PROCEDURE cartodb._cdb_update_updated_at();
|
||||||
|
|||||||
@@ -3,4 +3,106 @@ CREATE EXTENSION schema_triggers;
|
|||||||
CREATE EXTENSION plpythonu;
|
CREATE EXTENSION plpythonu;
|
||||||
CREATE EXTENSION cartodb;
|
CREATE EXTENSION cartodb;
|
||||||
CREATE EXTENSION cdb_geocoder_postalcode;
|
CREATE EXTENSION cdb_geocoder_postalcode;
|
||||||
-- PENDING
|
SELECT (geocode_postalcode_polygons(Array['03204'], Array['Spain'])).*;
|
||||||
|
q | c | geom | success
|
||||||
|
-------+-------+------+---------
|
||||||
|
03204 | Spain | | f
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT (geocode_postalcode_polygons(Array['03204'], 'ESP')).*;
|
||||||
|
q | geom | success
|
||||||
|
-------+------+---------
|
||||||
|
03204 | | f
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT (geocode_postalcode_polygons(Array['03204'])).*;
|
||||||
|
q | geom | success
|
||||||
|
-------+------+---------
|
||||||
|
03204 | | f
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT (geocode_postalcode_points(Array['03204'], 'Spain')).*;
|
||||||
|
q | geom | success
|
||||||
|
-------+------+---------
|
||||||
|
03204 | | f
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT (geocode_postalcode_points('{03204}', 'Spain')).*;
|
||||||
|
q | geom | success
|
||||||
|
-------+------+---------
|
||||||
|
03204 | | f
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT (geocode_postalcode_points(Array['03204'])).*;
|
||||||
|
q | geom | success
|
||||||
|
-------+------+---------
|
||||||
|
03204 | | f
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT (geocode_postalcode_points(Array['03204'], Array['Spain'])).*;
|
||||||
|
q | c | iso3 | geom | success
|
||||||
|
-------+-------+------+------+---------
|
||||||
|
03204 | Spain | | | f
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT geocode_greatbritain_outward('YO1 721');
|
||||||
|
geocode_greatbritain_outward
|
||||||
|
------------------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT (admin0_available_services(Array['Spain'])).*;
|
||||||
|
q | adm0_a3 | postal_code_points | postal_code_polygons
|
||||||
|
-------+---------+--------------------+----------------------
|
||||||
|
Spain | | |
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
-- Mock the varnish invalidation function
|
||||||
|
CREATE OR REPLACE FUNCTION public.cdb_invalidate_varnish(table_name text) RETURNS void AS $$
|
||||||
|
BEGIN
|
||||||
|
RETURN;
|
||||||
|
END
|
||||||
|
$$
|
||||||
|
LANGUAGE plpgsql;
|
||||||
|
-- Insert mock source data
|
||||||
|
INSERT INTO global_postal_code_points (the_geom, iso3, postal_code, postal_code_num) VALUES (
|
||||||
|
'0101000020E61000000000000000E040408036B47414764840',
|
||||||
|
'ESP',
|
||||||
|
'03204',
|
||||||
|
3204
|
||||||
|
);
|
||||||
|
INSERT INTO global_postal_code_polygons (the_geom, iso3, postal_code, postal_code_num) VALUES (
|
||||||
|
'0106000020E610000001000000010300000001000000040000000000000000E000C01F383D7839B740400000000000E000C0AA3C0EDE220F3B4000000000004812404FB7FCCD04893D400000000000E000C01F383D7839B74040',
|
||||||
|
'ESP',
|
||||||
|
'03204',
|
||||||
|
3204
|
||||||
|
);
|
||||||
|
INSERT INTO country_decoder (iso3, synonyms) VALUES (
|
||||||
|
'ESP',
|
||||||
|
Array['spain', 'Spain', 'ESP']
|
||||||
|
);
|
||||||
|
INSERT INTO available_services (adm0_a3, admin0, postal_code_points, postal_code_polygons) VALUES (
|
||||||
|
'ESP',
|
||||||
|
't',
|
||||||
|
't',
|
||||||
|
't'
|
||||||
|
);
|
||||||
|
INSERT INTO admin0_synonyms (adm0_a3, name, name_, rank) VALUES (
|
||||||
|
'ESP',
|
||||||
|
'Spain',
|
||||||
|
'spain',
|
||||||
|
3
|
||||||
|
);
|
||||||
|
INSERT INTO admin0_synonyms (adm0_a3, name, name_, rank) VALUES (
|
||||||
|
'ESP',
|
||||||
|
'ESP',
|
||||||
|
'esp',
|
||||||
|
4
|
||||||
|
);
|
||||||
|
-- Check that the geocoding function is callable, should return success = true
|
||||||
|
SELECT (geocode_postalcode_polygons(Array['03204'], Array['Spain'])).geom;
|
||||||
|
geom
|
||||||
|
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
0106000020E610000001000000010300000001000000040000000000000000E000C01F383D7839B740400000000000E000C0AA3C0EDE220F3B4000000000004812404FB7FCCD04893D400000000000E000C01F383D7839B74040
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
|||||||
@@ -4,4 +4,64 @@ CREATE EXTENSION plpythonu;
|
|||||||
CREATE EXTENSION cartodb;
|
CREATE EXTENSION cartodb;
|
||||||
CREATE EXTENSION cdb_geocoder_postalcode;
|
CREATE EXTENSION cdb_geocoder_postalcode;
|
||||||
|
|
||||||
-- PENDING
|
SELECT (geocode_postalcode_polygons(Array['03204'], Array['Spain'])).*;
|
||||||
|
SELECT (geocode_postalcode_polygons(Array['03204'], 'ESP')).*;
|
||||||
|
SELECT (geocode_postalcode_polygons(Array['03204'])).*;
|
||||||
|
SELECT (geocode_postalcode_points(Array['03204'], 'Spain')).*;
|
||||||
|
SELECT (geocode_postalcode_points('{03204}', 'Spain')).*;
|
||||||
|
SELECT (geocode_postalcode_points(Array['03204'])).*;
|
||||||
|
SELECT (geocode_postalcode_points(Array['03204'], Array['Spain'])).*;
|
||||||
|
SELECT geocode_greatbritain_outward('YO1 721');
|
||||||
|
SELECT (admin0_available_services(Array['Spain'])).*;
|
||||||
|
-- Mock the varnish invalidation function
|
||||||
|
CREATE OR REPLACE FUNCTION public.cdb_invalidate_varnish(table_name text) RETURNS void AS $$
|
||||||
|
BEGIN
|
||||||
|
RETURN;
|
||||||
|
END
|
||||||
|
$$
|
||||||
|
LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
-- Insert mock source data
|
||||||
|
INSERT INTO global_postal_code_points (the_geom, iso3, postal_code, postal_code_num) VALUES (
|
||||||
|
'0101000020E61000000000000000E040408036B47414764840',
|
||||||
|
'ESP',
|
||||||
|
'03204',
|
||||||
|
3204
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO global_postal_code_polygons (the_geom, iso3, postal_code, postal_code_num) VALUES (
|
||||||
|
'0106000020E610000001000000010300000001000000040000000000000000E000C01F383D7839B740400000000000E000C0AA3C0EDE220F3B4000000000004812404FB7FCCD04893D400000000000E000C01F383D7839B74040',
|
||||||
|
'ESP',
|
||||||
|
'03204',
|
||||||
|
3204
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO country_decoder (iso3, synonyms) VALUES (
|
||||||
|
'ESP',
|
||||||
|
Array['spain', 'Spain', 'ESP']
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO available_services (adm0_a3, admin0, postal_code_points, postal_code_polygons) VALUES (
|
||||||
|
'ESP',
|
||||||
|
't',
|
||||||
|
't',
|
||||||
|
't'
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO admin0_synonyms (adm0_a3, name, name_, rank) VALUES (
|
||||||
|
'ESP',
|
||||||
|
'Spain',
|
||||||
|
'spain',
|
||||||
|
3
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO admin0_synonyms (adm0_a3, name, name_, rank) VALUES (
|
||||||
|
'ESP',
|
||||||
|
'ESP',
|
||||||
|
'esp',
|
||||||
|
4
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Check that the geocoding function is callable, should return success = true
|
||||||
|
SELECT (geocode_postalcode_polygons(Array['03204'], Array['Spain'])).geom;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user