Re: Re: [COMMITTERS] pgsql: Get rid of the need for manual maintenance of the initial

Поиск
Список
Период
Сортировка
От Garick Hamlin
Тема Re: Re: [COMMITTERS] pgsql: Get rid of the need for manual maintenance of the initial
Дата
Msg-id 20100105193751.GF88668@isc.upenn.edu
обсуждение исходный текст
Ответ на Re: Re: [COMMITTERS] pgsql: Get rid of the need for manual maintenance of the initial  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
On Tue, Jan 05, 2010 at 02:02:51PM -0500, Tom Lane wrote:
> Stefan Kaltenbrunner <stefan@kaltenbrunner.cc> writes:
> > did that and it seems the problem is in the loop that does:
> 
> > foreach my $row (@$data)
> > {
> 
> >      # To construct fmgroids.h and fmgrtab.c, we need to inspect some
> >      # of the individual data fields.  Just splitting on whitespace
> 
> Huh.  It's weird that I don't see a leak in either 5.8.7 or 5.10.1,
> which are the two closest perl versions I have handy here.  I think
> this may be a platform-specific Perl bug.  Still, it would be nice
> to work around it if we can.
> 
> I'm not nearly good enough in Perl to be sure about the semantics
> of this loop.  Is it possible that it's changing the global contents
> of the @$data structure, rather than just hacking a local copy of
> each row before pushing some values into @fmgr?
Yes, that is what would happen.  
I have not read this script at all but that is how perl works...

$row is an aliased to each scalar in the list '(@$data)'

There is no copying.  Copying happens on list assignment, 
but not with for/foreach.

If you wanted a copy you need something like:
foreach my $row (@{[ @$data ]}) {

for a shallow copy.

Is that a problem? (I haven't read the script)

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


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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: Re: [COMMITTERS] pgsql: Get rid of the need for manual maintenance of the initial
Следующее
От: Stefan Kaltenbrunner
Дата:
Сообщение: Re: Re: [COMMITTERS] pgsql: Get rid of the need for manual maintenance of the initial