Merge branch 'b-3.6.1' of ../kivitendo-erp_20220811
[kivitendo-erp.git] / SL / DBConnect / Cache.pm
index 4f1a465..c133e8a 100644 (file)
@@ -35,14 +35,23 @@ sub reset {
   $dbh;
 }
 
+sub reset_all {
+  $_->{AutoCommit} || $_->rollback for values %cache;
+}
+
 sub clear {
   %cache = ();
 }
 
+sub disconnect_all_and_clear {
+  $_->disconnect for values %cache;
+  %cache = ();
+}
+
 sub _args2str {
   my (@args) = @_;
 
-  my ($dbconnect, $dbuser, $dbpasswd, $options) = @_;
+  my ($dbconnect, $dbuser, $dbpasswd, $options, $initial_sql) = @_;
   $dbconnect //= '';
   $dbuser    //= '';
   $dbpasswd  //= '';
@@ -52,7 +61,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;