mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
7922fbf7b7
The problem affected queries in form: SELECT FROM (SELECT where Split Materialized is applicable) WHERE 1=0 The problem was caused by this: - The select in derived table uses two-phase optimization (due to a possible Split Materialized). - The primary select has "Impossible where" and so it short-cuts its optimization. - The optimization for the SELECT in the derived table is never finished, and EXPLAIN data structure has a dangling pointer to select #2. Fixed with this: make JOIN::optimize_stage2() invoke optimization of derived tables when it is handing a degenerate JOIN with zero tables. We will not execute the derived tables but we need their query plans for [SHOW]EXPLAIN.
20 lines
546 B
Text
20 lines
546 B
Text
--echo #
|
|
--echo # MDEV-26249: Crash in in Explain_node::print_explain_for_children while writing to the slow query log
|
|
--echo #
|
|
|
|
--source include/have_innodb.inc
|
|
|
|
set @sql_tmp=@@slow_query_log;
|
|
SET GLOBAL slow_query_log = 1;
|
|
SET long_query_time = 0.000000;
|
|
SET log_slow_verbosity = 'explain';
|
|
|
|
CREATE TABLE t1 ( id varchar(50), KEY (id)) engine=innodb;
|
|
SELECT * FROM (SELECT id FROM t1 GROUP BY id) dt WHERE 1=0;
|
|
select 1;
|
|
|
|
explain
|
|
SELECT * FROM (SELECT id FROM t1 GROUP BY id) dt WHERE 1=0;
|
|
|
|
SET GLOBAL slow_query_log = @sql_tmp;
|
|
drop table t1;
|