Auftrags-Controller: gelieferte Menge in Auftragsposition anzeigen.
[kivitendo-erp.git] / SL / DBConnect.pm
index 369cfe1..9f2472c 100644 (file)
@@ -16,7 +16,6 @@ my %dateformat_to_datestyle = (
 
 sub _connect {
   my ($self, @args) = @_;
-  @args = $self->get_connect_args if !@args;
 
   return DBI->connect(@args) unless $::lx_office_conf{debug} && $::lx_office_conf{debug}->{dbix_log4perl};
 
@@ -33,18 +32,21 @@ sub _connect {
 
 sub connect {
   my ($self, @args) = @_;
+  @args = $self->get_connect_args if !@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;
 }