mirror of
https://github.com/percona/percona-toolkit.git
synced 2025-09-11 13:40:07 +00:00
Fix KeySize to handle key=<key> but key_len=0. Add failing pt-dupe-key-checker test.
This commit is contained in:
106
t/lib/KeySize.t
106
t/lib/KeySize.t
@@ -25,9 +25,6 @@ my $dbh = $sb->get_dbh_for('master');
|
||||
if ( !$dbh ) {
|
||||
plan skip_all => "Cannot connect to sandbox master";
|
||||
}
|
||||
else {
|
||||
plan tests => 19;
|
||||
}
|
||||
|
||||
my $q = new Quoter();
|
||||
my $tp = new TableParser(Quoter => $q);
|
||||
@@ -190,6 +187,107 @@ is(
|
||||
'Query without FORCE INDEX (issue 364)'
|
||||
);
|
||||
|
||||
# #############################################################################
|
||||
# https://bugs.launchpad.net/percona-toolkit/+bug/1201443
|
||||
# #############################################################################
|
||||
$sb->load_file('master', "t/pt-duplicate-key-checker/samples/fk_chosen_index_bug_1201443.sql");
|
||||
|
||||
($size, $chosen_key) = $ks->get_key_size(
|
||||
name => 'child_ibfk_2',
|
||||
cols => [qw(parent_id)],
|
||||
tbl_name => 'fk_chosen_index_bug_1201443.child',
|
||||
tbl_struct => {
|
||||
charset => 'latin1',
|
||||
clustered_key => undef,
|
||||
col_posn => {
|
||||
id => 0,
|
||||
parent_id => 1
|
||||
},
|
||||
cols => [
|
||||
'id',
|
||||
'parent_id'
|
||||
],
|
||||
defs => {
|
||||
id => ' `id` int(11) NOT NULL AUTO_INCREMENT',
|
||||
parent_id => ' `parent_id` int(11) NOT NULL'
|
||||
},
|
||||
engine => 'InnoDB',
|
||||
is_autoinc => {
|
||||
id => 1,
|
||||
parent_id => 0
|
||||
},
|
||||
is_col => {
|
||||
id => 1,
|
||||
parent_id => 1
|
||||
},
|
||||
is_nullable => {},
|
||||
is_numeric => {
|
||||
id => 1,
|
||||
parent_id => 1
|
||||
},
|
||||
keys => {
|
||||
id => {
|
||||
col_prefixes => [
|
||||
undef
|
||||
],
|
||||
colnames => '`id`',
|
||||
cols => [
|
||||
'id'
|
||||
],
|
||||
ddl => 'KEY `id` (`id`),',
|
||||
is_col => {
|
||||
id => 1
|
||||
},
|
||||
is_nullable => 0,
|
||||
is_unique => 0,
|
||||
name => 'id',
|
||||
type => 'BTREE'
|
||||
},
|
||||
parent_id => {
|
||||
col_prefixes => [
|
||||
undef
|
||||
],
|
||||
colnames => '`parent_id`',
|
||||
cols => [
|
||||
'parent_id'
|
||||
],
|
||||
ddl => 'KEY `parent_id` (`parent_id`),',
|
||||
is_col => {
|
||||
parent_id => 1
|
||||
},
|
||||
is_nullable => 0,
|
||||
is_unique => 0,
|
||||
name => 'parent_id',
|
||||
type => 'BTREE'
|
||||
}
|
||||
},
|
||||
name => 'child',
|
||||
null_cols => [],
|
||||
numeric_cols => [
|
||||
'id',
|
||||
'parent_id'
|
||||
],
|
||||
type_for => {
|
||||
id => 'int',
|
||||
parent_id => 'int'
|
||||
}
|
||||
},
|
||||
dbh => $dbh,
|
||||
);
|
||||
|
||||
cmp_ok(
|
||||
$size,
|
||||
'>',
|
||||
15_000, # estimages range from 15k to 30k
|
||||
"Bug 1201443: size"
|
||||
);
|
||||
|
||||
is(
|
||||
$chosen_key,
|
||||
'parent_id',
|
||||
"Bug 1201443: chosen key"
|
||||
);
|
||||
|
||||
# #############################################################################
|
||||
# Done.
|
||||
# #############################################################################
|
||||
@@ -206,4 +304,4 @@ like(
|
||||
);
|
||||
$sb->wipe_clean($dbh);
|
||||
ok($sb->ok(), "Sandbox servers") or BAIL_OUT(__FILE__ . " broke the sandbox");
|
||||
exit;
|
||||
done_testing;
|
||||
|
Reference in New Issue
Block a user