From: Regina Obe Date: Wed, 26 Dec 2012 13:44:51 +0000 (+0000) Subject: Add add_search_path helper function and call it in install of postgis_tiger_geocoder... X-Git-Tag: 2.1.0beta2~258 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=90f6e38bb7df8704c7de826f5ea3f7f4f3e676dd;p=postgis Add add_search_path helper function and call it in install of postgis_tiger_geocoder to add tiger to search path. Create unpacked script for geocoder so can do CREATE EXTENSION postgis_tiger_geocoder FROM unpackaged; git-svn-id: http://svn.osgeo.org/postgis/trunk@10934 b70326c6-7e19-0410-871a-916f4a2858ee --- diff --git a/extensions/make_unpackaged.sql b/extensions/make_unpackaged.sql index e0e96eabd..b21a24822 100644 --- a/extensions/make_unpackaged.sql +++ b/extensions/make_unpackaged.sql @@ -18,4 +18,14 @@ WHERE d.refclassid = 'pg_catalog.pg_extension'::pg_catalog.regclass AND deptype = 'e' AND e.extname = 'postgis_topology' ORDER BY sqladd; +-- for postgis tiger geocoder +SELECT 'ALTER EXTENSION ' || extname || ' ADD ' || regexp_replace( + regexp_replace(pg_catalog.pg_describe_object(d.classid, d.objid, 0), E'cast from (.*) to (.*)', E'cast\(\\1 as \\2\)'), + E'(.*) for access method (.*)', E'\\1 using \\2') || ';' AS sqladd +FROM pg_catalog.pg_depend AS d +INNER JOIN pg_extension AS e ON (d.refobjid = e.oid) +WHERE d.refclassid = 'pg_catalog.pg_extension'::pg_catalog.regclass +AND deptype = 'e' AND e.extname = 'postgis_tiger_geocoder' +ORDER BY sqladd; + diff --git a/extensions/postgis_extension_helper.sql b/extensions/postgis_extension_helper.sql index d47003a21..4f24a854e 100644 --- a/extensions/postgis_extension_helper.sql +++ b/extensions/postgis_extension_helper.sql @@ -80,3 +80,24 @@ BEGIN END; $$ LANGUAGE plpgsql VOLATILE; + +CREATE OR REPLACE FUNCTION postgis_extension_AddToSearchPath(a_schema_name varchar) +RETURNS text +AS +$$ +DECLARE + var_result text; + var_cur_search_path text; +BEGIN + SELECT reset_val INTO var_cur_search_path FROM pg_settings WHERE name = 'search_path'; + IF var_cur_search_path LIKE '%' || quote_ident(a_schema_name) || '%' THEN + var_result := a_schema_name || ' already in database search_path'; + ELSE + EXECUTE 'ALTER DATABASE ' || quote_ident(current_database()) || ' SET search_path = ' || var_cur_search_path || ', ' || quote_ident(a_schema_name); + var_result := a_schema_name || ' has been added to end of database search_path '; + END IF; + + RETURN var_result; +END +$$ +LANGUAGE 'plpgsql' VOLATILE STRICT; diff --git a/extensions/postgis_extension_helper_uninstall.sql b/extensions/postgis_extension_helper_uninstall.sql index 8f92c6f8e..a2a5faecd 100644 --- a/extensions/postgis_extension_helper_uninstall.sql +++ b/extensions/postgis_extension_helper_uninstall.sql @@ -15,4 +15,5 @@ -- This drops extension helper functions -- and should be called at the end of the extension upgrade file DROP FUNCTION postgis_extension_remove_objects(text, text); -DROP FUNCTION postgis_extension_drop_if_exists(text, text) +DROP FUNCTION postgis_extension_drop_if_exists(text, text); +DROP FUNCTION postgis_extension_AddToSearchPath(varchar); diff --git a/extensions/postgis_tiger_geocoder/Makefile.in b/extensions/postgis_tiger_geocoder/Makefile.in index 7f0b1f345..3d6d19fa4 100644 --- a/extensions/postgis_tiger_geocoder/Makefile.in +++ b/extensions/postgis_tiger_geocoder/Makefile.in @@ -98,12 +98,18 @@ sql_bits/tiger_geocoder.sql.in: sql_bits/norm_addy_create.sql.in \ ../../extras/tiger_geocoder/tiger_2011/geocode/geocode.sql \ ../../extras/tiger_geocoder/tiger_2011/geocode/reverse_geocode.sql \ ../../extras/tiger_geocoder/tiger_2011/geocode/census_tracts_functions.sql \ - ../../extras/tiger_geocoder/tiger_2011/topology/tiger_topology_loader.sql + ../../extras/tiger_geocoder/tiger_2011/topology/tiger_topology_loader.sql \ + ../postgis_extension_helper.sql \ + sql_bits/add_search_path.sql \ + ../postgis_extension_helper_uninstall.sql cat $^ > $@ sql_bits/tiger_geocoder.sql: sql_bits/tiger_geocoder.sql.in sed -e 's/BEGIN;//g' -e 's/COMMIT;//g' -e '/^CREATE SCHEMA/d;' $< > $@ +sql_bits/add_search_path.sql: sql_bits/add_search_path.sql.in + cp $< $@ + ../../doc/tiger_geocoder_comments.sql: $(MAKE) -C ../../doc comments diff --git a/extensions/postgis_tiger_geocoder/sql_bits/add_search_path.sql.in b/extensions/postgis_tiger_geocoder/sql_bits/add_search_path.sql.in new file mode 100644 index 000000000..680333f79 --- /dev/null +++ b/extensions/postgis_tiger_geocoder/sql_bits/add_search_path.sql.in @@ -0,0 +1,19 @@ +-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +-- +-- $Id$ +---- +-- PostGIS - Spatial Types for PostgreSQL +-- http://postgis.net +-- +-- Copyright (C) 2012 Regina Obe +-- +-- This is free software; you can redistribute and/or modify it under +-- the terms of the GNU General Public Licence. See the COPYING file. +-- +-- Author: Regina Obe +-- +-- This adds the tiger schema to search path +-- Functions in tiger are not schema qualified +-- so this is needed for them to work + +SELECT postgis_extension_AddToSearchPath('tiger'); diff --git a/extensions/postgis_tiger_geocoder/sql_bits/tiger_geocoder--unpackaged.sql.in b/extensions/postgis_tiger_geocoder/sql_bits/tiger_geocoder--unpackaged.sql.in index e69de29bb..8063a8cb8 100644 --- a/extensions/postgis_tiger_geocoder/sql_bits/tiger_geocoder--unpackaged.sql.in +++ b/extensions/postgis_tiger_geocoder/sql_bits/tiger_geocoder--unpackaged.sql.in @@ -0,0 +1,87 @@ +ALTER EXTENSION postgis_tiger_geocoder ADD function count_words(character varying); +ALTER EXTENSION postgis_tiger_geocoder ADD function create_census_base_tables(); +ALTER EXTENSION postgis_tiger_geocoder ADD function cull_null(character varying); +ALTER EXTENSION postgis_tiger_geocoder ADD function diff_zip(character varying,character varying); +ALTER EXTENSION postgis_tiger_geocoder ADD function drop_dupe_featnames_generate_script(); +ALTER EXTENSION postgis_tiger_geocoder ADD function drop_indexes_generate_script(text); +ALTER EXTENSION postgis_tiger_geocoder ADD function drop_nation_tables_generate_script(text); +ALTER EXTENSION postgis_tiger_geocoder ADD function drop_state_tables_generate_script(text,text); +ALTER EXTENSION postgis_tiger_geocoder ADD function end_soundex(character varying); +ALTER EXTENSION postgis_tiger_geocoder ADD function geocode(character varying,integer,geometry); +ALTER EXTENSION postgis_tiger_geocoder ADD function geocode(norm_addy,integer,geometry); +ALTER EXTENSION postgis_tiger_geocoder ADD function geocode_address(norm_addy,integer,geometry); +ALTER EXTENSION postgis_tiger_geocoder ADD function geocode_intersection(text,text,text,text,text,integer); +ALTER EXTENSION postgis_tiger_geocoder ADD function geocode_location(norm_addy,geometry); +ALTER EXTENSION postgis_tiger_geocoder ADD function get_geocode_setting(text); +ALTER EXTENSION postgis_tiger_geocoder ADD function get_last_words(character varying,integer); +ALTER EXTENSION postgis_tiger_geocoder ADD function get_tract(geometry,text); +ALTER EXTENSION postgis_tiger_geocoder ADD function greatest_hn(character varying,character varying); +ALTER EXTENSION postgis_tiger_geocoder ADD function includes_address(integer,integer,integer,integer,integer); +ALTER EXTENSION postgis_tiger_geocoder ADD function install_geocode_settings(); +ALTER EXTENSION postgis_tiger_geocoder ADD function install_missing_indexes(); +ALTER EXTENSION postgis_tiger_geocoder ADD function interpolate_from_address(integer,character varying,character varying,geometry,character varying,double precision); +ALTER EXTENSION postgis_tiger_geocoder ADD function is_pretype(text); +ALTER EXTENSION postgis_tiger_geocoder ADD function least_hn(character varying,character varying); +ALTER EXTENSION postgis_tiger_geocoder ADD function levenshtein_ignore_case(character varying,character varying); +ALTER EXTENSION postgis_tiger_geocoder ADD function loader_generate_census_script(text[],text); +ALTER EXTENSION postgis_tiger_geocoder ADD function loader_generate_nation_script(text); +ALTER EXTENSION postgis_tiger_geocoder ADD function loader_generate_script(text[],text); +ALTER EXTENSION postgis_tiger_geocoder ADD function loader_load_staged_data(text,text); +ALTER EXTENSION postgis_tiger_geocoder ADD function loader_load_staged_data(text,text,text[]); +ALTER EXTENSION postgis_tiger_geocoder ADD function loader_macro_replace(text,text[],text[]); +ALTER EXTENSION postgis_tiger_geocoder ADD function location_extract(character varying,character varying); +ALTER EXTENSION postgis_tiger_geocoder ADD function location_extract_countysub_exact(character varying,character varying); +ALTER EXTENSION postgis_tiger_geocoder ADD function location_extract_countysub_fuzzy(character varying,character varying); +ALTER EXTENSION postgis_tiger_geocoder ADD function location_extract_place_exact(character varying,character varying); +ALTER EXTENSION postgis_tiger_geocoder ADD function location_extract_place_fuzzy(character varying,character varying); +ALTER EXTENSION postgis_tiger_geocoder ADD function missing_indexes_generate_script(); +ALTER EXTENSION postgis_tiger_geocoder ADD function normalize_address(character varying); +ALTER EXTENSION postgis_tiger_geocoder ADD function nullable_levenshtein(character varying,character varying); +ALTER EXTENSION postgis_tiger_geocoder ADD function numeric_streets_equal(character varying,character varying); +ALTER EXTENSION postgis_tiger_geocoder ADD function pprint_addy(norm_addy); +ALTER EXTENSION postgis_tiger_geocoder ADD function rate_attributes(character varying,character varying,character varying,character varying,character varying,character varying,character varying,character varying,character varying); +ALTER EXTENSION postgis_tiger_geocoder ADD function rate_attributes(character varying,character varying,character varying,character varying,character varying,character varying,character varying,character varying,character varying,character varying,character varying); +ALTER EXTENSION postgis_tiger_geocoder ADD function reverse_geocode(geometry,boolean); +ALTER EXTENSION postgis_tiger_geocoder ADD function set_geocode_setting(text,text); +ALTER EXTENSION postgis_tiger_geocoder ADD function setsearchpathforinstall(character varying); +ALTER EXTENSION postgis_tiger_geocoder ADD function state_extract(character varying); +ALTER EXTENSION postgis_tiger_geocoder ADD function topology_load_tiger(character varying,character varying,character varying); +ALTER EXTENSION postgis_tiger_geocoder ADD function utmzone(geometry); +ALTER EXTENSION postgis_tiger_geocoder ADD function zip_range(text,integer,integer); +ALTER EXTENSION postgis_tiger_geocoder ADD sequence addr_gid_seq; +ALTER EXTENSION postgis_tiger_geocoder ADD sequence addrfeat_gid_seq; +ALTER EXTENSION postgis_tiger_geocoder ADD sequence county_gid_seq; +ALTER EXTENSION postgis_tiger_geocoder ADD sequence cousub_gid_seq; +ALTER EXTENSION postgis_tiger_geocoder ADD sequence edges_gid_seq; +ALTER EXTENSION postgis_tiger_geocoder ADD sequence faces_gid_seq; +ALTER EXTENSION postgis_tiger_geocoder ADD sequence featnames_gid_seq; +ALTER EXTENSION postgis_tiger_geocoder ADD sequence place_gid_seq; +ALTER EXTENSION postgis_tiger_geocoder ADD sequence state_gid_seq; +ALTER EXTENSION postgis_tiger_geocoder ADD sequence zcta5_gid_seq; +ALTER EXTENSION postgis_tiger_geocoder ADD table addr; +ALTER EXTENSION postgis_tiger_geocoder ADD table addrfeat; +ALTER EXTENSION postgis_tiger_geocoder ADD table county; +ALTER EXTENSION postgis_tiger_geocoder ADD table county_lookup; +ALTER EXTENSION postgis_tiger_geocoder ADD table countysub_lookup; +ALTER EXTENSION postgis_tiger_geocoder ADD table cousub; +ALTER EXTENSION postgis_tiger_geocoder ADD table direction_lookup; +ALTER EXTENSION postgis_tiger_geocoder ADD table edges; +ALTER EXTENSION postgis_tiger_geocoder ADD table faces; +ALTER EXTENSION postgis_tiger_geocoder ADD table featnames; +ALTER EXTENSION postgis_tiger_geocoder ADD table geocode_settings; +ALTER EXTENSION postgis_tiger_geocoder ADD table loader_lookuptables; +ALTER EXTENSION postgis_tiger_geocoder ADD table loader_platform; +ALTER EXTENSION postgis_tiger_geocoder ADD table loader_variables; +ALTER EXTENSION postgis_tiger_geocoder ADD table place; +ALTER EXTENSION postgis_tiger_geocoder ADD table place_lookup; +ALTER EXTENSION postgis_tiger_geocoder ADD table secondary_unit_lookup; +ALTER EXTENSION postgis_tiger_geocoder ADD table state; +ALTER EXTENSION postgis_tiger_geocoder ADD table state_lookup; +ALTER EXTENSION postgis_tiger_geocoder ADD table street_type_lookup; +ALTER EXTENSION postgis_tiger_geocoder ADD table zcta5; +ALTER EXTENSION postgis_tiger_geocoder ADD table zip_lookup; +ALTER EXTENSION postgis_tiger_geocoder ADD table zip_lookup_all; +ALTER EXTENSION postgis_tiger_geocoder ADD table zip_lookup_base; +ALTER EXTENSION postgis_tiger_geocoder ADD table zip_state; +ALTER EXTENSION postgis_tiger_geocoder ADD table zip_state_loc; +ALTER EXTENSION postgis_tiger_geocoder ADD type norm_addy; \ No newline at end of file