Skip to content

Commit a3ebf76

Browse files
committed
Bug#20429156: "filtered" field in EXPLAIN JSON output has too high precision
The "filtered" field is printed with "unlimited" precision which may cause small differences in 32-bit and 64-bit runs, due to floating point approximation errors. Adjust "filtered" column to have 2 digit precision after decimal point.
1 parent 9075c1d commit a3ebf76

File tree

50 files changed

+2033
-2023
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+2033
-2023
lines changed

mysql-test/include/explain_utils.inc

+2-2
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ SHOW STATUS WHERE (Variable_name LIKE 'Sort%' OR
6868
if ($json) {
6969
if ($innodb) {
7070
if ($no_rows) {
71-
--replace_regex /"rows_examined_per_scan": [0-9]+/"rows_examined_per_scan": "X"/ /_per_join": [0-9]+/_per_join": "X"/ /_per_join": "[0-9]+K"/_per_join": "X"/ /"filtered": [0-9.]+/"filtered": "X"/ /_cost": "[0-9.]+"/_cost": "X"/ /"data_read_per_join": "[0-9.]+"/"data_read_per_join": "X"/
71+
--replace_regex /"rows_examined_per_scan": [0-9]+/"rows_examined_per_scan": "X"/ /_per_join": [0-9]+/_per_join": "X"/ /_per_join": "[0-9]+K"/_per_join": "X"/ /"filtered": "[0-9.]+"/"filtered": "X"/ /_cost": "[0-9.]+"/_cost": "X"/ /"data_read_per_join": "[0-9.]+"/"data_read_per_join": "X"/
7272
}
7373
}
7474
--eval EXPLAIN FORMAT=JSON $query;
@@ -103,7 +103,7 @@ SHOW STATUS WHERE (Variable_name LIKE 'Sort%' OR
103103
if ($json) {
104104
if ($innodb) {
105105
if ($no_rows) {
106-
--replace_regex /"rows_examined_per_scan": [0-9]+/"rows_examined_per_scan": "X"/ /_per_join": [0-9]+/_per_join": "X"/ /_per_join": "[0-9]+K"/_per_join": "X"/ /"filtered": [0-9.]+/"filtered": "X"/ /_cost": "[0-9.]+"/_cost": "X"/ /"data_read_per_join": "[0-9.]+"/"data_read_per_join": "X"/
106+
--replace_regex /"rows_examined_per_scan": [0-9]+/"rows_examined_per_scan": "X"/ /_per_join": [0-9]+/_per_join": "X"/ /_per_join": "[0-9]+K"/_per_join": "X"/ /"filtered": "[0-9.]+"/"filtered": "X"/ /_cost": "[0-9.]+"/_cost": "X"/ /"data_read_per_join": "[0-9.]+"/"data_read_per_join": "X"/
107107
}
108108
}
109109
--eval EXPLAIN FORMAT=JSON $select;

mysql-test/r/explain.result

+4-4
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ EXPLAIN
4242
],
4343
"rows_examined_per_scan": 1,
4444
"rows_produced_per_join": 1,
45-
"filtered": 100,
45+
"filtered": "100.00",
4646
"index_condition": "isnull(`test`.`t1`.`str`)",
4747
"cost_info": {
4848
"read_cost": "1.00",
@@ -267,7 +267,7 @@ EXPLAIN
267267
"access_type": "ALL",
268268
"rows_examined_per_scan": 4,
269269
"rows_produced_per_join": 4,
270-
"filtered": 100,
270+
"filtered": "100.00",
271271
"cost_info": {
272272
"read_cost": "10.20",
273273
"eval_cost": "0.80",
@@ -299,7 +299,7 @@ EXPLAIN
299299
"access_type": "ALL",
300300
"rows_examined_per_scan": 2,
301301
"rows_produced_per_join": 2,
302-
"filtered": 100,
302+
"filtered": "100.00",
303303
"cost_info": {
304304
"read_cost": "2.00",
305305
"eval_cost": "0.40",
@@ -317,7 +317,7 @@ EXPLAIN
317317
"access_type": "ALL",
318318
"rows_examined_per_scan": 2,
319319
"rows_produced_per_join": 4,
320-
"filtered": 100,
320+
"filtered": "100.00",
321321
"using_join_buffer": "Block Nested Loop",
322322
"cost_info": {
323323
"read_cost": "2.00",

mysql-test/r/explain_for_connection_crash.result

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ STATUS:NOT_EQUAL
44
SYNC_POINT:before_reset_query_plan
55
Diff: EXPLAIN NORMAL vs OTHER
66
@@ -39,2 +39,3 @@
7-
"filtered": 25,
7+
"filtered": "25.00",
88
+ "using_where": true,
99
"cost_info": {
1010
@@ -48,4 +49,3 @@
@@ -18,7 +18,7 @@ STATUS:NOT_EQUAL
1818
SYNC_POINT:before_reset_query_plan
1919
Diff: EXPLAIN NORMAL vs OTHER
2020
@@ -79,2 +79,3 @@
21-
"filtered": 50,
21+
"filtered": "50.00",
2222
+ "using_where": true,
2323
"cost_info": {
2424
@@ -87,4 +88,3 @@

0 commit comments

Comments
 (0)