Welcome
Guest
, you are in:
<root>
•
Login
devio dbscript ScrewTurn Wiki
Navigation
¶
Main Page
Random Page
Create a new Page
All Pages
Categories
Navigation Paths
Administration
File Management
Create Account
Search the wiki
»
Back
public getoutagetimeinwindow (function)
Modified on 2011/08/27 11:44
by
wikibot
Categorized as
Uncategorized
== wikibot == {| border="1" cellpadding="5" cellspacing="0" style="border-collapse:collapse" |- valign="top" | '''Function''' | public.getoutagetimeinwindow |} === Source === {{{{<nowiki> CREATE OR REPLACE FUNCTION public.getoutagetimeinwindow(integer, character varying, integer, timestamp without time zone, timestamp without time zone) RETURNS double precision LANGUAGE plpgsql AS $function$ DECLARE nid ALIAS FOR $1; ipid ALIAS FOR $2; sid ALIAS FOR $3; xtime ALIAS FOR $4; ytime ALIAS FOR $5; orec RECORD; lostTime timestamp without time zone; gainTime timestamp without time zone; downtime float8; zero CONSTANT float8 := 0.0; epochTime CONSTANT timestamp without time zone := to_timestamp('01 Jan 1970 00:00:00', 'DD Mon YYYY HH24:MI:SS'); BEGIN downtime = zero; FOR orec IN SELECT ifLostService,ifRegainedService FROM outages WHERE (nodeID = nid AND ipAddr = ipid AND serviceID = sid AND ((ifRegainedService IS NULL AND ifLostService <= xtime) OR (ifRegainedService > ytime))) LOOP BEGIN gainTime := epochTime; lostTime := orec.ifLostService; IF orec.ifRegainedService IS NOT NULL THEN gainTime := orec.ifRegainedService; END IF; -- -- Find the appropriate records -- IF xtime > lostTime THEN -- -- for any outage to be in window of -- opportunity the lost time must ALWAYS be -- less that the x time. -- IF gainTime = epochTime THEN -- -- if the gain time is epochTime then the outage -- does not have an uptime. -- IF ytime > lostTime THEN downtime := downtime + EXTRACT(EPOCH FROM (xtime - ytime)); ELSE downtime := downtime + EXTRACT(EPOCH FROM (xtime - lostTime)); END IF; ELSE IF xtime > gainTime AND gainTime > ytime THEN -- -- regain time between x & y -- IF ytime > lostTime THEN downtime := downtime + EXTRACT (EPOCH FROM (gainTime - ytime)); ELSE downtime := downtime + EXTRACT (EPOCH FROM (gainTime - lostTime)); END IF; ELSE IF gainTime > xtime THEN -- -- regain time greater than x, lost less that x -- IF ytime > lostTime THEN downtime := downtime + EXTRACT (EPOCH FROM (xtime - ytime)); ELSE downtime := downtime + EXTRACT (EPOCH FROM (xtime - lostTime)); END IF; -- end gainTime > xtime END IF; -- end xtime > gainTime AND gainTime > ytime END IF; -- end gaintime == epochTime END IF; -- end xtime > lostTime END IF; END; END LOOP; RETURN downtime*1000.0; END; $function$ </nowiki>}}}}
ScrewTurn Wiki
version 3.0.1.400. Some of the icons created by
FamFamFam
.