remove table defintions, stub in tests

This commit is contained in:
John Krauss 2016-09-29 20:53:12 +00:00
parent 48221fc358
commit 3602aab804
3 changed files with 60 additions and 124 deletions

View File

@ -206,16 +206,16 @@ $$ LANGUAGE plpgsql;
-- Create a function that always returns the first non-NULL item
CREATE OR REPLACE FUNCTION public.first_agg ( anyelement, anyelement )
CREATE OR REPLACE FUNCTION cdb_observatory.first_agg ( anyelement, anyelement )
RETURNS anyelement LANGUAGE SQL IMMUTABLE STRICT AS $$
SELECT $1;
$$;
DROP AGGREGATE IF EXISTS public.FIRST (anyelement);
DROP AGGREGATE IF EXISTS cdb_observatory.FIRST (anyelement);
-- And then wrap an aggregate around it
CREATE AGGREGATE public.FIRST (
sfunc = public.first_agg,
CREATE AGGREGATE cdb_observatory.FIRST (
sfunc = cdb_observatory.first_agg,
basetype = anyelement,
stype = anyelement
);

View File

@ -121,9 +121,9 @@ BEGIN
END
$$ LANGUAGE plpgsql;
DROP FUNCTION cdb_observatory.OBS_GetAvailableNumerators(
bounds GEOMETRY, filter_tags TEXT[], denom_id TEXT, geom_id TEXT, timespan TEXT
);
-- Functions the interface works from to identify available numerators,
-- denominators, geometries, and timespans
CREATE OR REPLACE FUNCTION cdb_observatory.OBS_GetAvailableNumerators(
bounds GEOMETRY,
filter_tags TEXT[] DEFAULT NULL,
@ -164,7 +164,7 @@ BEGIN
$1 = ANY(denoms) valid_denom,
$2 = ANY(geoms) valid_geom,
$3 = ANY(timespans) valid_timespan
FROM obs_meta_numer
FROM observatory.obs_meta_numer
WHERE st_intersects(the_geom, $5)
AND (numer_tags ?& $4 OR CARDINALITY($4) = 0)
$string$
@ -173,21 +173,6 @@ BEGIN
END
$$ LANGUAGE plpgsql;
SELECT * FROM cdb_observatory.OBS_GetAvailableNumerators(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
NULL, 'us.census.acs.B01003001', 'us.census.tiger.census_tract', ''
) where valid_denom IS true and valid_geom IS true;
SELECT * FROM cdb_observatory.OBS_GetAvailableNumerators(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
ARRAY['unit/tags.money'], '', '', ''
);
-- DENOMS
DROP FUNCTION cdb_observatory.OBS_GetAvailableDenominators(
bounds GEOMETRY, filter_tags TEXT[], numer_id TEXT, geom_id TEXT, timespan TEXT
);
CREATE OR REPLACE FUNCTION cdb_observatory.OBS_GetAvailableDenominators(
bounds GEOMETRY,
filter_tags TEXT[] DEFAULT NULL,
@ -228,7 +213,7 @@ BEGIN
$1 = ANY(numers) valid_numer,
$2 = ANY(geoms) valid_geom,
$3 = ANY(timespans) valid_timespan
FROM obs_meta_denom
FROM observatory.obs_meta_denom
WHERE st_intersects(the_geom, $5)
AND (denom_tags ?& $4 OR CARDINALITY($4) = 0)
$string$
@ -237,15 +222,6 @@ BEGIN
END
$$ LANGUAGE plpgsql;
SELECT * FROM cdb_observatory.OBS_GetAvailableDenominators(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
NULL, 'us.census.acs.B03002006', 'us.census.tiger.census_tract', ''
) where valid_numer IS true and valid_geom IS true;
--- GEOMS
DROP FUNCTION cdb_observatory.OBS_GetAvailableGeometries(
bounds GEOMETRY, filter_tags TEXT[], numer_id TEXT, denom_id TEXT, timespan TEXT
);
CREATE OR REPLACE FUNCTION cdb_observatory.OBS_GetAvailableGeometries(
bounds GEOMETRY,
filter_tags TEXT[] DEFAULT NULL,
@ -280,7 +256,7 @@ BEGIN
$1 = ANY(numers) valid_numer,
$2 = ANY(denoms) valid_denom,
$3 = ANY(timespans) valid_timespan
FROM obs_meta_geom
FROM observatory.obs_meta_geom
WHERE st_intersects(the_geom, $5)
AND (geom_tags ?& $4 OR CARDINALITY($4) = 0)
$string$
@ -289,15 +265,6 @@ BEGIN
END
$$ LANGUAGE plpgsql;
SELECT * FROM cdb_observatory.OBS_GetAvailableGeometries(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
NULL, 'us.census.acs.B03002006', 'us.census.acs.B01003001', ''
) where valid_numer IS true and valid_denom IS true;
-- TIMESPANS
DROP FUNCTION cdb_observatory.OBS_GetAvailableTimespans(
bounds GEOMETRY, filter_tags TEXT[], numer_id TEXT, denom_id TEXT, geom_id TEXT
);
CREATE OR REPLACE FUNCTION cdb_observatory.OBS_GetAvailableTimespans(
bounds GEOMETRY,
filter_tags TEXT[] DEFAULT NULL,
@ -334,7 +301,7 @@ BEGIN
$2 = ANY(denoms) valid_denom,
$3 = ANY(geoms) valid_geom_id,
NULL::JSONB stats
FROM obs_meta_timespan
FROM observatory.obs_meta_timespan
WHERE st_intersects(the_geom, $5)
AND (timespan_tags ?& $4 OR CARDINALITY($4) = 0)
$string$
@ -342,83 +309,3 @@ BEGIN
RETURN;
END
$$ LANGUAGE plpgsql;
SELECT * FROM cdb_observatory.OBS_GetAvailableTimespans(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
NULL, 'us.census.acs.B03002006', 'us.census.acs.B01003001', 'us.census.tiger.census_tract'
) where valid_numer IS true and valid_denom IS true AND valid_geom IS true;
-- notes: add the_geom index to obs_meta
-- change the_geom type to geometry(geometery, 4326)
DROP TABLE IF EXISTS obs_meta_numer;
CREATE TABLE obs_meta_numer AS
SELECT numer_id::TEXT,
FIRST(numer_name)::TEXT numer_name,
FIRST(numer_description)::TEXT numer_description,
FIRST(numer_tags)::JSONB numer_tags,
FIRST(numer_weight)::NUMERIC numer_weight,
FIRST(numer_extra)::JSONB numer_extra, -- cannot include ct_extra because it depends on table
FIRST(numer_type)::TEXT numer_type,
ARRAY_AGG(DISTINCT denom_id)::TEXT[] denoms,
ARRAY_AGG(DISTINCT geom_id)::TEXT[] geoms,
ARRAY_AGG(DISTINCT numer_timespan)::TEXT[] timespans,
ST_Union(DISTINCT ST_SetSRID(the_geom, 4326)) the_geom
FROM observatory.obs_meta
GROUP BY numer_id;
CREATE INDEX ON obs_meta_numer USING GIST (the_geom);
DROP TABLE IF EXISTS obs_meta_denom;
CREATE TABLE obs_meta_denom AS
SELECT denom_id::TEXT,
FIRST(denom_name)::TEXT denom_name,
FIRST(denom_description)::TEXT denom_description,
NULL::JSONB denom_tags,
FIRST(denom_weight)::NUMERIC denom_weight,
'denominator'::TEXT reltype,
FIRST(denom_extra)::JSONB denom_extra,
FIRST(denom_type)::TEXT denom_type,
ARRAY_AGG(DISTINCT numer_id)::TEXT[] numers,
ARRAY_AGG(DISTINCT geom_id)::TEXT[] geoms,
ARRAY_AGG(DISTINCT numer_timespan)::TEXT[] timespans,
ST_Union(DISTINCT ST_SetSRID(the_geom, 4326)) the_geom
FROM observatory.obs_meta
GROUP BY denom_id;
CREATE INDEX ON obs_meta_denom USING GIST (the_geom);
DROP TABLE IF EXISTS obs_meta_geom;
CREATE TABLE obs_meta_geom AS
SELECT geom_id::TEXT,
FIRST(geom_name)::TEXT geom_name,
FIRST(geom_description)::TEXT geom_description,
NULL::JSONB geom_tags,
FIRST(geom_weight)::NUMERIC geom_weight,
FIRST(geom_extra)::JSONB geom_extra,
FIRST(geom_type)::TEXT geom_type,
ST_SetSRID(FIRST(the_geom), 4326)::GEOMETRY(GEOMETRY, 4326) the_geom,
NULL::raster summary_geom,
ARRAY_AGG(DISTINCT numer_id)::TEXT[] numers,
ARRAY_AGG(DISTINCT denom_id)::TEXT[] denoms,
ARRAY_AGG(DISTINCT numer_timespan)::TEXT[] timespans
FROM observatory.obs_meta
GROUP BY geom_id;
CREATE INDEX ON obs_meta_geom USING GIST (the_geom);
DROP TABLE IF EXISTS obs_meta_timespan;
CREATE TABLE obs_meta_timespan AS
SELECT numer_timespan::TEXT timespan_id,
numer_timespan::TEXT timespan_name,
NULL::TEXT timespan_description,
NULL::JSONB timespan_tags,
NULL::NUMERIC timespan_weight,
NULL::JSONB timespan_extra,
NULL::TEXT timespan_type,
ARRAY_AGG(DISTINCT numer_id)::TEXT[] numers,
ARRAY_AGG(DISTINCT denom_id)::TEXT[] denoms,
ARRAY_AGG(DISTINCT geom_id)::TEXT[] geoms,
ST_Union(DISTINCT ST_SetSRID(the_geom, 4326)) the_geom
FROM observatory.obs_meta
GROUP BY numer_timespan;
CREATE INDEX ON obs_meta_geom USING GIST (the_geom);

View File

@ -33,3 +33,52 @@ SELECT COUNT(*) > 0 AS _OBS_GetAvailableBoundariesExist
FROM cdb_observatory.OBS_GetAvailableBoundaries(
cdb_observatory._TestPoint()
) AS t(boundary_id, description, time_span, tablename);
--
-- OBS_GetAvailableNumerators tests
--
/*
SELECT * FROM cdb_observatory.OBS_GetAvailableNumerators(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
NULL, 'us.census.acs.B01003001', 'us.census.tiger.census_tract', ''
) where valid_denom IS true and valid_geom IS true;
SELECT * FROM cdb_observatory.OBS_GetAvailableNumerators(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
ARRAY['unit/tags.money'], '', '', ''
);
*/
--
-- OBS_GetAvailableDenominators tests
--
/*
SELECT * FROM cdb_observatory.OBS_GetAvailableDenominators(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
NULL, 'us.census.acs.B03002006', 'us.census.tiger.census_tract', ''
) where valid_numer IS true and valid_geom IS true;
*/
--
-- OBS_GetAvailableGeometries tests
--
/*
SELECT * FROM cdb_observatory.OBS_GetAvailableGeometries(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
NULL, 'us.census.acs.B03002006', 'us.census.acs.B01003001', ''
) where valid_numer IS true and valid_denom IS true;
*/
--
-- OBS_GetAvailableTimespans tests
--
/*
SELECT * FROM cdb_observatory.OBS_GetAvailableTimespans(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
NULL, 'us.census.acs.B03002006', 'us.census.acs.B01003001', 'us.census.tiger.census_tract'
) where valid_numer IS true and valid_denom IS true AND valid_geom IS true;
*/