Thread: BUG #3665: INSERT is not allowed in a non-volatile function

BUG #3665: INSERT is not allowed in a non-volatile function

From
"Evgeni"
Date:
The following bug has been logged online:

Bug reference:      3665
Logged by:          Evgeni
Email address:      evgeni117@mail.ru
PostgreSQL version: 8.1.7
Operating system:   Linux Redhat 7.2
Description:        INSERT is not allowed in a non-volatile function
Details:

I write  function in c. in function using SPI_exeс("INSERT ...
CREATE OR REPLACE FUNCTION my_fun(character varying, character varying,
integer)
  RETURNS integer AS
'$libdir/my_fun', 'my_fun'
  LANGUAGE 'c'  VOLATILE STRICT;

On SPI_exec see erorr ERROR:  INSERT is not allowed in a non-volatile
function
Manualy INSERT is command, all ok!
Ok/
I'm make example
:http://www.postgresql.org/docs/8.1/interactive/spi-examples.html
INSERT INTO a VALUES (execq('INSERT INTO a VALUES (0)',0));
The same error!!!
Help me/

Re: BUG #3665: INSERT is not allowed in a non-volatile function

From
Tom Lane
Date:
"Evgeni" <evgeni117@mail.ru> writes:
> On SPI_exec see erorr ERROR:  INSERT is not allowed in a non-volatile
> function

You didn't show us your code, but somehow or other you're managing to
pass read_only = true to the SPI execution code.

            regards, tom lane