mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
MDEV-31181 Server crash in subselect_uniquesubquery_engine::print upon EXPLAIN EXTENDED DELETE
Temporary fix to avoid the server crash.
This commit is contained in:
@ -18,3 +18,21 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
2 DERIVED t1 index NULL id 53 NULL 1 Using index
|
||||
SET GLOBAL slow_query_log = @sql_tmp;
|
||||
drop table t1;
|
||||
#
|
||||
# MDEV-31181: Server crash in subselect_uniquesubquery_engine::print
|
||||
# upon EXPLAIN EXTENDED DELETE
|
||||
#
|
||||
CREATE TABLE t1 (a INT);
|
||||
INSERT INTO t1 VALUES (1),(2);
|
||||
CREATE TABLE t2 (pk INT PRIMARY KEY);
|
||||
INSERT INTO t2 VALUES (1),(2);
|
||||
EXPLAIN EXTENDED DELETE FROM t1 WHERE a IN (SELECT pk FROM t2);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
2 DEPENDENT SUBQUERY t2 unique_subquery PRIMARY PRIMARY 4 func 1 100.00 Using index
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ delete from `test`.`t1` where <in_optimizer>(`test`.`t1`.`a`,<exists>(<primary_index_lookup>(<cache>(`test`.`t1`.`a`))))
|
||||
drop table t1, t2;
|
||||
#
|
||||
# End of 10.4 tests
|
||||
#
|
||||
|
@ -18,3 +18,22 @@ SELECT * FROM (SELECT id FROM t1 GROUP BY id) dt WHERE 1=0;
|
||||
|
||||
SET GLOBAL slow_query_log = @sql_tmp;
|
||||
drop table t1;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-31181: Server crash in subselect_uniquesubquery_engine::print
|
||||
--echo # upon EXPLAIN EXTENDED DELETE
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (a INT);
|
||||
INSERT INTO t1 VALUES (1),(2);
|
||||
CREATE TABLE t2 (pk INT PRIMARY KEY);
|
||||
INSERT INTO t2 VALUES (1),(2);
|
||||
|
||||
EXPLAIN EXTENDED DELETE FROM t1 WHERE a IN (SELECT pk FROM t2);
|
||||
|
||||
drop table t1, t2;
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.4 tests
|
||||
--echo #
|
||||
|
@ -4538,6 +4538,12 @@ void subselect_uniquesubquery_engine::print(String *str,
|
||||
{
|
||||
str->append(STRING_WITH_LEN("<primary_index_lookup>("));
|
||||
tab->ref.items[0]->print(str, query_type);
|
||||
if (!tab->table)
|
||||
{
|
||||
// table is not opened so unknown
|
||||
str->append(')');
|
||||
return;
|
||||
}
|
||||
str->append(STRING_WITH_LEN(" in "));
|
||||
if (tab->table->s->table_category == TABLE_CATEGORY_TEMPORARY)
|
||||
{
|
||||
|
Reference in New Issue
Block a user