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;