Here is a simplificated example:
CREATE OR REPLACE FUNCTION ttt () RETURNS text AS '
return "";
' LANGUAGE 'plperlu';
CREATE OR REPLACE FUNCTION qqq () RETURNS text as '
DECLARE
v_text text;
v_text2 text;
BEGIN
v_text := upper(''до''); -- cyrillic chars
v_text2 := ttt();
RETURN v_text || upper(''после''); -- cyrillic chars
END;
' LANGUAGE 'plpgsql';
and qqq() returns "ДОпосле". That is upper() doesn't work correctly
after plperlu function call.
--
Sergey Suleymanov