Set-returning functions only allowed if written in language 'sql'

From: Daniel Migowski <dmigowski(at)ikoffice(dot)de>
To: pgsql-bugs(at)postgresql(dot)org
Subject: Set-returning functions only allowed if written in language 'sql'
Date: 2009-02-10 00:04:02
Message-ID: 4990C472.7020700@ikoffice.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Hello dear PostgreSQL developers,

I noticed the following strange behaviour with set-returning functions.
If sets are allowed seems to depend on the language the function is
written in, what makes conpletely no sense to me. See the following
functions x() and y(). x() is written in 'sql' and works, y() is written
is plpgsql and fails. Any reasons for this I do not realize?

With best regards,
Daniel Migowski

----------------------------

CREATE FUNCTION x() RETURNS SETOF int4 AS
$$
SELECT 1
UNION
SELECT 2
$$
LANGUAGE 'sql';
SELECT x(); -- fine with two result rows.

CREATE FUNCTION y() RETURNS SETOF int4 AS
$$
BEGIN
RETURN NEXT 1;
RETURN NEXT 2;
END
$$
LANGUAGE 'plpgsql';
SELECT y(); -- fails with:
FEHLER: Funktion mit Mengenergebnis in einem Zusammenhang aufgerufen,
der keine Mengenergebnisse verarbeiten kann
SQL Status:0A000
Kontext:PL/pgSQL function "y" line 2 at RETURN NEXT

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message hubert depesz lubaczewski 2009-02-10 09:46:44 Re: Set-returning functions only allowed if written in language 'sql'
Previous Message Bruce Momjian 2009-02-09 15:17:17 Re: pg_listener entries deleted under heavy NOTIFY load only on Windows