Merged mysql-5.6-test-fixes and resolved conflicts

This commit is contained in:
Brian Fraser
2012-12-19 13:47:54 -03:00
41 changed files with 1231 additions and 193 deletions

View File

@@ -126,12 +126,13 @@ sub create_dbs {
}
sub get_dbh_for {
my ( $self, $server, $cxn_ops ) = @_;
my ( $self, $server, $cxn_ops, $user ) = @_;
_check_server($server);
$cxn_ops ||= { AutoCommit => 1 };
$user ||= 'msandbox';
PTDEBUG && _d('dbh for', $server, 'on port', $port_for{$server});
my $dp = $self->{DSNParser};
my $dsn = $dp->parse('h=127.0.0.1,u=msandbox,p=msandbox,P=' . $port_for{$server});
my $dsn = $dp->parse("h=127.0.0.1,u=$user,p=msandbox,P=" . $port_for{$server});
my $dbh;
# This is primarily for the benefit of CompareResults, but it's
# also quite convenient when using an affected OS
@@ -335,11 +336,11 @@ sub wait_for_slaves {
my $master_dbh = $self->get_dbh_for($args{master} || 'master');
my $slave2_dbh = $self->get_dbh_for($args{slave} || 'slave2');
my ($ping) = $master_dbh->selectrow_array("SELECT MD5(RAND())");
$master_dbh->do("UPDATE percona_test.sentinel SET ping='$ping' WHERE id=1");
$master_dbh->do("UPDATE percona_test.sentinel SET ping='$ping' WHERE id=1 /* wait_for_slaves */");
PerconaTest::wait_until(
sub {
my ($pong) = $slave2_dbh->selectrow_array(
"SELECT ping FROM percona_test.sentinel WHERE id=1");
"SELECT ping FROM percona_test.sentinel WHERE id=1 /* wait_for_slaves */");
return $ping eq $pong;
}, undef, 300
);
@@ -542,6 +543,23 @@ sub config_file_for {
return "/tmp/$port/my.sandbox.cnf"
}
sub do_as_root {
my ($self, $server, @queries) = @_;
my $dbh = $self->get_dbh_for($server, undef, 'root');
my $ok = 1;
eval {
foreach my $query ( @queries ) {
$dbh->do($query);
}
};
if ( $EVAL_ERROR ) {
$ok = 0;
warn $EVAL_ERROR;
}
$dbh->disconnect;
return $ok;
}
sub _d {
my ($package, undef, $line) = caller 0;
@_ = map { (my $temp = $_) =~ s/\n/\n# /g; $temp; }

View File

@@ -444,9 +444,16 @@ sub table_is_allowed {
my $filter = $self->{filters};
# Always auto-skip these pseudo tables.
if ( $db eq 'mysql' && ($tbl eq 'general_log' || $tbl eq 'slow_log') ) {
return 0;
}
return 0 if $db eq 'mysql' && $tbl =~ m/^(?:
general_log
|slow_log
|innodb_index_stats
|innodb_table_stats
|ndb_binlog_index
|slave_master_info
|slave_relay_log_info
|slave_worker_info
)$/x;
if ( $filter->{'ignore-tables'}->{$tbl}
&& ($filter->{'ignore-tables'}->{$tbl} eq '*'