Re: Error working with Temporary Sequences in plpgsql in 8.1 (8.0 works fine)

From: Jaime Casanova <systemguards(at)gmail(dot)com>
To: Daniel Schuchardt <daniel_schuchardt(at)web(dot)de>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: Error working with Temporary Sequences in plpgsql in 8.1 (8.0 works fine)
Date: 2006-01-17 18:28:03
Message-ID: c2d9e70e0601171028o1848602epbf7d550754e106ee@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 1/17/06, Daniel Schuchardt <daniel_schuchardt(at)web(dot)de> wrote:
> Hi,
>
> here is a testcase:
>
> CREATE OR REPLACE FUNCTION testseq()
> RETURNS void AS
> $BODY$
> BEGIN
> CREATE TEMP SEQUENCE test;
> PERFORM testseq1();
> DROP SEQUENCE test;
> RETURN;
> END; $BODY$
> LANGUAGE 'plpgsql' VOLATILE;
> ALTER FUNCTION testseq() OWNER TO postgres;
>
>
> CREATE OR REPLACE FUNCTION testseq1()
> RETURNS void AS
> $BODY$
> DECLARE I INTEGER;
> BEGIN
> I:= nextval('test');
> RETURN;
> END; $BODY$
> LANGUAGE 'plpgsql' VOLATILE;
> ALTER FUNCTION testseq1() OWNER TO postgres;
>
>
> SELECT testseq();
>
> -- this works fine.
>
> SELECT testseq();
>
>
> ERROR: could not open relation with OID 21152
> CONTEXT: PL/pgSQL function "testseq1" line 3 at assignment
> SQL statement "SELECT testseq1()"
> PL/pgSQL function "testseq" line 3 at perform
>
>
>
> Greetings,
>
> Daniel.
>

try this way:

CREATE OR REPLACE FUNCTION testseq() RETURNS void AS
$BODY$
BEGIN
EXECUTE 'CREATE TEMP SEQUENCE test';
PERFORM testseq1();
DROP SEQUENCE test;
RETURN;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION testseq() OWNER TO postgres;

CREATE OR REPLACE FUNCTION testseq1() RETURNS void AS
$BODY$
DECLARE I INTEGER;
BEGIN
EXECUTE 'select nextval(''test'')' INTO I;
raise notice '%', I;
RETURN;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION testseq1() OWNER TO postgres;

SELECT testseq();
SELECT testseq();

is the same problem as with temp tables, you must put their creation,
and in this case even the nextval in an execute...

--
regards,
Jaime Casanova
(DBA: DataBase Aniquilator ;)

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Simon Riggs 2006-01-17 19:17:37 Re: Large Scale Aggregation (HashAgg Enhancement)
Previous Message uwcssa 2006-01-17 16:22:36 function caching problem