The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use lib 'lib';
use DBIx::RetryOverDisconnects;
use DBI::Const::GetInfoType;
use Benchmark qw/timethis timethese/;

my $mcmd = '/usr/local/etc/rc.d/mysql-server';
my $pcmd = '/usr/local/etc/rc.d/postgresql';
my ($cmd, $dsn, $user, $pass);
#select_mysql();
select_sqlite();

#start();
my $dbh = DBIx::RetryOverDisconnects->connect($dsn, $user, $pass, {
    ReconnectRetries => 3,
    ReconnectInterval => 1,
    TxnRetries => 5,
    ReconnectTimeout => 5,
});

$dbh->do("INSERT INTO aaa VALUES (".rand(1000000).", 'jopa')") for 1..100;

$dbh->do("INSERT INTO aaa VALUES (".rand(1000000).", 'jopa')") for 1..100;

=pod
print "-".$dbh->do("SELECT 1")."\n";
restart();
#stop();
my @a = $dbh->selectall_arrayref("SELECT * FROM facult");
print "-".$dbh->do("SELECT 1")."\n";
print_errors();
start();
#print "-".$dbh->do("SELECT asdf")."\n";
#print_errors();

$dbh->begin_work;
restart();
#stop();
print "-".$dbh->do("SELECT 1")."\n";
print_errors();
=cut
print "------------------end-------------\n";

sub restart {`$cmd restart`; sleep 1; }
sub stop    {`$cmd stop`;    sleep 1; }
sub start   {`$cmd start`;   sleep 1; }

sub print_errors {
    print "DSE: $DBIx::Safe::errstr ($DBIx::Safe::err)\n";
    print "DE: $DBI::errstr ($DBI::err)\n";
};

sub select_psql {
    $cmd = $pcmd;
    $dsn = "dbi:Pg:dbname=testdb;host=localhost";
    $user = 'hacnet';
    $pass = undef;
}

sub select_mysql {
    $cmd = $mcmd;
    $dsn = "dbi:mysql:database=ep;host=localhost;mysql_client_found_rows=1";
    $user = 'ep';
    $pass = 'epq';
}

sub select_sqlite {
    $dsn = "dbi:SQLite:/home/hacnet/DBIx-Safe/db.sqlite";
}