The following bug has been logged online:
Bug reference: 6043
Logged by: Emanuel
Email address: postgres.arg@gmail.com
PostgreSQL version: 9.1 beta
Operating system: Ubuntu 10.04 2.6.31
Description: Compilation PLpgsql Succesful but execution bad
Details:
postgres=# CREATE OR REPLACE FUNCTION p_() RETURNS TABLE (i int) AS $$
DECLARE
BEGIN
SELECT * FROM p; --<<<-- here must ne RETURN QUERY ..
END;
$$ LANGUAGE plpgsql;
CREATE FUNCTION
postgres=# select p_();
ERROR: query has no destination for result data
HINT: If you want to discard the results of a SELECT, use PERFORM instead.
CONTEXT: PL/pgSQL function "p_" line 4 at SQL statement
I don't know if it's really a bug or a feature request. But seems that the
function compiles well without checking the existence of a RETURN QUERY. I
think the best in this cases is raise an error during compilation.
Thougths?