Given this code: package A;
use base 'Rose::DB::Object'; __PACKAGE__->meta->setup(table => 't1', columns => [ qw(id a) ]); our $DB; sub init_db { my $dbh = DBI->connect_cached('DBI:mysql:test', 'root'); return $DB = Rose::DB->new(driver => 'mysql', dbh => $dbh) unless($DB); $DB->dbh($dbh); return $DB; } package main; DBI->trace(1); my $o = A->new(id => 1, a => 5)->save; my $o2 = A->new(id => 1)->load; $o = undef; $o2->delete; The full DBI trace output is included below. I don't see multiple disconnects (or any disconnects, really) in the output, so I'm pretty sure it's only using one $dbh. -John --- DBI 1.54-nothread default trace level set to 0x0/1 (pid 9836) at new.pl line 23 -> DBI->connect_cached(DBI:mysql:test, root, ****) <- default_user('root' undef ...)= ( 'root' undef ) [2 items] at DBI.pm line 615 <- connect_cached('test' 'root' ...)= DBI::db=HASH(0x1810ba8) at DBI.pm line 627 <- STORE('PrintError' 1)= 1 at DBI.pm line 678 <- STORE('AutoCommit' 1)= 1 at DBI.pm line 678 <- STORE('dbi_connect_method' 'connect_cached')= 1 at DBI.pm line 681 <> FETCH('dbi_connect_method')= 'connect_cached' ('dbi_connect_method' from cache) at DBI.pm line 681 <- STORE('Username' 'root')= 1 at DBI.pm line 681 <> FETCH('Username')= 'root' ('Username' from cache) at DBI.pm line 681 <- connected('DBI:mysql:test' 'root' ...)= undef at DBI.pm line 687 <- connect= DBI::db=HASH(0x1810ba8) <- STORE('dbi_connect_closure' CODE(0x1a6a98c))= 1 at DBI.pm line 696 <- FETCH('Driver')= DBI::dr=HASH(0x1849888) at DB.pm line 691 <> FETCH('Name')= 'mysql' ('Name' from cache) at DB.pm line 700 <- FETCH('RaiseError')= '' at Object.pm line 980 <- STORE('RaiseError' undef)= 1 at Object.pm line 980 <- STORE('RaiseError' 1)= 1 at Object.pm line 980 <- prepare_cached('INSERT INTO t1 ( a, id ) VALUES ( ?, ? )' undef ...)= DBI::st=HASH(0x1a6ae00) at Object.pm line 1078 <- execute(5 1)= 1 at Object.pm line 1106 <- STORE('RaiseError' '')= 1 at Object.pm line 978 -> DBI->connect_cached(DBI:mysql:test, root, ****) <- default_user('root' undef ...)= ( 'root' undef ) [2 items] at DBI.pm line 615 <- connect_cached('test' 'root' ...)= DBI::db=HASH(0x1810ba8) at DBI.pm line 627 <- STORE('PrintError' 1)= 1 at DBI.pm line 678 <- STORE('AutoCommit' 1)= 1 at DBI.pm line 678 <- STORE('dbi_connect_method' 'connect_cached')= 1 at DBI.pm line 681 <> FETCH('dbi_connect_method')= 'connect_cached' ('dbi_connect_method' from cache) at DBI.pm line 681 <- STORE('Username' 'root')= 1 at DBI.pm line 681 <> FETCH('Username')= 'root' ('Username' from cache) at DBI.pm line 681 <- connected('DBI:mysql:test' 'root' ...)= undef at DBI.pm line 687 <- connect= DBI::db=HASH(0x1810ba8) <- STORE('dbi_connect_closure' CODE(0x180f6ec))= 1 at DBI.pm line 696 <- FETCH('Driver')= DBI::dr=HASH(0x1849888) at DB.pm line 691 <> FETCH('Name')= 'mysql' ('Name' from cache) at DB.pm line 700 <- FETCH('RaiseError')= '' at Object.pm line 346 <- STORE('RaiseError' undef)= 1 at Object.pm line 346 <- STORE('RaiseError' 1)= 1 at Object.pm line 346 <- prepare_cached('SELECT a, id FROM t1 WHERE id = ?' undef ...)= DBI::st=HASH(0x1a90890) at Object.pm line 374 <- execute(1)= 1 at Object.pm line 378 <- bind_columns(undef SCALAR(0x180fb84) ...)= 1 at Object.pm line 382 <- fetch= [ '5' '1' ] row1 at Object.pm line 384 <- rows= '1' at Object.pm line 386 <- finish= 1 at Object.pm line 388 <- STORE('RaiseError' '')= 1 at Object.pm line 344 <- FETCH('RaiseError')= '' at Object.pm line 1425 <- STORE('RaiseError' undef)= 1 at Object.pm line 1425 <- STORE('RaiseError' 1)= 1 at Object.pm line 1425 -> DBI->connect_cached(DBI:mysql:test, root, ****) <- default_user('root' undef ...)= ( 'root' undef ) [2 items] at DBI.pm line 615 <- connect_cached('test' 'root' ...)= DBI::db=HASH(0x1810ba8) at DBI.pm line 627 <- STORE('PrintError' 1)= 1 at DBI.pm line 678 <- STORE('AutoCommit' 1)= 1 at DBI.pm line 678 <- STORE('dbi_connect_method' 'connect_cached')= 1 at DBI.pm line 681 <> FETCH('dbi_connect_method')= 'connect_cached' ('dbi_connect_method' from cache) at DBI.pm line 681 <- STORE('Username' 'root')= 1 at DBI.pm line 681 <> FETCH('Username')= 'root' ('Username' from cache) at DBI.pm line 681 <- connected('DBI:mysql:test' 'root' ...)= undef at DBI.pm line 687 <- connect= DBI::db=HASH(0x1810ba8) <- STORE('dbi_connect_closure' CODE(0x18109b0))= 1 at DBI.pm line 696 <- FETCH('Driver')= DBI::dr=HASH(0x1849888) at DB.pm line 691 <> FETCH('Name')= 'mysql' ('Name' from cache) at DB.pm line 700 <- prepare_cached('DELETE FROM t1 WHERE id = ?' undef ...)= DBI::st=HASH(0x180fad0) at Object.pm line 1428 <- execute('1')= 1 at Object.pm line 1432 <- rows= '1' at Object.pm line 1434 <- STORE('RaiseError' '')= 1 at Object.pm line 1423 <- disconnect_all= (not implemented) at DBI.pm line 705 ! <- DESTROY(DBI::st=HASH(180fad0))= undef during global destruction ! <- DESTROY(DBI::st=HASH(1a6ae00))= undef during global destruction ! <- DESTROY(DBI::st=HASH(1a66e48))= undef during global destruction ! <- DESTROY(DBI::db=HASH(1810ba8))= undef during global destruction ! <- DESTROY(DBI::dr=HASH(1849888))= undef during global destruction ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ Rose-db-object mailing list Rose-db-object@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rose-db-object