alter table tablename add column - breaks pl/pgsql function returns tablename

From: Palle Girgensohn <girgen(at)FreeBSD(dot)org>
To: PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: alter table tablename add column - breaks pl/pgsql function returns tablename
Date: 2012-10-31 18:20:54
Message-ID: 50916C06.9060603@FreeBSD.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi!

This is an old problem, referred to in bug #4907:

CREATE TABLE test(id INTEGER);
INSERT INTO test VALUES (1);

CREATE OR REPLACE FUNCTION test_func() returns SETOF test as $$
DECLARE
res_ test;
BEGIN
FOR res_ IN SELECT * FROM test LOOP
RETURN NEXT res_;
END LOOP;
END
$$ LANGUAGE 'plpgsql';

SELECT * FROM test_func();
ALTER TABLE test ADD COLUMN foo INTEGER;
SELECT * FROM test_func();
- -- ERROR: wrong record type supplied in RETURN NEXT

You have to run create or replace again to fix it when changing the
schema. How come it fails? Is the return type "hardcoded" when the
function is created? Is this very hard to fix? IS there a suggested
work-around?

It seems to work to change to a generic "record", but that is also more
sloppy as it is not as well typed.

Thoughts?

Palle

-----BEGIN PGP SIGNATURE-----
Version: GnuPG/MacGPG2 v2.0.17 (Darwin)
Comment: GPGTools - http://gpgtools.org
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJQkWwGAAoJEIhV+7FrxBJDc6wIAK0w3h7hvPT0zsu7YyviKL+f
vi/cL5f+B9NYRkXxQ4AJ5+Qr0xwODNvSFlCEoqrREcdcCAZHoEktunZtp0FTvNLQ
HJEemac23/YyUaYE5rFI7KIySxTEnpY6qQx+YkHW1OiDF4/X/XzEFYFjCa9x3jNi
BfrnmYP0MXCB0y+vXRpUn4vm8QW7o5m+hQE0nQ0Ni4xk+GHbGOh2q21WzYevOe6s
Gj4r8nDPMX1q0Sk4zmnNrUbudVx6YsEtj7ogAbGCg5KbB3ebjfj5eJdSAD9z/uCs
0ikfZt2kvDAkdbrz/uEaRhq91gkkjZR2+Tm1iEKJhedRsRBk2y554zw7esxkj/c=
=sVM9
-----END PGP SIGNATURE-----

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Marti Raudsepp 2012-10-31 19:04:15 Re: Caching for stable expressions with constant arguments v6
Previous Message Josh Berkus 2012-10-31 16:51:56 Re: Proposal for Allow postgresql.conf values to be changed via SQL