Hello,
I'm using the following show_users() function in order to retreive in
postgresql the output from the unix "ps" command.
When run directly from a shell, this code:
$ps = `ps -afux | grep postgres`; @fields = split /\n/, $ps; return "{" . join(",", @fields) . "}";
... runs fine.
But when run inside a plperlu function, lines are being truncated after
a certain width.
Is that a known limitation of plperlu? Or maybe something else?
Philippe
------------------------------------------------------------
-- TYPE: line_type
------------------------------------------------------------
CREATE TYPE public.line_type AS
( line text
);
------------------------------------------------------------
-- UTILITY FUNCTION: ps
------------------------------------------------------------
CREATE FUNCTION public.ps() RETURNS text[] AS
' $ps = `ps -afux | grep postgres`; @fields = split /\n/, $ps; return "{" . join(",", @fields) . "}";
' LANGUAGE 'plperlu' VOLATILE;
------------------------------------------------------------
-- UTILITY FUNCTION: show_users
------------------------------------------------------------
CREATE FUNCTION public.show_users() RETURNS SETOF user_type AS
'
DECLARE users text[]; user_rec line_type%ROWTYPE; i int2;
BEGIN users = ps();
FOR i IN 1 .. array_upper(users, 1) LOOP
user_rec.line = users[i]; RETURN NEXT user_rec;
END LOOP;
RETURN;
END
' LANGUAGE 'plpgsql' VOLATILE;
------------------------------------------------------------
-- MAIN
------------------------------------------------------------
select * from show_users();