From 1e625ce3efff2dc6f7034c0ddc1a167b0bc79596 Mon Sep 17 00:00:00 2001 From: Stuart Lynn Date: Thu, 21 Apr 2016 15:18:39 -0400 Subject: [PATCH] Updated version of OBS_Get to support json returning --- src/pg/sql/41_observatory_augmentation.sql | 23 ++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/pg/sql/41_observatory_augmentation.sql b/src/pg/sql/41_observatory_augmentation.sql index f5b9c8b..7966bb8 100644 --- a/src/pg/sql/41_observatory_augmentation.sql +++ b/src/pg/sql/41_observatory_augmentation.sql @@ -269,10 +269,10 @@ CREATE OR REPLACE FUNCTION cdb_observatory._OBS_Get( time_span text, geometry_level text ) -RETURNS TABLE(names text[], vals NUMERIC[]) +RETURNS SETOF JSON AS $$ DECLARE - results NUMERIC[]; + results numeric[]; geom_table_name text; names text[]; query text; @@ -290,10 +290,6 @@ BEGIN data_table_info := cdb_observatory._OBS_GetColumnData(geometry_level, column_ids, time_span); - - names := (SELECT array_agg((d).colname) - FROM unnest(data_table_info) As d); - IF ST_GeometryType(geom) = 'ST_Point' THEN results := cdb_observatory._OBS_GetPoints(geom, @@ -311,8 +307,19 @@ BEGIN THEN results := Array[]::numeric[]; END IF; - - RETURN QUERY SELECT names, results; + + RAISE NOTICE '%', results; + + RETURN QUERY + SELECT row_to_json(d) + FROM ( + SELECT (meta).aggregate as aggregate, + (meta).name as name, + (meta).type as type, + val as value + FROM (select unnest(data_table_info) as meta, + unnest(results) as val) b + ) d; END; $$ LANGUAGE plpgsql;