Bug #76446 | max_statement_time: Assertion `explain_other || unit->is_optimized()' failed. | ||
---|---|---|---|
Submitted: | 23 Mar 2015 6:07 | Modified: | 14 Apr 2015 20:12 |
Reporter: | Roel Van de Paar | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Optimizer | Severity: | S1 (Critical) |
Version: | 5.7.5-m16 | OS: | Any |
Assigned to: | CPU Architecture: | Any | |
Tags: | KILL_TIMEOUT, max_statement_time, UNION |
[23 Mar 2015 6:07]
Roel Van de Paar
[23 Mar 2015 6:07]
Roel Van de Paar
Bug bundle with all scripts listed above
Attachment: 1427085872.tar.gz (application/gzip, text), 2.19 KiB.
[28 Mar 2015 8:03]
MySQL Verification Team
Version: '5.7.8-rc-debug' MySQL Community Server (GPL) Assertion failed: explain_other || unit->is_optimized(), file ..\..\sql\opt_explain.cc, line 557 mysqld-debug.exe!my_sigabrt_handler()[my_thr_init.c:366] mysqld-debug.exe!raise()[winsig.c:594] mysqld-debug.exe!abort()[abort.c:82] mysqld-debug.exe!_wassert()[assert.c:156] mysqld-debug.exe!Explain::explain_subqueries()[opt_explain.cc:557] mysqld-debug.exe!Explain::send()[opt_explain.cc:660] mysqld-debug.exe!explain_query_specification()[opt_explain.cc:2102] mysqld-debug.exe!st_select_lex_unit::explain()[sql_union.cc:744] mysqld-debug.exe!mysql_explain_unit()[opt_explain.cc:2241] mysqld-debug.exe!explain_query()[opt_explain.cc:2188] mysqld-debug.exe!handle_query()[sql_select.cc:176] mysqld-debug.exe!execute_sqlcom_select()[sql_parse.cc:4767] mysqld-debug.exe!mysql_execute_command()[sql_parse.cc:2468] mysqld-debug.exe!mysql_parse()[sql_parse.cc:5201] mysqld-debug.exe!dispatch_command()[sql_parse.cc:1283] mysqld-debug.exe!do_command()[sql_parse.cc:851] mysqld-debug.exe!handle_connection()[connection_handler_per_thread.cc:299] mysqld-debug.exe!pfs_spawn_thread()[pfs.cc:2149] mysqld-debug.exe!win_thread_start()[my_thread.c:37] mysqld-debug.exe!_callthreadstartex()[threadex.c:376] mysqld-debug.exe!_threadstartex()[threadex.c:359]
[28 Mar 2015 8:19]
MySQL Verification Team
Testcase -------- drop table if exists `t1`; create table t1(a int) engine=innodb; Then, run mysqlslap: mysqlslap.exe --number-of-queries=10000000000 \ --query="set sql_select_limit=0;set max_statement_time=1;explain select 1 from `t1` where `a` in (select 1 union select 1) union select 1;" \ --iterations=1000000 --create-schema=test
[28 Mar 2015 9:23]
MySQL Verification Team
verified on 5.7 and 5.8 branches: [sbester@fc17 mysql-5.7]$ git log |head commit 31b5f6f63aab3ff3f0d5dd8291aa00f250897314 Merge: f39b1c2 f11a637 Author: Mattias Jonsson <mattias.jonsson@oracle.com> Date: Sat Mar 28 01:45:56 2015 +0100 [sbester@fc17 mysql-trunk]$ git log|head commit 515d9e1d808ce0ece244b89cc4f5567ffdc316f1 Merge: 5ea75dd 31b5f6f Author: Mattias Jonsson <mattias.jonsson@oracle.com> Date: Sat Mar 28 01:55:36 2015 +0100 the slap command was: mysqlslap --number-of-queries=10000000000 --query="set sql_select_limit=0;set max_statement_time=1;explain select 1 from t1 where a in (select 1 union select 1) union select 1;" --iterations=1000000 --create-schema=test
[14 Apr 2015 20:12]
Paul DuBois
Noted in 5.7.8, 5.8.0 changelogs. An assertion could be raised with max_statement_time set greater than zero and multiple concurrent sessions executing certain EXPLAIN statements.