mirror of
https://github.com/percona/percona-toolkit.git
synced 2025-09-18 09:43:09 +00:00
Merge lp:~percona-toolkit-dev/percona-toolkit/fix-dot-bug-821675.
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';
|
||||
}
|
||||
else {
|
||||
plan tests => 32;
|
||||
plan tests => 35;
|
||||
}
|
||||
|
||||
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
|
||||
@@ -420,6 +420,40 @@ is(
|
||||
"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.
|
||||
# #############################################################################
|
||||
|
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