1use strict; 2use warnings; 3 4use Test::More ; 5use DBI; 6use DBI::Const::GetInfoType; 7$|= 1; 8 9use vars qw($test_dsn $test_user $test_password $test_db); 10use lib 't', '.'; 11require 'lib.pl'; 12 13my $dbh; 14eval {$dbh= DBI->connect($test_dsn, $test_user, $test_password, 15 { RaiseError => 1, PrintError => 1, AutoCommit => 0 });}; 16 17if ($@) { 18 diag $@; 19 plan skip_all => "no database connection"; 20} 21 22ok(defined $dbh, "Connected to database"); 23 24for my $attribute ( qw( 25 mysql_clientinfo 26 mysql_clientversion 27 mysql_serverversion 28 mysql_hostinfo 29 mysql_serverinfo 30 mysql_stat 31 mysql_protoinfo 32) ) { 33 ok($dbh->{$attribute}, "Value of '$attribute'"); 34 diag "$attribute is: ". $dbh->{$attribute}; 35} 36 37my $sql_dbms_ver = $dbh->get_info($GetInfoType{SQL_DBMS_VER}); 38ok($sql_dbms_ver, 'get_info SQL_DBMS_VER'); 39diag "SQL_DBMS_VER is $sql_dbms_ver"; 40 41my $driver_ver = $dbh->get_info($GetInfoType{SQL_DRIVER_VER}); 42like( 43 $driver_ver, 44 qr/^\d{2}\.\d{2}\.\d{4}$/, 45 'get_info SQL_DRIVER_VER like dd.dd.dddd' 46); 47 48like($driver_ver, qr/^04\./, 'SQL_DRIVER_VER starts with "04." (update for 5.x)'); 49 50# storage engine function is @@storage_engine in up to 5.5.03 51# at that version, @@default_storage_engine is introduced 52# http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_storage_engine 53# in MySQL Server 5.7.5 the old option is removed 54# http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_storage_engine 55 56my $storage_engine = $dbh->{mysql_serverversion} >= 50503 ? '@@default_storage_engine' : '@@storage_engine'; 57my $result = $dbh->selectall_arrayref('select ' . $storage_engine); 58my $default_storage_engine = $result->[0]->[0] || 'unknown'; 59diag "Default storage engine is: $default_storage_engine"; 60 61my $info_hashref = $dbh->{mysql_dbd_stats}; 62 63ok($dbh->disconnect(), 'Disconnected'); 64 65# dbi docs state: 66# The username and password can also be specified using the attributes 67# Username and Password, in which case they take precedence over the $username 68# and $password parameters. 69# see https://rt.cpan.org/Ticket/Display.html?id=89835 70 71eval {$dbh= DBI->connect($test_dsn, $test_user, $test_password, 72 { RaiseError => 1, PrintError => 1, AutoCommit => 0, 73 Username => '4yZ73s9qeECdWi', Password => '64heUGwAsVoNqo' });}; 74ok($@, 'Username and Password attributes override'); 75 76eval {$dbh= DBI->connect($test_dsn, '4yZ73s9qeECdWi', '64heUGwAsVoNqo', 77 { RaiseError => 1, PrintError => 1, AutoCommit => 0, 78 Username => $test_user, Password => $test_password });}; 79ok(!$@, 'Username and Password attributes override'); 80 81done_testing; 82