Bug in functions returning setof where table has dropped column

From: Stephen Quinney <stephen(dot)quinney(at)computing-services(dot)oxford(dot)ac(dot)uk>
To: pgsql-bugs(at)postgresql(dot)org
Subject: Bug in functions returning setof where table has dropped column
Date: 2004-01-12 10:15:33
Message-ID: 20040112101533.GA24897@computing-services.oxford.ac.uk
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

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

Browse pgsql-bugs by date

  From Date Subject
Next Message Pavel Stehule 2004-01-12 13:23:48 PQconndefaults() error, don't show PGCLIENTENCODING
Previous Message Denis N. Stepanov 2004-01-12 08:27:22 Re: BUG #1044: snprintf() shipped with PostgreSQL is not