Changeset f3544432ddf95a1f7eabd18d8fa0f355191362eb

Show
Ignore:
Timestamp:
09/24/08 19:50:24 (6 years ago)
Author:
Denish Patel <denish@omniti.com>
git-committer:
Denish Patel <denish@omniti.com> 1222285824 +0000
git-parent:

[52dcc3a33357c5548101f702bf4eef254a2dfafb]

git-author:
Denish Patel <denish@omniti.com> 1222285824 +0000
Message:

Added search and tags functionalities

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • sql/reconnoiter_ddl_dump.sql

    r146a7f3 rf354443  
    4343 
    4444-- 
     45-- Name: metric_tags; Type: TABLE; Schema: prism; Owner: reconnoiter; Tablespace:  
     46-- 
     47 
     48CREATE TABLE metric_tags ( 
     49    sid integer NOT NULL, 
     50    metric_name text NOT NULL, 
     51    metric_type character varying(22), 
     52    tags_array text[] 
     53); 
     54 
     55 
     56ALTER TABLE prism.metric_tags OWNER TO reconnoiter; 
     57 
     58-- 
    4559-- Name: saved_graphs; Type: TABLE; Schema: prism; Owner: reconnoiter; Tablespace:  
    4660-- 
     
    5165    saved boolean DEFAULT false NOT NULL, 
    5266    title text, 
    53     last_update timestamp without time zone NOT NULL 
     67    last_update timestamp without time zone NOT NULL, 
     68    ts_search_all tsvector 
    5469); 
    5570 
     
    380395    metric_name text NOT NULL, 
    381396    metric_type character varying(22), 
    382     active boolean DEFAULT true 
     397    active boolean DEFAULT true, 
     398    ts_search_all tsvector 
    383399); 
    384400 
     
    491507 
    492508SET search_path = prism, pg_catalog; 
     509 
     510-- 
     511-- Name: add_tags(integer, text, text, text); Type: FUNCTION; Schema: prism; Owner: reconnoiter 
     512-- 
     513 
     514CREATE FUNCTION add_tags(in_sid integer, in_metric_name text, in_metric_type text, in_tags text) RETURNS void 
     515    AS $$ 
     516DECLARE 
     517v_sid integer;  
     518v_metric_name text; 
     519v_metric_typle varchar(20); 
     520v_tags_array text[]; 
     521p_sid integer; 
     522p_tags_array text[]; 
     523new_tags_array text[]; 
     524 BEGIN 
     525     v_tags_array:= string_to_array(in_tags,''); 
     526     SELECT sid into p_sid  
     527      FROM prism.metric_tags  
     528      WHERE sid=in_sid AND metric_name=in_metric_name AND metric_type=in_metric_type; 
     529     IF NOT FOUND THEN 
     530          SELECT sid,metric_name,metric_type INTO v_sid, v_metric_name,v_metric_typle  
     531             FROM stratcon.metric_name_summary   
     532             WHERE sid=in_sid AND metric_name=in_metric_name AND metric_type=in_metric_type;    
     533          IF NOT FOUND THEN 
     534               RAISE EXCEPTION 'Metric does not exist in metric_name_summary table'; 
     535          ELSE  
     536         INSERT INTO prism.metric_tags (sid,metric_name,metric_type,tags_array) values(v_sid, v_metric_name,v_metric_typle,v_tags_array); 
     537      END IF; 
     538     ELSE 
     539       SELECT tags_array INTO p_tags_array  
     540          FROM prism.metric_tags  
     541          WHERE sid=in_sid AND metric_name=in_metric_name AND metric_type=in_metric_type; 
     542             new_tags_array:= array_append(p_tags_array, in_tags); 
     543           UPDATE  prism.metric_tags SET tags_array= new_tags_array WHERE sid=in_sid AND metric_name=in_metric_name AND metric_type=in_metric_type;           
     544    END IF; 
     545  RETURN; 
     546END 
     547$$ 
     548    LANGUAGE plpgsql; 
     549 
     550 
     551ALTER FUNCTION prism.add_tags(in_sid integer, in_metric_name text, in_metric_type text, in_tags text) OWNER TO reconnoiter; 
    493552 
    494553-- 
     
    510569 
    511570ALTER FUNCTION prism.check_name_saved_graphs() OWNER TO reconnoiter; 
     571 
     572-- 
     573-- Name: remove_tags(integer, text, text, text); Type: FUNCTION; Schema: prism; Owner: reconnoiter 
     574-- 
     575 
     576CREATE FUNCTION remove_tags(in_sid integer, in_metric_name text, in_metric_type text, in_tags text) RETURNS void 
     577    AS $$ 
     578DECLARE 
     579v_tags_array text[]; 
     580p_sid integer; 
     581p_tags_array text[]; 
     582new_tags_array text[]; 
     583i int; 
     584 BEGIN 
     585   v_tags_array:= string_to_array(in_tags,''); 
     586     SELECT sid,tags_array into p_sid ,p_tags_array 
     587      FROM prism.metric_tags  
     588      WHERE sid=in_sid AND metric_name=in_metric_name AND metric_type=in_metric_type; 
     589     IF NOT FOUND THEN 
     590           
     591               RAISE EXCEPTION 'Metric tags does not found to be removed'; 
     592           
     593     ELSE 
     594         FOR i IN array_lower(p_tags_array, 1)..array_upper(p_tags_array, 1) LOOP 
     595         IF NOT p_tags_array[i] =any(v_tags_array) THEN 
     596            new_tags_array = array_append(new_tags_array, p_tags_array[i]); 
     597          END IF; 
     598         END LOOP; 
     599        
     600           UPDATE  prism.metric_tags SET tags_array= new_tags_array WHERE sid=in_sid AND metric_name=in_metric_name AND metric_type=in_metric_type;           
     601    END IF; 
     602  RETURN; 
     603END 
     604$$ 
     605    LANGUAGE plpgsql; 
     606 
     607 
     608ALTER FUNCTION prism.remove_tags(in_sid integer, in_metric_name text, in_metric_type text, in_tags text) OWNER TO reconnoiter; 
     609 
     610-- 
     611-- Name: trig_update_tsvector_from_metric_tags(); Type: FUNCTION; Schema: prism; Owner: reconnoiter 
     612-- 
     613 
     614CREATE FUNCTION trig_update_tsvector_from_metric_tags() RETURNS trigger 
     615    AS $$ 
     616DECLARE 
     617BEGIN 
     618    UPDATE stratcon.metric_name_summary SET ts_search_all=stratcon.metric_name_summary_tsvector(NEW.sid,NEW.metric_name,NEW.metric_type); 
     619   RETURN NEW; 
     620END 
     621$$ 
     622    LANGUAGE plpgsql; 
     623 
     624 
     625ALTER FUNCTION prism.trig_update_tsvector_from_metric_tags() OWNER TO reconnoiter; 
    512626 
    513627SET search_path = public, pg_catalog; 
     
    10381152 
    10391153ALTER FUNCTION stratcon.loading_dock_status_s_change_log() OWNER TO reconnoiter; 
     1154 
     1155-- 
     1156-- Name: metric_name_summary_tsvector(integer, text, text); Type: FUNCTION; Schema: stratcon; Owner: reconnoiter 
     1157-- 
     1158 
     1159CREATE FUNCTION metric_name_summary_tsvector(in_sid integer, in_metric_name text, in_metric_type text) RETURNS tsvector 
     1160    AS $$DECLARE 
     1161ref_sid integer; 
     1162ref_module text; 
     1163ref_name text; 
     1164ref_target text; 
     1165ref_tags text; 
     1166ref_hostname text; 
     1167ref_metric_name text; 
     1168v_ts_search_all tsvector; 
     1169BEGIN 
     1170    SELECT sid,module,name,target 
     1171      INTO ref_sid,ref_module,ref_name,ref_target 
     1172      FROM stratcon.mv_loading_dock_check_s where sid=in_sid; 
     1173    IF NOT FOUND THEN 
     1174        RETURN NULL; 
     1175    END IF; 
     1176 
     1177    SELECT COALESCE(array_to_string(tags_array, ' '), ' ') INTO ref_tags 
     1178      FROM prism.metric_tags 
     1179     WHERE sid=in_sid and metric_name=in_metric_name and metric_type=in_metric_type; 
     1180    IF NOT FOUND THEN 
     1181        ref_tags:=' '; 
     1182    END IF; 
     1183 
     1184    SELECT value INTO ref_hostname 
     1185      FROM stratcon.current_metric_text mt 
     1186      JOIN stratcon.mv_loading_dock_check_s s USING(sid) 
     1187     WHERE module='dns' AND s.name='in-addr.arpa' AND target = ref_target; 
     1188 
     1189    ref_hostname := coalesce(replace(ref_hostname, '.', ' '), ' '); 
     1190    ref_metric_name := regexp_replace(in_metric_name, E'[_\`/.\\134]', ' ', 'g'); 
     1191 
     1192    v_ts_search_all=to_tsvector(ref_metric_name || ' ' || 
     1193                                ref_module || ' ' || 
     1194                                ref_name || ' ' || 
     1195                                ref_target || ' ' || 
     1196                                ref_hostname || ' ' || 
     1197                                ref_tags); 
     1198    RETURN v_ts_search_all; 
     1199END$$ 
     1200    LANGUAGE plpgsql STRICT; 
     1201 
     1202 
     1203ALTER FUNCTION stratcon.metric_name_summary_tsvector(in_sid integer, in_metric_name text, in_metric_type text) OWNER TO reconnoiter; 
    10401204 
    10411205-- 
     
    17011865 
    17021866-- 
     1867-- Name: trig_update_tsvector_from_metric_summary(); Type: FUNCTION; Schema: stratcon; Owner: reconnoiter 
     1868-- 
     1869 
     1870CREATE FUNCTION trig_update_tsvector_from_metric_summary() RETURNS trigger 
     1871    AS $$ 
     1872DECLARE 
     1873 BEGIN 
     1874 IF TG_OP != 'INSERT' THEN 
     1875   IF (NEW.metric_name <> OLD.metric_name) THEN 
     1876           UPDATE stratcon.metric_name_summary SET ts_search_all=stratcon.metric_name_summary_tsvector(NEW.sid,NEW.metric_name,NEW.metric_type); 
     1877   END IF;     
     1878 ELSE  
     1879    UPDATE stratcon.metric_name_summary SET ts_search_all=stratcon.metric_name_summary_tsvector(NEW.sid,NEW.metric_name,NEW.metric_type); 
     1880 END IF;   
     1881   RETURN NEW; 
     1882END 
     1883$$ 
     1884    LANGUAGE plpgsql; 
     1885 
     1886 
     1887ALTER FUNCTION stratcon.trig_update_tsvector_from_metric_summary() OWNER TO reconnoiter; 
     1888 
     1889-- 
     1890-- Name: trig_update_tsvector_from_mv_dock(); Type: FUNCTION; Schema: stratcon; Owner: reconnoiter 
     1891-- 
     1892 
     1893CREATE FUNCTION trig_update_tsvector_from_mv_dock() RETURNS trigger 
     1894    AS $$ 
     1895DECLARE 
     1896BEGIN 
     1897    UPDATE stratcon.metric_name_summary SET ts_search_all=stratcon.metric_name_summary_tsvector(sid, metric_name, metric_type) WHERE sid = NEW.sid; 
     1898   RETURN NEW; 
     1899END 
     1900$$ 
     1901    LANGUAGE plpgsql; 
     1902 
     1903 
     1904ALTER FUNCTION stratcon.trig_update_tsvector_from_mv_dock() OWNER TO reconnoiter; 
     1905 
     1906-- 
    17031907-- Name: update_config(inet, text, timestamp with time zone, xml); Type: FUNCTION; Schema: stratcon; Owner: reconnoiter 
    17041908-- 
     
    17491953 
    17501954-- 
     1955-- Name: metric_tags_pk; Type: CONSTRAINT; Schema: prism; Owner: reconnoiter; Tablespace:  
     1956-- 
     1957 
     1958ALTER TABLE ONLY metric_tags 
     1959    ADD CONSTRAINT metric_tags_pk UNIQUE (sid, metric_name, metric_type); 
     1960 
     1961 
     1962-- 
    17511963-- Name: saved_graphs_dep_pkey; Type: CONSTRAINT; Schema: prism; Owner: reconnoiter; Tablespace:  
    17521964-- 
     
    20352247 
    20362248 
     2249-- 
     2250-- Name: trig_update_tsvector_from_metric_tags; Type: TRIGGER; Schema: prism; Owner: reconnoiter 
     2251-- 
     2252 
     2253CREATE TRIGGER trig_update_tsvector_from_metric_tags 
     2254    AFTER INSERT OR UPDATE ON metric_tags 
     2255    FOR EACH ROW 
     2256    EXECUTE PROCEDURE trig_update_tsvector_from_metric_tags(); 
     2257 
     2258 
    20372259SET search_path = stratcon, pg_catalog; 
    20382260 
     
    20772299 
    20782300 
     2301-- 
     2302-- Name: trig_update_tsvector_from_metric_summary; Type: TRIGGER; Schema: stratcon; Owner: reconnoiter 
     2303-- 
     2304 
     2305CREATE TRIGGER trig_update_tsvector_from_metric_summary 
     2306    AFTER INSERT OR UPDATE ON metric_name_summary 
     2307    FOR EACH ROW 
     2308    EXECUTE PROCEDURE trig_update_tsvector_from_metric_summary(); 
     2309 
     2310 
     2311-- 
     2312-- Name: trig_update_tsvector_from_mv_dock; Type: TRIGGER; Schema: stratcon; Owner: reconnoiter 
     2313-- 
     2314 
     2315CREATE TRIGGER trig_update_tsvector_from_mv_dock 
     2316    AFTER INSERT OR UPDATE ON mv_loading_dock_check_s 
     2317    FOR EACH ROW 
     2318    EXECUTE PROCEDURE trig_update_tsvector_from_mv_dock(); 
     2319 
     2320 
    20792321SET search_path = prism, pg_catalog; 
    20802322 
     
    21132355GRANT ALL ON SCHEMA stratcon TO stratcon; 
    21142356GRANT USAGE ON SCHEMA stratcon TO prism; 
     2357 
     2358 
     2359-- 
     2360-- Name: metric_tags; Type: ACL; Schema: prism; Owner: reconnoiter 
     2361-- 
     2362 
     2363REVOKE ALL ON TABLE metric_tags FROM PUBLIC; 
     2364REVOKE ALL ON TABLE metric_tags FROM reconnoiter; 
     2365GRANT ALL ON TABLE metric_tags TO reconnoiter; 
     2366GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE metric_tags TO prism; 
    21152367 
    21162368 
     
    22662518GRANT ALL ON TABLE metric_name_summary TO reconnoiter; 
    22672519GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE metric_name_summary TO stratcon; 
    2268 GRANT SELECT ON TABLE metric_name_summary TO prism; 
     2520GRANT SELECT,UPDATE ON TABLE metric_name_summary TO prism; 
    22692521 
    22702522