Test pt-upgrade host-to-host. Implement diff_query_times(). Export $test_diff from PerconaTest instead of doing diag() in no_diff().

This commit is contained in:
Daniel Nichter
2013-02-19 17:03:50 -07:00
parent 36e8696479
commit dcdeb606c8
44 changed files with 614 additions and 1011 deletions

View File

@@ -4,201 +4,95 @@ BEGIN {
die "The PERCONA_TOOLKIT_BRANCH environment variable is not set.\n"
unless $ENV{PERCONA_TOOLKIT_BRANCH} && -d $ENV{PERCONA_TOOLKIT_BRANCH};
unshift @INC, "$ENV{PERCONA_TOOLKIT_BRANCH}/lib";
$ENV{PERCONA_TOOLKIT_TEST_USE_DSN_NAMES} = 1;
};
use strict;
use warnings FATAL => 'all';
use English qw(-no_match_vars);
use Test::More;
use File::Basename;
use PerconaTest;
use Sandbox;
require "$trunk/bin/pt-upgrade";
# This runs immediately if the server is already running, else it starts it.
diag(`$trunk/sandbox/start-sandbox master 12348 >/dev/null`);
# diag(`$trunk/sandbox/start-sandbox master 12348 >/dev/null`);
my $dp = new DSNParser(opts=>$dsn_opts);
my $sb = new Sandbox(basedir => '/tmp', DSNParser => $dp);
my $dbh1 = $sb->get_dbh_for('master');
my $dbh2 = $sb->get_dbh_for('master1');
my $dbh1 = $sb->get_dbh_for('host1');
my $dbh2 = $sb->get_dbh_for('host2');
if ( !$dbh1 ) {
plan skip_all => 'Cannot connect to sandbox master';
plan skip_all => 'Cannot connect to sandbox host1';
}
elsif ( !$dbh2 ) {
plan skip_all => 'Cannot connect to second sandbox master';
plan skip_all => 'Cannot connect to sandbox host2';
}
my @host_args = ('h=127.1,P=12345,L=1', 'P=12348');
my @op_args = (qw(-u msandbox -p msandbox),
'--compare', 'results,warnings',
'--zero-query-times',
);
my @args = (@host_args, @op_args);
my $sample = "t/pt-upgrade/samples";
my $log = "$trunk/$sample";
my $host1_dsn = $sb->dsn_for('host1');
my $host2_dsn = $sb->dsn_for('host2');
# ###########################################################################
# Basic run.
# ###########################################################################
$sb->load_file('master', "$sample/001/tables.sql");
$sb->load_file('master1', "$sample/001/tables.sql");
my $sample = "t/pt-upgrade/samples";
my $samples_dir = "$trunk/t/pt-upgrade/samples";
ok(
no_diff(
sub { pt_upgrade::main(@args, "$log/001/select-one.log") },
"$sample/001/select-one.txt",
),
'Report for a single query (checksum method)'
);
opendir(my $dh, $samples_dir) or die "Cannot open $samples_dir: $OS_ERROR";
ok(
no_diff(
sub { pt_upgrade::main(@args, "$log/001/select-everyone.log") },
"$sample/001/select-everyone.txt"
),
'Report for multiple queries (checksum method)'
);
while ( my $sampleno = readdir $dh ) {
next unless $sampleno =~ m/^\d+$/;
if ( -f "$samples_dir/$sampleno/tables.sql" ) {
$sb->load_file('host1', "$sample/$sampleno/tables.sql", undef, no_wait => 1);
$sb->load_file('host2', "$sample/$sampleno/tables.sql", undef, no_wait => 1);
}
if ( -f "$samples_dir/$sampleno/host1.sql" ) {
$sb->load_file('host1', "$sample/$sampleno/host1.sql", undef, no_wait => 1);
}
if ( -f "$samples_dir/$sampleno/host2.sql" ) {
$sb->load_file('host2', "$sample/$sampleno/host2.sql", undef, no_wait => 1);
}
ok(
no_diff(
sub { pt_upgrade::main(@args, "$trunk/$sample/001/select-one.log",
"--compare-results-method", "rows") },
"$sample/001/select-one-rows.txt"
),
'Report for a single query (rows method)'
);
my $conf = "$samples_dir/$sampleno/conf";
ok(
no_diff(
sub { pt_upgrade::main(@args, "$trunk/$sample/001/select-everyone.log",
"--compare-results-method", "rows") },
"$sample/001/select-everyone-rows.txt"
),
'Report for multiple queries (rows method)'
);
foreach my $log ( glob("$samples_dir/$sampleno/*.log") ) {
(my $basename = basename($log)) =~ s/\.\S+$//;
my $sed;
if ( -f "$samples_dir/$sampleno/$basename.sed" ) {
chomp($sed = `cat $samples_dir/$sampleno/$basename.sed`);
}
ok(
no_diff(
sub { pt_upgrade::main(@args, "$trunk/$sample/001/select-everyone.log",
"--reports", "queries,differences,errors") },
"$sample/001/select-everyone-no-stats.txt"
),
'Report without statistics'
);
my $output = output(
sub { pt_upgrade::main(
(-f $conf ? ('--config', $conf) : ()),
$log,
$host1_dsn,
$host2_dsn,
) },
stderr => 1,
);
ok(
no_diff(
sub { pt_upgrade::main(@args, "$trunk/$sample/001/select-everyone.log",
"--reports", "differences,errors,statistics") },
"$sample/001/select-everyone-no-queries.txt"
),
'Report without per-query reports'
);
if ( -f "$samples_dir/$sampleno/$basename.txt" ) {
ok(
no_diff(
$output,
"$sample/$sampleno/$basename.txt",
cmd_output => 1,
($sed ? (sed => [ $sed ]) : ()),
),
"$sampleno: $basename.txt"
) or diag("diff:\n", $test_diff, "\noutput:\n", $output);
}
}
}
$sb->wipe_clean($dbh1);
$sb->wipe_clean($dbh2);
# #############################################################################
# Issue 951: mk-upgrade "I need a db argument" error with
# compare-results-method=rows
# #############################################################################
$sb->load_file('master', "$sample/002/tables.sql");
$sb->load_file('master1', "$sample/002/tables.sql");
# Make a difference on one host so diff_rows() is called.
$dbh1->do('insert into test.t values (5)');
ok(
no_diff(
sub { pt_upgrade::main(@op_args, "$log/002/no-db.log",
'h=127.1,P=12345,D=test,L=1', 'P=12348,D=test',
qw(--compare-results-method rows --temp-database test)) },
"$sample/002/report-01.txt",
),
'No db, compare results row, DSN D, --temp-database (issue 951)'
);
$sb->load_file('master', "$sample/002/tables.sql");
$sb->load_file('master1', "$sample/002/tables.sql");
$dbh1->do('insert into test.t values (5)');
ok(
no_diff(
sub { pt_upgrade::main(@op_args, "$log/002/no-db.log",
'h=127.1,P=12345,D=test,L=1', 'P=12348,D=test',
qw(--compare-results-method rows --temp-database tmp_db)) },
"$sample/002/report-01.txt",
),
'No db, compare results row, DSN D'
);
is_deeply(
$dbh1->selectall_arrayref('show tables from `test`'),
[['t']],
"Didn't create temp table in event's db"
);
is_deeply(
$dbh1->selectall_arrayref('show tables from `tmp_db`'),
[['mk_upgrade_left']],
"Createed temp table in --temp-database"
);
$sb->wipe_clean($dbh1);
$sb->wipe_clean($dbh2);
# #############################################################################
# Bug 926598: DBD::mysql bug causes pt-upgrade to use wrong
# precision (M) and scale (D)
# #############################################################################
$sb->load_file('master', "$sample/003/tables.sql");
$sb->load_file('master1', "$sample/003/tables.sql");
# Make a difference on one host so diff_rows() is called.
$dbh1->do('insert into test.t values (4, 1.00)');
ok(
no_diff(
sub { pt_upgrade::main(@args, "$log/003/double.log",
qw(--compare-results-method rows)) },
"$sample/003/report001.txt",
),
'M, D diff (bug 926598)',
);
my $row = $dbh1->selectrow_arrayref("show create table test.mk_upgrade_left");
like(
$row->[1],
qr/[`"]SUM\(total\)[`"]\s+double\sDEFAULT/i,
"No M,D in table def (bug 926598)"
);
# #############################################################################
# SELECT FUNC(), so there are no tables.
# https://bugs.launchpad.net/percona-toolkit/+bug/1060774
# #############################################################################
$sb->load_file('master', "$sample/004/tables.sql");
$sb->load_file('master1', "$sample/004/tables.sql");
ok(
no_diff(
sub { pt_upgrade::main(@args,
qw(--compare-results-method rows),
qw(--no-clear-warnings),
"$log/004/select-func.log") },
"$sample/004/select-func.txt",
),
'SELECT FUNC() (bug 1060774)'
);
close $dh;
# #############################################################################
# Done.
# #############################################################################
diag(`rm /tmp/left-outfile.txt /tmp/right-outfile.txt 2>/dev/null`);
diag(`$trunk/sandbox/stop-sandbox 12348 >/dev/null`);
$sb->wipe_clean($dbh1);
ok($sb->ok(), "Sandbox servers") or BAIL_OUT(__FILE__ . " broke the sandbox");
#$sb->wipe_clean($dbh2);
#$sb->wipe_clean($dbh1);
#diag(`$trunk/sandbox/stop-sandbox 12348 >/dev/null`);
#ok($sb->ok(), "Sandbox servers") or BAIL_OUT(__FILE__ . " broke the sandbox");
done_testing;
exit;

View File

@@ -0,0 +1,85 @@
#!/usr/bin/perl
BEGIN {
die "The PERCONA_TOOLKIT_BRANCH environment variable is not set.\n"
unless $ENV{PERCONA_TOOLKIT_BRANCH} && -d $ENV{PERCONA_TOOLKIT_BRANCH};
unshift @INC, "$ENV{PERCONA_TOOLKIT_BRANCH}/lib";
};
use strict;
use warnings FATAL => 'all';
use English qw(-no_match_vars);
use Test::More;
use Data::Dumper;
use PerconaTest;
use Sandbox;
$Data::Dumper::Indent = 1;
$Data::Dumper::Sortkeys = 1;
$Data::Dumper::Quotekeys = 0;
require "$trunk/bin/pt-upgrade";
sub test_diff_query_times {
my (%args) = @_;
my $diff = pt_upgrade::diff_query_times(
query_time1 => $args{t1},
query_time2 => $args{t2},
);
is_deeply(
$diff,
$args{expect},
"$args{t1} vs. $args{t2}"
) or diag(Dumper($diff));
}
test_diff_query_times(
t1 => 0,
t2 => 0,
expect => undef,
);
test_diff_query_times(
t1 => 1,
t2 => 1,
expect => undef,
);
test_diff_query_times(
t1 => 23,
t2 => 82,
expect => undef,
);
test_diff_query_times(
t1 => 23,
t2 => 820,
expect => [ 23, 820, 35.7 ],
);
# Just .01 shy of 1 order of mag. diff.
test_diff_query_times(
t1 => 0.09,
t2 => 0.89,
expect => undef,
);
# Exactly 1 order of mag. diff.
test_diff_query_times(
t1 => 0.09,
t2 => 0.9,
expect => [ 0.09, 0.9, '10.0' ],
);
# An order of mag. decrease, which is ok.
test_diff_query_times(
t1 => 0.9,
t2 => 0.09,
expect => undef,
);
# #############################################################################
# Done.
# #############################################################################
done_testing;

View File

@@ -10,13 +10,13 @@ use strict;
use warnings FATAL => 'all';
use English qw(-no_match_vars);
use Test::More;
use PerconaTest;
use Sandbox;
use Data::Dumper;
$Data::Dumper::Indent = 1;
$Data::Dumper::Sortkeys = 1;
$Data::Dumper::Quotekeys = 0;
use PerconaTest;
use Sandbox;
require "$trunk/bin/pt-upgrade";
my $dp = new DSNParser(opts=>$dsn_opts);
@@ -82,10 +82,33 @@ test_diff (
);
test_diff (
name => "Stops when there's not 2 rows",
name => 'Host1 missing a row',
query1 => "select user from mysql.user where user='msandbox' order by user",
query2 => 'select user from mysql.user order by user',
expect => [],
expect => [
[
1,
undef,
[
[qw(root)],
],
],
],
);
test_diff (
name => 'Host2 missing a row',
query1 => 'select user from mysql.user order by user',
query2 => "select user from mysql.user where user='msandbox' order by user",
expect => [
[
1,
[
[qw(root)],
],
undef,
],
],
);
# #############################################################################

View File

@@ -0,0 +1,12 @@
########################################################################
# Stats
########################################################################
failed_queries 0
not_select 1
queries_filtered 0
queries_no_diffs 0
queries_read 1
queries_with_diffs 0
queries_with_errors 0

View File

@@ -1,112 +0,0 @@
# Query 1: ID 0xC11622E1B2607157 at byte 0 _______________________________
# host1: 127.1:12345
# host2: 127.1:12348
# Found 0 differences in 1 samples:
# checksums 0
# column counts 0
# column types 0
# row counts 0
# warning counts 0
# warning levels 0
# warnings 0
# host1 host2
# Errors 0 0
# Warnings 0 0
# Query_time
# sum 0 0
# min 0 0
# max 0 0
# avg 0 0
# pct_95 0 0
# stddev 0 0
# median 0 0
# row_count
# sum 7 7
# min 7 7
# max 7 7
# avg 7 7
# pct_95 7 7
# stddev 0 0
# median 7 7
# Converted non-SELECT:
# delete from t where id is not null
# Fingerprint
# select * from t where id is not ?
select * from t where id is not null
# Query 2: ID 0xD7D2F2B7AB4602A4 at byte 0 _______________________________
# host1: 127.1:12345
# host2: 127.1:12348
# Found 0 differences in 1 samples:
# checksums 0
# column counts 0
# column types 0
# row counts 0
# warning counts 0
# warning levels 0
# warnings 0
# host1 host2
# Errors 0 0
# Warnings 0 0
# Query_time
# sum 0 0
# min 0 0
# max 0 0
# avg 0 0
# pct_95 0 0
# stddev 0 0
# median 0 0
# row_count
# sum 2 2
# min 2 2
# max 2 2
# avg 2 2
# pct_95 2 2
# stddev 0 0
# median 2 2
# Fingerprint
# select id from test.t where id > ?
use `test`;
select id from test.t where id > 3
# Query 3: ID 0x37BA5C52702C61C6 at byte 0 _______________________________
# host1: 127.1:12345
# host2: 127.1:12348
# Found 0 differences in 1 samples:
# checksums 0
# column counts 0
# column types 0
# row counts 0
# warning counts 0
# warning levels 0
# warnings 0
# host1 host2
# Errors 0 0
# Warnings 0 0
# Query_time
# sum 0 0
# min 0 0
# max 0 0
# avg 0 0
# pct_95 0 0
# stddev 0 0
# median 0 0
# row_count
# sum 1 1
# min 1 1
# max 1 1
# avg 1 1
# pct_95 1 1
# stddev 0 0
# median 1 1
# Converted non-SELECT:
# update t set name='changed' where id=0
# Fingerprint
# select name=? from t where id=?
select name='changed' from t where id=0
# Statistics
# convert_to_select_failed 2
# convert_to_select_ok 2
# events 5

View File

@@ -1,16 +0,0 @@
# User@Host: root[root] @ localhost []
# Query_time: 1 Lock_time: 0 Rows_sent: 1 Rows_examined: 1
use test;
select id from test.t where id > 3;
# User@Host: root[root] @ localhost []
# Query_time: 1 Lock_time: 0 Rows_sent: 1 Rows_examined: 1
insert into t values (9, 'nine', now());
# User@Host: root[root] @ localhost []
# Query_time: 1 Lock_time: 0 Rows_sent: 1 Rows_examined: 1
update t set name='changed' where id=0;
# User@Host: root[root] @ localhost []
# Query_time: 1 Lock_time: 0 Rows_sent: 1 Rows_examined: 1
delete from t where id is not null;
# User@Host: root[root] @ localhost []
# Query_time: 1 Lock_time: 0 Rows_sent: 1 Rows_examined: 1
truncate table t;

View File

@@ -1,37 +0,0 @@
# Query 1: ID 0xD7D2F2B7AB4602A4 at byte 0 _______________________________
# host1: 127.1:12345
# host2: 127.1:12348
# Found 0 differences in 1 samples:
# checksums 0
# column counts 0
# column types 0
# row counts 0
# warning counts 0
# warning levels 0
# warnings 0
# host1 host2
# Errors 0 0
# Warnings 0 0
# Query_time
# sum 0 0
# min 0 0
# max 0 0
# avg 0 0
# pct_95 0 0
# stddev 0 0
# median 0 0
# row_count
# sum 2 2
# min 2 2
# max 2 2
# avg 2 2
# pct_95 2 2
# stddev 0 0
# median 2 2
use `test`;
select id from test.t where id > 3
# Statistics
# events 5
# not_select 4

View File

@@ -1,63 +0,0 @@
# Query 1: ID 0x3B323396273BC4C7 at byte 0 _______________________________
# Found 0 differences in 1 samples:
# column counts 0
# column types 0
# column values 0
# row counts 0
# warning counts 0
# warning levels 0
# warnings 0
# P=12345,h=127.1,p=...,u=msandbox P=12348,h=127.1,p=...,u=msandbox
# Errors 1 1
# Warnings 1 1
# Query_time
# sum 0 0
# min 0 0
# max 0 0
# avg 0 0
# pct_95 0 0
# stddev 0 0
# median 0 0
select borked
/* 3B323396273BC4C7-1 */ select borked
# Query 2: ID 0x30B1FA07C660C2A8 at byte 0 _______________________________
# Found 0 differences in 2 samples:
# column counts 0
# column types 0
# column values 0
# row counts 0
# warning counts 0
# warning levels 0
# warnings 0
# P=12345,h=127.1,p=...,u=msandbox P=12348,h=127.1,p=...,u=msandbox
# Errors 0 0
# Warnings 0 0
# Query_time
# sum 0 0
# min 0 0
# max 0 0
# avg 0 0
# pct_95 0 0
# stddev 0 0
# median 0 0
# row_count
# sum 2 2
# min 1 1
# max 1 1
# avg 1 1
# pct_95 1 1
# stddev 0 0
# median 1 1
select * from t where name='jane'
# Errors
# Query ID Host Error
# ================== ================================ ========================
# 3B323396273BC4C7-1 P=12348,h=127.1,p=...,u=msandbox Failed to execute query: DBD::mysql::st execute failed: Unknown column 'borked' in 'field list' [for Statement "select borked"] at mk-upgrade line 0, <$fh> line 2.
# Statistics
# CompareResults_after_execute_skipped 2
# CompareResults_execute_error 2
# events 3

View File

@@ -1,10 +0,0 @@
# User@Host: root[root] @ localhost []
# Query_time: 1 Lock_time: 0 Rows_sent: 0 Rows_examined: 0
use test;
select * from t where name='bob';
# User@Host: root[root] @ localhost []
# Query_time: 1 Lock_time: 0 Rows_sent: 0 Rows_examined: 0
select borked;
# User@Host: root[root] @ localhost []
# Query_time: 1 Lock_time: 0 Rows_sent: 1 Rows_examined: 1
select * from t where name='jane';

View File

@@ -1,66 +0,0 @@
# Query 1: ID 0x3B323396273BC4C7 at byte 0 _______________________________
# Found 0 differences in 1 samples:
# column counts 0
# column types 0
# column values 0
# row counts 0
# warning counts 0
# warning levels 0
# warnings 0
# P=12345,h=127.1,p=...,u=msandbox P=12348,h=127.1,p=...,u=msandbox
# Errors 1 1
# Warnings 0 0
# Query_time
# sum 0 0
# min 0 0
# max 0 0
# avg 0 0
# pct_95 0 0
# stddev 0 0
# median 0 0
select borked
/* 3B323396273BC4C7-1 */ select borked
# Query 2: ID 0x30B1FA07C660C2A8 at byte 0 _______________________________
# Found 0 differences in 2 samples:
# column counts 0
# column types 0
# column values 0
# row counts 0
# warning counts 0
# warning levels 0
# warnings 0
# P=12345,h=127.1,p=...,u=msandbox P=12348,h=127.1,p=...,u=msandbox
# Errors 0 0
# Warnings 0 0
# Query_time
# sum 0 0
# min 0 0
# max 0 0
# avg 0 0
# pct_95 0 0
# stddev 0 0
# median 0 0
# row_count
# sum 2 2
# min 1 1
# max 1 1
# avg 1 1
# pct_95 1 1
# stddev 0 0
# median 1 1
select * from t where name='jane'
# Errors
# Query ID Host Error
# ================== ================================ ========================
# 3B323396273BC4C7-1 P=12348,h=127.1,p=...,u=msandbox Failed to execute query: DBD::mysql::st execute failed: Unknown column 'borked' in 'field list' [for Statement "select borked"] at ../mk-upgrade line 7059, <$fh> line 2.
# Statistics
# CompareResults_after_execute_skipped 2
# CompareResults_execute_error 2
# CompareWarnings_after_execute_skipped 2
# CompareWarnings_before_execute_error 2
# CompareWarnings_execute_skipped 2
# events 3

View File

@@ -1,3 +0,0 @@
# Statistics
# events 7

View File

@@ -1,32 +0,0 @@
# Query 1: ID 0x4AF1501167533D97 at byte 0 _______________________________
# host1: 127.1:12345
# host2: 127.1:12348
# Found 0 differences in 7 samples:
# checksums 0
# column counts 0
# column types 0
# row counts 0
# warning counts 0
# warning levels 0
# warnings 0
# host1 host2
# Errors 0 0
# Warnings 0 0
# Query_time
# sum 0 0
# min 0 0
# max 0 0
# avg 0 0
# pct_95 0 0
# stddev 0 0
# median 0 0
# row_count
# sum 7 7
# min 1 1
# max 1 1
# avg 1 1
# pct_95 1 1
# stddev 0 0
# median 1 1
select id, name, last_login from test.t where id=5

View File

@@ -1,35 +0,0 @@
# Query 1: ID 0x4AF1501167533D97 at byte 0 _______________________________
# host1: 127.1:12345
# host2: 127.1:12348
# Found 0 differences in 7 samples:
# column counts 0
# column types 0
# column values 0
# row counts 0
# warning counts 0
# warning levels 0
# warnings 0
# host1 host2
# Errors 0 0
# Warnings 0 0
# Query_time
# sum 0 0
# min 0 0
# max 0 0
# avg 0 0
# pct_95 0 0
# stddev 0 0
# median 0 0
# row_count
# sum 7 7
# min 1 1
# max 1 1
# avg 1 1
# pct_95 1 1
# stddev 0 0
# median 1 1
select id, name, last_login from test.t where id=5
# Statistics
# events 7

View File

@@ -1,22 +0,0 @@
# User@Host: root[root] @ localhost []
# Query_time: 1 Lock_time: 0 Rows_sent: 1 Rows_examined: 1
use test;
select id, name, last_login from test.t where id=-1;
# User@Host: root[root] @ localhost []
# Query_time: 1 Lock_time: 0 Rows_sent: 1 Rows_examined: 1
select id, name, last_login from test.t where id=0;
# User@Host: root[root] @ localhost []
# Query_time: 1 Lock_time: 0 Rows_sent: 1 Rows_examined: 1
select id, name, last_login from test.t where id=1;
# User@Host: root[root] @ localhost []
# Query_time: 1 Lock_time: 0 Rows_sent: 1 Rows_examined: 1
select id, name, last_login from test.t where id=2;
# User@Host: root[root] @ localhost []
# Query_time: 1 Lock_time: 0 Rows_sent: 1 Rows_examined: 1
select id, name, last_login from test.t where id=3;
# User@Host: root[root] @ localhost []
# Query_time: 1 Lock_time: 0 Rows_sent: 1 Rows_examined: 1
select id, name, last_login from test.t where id=4;
# User@Host: root[root] @ localhost []
# Query_time: 1 Lock_time: 0 Rows_sent: 1 Rows_examined: 1
select id, name, last_login from test.t where id=5;

View File

@@ -1,35 +0,0 @@
# Query 1: ID 0x4AF1501167533D97 at byte 0 _______________________________
# host1: 127.1:12345
# host2: 127.1:12348
# Found 0 differences in 7 samples:
# checksums 0
# column counts 0
# column types 0
# row counts 0
# warning counts 0
# warning levels 0
# warnings 0
# host1 host2
# Errors 0 0
# Warnings 0 0
# Query_time
# sum 0 0
# min 0 0
# max 0 0
# avg 0 0
# pct_95 0 0
# stddev 0 0
# median 0 0
# row_count
# sum 7 7
# min 1 1
# max 1 1
# avg 1 1
# pct_95 1 1
# stddev 0 0
# median 1 1
select id, name, last_login from test.t where id=5
# Statistics
# events 7

View File

@@ -1,36 +0,0 @@
# Query 1: ID 0x4AF1501167533D97 at byte 0 _______________________________
# host1: 127.1:12345
# host2: 127.1:12348
# Found 0 differences in 1 samples:
# column counts 0
# column types 0
# column values 0
# row counts 0
# warning counts 0
# warning levels 0
# warnings 0
# host1 host2
# Errors 0 0
# Warnings 0 0
# Query_time
# sum 0 0
# min 0 0
# max 0 0
# avg 0 0
# pct_95 0 0
# stddev 0 0
# median 0 0
# row_count
# sum 1 1
# min 1 1
# max 1 1
# avg 1 1
# pct_95 1 1
# stddev 0 0
# median 1 1
use `test`;
select id, name, last_login from test.t where id=0
# Statistics
# events 1

View File

@@ -1,4 +0,0 @@
# User@Host: root[root] @ localhost []
# Query_time: 1 Lock_time: 0 Rows_sent: 1 Rows_examined: 1
use test;
select id, name, last_login from test.t where id=0;

View File

@@ -1,36 +0,0 @@
# Query 1: ID 0x4AF1501167533D97 at byte 0 _______________________________
# host1: 127.1:12345
# host2: 127.1:12348
# Found 0 differences in 1 samples:
# checksums 0
# column counts 0
# column types 0
# row counts 0
# warning counts 0
# warning levels 0
# warnings 0
# host1 host2
# Errors 0 0
# Warnings 0 0
# Query_time
# sum 0 0
# min 0 0
# max 0 0
# avg 0 0
# pct_95 0 0
# stddev 0 0
# median 0 0
# row_count
# sum 1 1
# min 1 1
# max 1 1
# avg 1 1
# pct_95 1 1
# stddev 0 0
# median 1 1
use `test`;
select id, name, last_login from test.t where id=0
# Statistics
# events 1

View File

@@ -0,0 +1,11 @@
########################################################################
# Stats
########################################################################
failed_queries 0
queries_filtered 0
queries_no_diffs 1
queries_read 1
queries_with_diffs 0
queries_with_errors 0

View File

@@ -1,18 +1,16 @@
DROP DATABASE IF EXISTS test;
CREATE DATABASE test;
USE test;
DROP TABLE IF EXISTS t;
CREATE TABLE `t` (
`id` int(10) NOT NULL,
`username` varchar(32) default NULL,
`last_login` datetime default NULL,
CREATE TABLE t (
id int(10) NOT NULL AUTO_INCREMENT,
username varchar(8) default NULL,
last_login datetime default NULL,
PRIMARY KEY (`id`)
);
INSERT INTO t VALUES
(-1, 'banned', '2009-11-06 10:37:17'),
(0, 'admin', '2001-11-07 12:01:40'),
(1, 'bob', '2009-10-07 10:37:47'),
(2, 'jane', '2009-11-07 11:37:97'),
(3, 'susan', '2009-04-09 10:00:47'),
(4, 'rick', '2009-10-03 10:37:22'),
(5, 'tom', '2009-12-07 10:37:74');
(null, 'a', '2013-01-01 00:00:01'),
(null, 'b', '2013-01-01 00:00:02'),
(null, 'c', '2013-01-01 00:00:03'),
(null, 'd', '2013-01-01 00:00:04'),
(null, 'e', '2013-01-01 00:00:05'),
(null, 'f', '2013-01-01 00:00:06');

View File

@@ -0,0 +1,9 @@
USE test;
-- Add 5 more rows so 01select.log causes a row diff.
INSERT INTO t VALUES
(null, 'g', '2013-01-01 00:00:07'),
(null, 'h', '2013-01-01 00:00:08'),
(null, 'i', '2013-01-01 00:00:09'),
(null, 'j', '2013-01-01 00:00:10'),
(null, 'k', '2013-01-01 00:00:11');

View File

@@ -1,3 +0,0 @@
# User@Host: root[root] @ localhost []
# Query_time: 1 Lock_time: 0 Rows_sent: 1 Rows_examined: 1
select i from t where i is not null

View File

@@ -1,44 +0,0 @@
# Query 1: ID 0x3C830E3839B916D7 at byte 0 _______________________________
# host1: 127.1:12345
# host2: 127.1:12348
# Found 1 differences in 1 samples:
# column counts 0
# column types 0
# column values 0
# row counts 1
# warning counts 0
# warning levels 0
# warnings 0
# host1 host2
# Errors 0 0
# Warnings 0 0
# Query_time
# sum 0 0
# min 0 0
# max 0 0
# avg 0 0
# pct_95 0 0
# stddev 0 0
# median 0 0
# row_count
# sum 4 3
# min 4 3
# max 4 3
# avg 4 3
# pct_95 4 3
# stddev 0 0
# median 4 3
use `test`;
select i from t where i is not null
/* 3C830E3839B916D7-1 */ select i from t where i is not null
# Row count differences
# Query ID host1 host2
# ================== ===== =====
# 3C830E3839B916D7-1 4 3
# Statistics
# events 1

View File

@@ -0,0 +1,4 @@
# User@Host: root[root] @ localhost []
# Query_time: 1 Lock_time: 0 Rows_sent: 7 Rows_examined: 7
use test;
select * from test.t order by id;

View File

@@ -0,0 +1,35 @@
########################################################################
# Query class 483E7FA163F8DA7B
########################################################################
Reporting class because it has diffs, but hasn't been reported yet.
Total queries 1
Unique queries 1
Discarded queries 0
select * from test.t order by id
##
## Row diffs: 1
##
-- 1.
@ first 3 of 5 missing rows
> 7,g,2013-01-01 00:00:07
> 8,h,2013-01-01 00:00:08
> 9,i,2013-01-01 00:00:09
select * from test.t order by id
########################################################################
# Stats
########################################################################
failed_queries 0
queries_filtered 0
queries_no_diffs 0
queries_read 1
queries_with_diffs 1
queries_with_errors 0

View File

@@ -1,8 +1,16 @@
DROP DATABASE IF EXISTS test;
CREATE DATABASE test;
USE test;
create table t (i int);
insert into t values (1), (2), (3);
DROP DATABASE IF EXISTS tmp_db;
CREATE DATABASE tmp_db;
CREATE TABLE t (
id int(10) NOT NULL AUTO_INCREMENT,
username varchar(8) default NULL,
last_login datetime default NULL,
PRIMARY KEY (`id`)
);
INSERT INTO t VALUES
(null, 'a', '2013-01-01 00:00:01'),
(null, 'b', '2013-01-01 00:00:02'),
(null, 'c', '2013-01-01 00:00:03'),
(null, 'd', '2013-01-01 00:00:04'),
(null, 'e', '2013-01-01 00:00:05'),
(null, 'f', '2013-01-01 00:00:06');

View File

@@ -0,0 +1 @@
no-read-only

View File

@@ -1,4 +0,0 @@
# User@Host: root[root] @ localhost []
# Query_time: 1 Lock_time: 0 Rows_sent: 1 Rows_examined: 1
use test;
SELECT SUM(total) FROM test.t WHERE id > 0

View File

@@ -0,0 +1,5 @@
USE test;
-- Increase column size from 8 to 16 so insert.log causes
-- a warning diff (value is truncated on host1).
ALTER TABLE t CHANGE COLUMN username username varchar(16) default NULL;

View File

@@ -0,0 +1,38 @@
########################################################################
# Query class AAD020567F8398EE
########################################################################
Reporting class because it has diffs, but hasn't been reported yet.
Total queries 1
Unique queries 1
Discarded queries 0
insert into t (id, username) values(?+)
##
## Warning diffs: 1
##
-- 1.
Code: 1265
Level: Warning
Message: Data truncated for column 'username' at row 1
vs.
No warning 1265
INSERT INTO t (id, username) VALUES (NULL, 'long_username')
########################################################################
# Stats
########################################################################
failed_queries 0
queries_filtered 0
queries_no_diffs 0
queries_read 1
queries_with_diffs 1
queries_with_errors 0

View File

@@ -0,0 +1,4 @@
# User@Host: root[root] @ localhost []
# Query_time: 1 Lock_time: 0 Rows_sent: 0 Rows_examined: 1
use test;
INSERT INTO t (id, username) VALUES (NULL, 'long_username');

View File

@@ -1,44 +0,0 @@
# Query 1: ID 0xC1B1E457814417E4 at byte 0 _______________________________
# host1: 127.1:12345
# host2: 127.1:12348
# Found 1 differences in 1 samples:
# column counts 0
# column types 0
# column values 1
# row counts 0
# warning counts 0
# warning levels 0
# warnings 0
# host1 host2
# Errors 0 0
# Warnings 0 0
# Query_time
# sum 0 0
# min 0 0
# max 0 0
# avg 0 0
# pct_95 0 0
# stddev 0 0
# median 0 0
# row_count
# sum 1 1
# min 1 1
# max 1 1
# avg 1 1
# pct_95 1 1
# stddev 0 0
# median 1 1
use `test`;
SELECT SUM(total) FROM test.t WHERE id > 0
/* C1B1E457814417E4-1 */ SELECT SUM(total) FROM test.t WHERE id > 0
# Column value differences
# Query ID Column host1 host2
# ================== ========== ===== =====
# C1B1E457814417E4-1 SUM(total) 14.68 13.68
# Statistics
# events 1

View File

@@ -2,10 +2,8 @@ DROP DATABASE IF EXISTS test;
CREATE DATABASE test;
USE test;
CREATE TABLE t (
id INT NOT NULL PRIMARY KEY,
total DOUBLE NOT NULL
) ENGINE=InnoDB;
INSERT INTO test.t VALUES
(1, 1.23),
(2, 4.56),
(3, 7.89);
id int(10) NOT NULL AUTO_INCREMENT,
username varchar(8) default NULL,
PRIMARY KEY (`id`)
);
INSERT INTO t VALUES (1, 'username');

View File

@@ -1,36 +0,0 @@
# Query 1: ID 0xF05C9711D543F5BF at byte 0 _______________________________
# host1: 127.1:12345
# host2: 127.1:12348
# Found 0 differences in 1 samples:
# column counts 0
# column types 0
# column values 0
# row counts 0
# warning counts 0
# warning levels 0
# warnings 0
# host1 host2
# Errors 0 0
# Warnings 0 0
# Query_time
# sum 0 0
# min 0 0
# max 0 0
# avg 0 0
# pct_95 0 0
# stddev 0 0
# median 0 0
# row_count
# sum 1 1
# min 1 1
# max 1 1
# avg 1 1
# pct_95 1 1
# stddev 0 0
# median 1 1
use `test`;
SELECT (UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP('2012-09-16 10:16:36')) / 60, SLEEP(1)
# Statistics
# events 1

View File

@@ -0,0 +1 @@
-e 's/< [0-9.]*/< 0/' -e 's/> [0-9.]*/> 0/'

View File

@@ -0,0 +1,34 @@
########################################################################
# Query class F05C9711D543F5BF
########################################################################
Reporting class because it has diffs, but hasn't been reported yet.
Total queries 1
Unique queries 1
Discarded queries 0
select (unix_timestamp(now()) ? unix_timestamp(?)) / ?, sleep(?)
##
## Row diffs: 1
##
-- 1.
@ row 1
< 0,0
> 0,0
SELECT (UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP('2012-09-16 10:16:36')) / 60, SLEEP(1)
########################################################################
# Stats
########################################################################
failed_queries 0
queries_filtered 0
queries_no_diffs 0
queries_read 1
queries_with_diffs 1
queries_with_errors 0

View File

@@ -1,2 +0,0 @@
DROP DATABASE IF EXISTS test;
CREATE DATABASE test;