mirror of
https://github.com/percona/percona-toolkit.git
synced 2025-09-13 14:39:28 +00:00
Test, ensure pt-table-checksum can handle col names with dots.
This commit is contained in:
@@ -41,7 +41,7 @@ elsif ( !@{$master_dbh->selectall_arrayref('show databases like "sakila"')} ) {
|
|||||||
plan skip_all => 'sakila database is not loaded';
|
plan skip_all => 'sakila database is not loaded';
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
plan tests => 32;
|
plan tests => 35;
|
||||||
}
|
}
|
||||||
|
|
||||||
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
|
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
|
||||||
@@ -420,6 +420,40 @@ is(
|
|||||||
"Bug 932442: 0 errors"
|
"Bug 932442: 0 errors"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
# #############################################################################
|
||||||
|
# Bug 821675: can't parse column names containing periods
|
||||||
|
# #############################################################################
|
||||||
|
$sb->load_file('master', "t/pt-table-checksum/samples/dot.sql");
|
||||||
|
PerconaTest::wait_for_table($master_dbh, "test.t", "`No.`='ten'");
|
||||||
|
|
||||||
|
ok(
|
||||||
|
no_diff(
|
||||||
|
sub { pt_table_checksum::main(@args,
|
||||||
|
qw(-t test.t --chunk-size 3 --explain --explain))
|
||||||
|
},
|
||||||
|
"t/pt-table-checksum/samples/dot.out",
|
||||||
|
),
|
||||||
|
"Bug 821675 (dot): queries"
|
||||||
|
);
|
||||||
|
|
||||||
|
$output = output(
|
||||||
|
sub { $exit_status = pt_table_checksum::main(@args,
|
||||||
|
qw(-t test.t --chunk-size 3 --explain --explain)) },
|
||||||
|
stderr => 1,
|
||||||
|
);
|
||||||
|
|
||||||
|
is(
|
||||||
|
$exit_status,
|
||||||
|
0,
|
||||||
|
"Bug 821675 (dot): 0 exit"
|
||||||
|
);
|
||||||
|
|
||||||
|
is(
|
||||||
|
PerconaTest::count_checksum_results($output, 'errors'),
|
||||||
|
0,
|
||||||
|
"Bug 821675 (dot): 0 errors"
|
||||||
|
);
|
||||||
|
|
||||||
# #############################################################################
|
# #############################################################################
|
||||||
# Done.
|
# Done.
|
||||||
# #############################################################################
|
# #############################################################################
|
||||||
|
19
t/pt-table-checksum/samples/dot.out
Normal file
19
t/pt-table-checksum/samples/dot.out
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
--
|
||||||
|
-- test.t
|
||||||
|
--
|
||||||
|
|
||||||
|
REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `no.`, `foo.bar`, CONCAT(ISNULL(`foo.bar`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `test`.`t` FORCE INDEX(`PRIMARY`) WHERE ((`no.` >= ?)) AND ((`no.` <= ?)) /*checksum chunk*/
|
||||||
|
|
||||||
|
REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*), '0' FROM `test`.`t` FORCE INDEX(`PRIMARY`) WHERE ((`no.` < ?)) ORDER BY `no.` /*past lower chunk*/
|
||||||
|
|
||||||
|
REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*), '0' FROM `test`.`t` FORCE INDEX(`PRIMARY`) WHERE ((`no.` > ?)) ORDER BY `no.` /*past upper chunk*/
|
||||||
|
|
||||||
|
SELECT /*!40001 SQL_NO_CACHE */ `no.` FROM `test`.`t` FORCE INDEX(`PRIMARY`) WHERE ((`no.` >= ?)) ORDER BY `no.` LIMIT ?, 2 /*next chunk boundary*/
|
||||||
|
|
||||||
|
1 eight four
|
||||||
|
2 nine seven
|
||||||
|
3 six three
|
||||||
|
4 two two
|
||||||
|
5 eight
|
||||||
|
6 two
|
||||||
|
|
21
t/pt-table-checksum/samples/dot.sql
Normal file
21
t/pt-table-checksum/samples/dot.sql
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
drop database if exists test;
|
||||||
|
create database test;
|
||||||
|
use test;
|
||||||
|
|
||||||
|
CREATE TABLE t (
|
||||||
|
`No.` varchar(16) NOT NULL DEFAULT '',
|
||||||
|
`foo.bar` varchar(16),
|
||||||
|
PRIMARY KEY (`No.`)
|
||||||
|
) ENGINE=MyISAM;
|
||||||
|
|
||||||
|
insert into t values
|
||||||
|
('one', 'a'),
|
||||||
|
('two', 'a'),
|
||||||
|
('three', 'a'),
|
||||||
|
('four', 'a'),
|
||||||
|
('five', 'a'),
|
||||||
|
('six', 'a'),
|
||||||
|
('seven', 'a'),
|
||||||
|
('eight', 'a'),
|
||||||
|
('nine', 'a'),
|
||||||
|
('ten', 'a');
|
Reference in New Issue
Block a user