Re: [PATCHES] WIP 2 interpreters for plperl

Поиск
Список
Период
Сортировка
От Andrew Dunstan
Тема Re: [PATCHES] WIP 2 interpreters for plperl
Дата
Msg-id 455745E5.9000505@dunslane.net
обсуждение исходный текст
Ответы Re: [PATCHES] WIP 2 interpreters for plperl
Список pgsql-hackers
[moving to -hackers]

I wrote:
>
>>
>> I have made some progress with what I think is needed to have two 
>> interpreters for plperl. This is a lot harder than the pltcl case for 
>> two reasons: 1. there are no restrictions on having 2 tcl 
>> interpreters, and 2. tcl does not need to save and restore context as 
>> we have to do with perl. I think I have a conceptual siolution to 
>> these two problems, but what I have is currently segfaulting somewhat 
>> myteriously. Tracing a dynamically loaded library in a postgres 
>> backend with a debugger is less than fun, too. I am attaching what I 
>> currently have, liberally sprinkled with elog(NOTICE) calls as trace 
>> writes.
>>
>>
>
> With a little more perseverance I found the problem. The attached 
> patch passes regression. But it now needs plenty of eyeballs and testing.
>
>

Well, if anyone cast eyeballs over it they kept it secret from me :-(


However, I have now tested the patch with the little script shown below 
and it seems to do the Right Thing (tm) in switching context and 
restoring it. So I think it can be applied to HEAD, along with an 
addition to the docs and a release note.

Since this is a behaviour modification, do we want to apply it to the 
back branches? Doing so would certainly be possible, although it would 
be non-trivial.

cheers

andrew


------------

drop function if exists f1(int);
drop function if exists f2(int);


create function f1(int) returns void language plperl as
$$
 my $arg = shift; elog NOTICE,"in plperl func f1($arg)"; return if ($arg > 5); $arg++; spi_exec_query("select
f2($arg)");

$$;

create function f2(int) returns void language plperlu as
$$
 my $arg = shift; elog NOTICE,"in plperlu func f2($arg)"; return if ($arg > 5); $arg++; spi_exec_query("select
f1($arg)");

$$;


select f1(0);
select f2(0);





В списке pgsql-hackers по дате отправления:

Предыдущее
От: Martijn van Oosterhout
Дата:
Сообщение: Re: Giving up multiple postmaster + RPM issue
Следующее
От: Robert Treat
Дата:
Сообщение: Re: Frequent Update Project: Design Overview of HOTUpdates