On Jan 5, 2012, at 7:34 AM, Tom Lane wrote:

>> That still crashes, but doesn't if we use sv_mortalcopy unconditionally.
> 
> Unconditional sv_mortalcopy sounds like the thing to do then, but a
> comment would help.  And if this isn't a Perl bug, I would like to
> know what is.

Question: Is this an issue anywhere else in PL/Perl, or just elog()? What about 
SPI parameters or return values?

david=# DO LANGUAGE PLPERL $$
david$#     my $plan = spi_prepare('SELECT $1', 'TEXT');
david$#     spi_query_prepared($plan, $^V);
david$#     spi_freeplan($plan);
david$#     return;
david$# $$;
ERROR:  cannot convert Perl hash to non-composite type text at line 3.
CONTEXT:  PL/Perl anonymous code block

No segfault, at least, though that’s a rather bizarre error message. AFAIK, $^V 
isn’t a hash. This works, though:

DO LANGUAGE PLPERL $$
    my $plan = spi_prepare('SELECT $1', 'TEXT');
    spi_query_prepared($plan, v1);
    spi_freeplan($plan);
    return;
$$;
DO

Best,

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