1-- delete the get_new_label_pos so that base.sql creates the new one. 2DROP FUNCTION IF EXISTS SCHEMA_CATALOG.get_new_pos_for_key(text, text[]); 3 4CREATE DOMAIN SCHEMA_PROM.label_value_array AS TEXT[]; 5 6CREATE SCHEMA IF NOT EXISTS SCHEMA_DATA_EXEMPLAR; 7GRANT USAGE ON SCHEMA SCHEMA_DATA_EXEMPLAR TO prom_reader; 8GRANT ALL ON SCHEMA SCHEMA_DATA_EXEMPLAR TO prom_writer; 9 10CREATE TABLE IF NOT EXISTS SCHEMA_CATALOG.exemplar_label_key_position ( 11 metric_name TEXT NOT NULL, 12 key TEXT NOT NULL, 13 pos INTEGER NOT NULL, 14 PRIMARY KEY (metric_name, key) INCLUDE (pos) 15); 16GRANT SELECT ON TABLE SCHEMA_CATALOG.exemplar_label_key_position TO prom_reader; 17GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE SCHEMA_CATALOG.exemplar_label_key_position TO prom_writer; 18 19CREATE TABLE IF NOT EXISTS SCHEMA_CATALOG.exemplar ( 20 id SERIAL PRIMARY KEY, 21 metric_name TEXT NOT NULL, 22 table_name TEXT NOT NULL, 23 UNIQUE (metric_name) INCLUDE (table_name, id) 24); 25GRANT SELECT ON TABLE SCHEMA_CATALOG.exemplar TO prom_reader; 26GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE SCHEMA_CATALOG.exemplar TO prom_writer; 27 28GRANT USAGE, SELECT ON SEQUENCE exemplar_id_seq TO prom_writer; 29 30INSERT INTO public.prom_installation_info(key, value) VALUES 31 ('exemplar data schema', 'SCHEMA_DATA_EXEMPLAR'); 32 33------------------ op.@> ----------------- 34CREATE OR REPLACE FUNCTION SCHEMA_CATALOG.label_value_contains(labels SCHEMA_PROM.label_value_array, label_value TEXT) 35RETURNS BOOLEAN 36AS $func$ 37 SELECT labels @> ARRAY[label_value]::TEXT[] 38$func$ 39LANGUAGE SQL STABLE PARALLEL SAFE; 40 41CREATE OPERATOR SCHEMA_PROM.@> ( 42 LEFTARG = SCHEMA_PROM.label_value_array, 43 RIGHTARG = TEXT, 44 FUNCTION = SCHEMA_CATALOG.label_value_contains 45); 46 47CALL SCHEMA_CATALOG.execute_everywhere('create_schemas', $ee$ DO $$ BEGIN 48 CREATE SCHEMA IF NOT EXISTS SCHEMA_CATALOG; -- catalog tables + internal functions 49 GRANT USAGE ON SCHEMA SCHEMA_CATALOG TO prom_reader; 50 51 CREATE SCHEMA IF NOT EXISTS SCHEMA_PROM; -- public functions 52 GRANT USAGE ON SCHEMA SCHEMA_PROM TO prom_reader; 53 54 CREATE SCHEMA IF NOT EXISTS SCHEMA_EXT; -- optimized versions of functions created by the extension 55 GRANT USAGE ON SCHEMA SCHEMA_EXT TO prom_reader; 56 57 CREATE SCHEMA IF NOT EXISTS SCHEMA_SERIES; -- series views 58 GRANT USAGE ON SCHEMA SCHEMA_SERIES TO prom_reader; 59 60 CREATE SCHEMA IF NOT EXISTS SCHEMA_METRIC; -- metric views 61 GRANT USAGE ON SCHEMA SCHEMA_METRIC TO prom_reader; 62 63 CREATE SCHEMA IF NOT EXISTS SCHEMA_DATA; 64 GRANT USAGE ON SCHEMA SCHEMA_DATA TO prom_reader; 65 66 CREATE SCHEMA IF NOT EXISTS SCHEMA_DATA_SERIES; 67 GRANT USAGE ON SCHEMA SCHEMA_DATA_SERIES TO prom_reader; 68 69 CREATE SCHEMA IF NOT EXISTS SCHEMA_INFO; 70 GRANT USAGE ON SCHEMA SCHEMA_INFO TO prom_reader; 71 72 CREATE SCHEMA IF NOT EXISTS SCHEMA_DATA_EXEMPLAR; 73 GRANT USAGE ON SCHEMA SCHEMA_DATA_EXEMPLAR TO prom_reader; 74 GRANT ALL ON SCHEMA SCHEMA_DATA_EXEMPLAR TO prom_writer; 75END $$ $ee$);