X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=sidebyside;f=SL%2FDBConnect.pm;h=4ee48733f612e68991c021b87334ed07c55a490c;hb=51264c4371793e3ac8990a54640f9e9b43e3f306;hp=7d3ea41088e086407c934f3ae03b1ba7ca210ef4;hpb=0d1bb5102f01eb03da55bc87b52ac52cd7ae7534;p=kivitendo-erp.git diff --git a/SL/DBConnect.pm b/SL/DBConnect.pm index 7d3ea4108..4ee48733f 100644 --- a/SL/DBConnect.pm +++ b/SL/DBConnect.pm @@ -4,6 +4,7 @@ use strict; use DBI; use SL::DB; +use SL::DBConnect::Cache; my %dateformat_to_datestyle = ( 'yy-mm-dd' => 'ISO', @@ -32,19 +33,27 @@ sub _connect { sub connect { my ($self, @args) = @_; + my $initial_sql = $self->get_initial_sql; + + 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; + if ($initial_sql) { + $dbh->do($initial_sql); + $dbh->commit if !$dbh->{AutoCommit}; + } + SL::DBConnect::Cache->store($dbh, @args, $initial_sql); return $dbh; } sub get_datestyle { my ($self, $dateformat) = @_; - return $dateformat_to_datestyle{ $dateformat || $::myconfig{dateformat} }; + return $dateformat_to_datestyle{ $dateformat || $::myconfig{dateformat} // '' }; } sub get_initial_sql {