On 01/10/2012 12:34 PM, Pavel Stehule wrote:

Actually, now I look closer I see that PLPerl passes back a stringified
status from SPI_execute(), so there is no great need for setting up these
constants. It's probably water under the bridge now, but maybe PLPython
should have done this too.

This is not documented well - I see nothing about result value in doc.
Does it raise exception when SPI returns some bad result value?


The docs state:

   You can then access the command status (e.g., SPI_OK_INSERT) like this:

   $res = $rv->{status};


And it works like this:

   andrew=# do 'my $rv = spi_exec_query("select 1 as a");
   elog(NOTICE,$rv->{status});' language plperl;
   NOTICE:  SPI_OK_SELECT
   CONTEXT:  PL/Perl anonymous code block
   DO
   andrew=#

An error causes the function to end, so it never sees the error status:

   andrew=# do 'my $rv = spi_exec_query("select blurfl");
   elog(NOTICE,$rv->{status});' language plperl;
   ERROR:  column "blurfl" does not exist at line 1.
   CONTEXT:  PL/Perl anonymous code block
   andrew=#


If you think more documentation is needed, submit a patch.


cheers

andrew


--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to