On Tue, Jan 05, 2010 at 02:02:51PM -0500, Tom Lane wrote: > Stefan Kaltenbrunner <ste...@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 -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers