On Wed, Jan 06, 2010 at 11:14:38AM -0500, Tom Lane wrote:
> Andrew Dunstan <and...@dunslane.net> writes:
> > Tom Lane wrote:
> >> spi_rv = SPI_execute(query, current_call_data->prodesc->fn_readonly,
> >>                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> 
> > OK, but won't that automatically supply the value from the function 
> > called from postgres, which will be the right thing?
> 
> My point was that that is exactly the wrong thing.  If I have a function
> declared stable, it must not suddenly start behaving as volatile because
> it was called from a volatile function.  Nor vice versa.
> 
> Now as I mentioned upthread, there might be other ways to get the
> correct value of the readonly parameter.  One that comes to mind is
> to somehow attach it to the spi call "at compile time", whatever that
> means in the perl world.  But you can't just have it be determined by
> the outermost active function call.

If you want 'a perl compile time hook', those are called attributes.
http://search.cpan.org/~dapm/perl-5.10.1/lib/attributes.pm

You can define attributes to effect how a given syntax compiles.
perl.  

my $var :foo;

or 

sub bar :foo;

The subroutine or variable is compiled in a way defined by the
':foo' attribute.

This might be a clean way around the type dispatch issues
as well.  One could include the invokant type information in the 
perl declaration.  

sub sp_something :pg_sp ('bigint bigint');

sp_something ("12",0);

Anyway, that looks like a nice interface to me...

Although, I don't understand the Pg internals problem faced here
so ... I'm not sure my suggestion is helpful.


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

-- 
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