Re: PL/Perl Does not Like vstrings - Mailing list pgsql-hackers

From David E. Wheeler
Subject Re: PL/Perl Does not Like vstrings
Date
Msg-id 6E866333-1A67-4639-B744-9C423DD8EAB0@justatheory.com
Whole thread Raw
In response to Re: PL/Perl Does not Like vstrings  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: PL/Perl Does not Like vstrings  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: PL/Perl Does not Like vstrings  (Andrew Dunstan <andrew@dunslane.net>)
List pgsql-hackers
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

pgsql-hackers by date:

Previous
From: "David E. Wheeler"
Date:
Subject: Re: PL/Perl Does not Like vstrings
Next
From: Tom Lane
Date:
Subject: Re: PL/Perl Does not Like vstrings