boinc/rboinc/monitoring/monitoring_functions.sql

105 lines
2.8 KiB
SQL

-- $Id$
-- Boinc Monitoring stored procedures
-- Only re-run this file upon changes
DELIMITER $$
-- Extract a delimited subset of a given string
-- Arguments: string, from substring, to substring (deprecated)
DROP FUNCTION IF EXISTS mon_xt
$$
CREATE FUNCTION mon_xt (s blob,f varchar(100), t varchar(100)) RETURNS varchar(1000) deterministic no sql
BEGIN
return substring_index(substring_index(s,f,-1),t,1);
END
$$
-- Split the given string at delimiter del, return the idx-th piece (1-based)
-- Arguments: string, delimiter, index
DROP FUNCTION IF EXISTS mon_split_index
$$
CREATE FUNCTION mon_split_index (s blob, del varchar(10), idx int) RETURNS varchar(1000) deterministic no sql
BEGIN
return substring_index(substring_index(s,del,idx),del,-1);
END
$$
-- Extract the name from a result or wu-- Argument: wu name
-- 1-OTTO_pYIpYV_1805-2-10-RND1289_0 -> OTTO_pYIpYV_1805
DROP FUNCTION IF EXISTS mon_wuname
$$
CREATE FUNCTION mon_wuname (s varchar(1000)) RETURNS varchar(1000) deterministic no sql
BEGIN
return mon_split_index(s,"-",2);
END
$$
-- Extract the step from a result or wu-- Argument: wu name
-- 1-OTTO_pYIpYV_1805-2-10-RND1289_0 -> 2
DROP FUNCTION IF EXISTS mon_stepof
$$
CREATE FUNCTION mon_stepof (s varchar(1000)) RETURNS varchar(1000) deterministic no sql
BEGIN
return mon_split_index(s,"-",3);
END
$$
-- Extract the sumbitter name from a result or wu
-- Argument: wu name
-- 1-OTTO_pYIpYV_1805-2-10-RND1289_0 -> OTTO
DROP FUNCTION IF EXISTS mon_submitterof
$$
CREATE FUNCTION mon_submitterof (s varchar(1000)) RETURNS varchar(1000) deterministic no sql
BEGIN
return mon_split_index(mon_wuname(s),"_",1);
END
$$
-- Extract the group name from a result or wu
-- Argument: wu name
-- 1-OTTO_pYIpYV_1805-2-10-RND1289_0 -> pYIpYV_1805
DROP FUNCTION IF EXISTS mon_groupof
$$
CREATE FUNCTION mon_groupof (s varchar(1000)) RETURNS varchar(1000) deterministic no sql
BEGIN
declare wn varchar(1000);
set wn=mon_wuname(s);
return substring(wn,1+instr(wn,'_'));
END
$$
-- Parse stderr to find the CUDA device used (GPUGRID-SPECIFIC)
-- Argument: the stderr text
DROP FUNCTION IF EXISTS mon_cardof
$$
CREATE FUNCTION mon_cardof (str blob) returns varchar(1000) deterministic no sql
BEGIN
declare bno int;
declare bname varchar(100);
declare bclock int;
declare bmem int;
declare bmproc int;
declare bcores int;
declare tmp varchar(100);
set bno=mon_xt(str,'Using device ','#');
set tmp=concat('Device ',bno,': ');
set bname=mon_xt(str,tmp,'#');
set bname=replace(bname,'"','');
set bname=replace(bname,'\r','');
set bname=replace(bname,'\n','');
return bname;
END
$$
DELIMITER ;