Add _vovw_count columnt to tables for which overviews are created

Initially we planned to add this column to the queries sent to the
tiler only, but that makes the column hard to access from the editor.
This commit is contained in:
Javier Goizueta 2016-04-14 17:32:18 +02:00
parent f785e71d3b
commit c595e45c11

View File

@ -718,6 +718,7 @@ DECLARE
overview_z integer; overview_z integer;
overview_tables REGCLASS[]; overview_tables REGCLASS[];
overviews_step integer := 1; overviews_step integer := 1;
has_counter_column boolean;
BEGIN BEGIN
-- Determine the referece zoom level -- Determine the referece zoom level
EXECUTE 'SELECT ' || quote_ident(refscale_strategy::text) || Format('(''%s'', %s);', reloid, tolerance_px) INTO ref_z; EXECUTE 'SELECT ' || quote_ident(refscale_strategy::text) || Format('(''%s'', %s);', reloid, tolerance_px) INTO ref_z;
@ -743,6 +744,17 @@ BEGIN
SELECT array_append(overview_tables, base_rel) INTO overview_tables; SELECT array_append(overview_tables, base_rel) INTO overview_tables;
END LOOP; END LOOP;
IF overview_tables IS NOT NULL AND array_length(overview_tables, 1) > 0 THEN
SELECT EXISTS (
SELECT * FROM CDB_ColumnNames(reloid) as colname WHERE colname = '_vovw_count'
) INTO has_counter_column;
IF NOT has_counter_column THEN
EXECUTE Format('
ALTER TABLE %s ADD COLUMN _vovw_count integer DEFAULT 1;
', reloid);
END IF;
END IF;
RETURN overview_tables; RETURN overview_tables;
END; END;
$$ LANGUAGE PLPGSQL; $$ LANGUAGE PLPGSQL;