From ebc27dbbb7662e609d0e59ab189139838a56fb9b Mon Sep 17 00:00:00 2001 From: John Krauss Date: Tue, 12 Jul 2016 11:52:56 -0400 Subject: [PATCH] faster obs_meta generation, use better formatting and handle NULL boundary_id --- src/pg/sql/41_observatory_augmentation.sql | 21 +++++++++++---------- src/pg/test/fixtures/load_fixtures.sql | 4 ++-- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/pg/sql/41_observatory_augmentation.sql b/src/pg/sql/41_observatory_augmentation.sql index cac119d..40e9d1e 100644 --- a/src/pg/sql/41_observatory_augmentation.sql +++ b/src/pg/sql/41_observatory_augmentation.sql @@ -397,16 +397,17 @@ DECLARE BEGIN EXECUTE - format('SELECT numer_colname, numer_geomref_colname, numer_tablename - FROM observatory.obs_meta - WHERE geom_id = %L - AND numer_id = %L - AND (numer_timespan = %L OR (%L = '''')) - ORDER BY numer_timespan DESC - LIMIT 1 ', - boundary_id, measure_id, coalesce(time_span, ''), coalesce(time_span, '')) - - INTO colname, data_geoid_colname, target_table; + $query$ + SELECT numer_colname, numer_geomref_colname, numer_tablename + FROM observatory.obs_meta + WHERE (geom_id = $1 OR ($1 = '')) + AND numer_id = $2 + AND (numer_timespan = $3 OR ($3 = '')) + ORDER BY geom_weight DESC, numer_timespan DESC + LIMIT 1 + $query$ + INTO colname, data_geoid_colname, target_table + USING COALESCE(boundary_id, ''), measure_id, COALESCE(time_span, ''); RAISE DEBUG 'target_table %, colname %', target_table, colname; diff --git a/src/pg/test/fixtures/load_fixtures.sql b/src/pg/test/fixtures/load_fixtures.sql index 721e9b1..1596c1c 100644 --- a/src/pg/test/fixtures/load_fixtures.sql +++ b/src/pg/test/fixtures/load_fixtures.sql @@ -25303,8 +25303,8 @@ WHERE numer_c.id = numer_data_ct.column_id AND geom_geomref_ct.table_id = geom_t.id AND geom_geom_ct.column_id = geom_c.id AND geom_geom_ct.table_id = geom_t.id - AND geom_c.type ILIKE 'geometry' - AND numer_c.type NOT ILIKE 'geometry' + AND geom_c.type LIKE 'Geometry' + AND numer_c.type NOT LIKE 'Geometry' AND numer_t.id != geom_t.id AND numer_c.id != geomref_c.id AND unit_tag.type = 'unit'