DB-Handle Caches: DATESTYLE korrekt setzen
authorSven Schöling <s.schoeling@linet-services.de>
Fri, 19 Jun 2015 15:17:14 +0000 (17:17 +0200)
committerSven Schöling <s.schoeling@linet-services.de>
Fri, 19 Jun 2015 15:17:14 +0000 (17:17 +0200)
SL/DBConnect.pm
SL/DBConnect/Cache.pm

index 369cfe1..4ee4873 100644 (file)
@@ -33,18 +33,20 @@ sub _connect {
 
 sub connect {
   my ($self, @args) = @_;
+  my $initial_sql = $self->get_initial_sql;
 
-  if (my $cached_dbh = SL::DBConnect::Cache->get(@args)) {
+  if (my $cached_dbh = SL::DBConnect::Cache->get(@args, $initial_sql)) {
     return $cached_dbh;
   }
 
   my $dbh = $self->_connect(@args);
   return undef if !$dbh;
 
-  my $initial_sql = $self->get_initial_sql;
-  $dbh->do($initial_sql) if $initial_sql;
-
-  SL::DBConnect::Cache->store($dbh, @args);
+  if ($initial_sql) {
+    $dbh->do($initial_sql);
+    $dbh->commit if !$dbh->{AutoCommit};
+  }
+  SL::DBConnect::Cache->store($dbh, @args, $initial_sql);
 
   return $dbh;
 }
index 4f1a465..778785c 100644 (file)
@@ -42,7 +42,7 @@ sub clear {
 sub _args2str {
   my (@args) = @_;
 
-  my ($dbconnect, $dbuser, $dbpasswd, $options) = @_;
+  my ($dbconnect, $dbuser, $dbpasswd, $options, $initial_sql) = @_;
   $dbconnect //= '';
   $dbuser    //= '';
   $dbpasswd  //= '';
@@ -52,7 +52,7 @@ sub _args2str {
     map { $_ => $options->{$_} }
     sort keys %$options;                  # deterministic order
 
-  join ';', apply { s/([;\\])/\\$1/g } $dbconnect, $dbuser, $dbpasswd, $options_str;
+  join ';', apply { s/([;\\])/\\$1/g } $dbconnect, $dbuser, $dbpasswd, $options_str, $initial_sql;
 }
 
 1;