Author: timbo
Date: Thu Oct  7 02:45:05 2010
New Revision: 14463

Modified:
   dbi/trunk/Changes
   dbi/trunk/DBI.pm
   dbi/trunk/t/40profile.t

Log:
Optimized connect() to remove redundant FETCH of \%attrib values

Modified: dbi/trunk/Changes
==============================================================================
--- dbi/trunk/Changes   (original)
+++ dbi/trunk/Changes   Thu Oct  7 02:45:05 2010
@@ -6,6 +6,10 @@
 
 =cut
 
+=head2 Changes in DBI 1.616 (svn rNNN) XXX
+
+  Optimized connect() to remove redundant FETCH of \%attrib values.
+
 =head2 Changes in DBI 1.615 (svn r14438) 21st September 2010
 
   Fixed t/51dbm_file for file/directory names with whitespaces in them

Modified: dbi/trunk/DBI.pm
==============================================================================
--- dbi/trunk/DBI.pm    (original)
+++ dbi/trunk/DBI.pm    Thu Oct  7 02:45:05 2010
@@ -717,7 +717,8 @@
                $dbh->{$a} = delete $apply->{$a};
            }
            while ( my ($a, $v) = each %$apply) {
-               eval { $dbh->{$a} = $v } or $@ && warn $@;
+               eval { $dbh->{$a} = $v }; # assign in void context to avoid 
re-FETCH
+                warn $@ if $@;
            }
        }
 

Modified: dbi/trunk/t/40profile.t
==============================================================================
--- dbi/trunk/t/40profile.t     (original)
+++ dbi/trunk/t/40profile.t     Thu Oct  7 02:45:05 2010
@@ -180,7 +180,7 @@
 is_deeply $tmp, bless {
        'Path' => [ '!Statement' ],
        'Data' => {
-               ''   => [ 7, 0, 0, 0, 0, 0, 0 ],
+               ''   => [ 6, 0, 0, 0, 0, 0, 0 ],
                $sql => [ -1, 0, 0, 0, 0, 0, 0 ],
                'set foo=1' => [ 1, 0, 0, 0, 0, 0, 0 ],
        }
@@ -247,12 +247,11 @@
 } => 'DBI::Profile';
 
 $tmp = [ $dbh->{Profile}->as_node_path_list() ];
-is @$tmp, 9, 'should have 9 nodes';
+is @$tmp, 8, 'should have 8 nodes';
 sanitize_profile_data_nodes($_->[0]) for @$tmp;
 #warn Dumper($dbh->{Profile}->{Data});
 is_deeply $tmp, [
   [ [ 3, 0, 0, 0, 0, 0, 0 ], '', '', 'foo', 'STORE' ],
-  [ [ 1, 0, 0, 0, 0, 0, 0 ], 'usrnam', '', 'foo', 'FETCH' ],
   [ [ 2, 0, 0, 0, 0, 0, 0 ], 'usrnam', '', 'foo', 'STORE' ],
   [ [ 1, 0, 0, 0, 0, 0, 0 ], 'usrnam', '', 'foo', 'connected' ],
   [ [ 1, 0, 0, 0, 0, 0, 0 ], 'usrnam', 'select name from .', 'bar', 'DESTROY' 
],
@@ -351,10 +350,10 @@
 }
 
 $tmp = run_test1( { Path => [ 'foo', sub { 'bar' }, 'baz' ] });
-is_deeply $tmp, { 'foo' => { 'bar' => { 'baz' => [ 12, 0,0,0,0,0,0 ] } } };
+is_deeply $tmp, { 'foo' => { 'bar' => { 'baz' => [ 11, 0,0,0,0,0,0 ] } } };
 
 $tmp = run_test1( { Path => [ 'foo', sub { 'ping','pong' } ] });
-is_deeply $tmp, { 'foo' => { 'ping' => { 'pong' => [ 12, 0,0,0,0,0,0 ] } } };
+is_deeply $tmp, { 'foo' => { 'ping' => { 'pong' => [ 11, 0,0,0,0,0,0 ] } } };
 
 $tmp = run_test1( { Path => [ 'foo', sub { \undef } ] });
 is_deeply $tmp, { 'foo' => undef }, 'should be vetoed';
@@ -362,7 +361,7 @@
 # check what code ref sees in $_
 $tmp = run_test1( { Path => [ sub { $_ } ] });
 is_deeply $tmp, {
-  '' => [ 7, 0, 0, 0, 0, 0, 0 ],
+  '' => [ 6, 0, 0, 0, 0, 0, 0 ],
   'select name from .' => [ 5, 0, 0, 0, 0, 0, 0 ]
 }, '$_ should contain statement';
 
@@ -421,7 +420,6 @@
 $as_text =~ s/\.00+/.0/g;
 #warn "[$as_text]";
 is $as_text, q{foo > DESTROY > baz: 0.0s / 1 = 0.0s avg (first 0.0s, min 0.0s, 
max 0.0s)
-foo > FETCH > baz: 0.0s / 1 = 0.0s avg (first 0.0s, min 0.0s, max 0.0s)
 foo > STORE > baz: 0.0s / 5 = 0.0s avg (first 0.0s, min 0.0s, max 0.0s)
 foo > connected > baz: 0.0s / 1 = 0.0s avg (first 0.0s, min 0.0s, max 0.0s)
 foo > execute > baz: 0.0s / 1 = 0.0s avg (first 0.0s, min 0.0s, max 0.0s)

Reply via email to