Skip to content

Commit 4ed5900

Browse files
spetruniasanja-byelkin
authored andcommitted
ANALYZE FORMAT=JSON: Backport block-nl-join.r_unpack_time_ms from 11.0 +fix MDEV-30830.
Also fix it to work with hashed join (MDEV-30830). Reviewed by: Monty <monty@mariadb.org>
1 parent 954a6de commit 4ed5900

16 files changed

+218
-23
lines changed

mysql-test/include/analyze-format.inc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
# The time on ANALYSE FORMAT=JSON is rather variable
22

3-
--replace_regex /("(r_total_time_ms|r_buffer_size|r_filling_time_ms)": )[^, \n]*/\1"REPLACED"/
3+
--replace_regex /("(r_[a-z_]*_time_ms|r_buffer_size)": )[^, \n]*/\1"REPLACED"/

mysql-test/main/analyze_format_json.result

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,8 @@ ANALYZE
145145
"buffer_type": "flat",
146146
"buffer_size": "1Kb",
147147
"join_type": "BNL",
148-
"r_filtered": 100
148+
"r_filtered": 100,
149+
"r_unpack_time_ms": "REPLACED"
149150
}
150151
}
151152
}
@@ -184,7 +185,8 @@ ANALYZE
184185
"buffer_size": "1Kb",
185186
"join_type": "BNL",
186187
"attached_condition": "tbl1.c > tbl2.c",
187-
"r_filtered": 15.833
188+
"r_filtered": 15.833,
189+
"r_unpack_time_ms": "REPLACED"
188190
}
189191
}
190192
}
@@ -628,7 +630,8 @@ ANALYZE
628630
"buffer_size": "65",
629631
"join_type": "BNL",
630632
"attached_condition": "<in_optimizer>(t2.b,t2.b in (subquery#2))",
631-
"r_filtered": null
633+
"r_filtered": null,
634+
"r_unpack_time_ms": "REPLACED"
632635
},
633636
"subqueries": [
634637
{
@@ -713,7 +716,8 @@ ANALYZE
713716
"buffer_type": "flat",
714717
"buffer_size": "1",
715718
"join_type": "BNL",
716-
"r_filtered": null
719+
"r_filtered": null,
720+
"r_unpack_time_ms": "REPLACED"
717721
},
718722
"subqueries": [
719723
{
@@ -745,7 +749,8 @@ ANALYZE
745749
"buffer_size": "65",
746750
"join_type": "BNL",
747751
"attached_condition": "t2.f2 = t3.f3",
748-
"r_filtered": null
752+
"r_filtered": null,
753+
"r_unpack_time_ms": "REPLACED"
749754
}
750755
}
751756
}
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
#
2+
# MDEV-30830: ANALYZE FORMAT=JSON: r_unpack_time_ms is empty for the hashed joins
3+
#
4+
#
5+
# First, check a regular BNL-join
6+
#
7+
create table t1 (
8+
a int,
9+
b int
10+
);
11+
insert into t1 select seq, seq/3 from seq_0_to_99;
12+
create table t2 (
13+
a int,
14+
b int
15+
);
16+
insert into t2 select seq, seq/5 from seq_0_to_99;
17+
set @js='$out';
18+
set @out=(select json_extract(@js,'$**.block-nl-join.r_unpack_time_ms'));
19+
select cast(json_extract(@out,'$[0]') as DOUBLE) > 0;
20+
cast(json_extract(@out,'$[0]') as DOUBLE) > 0
21+
1
22+
drop table t1,t2;
23+
#
24+
# Now, check the hashed, BNL-H join
25+
#
26+
create table t1 (
27+
a int,
28+
b int
29+
);
30+
insert into t1 select seq, seq/3 from seq_0_to_499;
31+
create table t2 (
32+
a int,
33+
b int
34+
);
35+
insert into t2 select seq, seq/5 from seq_0_to_499;
36+
set @tmp=@@join_cache_level, join_cache_level=6;
37+
select '$out' as X;
38+
X
39+
{
40+
"query_block": {
41+
"select_id": 1,
42+
"r_loops": 1,
43+
"r_total_time_ms": "REPLACED",
44+
"table": {
45+
"table_name": "t1",
46+
"access_type": "ALL",
47+
"r_loops": 1,
48+
"rows": 500,
49+
"r_rows": 500,
50+
"r_total_time_ms": "REPLACED",
51+
"filtered": 100,
52+
"r_filtered": 100,
53+
"attached_condition": "t1.a < 700 and t1.b is not null"
54+
},
55+
"block-nl-join": {
56+
"table": {
57+
"table_name": "t2",
58+
"access_type": "hash_ALL",
59+
"key": "#hash#$hj",
60+
"key_length": "5",
61+
"used_key_parts": ["b"],
62+
"ref": ["test.t1.b"],
63+
"r_loops": 1,
64+
"rows": 500,
65+
"r_rows": 500,
66+
"r_total_time_ms": "REPLACED",
67+
"filtered": 100,
68+
"r_filtered": 20,
69+
"attached_condition": "t2.a < 100"
70+
},
71+
"buffer_type": "flat",
72+
"buffer_size": "18Kb",
73+
"join_type": "BNLH",
74+
"attached_condition": "t2.b = t1.b",
75+
"r_filtered": 100,
76+
"r_unpack_time_ms": "REPLACED"
77+
}
78+
}
79+
}
80+
set @out=(select json_extract(@js,'$**.block-nl-join.r_unpack_time_ms'));
81+
select cast(json_extract(@out,'$[0]') as DOUBLE) > 0;
82+
cast(json_extract(@out,'$[0]') as DOUBLE) > 0
83+
1
84+
set join_cache_level=@tmp;
85+
drop table t1, t2;
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
#
2+
# Tests to check that r_something_time_ms is non-zero in
3+
# ANALYZE FORMAT=JSON <statement>
4+
#
5+
--source include/default_optimizer_switch.inc
6+
--source include/have_sequence.inc
7+
8+
# The tests here are large so that we get non-zero timings
9+
--source include/big_test.inc
10+
11+
--echo #
12+
--echo # MDEV-30830: ANALYZE FORMAT=JSON: r_unpack_time_ms is empty for the hashed joins
13+
--echo #
14+
15+
--echo #
16+
--echo # First, check a regular BNL-join
17+
--echo #
18+
create table t1 (
19+
a int,
20+
b int
21+
);
22+
insert into t1 select seq, seq/3 from seq_0_to_99;
23+
24+
create table t2 (
25+
a int,
26+
b int
27+
);
28+
insert into t2 select seq, seq/5 from seq_0_to_99;
29+
30+
let $out=`
31+
analyze format=json
32+
select * from t1, t2
33+
where
34+
t1.a < 700 and
35+
t2.a < 100
36+
and t1.b=t2.b
37+
`;
38+
39+
evalp set @js='$out';
40+
set @out=(select json_extract(@js,'$**.block-nl-join.r_unpack_time_ms'));
41+
select cast(json_extract(@out,'$[0]') as DOUBLE) > 0;
42+
drop table t1,t2;
43+
44+
--echo #
45+
--echo # Now, check the hashed, BNL-H join
46+
--echo #
47+
create table t1 (
48+
a int,
49+
b int
50+
);
51+
insert into t1 select seq, seq/3 from seq_0_to_499;
52+
53+
create table t2 (
54+
a int,
55+
b int
56+
);
57+
insert into t2 select seq, seq/5 from seq_0_to_499;
58+
set @tmp=@@join_cache_level, join_cache_level=6;
59+
60+
let $out=`
61+
analyze format=json
62+
select * from t1, t2
63+
where
64+
t1.a < 700 and
65+
t2.a < 100
66+
and t1.b=t2.b
67+
`;
68+
69+
--source include/analyze-format.inc
70+
evalp select '$out' as X;
71+
72+
set @out=(select json_extract(@js,'$**.block-nl-join.r_unpack_time_ms'));
73+
select cast(json_extract(@out,'$[0]') as DOUBLE) > 0;
74+
75+
set join_cache_level=@tmp;
76+
drop table t1, t2;
77+

mysql-test/main/analyze_stmt_orderby.result

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -429,7 +429,8 @@ ANALYZE
429429
"buffer_size": "65",
430430
"join_type": "BNL",
431431
"attached_condition": "t3.a = t0.a",
432-
"r_filtered": 10
432+
"r_filtered": 10,
433+
"r_unpack_time_ms": "REPLACED"
433434
}
434435
}
435436
}
@@ -500,7 +501,8 @@ ANALYZE
500501
"buffer_size": "119",
501502
"join_type": "BNL",
502503
"attached_condition": "t5.a = t6.a",
503-
"r_filtered": 21.429
504+
"r_filtered": 21.429,
505+
"r_unpack_time_ms": "REPLACED"
504506
}
505507
}
506508
}

mysql-test/main/derived_split_innodb.result

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -461,7 +461,8 @@ ANALYZE
461461
"buffer_size": "1Kb",
462462
"join_type": "BNL",
463463
"attached_condition": "trigcond(t11.col1 = t10.col1)",
464-
"r_filtered": 10
464+
"r_filtered": 10,
465+
"r_unpack_time_ms": "REPLACED"
465466
}
466467
}
467468
}

mysql-test/main/except.result

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,8 @@ ANALYZE
327327
"buffer_type": "flat",
328328
"buffer_size": "119",
329329
"join_type": "BNL",
330-
"r_filtered": 100
330+
"r_filtered": 100,
331+
"r_unpack_time_ms": 0.0012
331332
}
332333
}
333334
},
@@ -361,7 +362,8 @@ ANALYZE
361362
"buffer_type": "flat",
362363
"buffer_size": "119",
363364
"join_type": "BNL",
364-
"r_filtered": 100
365+
"r_filtered": 100,
366+
"r_unpack_time_ms": 5.4e-4
365367
}
366368
}
367369
}
@@ -423,7 +425,8 @@ ANALYZE
423425
"buffer_type": "flat",
424426
"buffer_size": "119",
425427
"join_type": "BNL",
426-
"r_filtered": 100
428+
"r_filtered": 100,
429+
"r_unpack_time_ms": 0.0011
427430
}
428431
}
429432
},
@@ -457,7 +460,8 @@ ANALYZE
457460
"buffer_type": "flat",
458461
"buffer_size": "119",
459462
"join_type": "BNL",
460-
"r_filtered": 100
463+
"r_filtered": 100,
464+
"r_unpack_time_ms": 6.1e-4
461465
}
462466
}
463467
}

mysql-test/main/except.test

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,10 @@ EXPLAIN extended select * from ((select a,b from t1) except (select c,d from t2)
1414
EXPLAIN format=json (select a,b from t1) except (select c,d from t2);
1515

1616
--replace_regex /"r_total_time_ms": [0-9e\.\-+]*,/"r_total_time_ms": "REPLACED",/
17+
--source include/analyze-format.inc
1718
ANALYZE format=json (select a,b from t1) except (select c,d from t2);
1819
--replace_regex /"r_total_time_ms": [0-9e\.\-+]*,/"r_total_time_ms": "REPLACED",/
20+
--source include/analyze-format.inc
1921
ANALYZE format=json select * from ((select a,b from t1) except (select c,d from t2)) a;
2022
select * from ((select a,b from t1) except (select c,d from t2)) a;
2123

mysql-test/main/explain_json.result

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1536,7 +1536,8 @@ ANALYZE
15361536
"buffer_size": "400",
15371537
"join_type": "BKA",
15381538
"mrr_type": "Rowid-ordered scan",
1539-
"r_filtered": 100
1539+
"r_filtered": 100,
1540+
"r_unpack_time_ms": "REPLACED"
15401541
}
15411542
}
15421543
}

mysql-test/main/intersect.result

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -385,7 +385,8 @@ ANALYZE
385385
"buffer_type": "flat",
386386
"buffer_size": "256Kb",
387387
"join_type": "BNL",
388-
"r_filtered": 100
388+
"r_filtered": 100,
389+
"r_unpack_time_ms": 6.1e-4
389390
}
390391
}
391392
}
@@ -464,7 +465,8 @@ ANALYZE
464465
"buffer_type": "flat",
465466
"buffer_size": "256Kb",
466467
"join_type": "BNL",
467-
"r_filtered": 100
468+
"r_filtered": 100,
469+
"r_unpack_time_ms": 5.8e-4
468470
}
469471
}
470472
}

0 commit comments

Comments
 (0)