use strict;
use warnings;
# database specific definitions for a 'mysql' database
my $have_transactions;
#
# This function generates a list of tables associated to a
# given DSN.
#
sub ListTables(@) {
my($dbh) = shift;
my(@tables);
@tables = $dbh->func('_ListTables');
if ($dbh->errstr) {
die "Cannot create table list: " . $dbh->errstr;
}
@tables;
}
#
# This function is called by DBD::pNET; given a hostname and a
# dsn without hostname, return a dsn for connecting to dsn at
# host.
sub HostDsn ($$) {
my($hostname, $dsn) = @_;
"$dsn:$hostname";
}
#
# Return TRUE, if database supports transactions
#
sub have_transactions () {
my ($dbh) = @_;
return 1 unless $dbh;
if (!defined($have_transactions)) {
$have_transactions = "";
my $sth = $dbh->prepare("SHOW VARIABLES");
$sth->execute();
while (my $row = $sth->fetchrow_hashref()) {
if ($row->{'Variable_name'} eq 'have_bdb' &&
$row->{'Value'} eq 'YES') {
$have_transactions = "bdb";
last;
}
if ($row->{'Variable_name'} eq 'have_innodb' &&
$row->{'Value'} eq 'YES') {
$have_transactions = "innodb";
last;
}
if ($row->{'Variable_name'} eq 'have_gemini' &&
$row->{'Value'} eq 'YES') {
$have_transactions = "gemini";
last;
}
}
}
return $have_transactions;
}
1;