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

Reply via email to