[DBD::Pg] Add in memory leak test for array grabbing per mailing list post.
[email protected] Mon, 3 Nov 2014 12:55:33 +0000
| Newsgroups | perl.dbd.pg.changes |
|---|---|
| Message-ID | <[email protected]> |
Committed by Greg Sabino Mullane <[email protected]> Add in memory leak test for array grabbing per mailing list post. --- testme.tmp.pl | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/testme.tmp.pl b/testme.tmp.pl index a0a6e2e..d5b4454 100755 --- a/testme.tmp.pl +++ b/testme.tmp.pl @@ -13,6 +13,8 @@ use Data::Dumper; use YAML; use DBD::Pg qw/:pg_types/; use Data::Peek; +use Devel::Leak; +use Time::HiRes qw/ sleep /; use vars qw/$sth $info $count $SQL/; @@ -26,15 +28,41 @@ my $dbh = DBI->connect($DSN, '', '', {AutoCommit=>0,RaiseError=>1,PrintError=>0} my $me = $dbh->{Driver}{Name}; print "DBI is version $DBI::VERSION, I am $me, version of DBD::Pg is $DBD::Pg::VERSION\n"; -user_arrays(); +#user_arrays(); -commit_return_test(); +#commit_return_test(); #utf8_print_test(); #memory_leak_test_bug_65734(); -exit; +memory_leak_arrays(); + +sub memory_leak_arrays { + + $dbh->do('CREATE TABLE leaktest ( id TEXT, arr TEXT[] )'); + $dbh->do('TRUNCATE TABLE leaktest'); + for my $var (qw/ a b c/ ) { + $dbh->do(qq{INSERT INTO leaktest VALUES ( '$var', '{"a","b","c"}' )}); + } + + my $sth = $dbh->prepare( 'SELECT arr FROM leaktest' ); + my $count0 = 0; + + { + my $handle; + my $count1 = Devel::Leak::NoteSV( $handle ); + $sth->execute(); + my $r = $sth->fetchall_arrayref( {} ); + my $count2 = Devel::Leak::NoteSV( $handle ); + $count0 ||= $count1; + my $diff = $count2 - $count0; + printf "New SVs: %4d Total: %d\n", $count2 - $count0, $count2; + sleep 0.2; + redo; + } + +} ## end of memory_leak_arrays sub user_arrays { -- 1.8.4