1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
|
#!/usr/bin/env 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 PerconaTest;
use Sandbox;
require "$trunk/bin/pt-table-sync";
my $q = new Quoter();
my $tp = new TableParser(Quoter => $q);
my $tn = new TableNibbler(Quoter => $q, TableParser => $tp);
my $sample = "t/pt-table-sync/samples";
sub test_diff_where {
my (%args) = @_;
my $ddl = load_file($args{file});
my $tbl_struct = $tp->parse($ddl);
my $where = pt_table_sync::diff_where(
tbl_struct => $tbl_struct,
diff => $args{diff},
TableNibbler => $tn,
);
is(
$where,
$args{where},
$args{name},
);
}
test_diff_where(
name => "Single int col",
file => "$sample/simple-tbl-ddl.sql",
diff => {
chunk => '3',
chunk_index => 'PRIMARY',
cnt_diff => '-1',
crc_diff => '1',
lower_boundary => '7',
master_cnt => '3',
master_crc => '1ddd6c71',
table => 'test.mt1',
this_cnt => '2',
this_crc => '4a57d814',
upper_boundary => '9'
},
where => "((`id` >= '7')) AND ((`id` <= '9'))",
);
test_diff_where(
name => "Lower oob chunk (bug 918056)",
file => "$sample/bug-918056-ddl.sql",
diff => {
chunk => '3',
chunk_index => 'PRIMARY',
cnt_diff => '49',
crc_diff => '0',
db => 'test',
lower_boundary => undef,
master_cnt => '0',
master_crc => '0',
table => 'test.history',
tbl => 'history',
this_cnt => '49',
this_crc => '0',
upper_boundary => '21,21,1045'
},
where => "((`uid` < '21') OR (`uid` = '21' AND `nid` <= '1045'))",
);
# #############################################################################
# Done.
# #############################################################################
done_testing;
|