I originally sent to this to the pgsql-general mailing list as I was
not sure if this was a bug or not. It seems likely that it is so I am
sending it on to here.
I create a table called wibble:
CREATE TABLE wibble (a integer, b integer);
I insert some data:
INSERT INTO wibble VALUES (1,1);
I decide that actually I want column b to be a BIGINT, so I do:
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;
I have written a function which shows fairly simply my problem.
CREATE FUNCTION foobar() RETURNS SETOF wibble AS
'SELECT * FROM wibble' LANGUAGE SQL;
Doing 'select * from foobar();' gives me the error:
ERROR: query-specified return row and actual function return row do not
match
I have tested it on other tables where I have not messed around with
any columns like this and it does not occur for them.
I am using postgresql 7.4.1 on Debian sid/unstable (i386).
Thanks in advance,
Stephen Quinney