transactions in functions, possible bug or what I'm doing wrong? - Mailing list pgsql-sql

From Riccardo G. Facchini
Subject transactions in functions, possible bug or what I'm doing wrong?
Date
Msg-id 20041119115231.27648.qmail@web13924.mail.yahoo.com
Whole thread Raw
Responses Re: transactions in functions, possible bug or what I'm doing
List pgsql-sql
Hi All,

PostgreSQL 7.4.5

assume this script:

---
create table test_table
(id serial,test_value text
) without oids;

insert into test_table
(test_value)
values ('A');

insert into test_table
(test_value)
values ('B');

insert into test_table
(test_value)
values ('C');

insert into test_table
(test_value)
values ('D');

CREATE OR REPLACE FUNCTION test_with_transaction() RETURNS text AS
'declare my_test_record record;
declare my_return_value text;

begin my_return_value := ''''; start transaction;   for my_test_record in select * from test_table   loop
my_return_value:= my_return_value || my_test_record.test_value;   end loop;   return my_return_value; commit;
 
end;' LANGUAGE 'plpgsql' VOLATILE;

CREATE OR REPLACE FUNCTION test_without_transaction() RETURNS text AS
'declare my_test_record record;
declare my_return_value text;
begin my_return_value := ''''; for my_test_record in select * from test_table loop   my_return_value := my_return_value
||my_test_record.test_value; end loop;   return my_return_value;
 
end;' LANGUAGE 'plpgsql' VOLATILE;
---

Why does select test_without_transaction();
return this info:
"ABCD" (as should be)

and select test_with_transaction();
returns this error?

ERROR:  SPI_prepare() failed on "start transaction"
CONTEXT:  PL/pgSQL function "test_with_transaction" line 6 at SQL
statement

I've been investigating the matter in the doc I have, but to no avail.
google was not helpful either.

any suggestion? is this a bug? or the bug resides in my head?

regards,

Riccardo



pgsql-sql by date:

Previous
From: "Iain"
Date:
Subject: Re: get sequence value of insert command
Next
From: Richard Huxton
Date:
Subject: Re: transactions in functions, possible bug or what I'm doing