From d070802f5373c3dc92069de02e3d15562429705b Mon Sep 17 00:00:00 2001 From: John Krauss Date: Thu, 9 Mar 2017 16:17:58 +0000 Subject: [PATCH] resolving API bugs --- src/pg/sql/41_observatory_augmentation.sql | 16 ++++++++-------- .../sql/41_observatory_augmentation_test.sql | 7 +++---- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/pg/sql/41_observatory_augmentation.sql b/src/pg/sql/41_observatory_augmentation.sql index b3954a8..0369f70 100644 --- a/src/pg/sql/41_observatory_augmentation.sql +++ b/src/pg/sql/41_observatory_augmentation.sql @@ -722,7 +722,7 @@ BEGIN SELECT DISTINCT UNNEST(tablenames_ary) tablename FROM ( SELECT ARRAY_AGG(numer_tablename) || ARRAY_AGG(denom_tablename) || - ARRAY_AGG('cdb_observatory.' || api_method || '(_geoms.geom' || COALESCE(', ' || + ARRAY_AGG('cdb_observatory.' || api_method || '(_procgeoms.geom' || COALESCE(', ' || (SELECT STRING_AGG(REPLACE(val::text, '"', ''''), ', ') FROM (SELECT json_array_elements(api_args) as val) as vals), '') || ')') @@ -731,7 +731,7 @@ BEGIN ) tablenames_outer) data_tables, String_Agg(DISTINCT array_to_string(ARRAY[ - CASE WHEN numer_tablename != geom_tablename + CASE WHEN numer_tablename IS NOT NULL AND geom_tablename IS NOT NULL THEN numer_tablename || '.' || numer_geomref_colname || ' = ' || '_procgeoms.geomref_' || geom_tablename ELSE NULL END, @@ -740,8 +740,8 @@ BEGIN denom_tablename || '.' || denom_geomref_colname ELSE NULL END ], ' AND '), - ' AND ') FILTER (WHERE numer_tablename != geom_tablename - OR numer_tablename != denom_tablename) AS obs_wheres, + ' AND ') FILTER (WHERE numer_tablename != denom_tablename OR + (numer_tablename IS NOT NULL AND geom_tablename IS NOT NULL)) AS obs_wheres, String_Agg(DISTINCT 'ST_Intersects(' || geom_tablename || '.' || geom_colname || ', _geoms.geom)', ' AND ') @@ -762,7 +762,7 @@ BEGIN THEN ST_CollectionExtract(ST_MakeValid(ST_SimplifyVW(geom, 0.0001)), 3) ELSE geom END geom FROM _raw_geoms), - _procgeoms AS (SELECT _geoms.id, _geoms.geom, %s %s + _procgeoms AS (SELECT _geoms.id, _geoms.geom %s %s FROM _geoms %s %s ) @@ -771,9 +771,9 @@ BEGIN %s GROUP BY _procgeoms.id %s ORDER BY _procgeoms.id - $query$, geomrefs_alias, - ', ' || NullIf(geom_colspecs, ''), - ', ' || NullIf(geom_tables, ''), + $query$, ', ' || NullIf(geomrefs_alias, ''), + ', ' || NullIf(geom_colspecs, ''), + ', ' || NullIf(geom_tables, ''), 'WHERE ' || NullIf( user_wheres, ''), data_colspecs, ', ' || NullIf(data_tables, ''), 'WHERE ' || NULLIF(obs_wheres, ''), diff --git a/src/pg/test/sql/41_observatory_augmentation_test.sql b/src/pg/test/sql/41_observatory_augmentation_test.sql index b932120..9288b82 100644 --- a/src/pg/test/sql/41_observatory_augmentation_test.sql +++ b/src/pg/test/sql/41_observatory_augmentation_test.sql @@ -767,18 +767,17 @@ FROM data; -- OBS_GetData with an API + geomvals, no args SELECT ARRAY['us.census.tiger.census_tract'] <@ array_agg(data->0->>'value') AS OBS_GetData_API_geomvals_no_args FROM cdb_observatory.obs_getdata(array[(cdb_observatory._testarea(), 1)::geomval], - '[{"numer_type": "text", "numer_colname": "boundary_id", "api_method": "obs_getavailableboundaries", "geom_geomref_colname": "boundary_id"}]', - false); + '[{"numer_type": "text", "numer_colname": "boundary_id", "api_method": "obs_getavailableboundaries"}]'); -- OBS_GetData with an API + geomvals, args, numeric SELECT json_typeof(data->0->'value') = 'number' AS OBS_GetData_API_geomvals_args_numer_return FROM cdb_observatory.obs_getdata(array[(cdb_observatory._testarea(), 1)::geomval], - '[{"numer_type": "numeric", "numer_colname": "obs_getmeasure", "api_method": "obs_getmeasure", "api_args": ["us.census.acs.B01003001"]}]', false); + '[{"numer_type": "numeric", "numer_colname": "obs_getmeasure", "api_method": "obs_getmeasure", "api_args": ["us.census.acs.B01003001"]}]'); -- OBS_GetData with an API + geomvals, args, text SELECT json_typeof(data->0->'value') = 'string' AS OBS_GetData_API_geomvals_args_string_return FROM cdb_observatory.obs_getdata(array[(cdb_observatory._testarea(), 1)::geomval], - '[{"numer_type": "text", "numer_colname": "obs_getcategory", "api_method": "obs_getcategory", "api_args": ["us.census.spielman_singleton_segments.X55"]}]', false); + '[{"numer_type": "text", "numer_colname": "obs_getcategory", "api_method": "obs_getcategory", "api_args": ["us.census.spielman_singleton_segments.X55"]}]'); -- OBS_GetData with an API + geomrefs, args, numeric SELECT json_typeof(data->0->'value') = 'number' AS OBS_GetData_API_geomrefs_args_numer_return