CREATE OR REPLACE FUNCTION raise_notice(text)
RETURNS void AS
$BODY$
BEGIN
RAISE NOTICE '%', $1;
RETURN;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 1;
Если необходимо, например, отличать нормальную обработку от миграционной, можно использовать следующие функции для установки различных флагов. Флаги действуют в рамках сессии.
CREATE OR REPLACE FUNCTION set_flag(i_name text, i_value text)
RETURNS text AS
$BODY$
GD[i_name] = i_value
return GD[i_name]
$BODY$
LANGUAGE 'plpythonu' VOLATILE
COST 10;
CREATE OR REPLACE FUNCTION get_flag(i_name text)
RETURNS text AS
$BODY$
return (i_name in GD) and GD[i_name] or None
$BODY$
LANGUAGE 'plpythonu' VOLATILE
COST 10;
Функция, возвращающая текущий load average сервера БД. Можно использовать, например, для регулировки интенсивности запросов в служебных скриптах, т.е. когда нагрузка большая, то делать запросы менее интенсивно.
CREATE OR REPLACE FUNCTION get_current_la()
RETURNS double precision AS
$BODY$
# Returns current LA or NULL if something wrong
try:
import os
try:
la = float(os.popen('uptime').read().split('load average: ')[1].split(', ')[0])
except:
la = None
return la
except Exception, e:
import traceback
plpy.info(traceback.format_exc())
$BODY$
LANGUAGE 'plpythonu' VOLATILE STRICT SECURITY DEFINER
COST 1;
No comments:
Post a Comment