[SQL] Plperlu function & backticks return value -> truncated?

2004-10-13 Thread Philippe Lang
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
  userstext[];
  user_rec line_type%ROWTYPE;
  iint2;

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();


---(end of broadcast)---
TIP 8: explain analyze is your friend


Re: [SQL] Plperlu function & backticks return value -> truncated?

2004-10-13 Thread Richard Huxton
Philippe Lang wrote:
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?
Depends if user_type is just a typo...

--  TYPE: line_type

CREATE TYPE public.line_type AS
(
  line text
);

CREATE FUNCTION public.show_users()
  RETURNS SETOF user_type AS

  user_rec line_type%ROWTYPE;
--
  Richard Huxton
  Archonet Ltd
---(end of broadcast)---
TIP 8: explain analyze is your friend


Re: [SQL] Plperlu function & backticks return value -> truncated?

2004-10-13 Thread Philippe Lang
Hello,

Yes, I made a typo, sorry. I've been playing with different types this afternoon, 
that's why.
But "user_type" was also made up of a "text" field, just like "line_type", so the 
problem is still here...

-Message d'origine-
De : Richard Huxton [mailto:[EMAIL PROTECTED] 
Envoyé : mercredi, 13. octobre 2004 17:25
À : Philippe Lang
Cc : [EMAIL PROTECTED]
Objet : Re: [SQL] Plperlu function & backticks return value -> truncated?


> Is that a known limitation of plperlu? Or maybe something else?

Depends if user_type is just a typo...

---(end of broadcast)---
TIP 5: Have you checked our extensive FAQ?

   http://www.postgresql.org/docs/faqs/FAQ.html


Re: [SQL] Plperlu function & backticks return value -> truncated?

2004-10-13 Thread Michael Fuhr
On Wed, Oct 13, 2004 at 05:07:05PM +0200, Philippe Lang wrote:

> 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.

Many versions of ps truncate lines at a certain length if they can't
determine the terminal size.  Since you're running ps from inside
the backend, there's probably no terminal to check.  Check the ps
manual page to see if it supports an option like -w (or multiple
occurrences of -w) to increase the line length.

-- 
Michael Fuhr
http://www.fuhr.org/~mfuhr/

---(end of broadcast)---
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]


Re: [SQL] Plperlu function & backticks return value -> truncated?

2004-10-13 Thread Philippe Lang
Thanks! That's perfect... `ps -awfux | grep postgres` runs fine...

-Message d'origine-
De : Michael Fuhr [mailto:[EMAIL PROTECTED] 
Envoyé : mercredi, 13. octobre 2004 17:47
À : Philippe Lang
Cc : [EMAIL PROTECTED]
Objet : Re: [SQL] Plperlu function & backticks return value -> truncated?

On Wed, Oct 13, 2004 at 05:07:05PM +0200, Philippe Lang wrote:

> 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.

Many versions of ps truncate lines at a certain length if they can't determine the 
terminal size.  Since you're running ps from inside the backend, there's probably no 
terminal to check.  Check the ps manual page to see if it supports an option like -w 
(or multiple occurrences of -w) to increase the line length.

--
Michael Fuhr
http://www.fuhr.org/~mfuhr/


---(end of broadcast)---
TIP 4: Don't 'kill -9' the postmaster