cvsuser     03/07/17 10:47:51

  Modified:    P5EEx/Blue/P5EEx/Blue/Repository DBI.pm
  Log:
  added support for remote databases
  
  Revision  Changes    Path
  1.25      +24 -14    p5ee/P5EEx/Blue/P5EEx/Blue/Repository/DBI.pm
  
  Index: DBI.pm
  ===================================================================
  RCS file: /cvs/public/p5ee/P5EEx/Blue/P5EEx/Blue/Repository/DBI.pm,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -w -r1.24 -r1.25
  --- DBI.pm    16 Jul 2003 15:55:18 -0000      1.24
  +++ DBI.pm    17 Jul 2003 17:47:51 -0000      1.25
  @@ -1,13 +1,13 @@
   
   ######################################################################
  -## File: $Id: DBI.pm,v 1.24 2003/07/16 15:55:18 spadkins Exp $
  +## File: $Id: DBI.pm,v 1.25 2003/07/17 17:47:51 spadkins Exp $
   ######################################################################
   
   use P5EEx::Blue::P5EE;
   use P5EEx::Blue::Repository;
   
   package P5EEx::Blue::Repository::DBI;
  -$VERSION = do { my @r=(q$Revision: 1.24 $=~/\d+/g); sprintf "%d."."%02d"x$#r,@r};
  +$VERSION = do { my @r=(q$Revision: 1.25 $=~/\d+/g); sprintf "%d."."%02d"x$#r,@r};
   
   @ISA = ( "P5EEx::Blue::Repository" );
   
  @@ -147,7 +147,7 @@
       }
       else {
           my ($var, $capsvar);
  -        foreach $var qw(dbidriver dbname dbuser dbpass dbioptions dbschema) {
  +        foreach $var qw(dbidriver dbname dbuser dbpass dbioptions dbschema dbhost 
dbport) {
               if (! defined $self->{$var}) {
                   $capsvar = uc($var);
                   if ($ENV{$capsvar}) {
  @@ -170,29 +170,39 @@
       if (!defined $self->{dbh}) {
   
           if (!defined $self->{dsn}) {
  -            my ($dbidriver, $dbname, $dbuser, $dbpass, $dbioptions, $dbschema);
  +            my $dbidriver  = $self->{dbidriver};
  +            my $dbname     = $self->{dbname};
  +            my $dbuser     = $self->{dbuser};
  +            my $dbpass     = $self->{dbpass};
  +            my $dbschema   = $self->{dbschema};
  +            my $dbhost     = $self->{dbhost};
  +            my $dbport     = $self->{dbport};
       
  -            $dbidriver  = $self->{dbidriver};
  -            $dbname     = $self->{dbname};
  -            $dbuser     = $self->{dbuser};
  -            $dbpass     = $self->{dbpass};
  -            $dbioptions = $self->{dbioptions};
  -            $dbschema   = $self->{dbschema};
  -
  -            die "ERROR: missing DBI driver [$dbidriver] and/or db name [$dbname] in 
configuration.\n"
  +            die "ERROR: missing DBI driver and/or db name [$dbidriver,$dbname] in 
configuration.\n"
                   if (!$dbidriver || !$dbname);
   
  -            $self->{dsn} = "dbi:${dbidriver}:database=${dbname}";
  +            my $dsn = "dbi:${dbidriver}:database=${dbname}";
  +            $dsn .= ";host=$dbhost" if ($dbhost);
  +            $dsn .= ";port=$dbport" if ($dbport);  # if $dbhost not supplied, 
$dbport is path to Unix socket
  +
  +            # NOTE: mysql_client_found_rows=true is important for the following 
condition.
  +            # If an update is executed against a row that exists, but its values do 
not change,
  +            # MySQL does not ordinarily report this as a row that has been affected 
by the
  +            # statement.  However, we occasionally need to know if the update found 
the row.
  +            # We really don't care if the values were changed or not.  To get this 
behavior,
  +            # we need to set this option.
   
               # enforce driver-specific rules here
               if ($dbidriver eq "mysql") {
                   # force an update of a row to report that is was found (even if the 
values didn't change)
  -                $self->{dsn} .= ";mysql_client_found_rows=true"; 
  +                $dsn .= ";mysql_client_found_rows=true"; 
                   $self->{attr} = { "PrintError" => 0, "AutoCommit" => 1, 
"RaiseError" => 0 };
               }
               else {
                   $self->{attr} = { "PrintError" => 0, "AutoCommit" => 0, 
"RaiseError" => 0 };
               }
  +
  +            $self->{dsn} = $dsn;
           }
   
           $self->{dbh} = DBI->connect($self->{dsn}, $self->{dbuser}, $self->{dbpass}, 
$self->{attr});
  
  
  

Reply via email to