Thread: BUG #3916: type of "xxxx" does not match that when preparing the plan
BUG #3916: type of "xxxx" does not match that when preparing the plan
From
"Hubert FONGARNAND"
Date:
The following bug has been logged online: Bug reference: 3916 Logged by: Hubert FONGARNAND Email address: informatique.internet@fiducial.fr PostgreSQL version: 8.3RC2 Operating system: Linux Gentoo Description: type of "xxxx" does not match that when preparing the plan Details: Hi, We are testing PostGreSQL 8.3 RC2 on our beta plateform and we are facing some problems with plpgsql function. Here's a failing test case, which worked well on postgresql 8.1 : Create this function : CREATE OR REPLACE FUNCTION test(param integer) RETURNS text AS $BODY$DECLARE attribute TEXT:=''; query TEXT; curs REFCURSOR; rec RECORD; BEGIN if (param=1) THEN query := 'SELECT ''test''::varchar AS label'; ELSE query := 'SELECT ''test''::text AS label'; END IF; RAISE NOTICE '%',query; OPEN curs for EXECUTE query; FETCH curs into rec; attribute=rec.label; CLOSE curs; RETURN attribute; END;$BODY$ LANGUAGE 'plpgsql' VOLATILE Execute this function, and this sql : postgres=# SELECT test(1); NOTICE: SELECT 'test'::varchar AS label test ------ test (1 ligne) and now : postgres=# SELECT test(2); NOTICE: SELECT 'test'::text AS label ERROR: type of "rec.label" does not match that when preparing the plan CONTEXT: PL/pgSQL function "test" line 15 at assignment It seems that if the type of "label" changes from varchar to text it crashes... Thanks for fixing this!