Выполняются ли пользовательские функции в postgres (и greenplum) изолированно? Сколько сред выполнения открыто, когда у меня есть запрос с пользовательскими функциями plpythonu? Есть ли какое-либо общее состояние интерпретатора Python при выполнении запроса?
Скажем, у меня есть определяемая пользователем функция plpython:
CREATE OR REPLACE FUNCTION file2text(path string) RETURNS text AS $$
f = open(path, 'r')
return f.read()
f.close()
$$ LANGUAGE plpythonu;
Для таблицы create table files (name varchar, path varchar)
и запроса к этой таблице следующим образом:
SELECT f.name
FROM files f
WHERE character_length( file2text(f.path) ) > 4096
ORDER BY f.name
Создается ли новая среда Python для каждого выполнения моей функции plpython? Могу ли я предположить, что в базах данных MPP поведение postgres будет дублироваться в каждом сегменте без общего состояния между сегментами?