I see this behavior with CVS tip:
CREATE TABLE wibble (a integer, b integer);
INSERT INTO wibble VALUES (1,1);
ALTER TABLE wibble ADD COLUMN c BIGINT;
UPDATE wibble SET c = b;
ALTER TABLE wibble DROP COLUMN b;
ALTER TABLE wibble RENAME c TO b;
CREATE FUNCTION foobar() RETURNS SETOF wibble AS
'SELECT * FROM wibble' LANGUAGE SQL;
regression=# SELECT * FROM wibble; a | b
---+--- 1 | 1
(1 row)
regression=# select * from foobar(); a | b
---+--- 1 |
(1 row)
The example comes from a complaint in January 2004, at which time it
would instead throw an ERROR:
ERROR: query-specified return row and actual function return row do not
match
I'll start digging into this, but any hints on where to look would be
greatly appreciated.
Thanks,
Joe