bug found in 8.3 beta 3.
Hi, I found this bug? In beta 3. I am not a Linux guru so installing any
betas in Debian is very painful for me. Perhaps you could check to see if
it is still there in beta 4??
Last time I reported a bug
http://archives.postgresql.org/pgsql-committers/2007-11/msg00584.php
I did not get any direct feedback and only found it by fluke. My pgsql-bugs
subscription is set
to "nomail". Please reply directly to chrisj.wood@sympatico.ca
Here are the steps that demonstrate the problem:
drop type t_tempbug_c cascade;
create type t_tempbug_c as (
CONF_KEY int4
)
;
create or replace function tempbug_c()
returns SETOF t_tempbug_c
as $$
declare
begin
drop table if exists temp_table cascade;
create temporary table temp_table(a int);
insert into temp_call_table values (7) ;
return query
select 0 from temp_call_table limit 1 ;
end;
$$ language plpgsql;
create or replace function tempbug()
returns SETOF t_tempbug_c
as $$
declare
val int;
begin
create temporary table temp_call_table (a int);
perform tempbug_c() ;
return query
select * from temp_call_table ;
drop table temp_call_table ;
end;
$$ language plpgsql;
protocal2=> select * from tempbug() ;
ERROR: set-valued function called in context that cannot accept a set
CONTEXT: PL/pgSQL function "tempbug_c" line 6 at RETURN QUERY SQL statement
"SELECT tempbug_c()"
PL/pgSQL function "tempbug" line 5 at PERFORM
protocal2=> select version() ;
version
----------------------------------------------------------------------------
-------------------------------------
PostgreSQL 8.3beta3 on i486-pc-linux-gnu, compiled by GCC cc (GCC) 4.2.3
20071014 (prerelease) (Debian 4.2.2-3)
(1 row)
"chris wood" <chrisj.wood@sympatico.ca> writes:
Hi, I found this bug? In beta 3. I am not a Linux guru so installing any
betas in Debian is very painful for me. Perhaps you could check to see if
it is still there in beta 4??
I see no bug here. You're invoking a set-returning function from a
PERFORM, which is a scalar context (it's not different from SELECT
really).
If you make the PERFORM be
perform * from tempbug_c() ;
then it doesn't complain.
regards, tom lane
Hi,
Le Monday 17 December 2007 19:05:36 chris wood, vous avez écrit :
Hi, I found this bug? In beta 3. I am not a Linux guru so installing any
betas in Debian is very painful for me. Perhaps you could check to see if
it is still there in beta 4??
The experimental sources of debian already provides postgresql-8.3 beta4, so
installing it is as easy as adding experimental to your testing server
sources.list, or if you want to take no risk of upgrading other experimental
packages, adding the deb-src experimental source and backporting:
apt-get update
apt-get build-dep postgresql-common postgresql-client-common postgresql-8.3
apt-get source -b postgresql-common postgresql-client-common postgresql-8.3
dpkg -i ...
http://packages.debian.org/postgresql-8.3
Install at least the -common packages, libpq and the wanted components.
Those -common packages contain the infamous debian wrappers which makes debian
differs from other PostgreSQL installations, but allows to easily use several
version at a time, including binary choice without messing with PATH manually
(adding --cluster 8.3/main to "official" options --- version/clustername).
Please note that 8.3b2 to 8.3b4 needs an initdb, and the debian packaging has
no support for beta to beta upgrading. You'll certainly want to do it
manually:
pg_dumpall > backup.file
apt-get remove postgresql-8.3
rm -rf $PGDATA/* (defaults to /var/lib/postgresql/8.3/main)
<install new version, either apt-get install or dpkg -i>
psql -f backup.file
Hope this helps,
--
dim