PT-2277 - fix pt-visual-explain for 'Impossible ON condition' case

This commit is contained in:
Jason
2023-11-07 01:16:55 +08:00
parent 0d10bc96b8
commit b2b6311723
3 changed files with 55 additions and 2 deletions

View File

@@ -9,7 +9,7 @@ BEGIN {
use strict;
use warnings FATAL => 'all';
use English qw(-no_match_vars);
use Test::More tests => 60;
use Test::More tests => 61;
use PerconaTest;
require "$trunk/bin/pt-visual-explain";
@@ -72,6 +72,45 @@ is_deeply(
'Impossible HAVING',
);
$t = $e->parse( load_file("t/pt-visual-explain/samples/impossible_on_condition.sql") );
is_deeply(
$t,
{ type => 'JOIN',
children => [
{ type => 'Constant table access',
id => 1,
rowid => 0,
rows => undef,
warning => 'Impossible ON condition',
children => [
{ type => 'Table',
table => 't',
possible_keys => 't_id',
partitions => undef
}
]
},
{ type => 'Filter with WHERE',
id => 1,
rowid => 1,
children => [
{ type => 'Table scan',
rows => 1,
children => [
{ type => 'Table',
table => 't2',
possible_keys => undef,
partitions => undef
}
]
}
]
}
]
},
"Impossible ON condition"
);
$t = $e->parse( load_file("t/pt-visual-explain/samples/const_row_not_found.sql") );
is_deeply(
$t,

View File

@@ -0,0 +1,7 @@
explain select * from t2 LEFT JOIN t on t2.id = t.id AND 1 = 0 WHERE t2.id = 1;
+------+-------------+-------+-------+---------------+------+---------+------+------+-------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+------+-------------+-------+-------+---------------+------+---------+------+------+-------------------------+
| 1 | SIMPLE | t | const | t_id | NULL | NULL | NULL | 0 | Impossible ON condition |
| 1 | SIMPLE | t2 | ALL | NULL | NULL | NULL | NULL | 1 | Using where |
+------+-------------+-------+-------+---------------+------+---------+------+------+-------------------------+