The following bug has been logged online:
Bug reference: 5030
Logged by: Armando Taffarel Neto
Email address: taffarel@solis.coop.br
PostgreSQL version: 8.4.0
Operating system: Linux Ubuntu 9.04
Description: Problem on "RETURN QUERY EXECUTE" when a column is
dropped from a table
Details:
CREATE TABLE foo (f1 int, f2 int);
CREATE OR REPLACE FUNCTION test_foo() RETURNS SETOF foo AS $$
DECLARE
query varchar;
BEGIN
query := 'SELECT * FROM foo';
RETURN QUERY EXECUTE query;
END;
$$ LANGUAGE plpgsql;
SELECT * FROM test_foo(); --OK
ALTER TABLE foo DROP COLUMN f2;
CREATE OR REPLACE FUNCTION test_foo() RETURNS SETOF foo AS $$
DECLARE
query varchar;
BEGIN
query := 'SELECT * FROM foo';
RETURN QUERY EXECUTE query;
END;
$$ LANGUAGE plpgsql;
SELECT * FROM test_foo();
ERROR: structure of query does not match function result type
DETAIL: Number of returned columns (1) does not match expected column count
(2).
CONTEXT: PL/pgSQL function "test_foo" line 5 at RETURN QUERY