From: | PG Bug reporting form <noreply(at)postgresql(dot)org> |
---|---|
To: | pgsql-bugs(at)lists(dot)postgresql(dot)org |
Cc: | cstork+postgresql(at)gmail(dot)com |
Subject: | BUG #18131: PL/pgSQL: regclass procedure parameter wrongly memoized(?) |
Date: | 2023-09-22 19:22:34 |
Message-ID: | 18131-576854e79c5cd264@postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
The following bug has been logged on the website:
Bug reference: 18131
Logged by: Christian Stork
Email address: cstork+postgresql(at)gmail(dot)com
PostgreSQL version: 14.9
Operating system: Ubuntu 22.04
Description:
The following condensed recipe reproduces the error:
create procedure callee(t regclass)
language plpgsql as
$body$
begin
raise notice 'callee: oid = %', t::oid;
execute 'table ' || t;
end;
$body$;
create procedure caller()
language plpgsql as
$body$
begin
create table table_name ();
raise notice 'caller: oid = %', 'table_name'::regclass::oid;
call callee('table_name');
drop table table_name;
end;
$body$;
call caller(); -- OK
call caller(); -- ERROR: callee executed with OID of previous invocation!
-- Relevant output (Ubuntu 14.9-1.pgdg22.04+1):
-- ...
-- NOTICE: caller: oid = 24769724
-- NOTICE: callee: oid = 24769724
-- CALL <---- first statement completed
successfully
-- NOTICE: caller: oid = 24769727
-- NOTICE: callee: oid = 24769724 <---- should be the same as line
above
-- ERROR: syntax error at or near "24769724"
-- LINE 1: table 24769724 <---- no more table with this OID in
pg_catalog, hence OID instead of table name, I assume
-- ...
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2023-09-22 19:31:10 | Re: BUG #18080: to_tsvector fails for long text input |
Previous Message | vignesh C | 2023-09-22 18:55:59 | Re: [16+] subscription can end up in inconsistent state |