Re: BUG #5066: plperl issues with perl_destruct() and END blocks

From: Robert Haas <robertmhaas(at)gmail(dot)com>
To: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
Cc: David Fetter <david(at)fetter(dot)org>, Tim Bunce <Tim(dot)Bunce(at)pobox(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, pgsql-bugs(at)postgresql(dot)org
Subject: Re: BUG #5066: plperl issues with perl_destruct() and END blocks
Date: 2009-09-21 19:32:18
Message-ID: 603c8f070909211232j67879e3dk1ade46d76f90927a@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

On Mon, Sep 21, 2009 at 3:08 PM, Alvaro Herrera
<alvherre(at)commandprompt(dot)com> wrote:
> David Fetter escribió:
>> On Mon, Sep 21, 2009 at 01:06:17PM -0400, Alvaro Herrera wrote:
>
>> > The fine manual saith
>> >
>> >     You may have multiple "END" blocks within a file--they will
>> >     execute in reverse order of definition; that is: last in, first
>> >     out (LIFO).
>> >
>> > But then, why would we care?  We just call the destructor and Perl
>> > ensures that the blocks are called in the right order.
>>
>> This is not quite what I meant.  Let's say we have two or more different
>> PL/Perl functions executed over the course of a backend.  Which one's
>> END block gets executed last?
>
> I think the manual is quite clear on this point.  It talks about "files"
> which we don't have, but other than that it doesn't seem like there
> shouldn't be any problem.
>
> Now that I think about it, this only affects loaded modules, not the
> plperl functions themselves, right?  I mean, you can't define an END
> block inside a function.

You might think that, but it turns out the world of Perl is crazier
than the ordinary mind can fathom.

$ perl -e 'sub foo { END { print "hi\n" } }'
hi

...Robert

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message Matt Taylor 2009-09-21 21:07:11 Re: BUG #5063: MS Access crashes by quiting after linking tables with PostgreSQL
Previous Message Christine Penner 2009-09-21 19:23:45 Re: Problem installing Postgres 8.4.1