Skip to content

Commit 2dbc590

Browse files
author
Olav Sandstaa
committed
Bug#18636076 DEBUG CRASH ON PLAN_CHANGE_WATCHDOG::~PLAN_CHANGE_WATCHDOG
Test case for Bug#18636076. After the fix for Bug 18035906 this assert is no longer hit.
1 parent 419285f commit 2dbc590

File tree

4 files changed

+142
-0
lines changed

4 files changed

+142
-0
lines changed

mysql-test/include/order_by.inc

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1825,4 +1825,38 @@ let $query=SELECT DISTINCT a FROM t1 WHERE b=1 ORDER BY 1;
18251825
eval EXPLAIN $query;
18261826
eval $query;
18271827
DROP TABLE t1;
1828+
1829+
--echo #
1830+
--echo # Bug#18636076 DEBUG CRASH ON
1831+
--echo # PLAN_CHANGE_WATCHDOG::~PLAN_CHANGE_WATCHDOG
1832+
--echo #
1833+
1834+
# Both tables must be created using MyISAM in order to reproduce assert
1835+
CREATE TABLE t1 (
1836+
pk INTEGER NOT NULL,
1837+
PRIMARY KEY (pk)
1838+
) ENGINE=MyISAM;
1839+
1840+
INSERT INTO t1 VALUES (1), (2), (3);
1841+
1842+
CREATE VIEW view_t1 AS SELECT * FROM t1;
1843+
1844+
CREATE TABLE t2 (
1845+
i1 INTEGER NOT NULL
1846+
) ENGINE=MyISAM;
1847+
1848+
let query=
1849+
SELECT DISTINCT t2.i1, view_t1.pk
1850+
FROM view_t1 LEFT JOIN t2
1851+
ON view_t1.pk = t2.i1
1852+
WHERE (view_t1.pk <= 204 AND t2.i1 != 3)
1853+
OR view_t1.pk BETWEEN 1 AND 7
1854+
ORDER BY t2.i1;
1855+
1856+
eval EXPLAIN $query;
1857+
eval $query;
1858+
1859+
DROP VIEW view_t1;
1860+
DROP TABLE t1, t2;
1861+
18281862
SET sql_mode = default;

mysql-test/r/order_by_all.result

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2801,5 +2801,41 @@ Note 1003 /* select#1 */ select distinct `test`.`t1`.`a` AS `a` from `test`.`t1`
28012801
SELECT DISTINCT a FROM t1 WHERE b=1 ORDER BY 1;
28022802
a
28032803
DROP TABLE t1;
2804+
#
2805+
# Bug#18636076 DEBUG CRASH ON
2806+
# PLAN_CHANGE_WATCHDOG::~PLAN_CHANGE_WATCHDOG
2807+
#
2808+
CREATE TABLE t1 (
2809+
pk INTEGER NOT NULL,
2810+
PRIMARY KEY (pk)
2811+
) ENGINE=MyISAM;
2812+
INSERT INTO t1 VALUES (1), (2), (3);
2813+
CREATE VIEW view_t1 AS SELECT * FROM t1;
2814+
CREATE TABLE t2 (
2815+
i1 INTEGER NOT NULL
2816+
) ENGINE=MyISAM;
2817+
EXPLAIN SELECT DISTINCT t2.i1, view_t1.pk
2818+
FROM view_t1 LEFT JOIN t2
2819+
ON view_t1.pk = t2.i1
2820+
WHERE (view_t1.pk <= 204 AND t2.i1 != 3)
2821+
OR view_t1.pk BETWEEN 1 AND 7
2822+
ORDER BY t2.i1;
2823+
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
2824+
1 SIMPLE t2 NULL system NULL NULL NULL NULL 0 0.00 const row not found
2825+
1 SIMPLE t1 NULL index PRIMARY PRIMARY 4 NULL 3 100.00 Using where; Using index
2826+
Warnings:
2827+
Note 1003 /* select#1 */ select distinct NULL AS `i1`,`test`.`t1`.`pk` AS `pk` from `test`.`t1` where (((`test`.`t1`.`pk` <= 204) and (NULL <> 3)) or (`test`.`t1`.`pk` between 1 and 7)) order by NULL
2828+
SELECT DISTINCT t2.i1, view_t1.pk
2829+
FROM view_t1 LEFT JOIN t2
2830+
ON view_t1.pk = t2.i1
2831+
WHERE (view_t1.pk <= 204 AND t2.i1 != 3)
2832+
OR view_t1.pk BETWEEN 1 AND 7
2833+
ORDER BY t2.i1;
2834+
i1 pk
2835+
NULL 1
2836+
NULL 2
2837+
NULL 3
2838+
DROP VIEW view_t1;
2839+
DROP TABLE t1, t2;
28042840
SET sql_mode = default;
28052841
set optimizer_switch=default;

mysql-test/r/order_by_icp_mrr.result

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2801,5 +2801,41 @@ Note 1003 /* select#1 */ select distinct `test`.`t1`.`a` AS `a` from `test`.`t1`
28012801
SELECT DISTINCT a FROM t1 WHERE b=1 ORDER BY 1;
28022802
a
28032803
DROP TABLE t1;
2804+
#
2805+
# Bug#18636076 DEBUG CRASH ON
2806+
# PLAN_CHANGE_WATCHDOG::~PLAN_CHANGE_WATCHDOG
2807+
#
2808+
CREATE TABLE t1 (
2809+
pk INTEGER NOT NULL,
2810+
PRIMARY KEY (pk)
2811+
) ENGINE=MyISAM;
2812+
INSERT INTO t1 VALUES (1), (2), (3);
2813+
CREATE VIEW view_t1 AS SELECT * FROM t1;
2814+
CREATE TABLE t2 (
2815+
i1 INTEGER NOT NULL
2816+
) ENGINE=MyISAM;
2817+
EXPLAIN SELECT DISTINCT t2.i1, view_t1.pk
2818+
FROM view_t1 LEFT JOIN t2
2819+
ON view_t1.pk = t2.i1
2820+
WHERE (view_t1.pk <= 204 AND t2.i1 != 3)
2821+
OR view_t1.pk BETWEEN 1 AND 7
2822+
ORDER BY t2.i1;
2823+
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
2824+
1 SIMPLE t2 NULL system NULL NULL NULL NULL 0 0.00 const row not found
2825+
1 SIMPLE t1 NULL index PRIMARY PRIMARY 4 NULL 3 100.00 Using where; Using index
2826+
Warnings:
2827+
Note 1003 /* select#1 */ select distinct NULL AS `i1`,`test`.`t1`.`pk` AS `pk` from `test`.`t1` where (((`test`.`t1`.`pk` <= 204) and (NULL <> 3)) or (`test`.`t1`.`pk` between 1 and 7)) order by NULL
2828+
SELECT DISTINCT t2.i1, view_t1.pk
2829+
FROM view_t1 LEFT JOIN t2
2830+
ON view_t1.pk = t2.i1
2831+
WHERE (view_t1.pk <= 204 AND t2.i1 != 3)
2832+
OR view_t1.pk BETWEEN 1 AND 7
2833+
ORDER BY t2.i1;
2834+
i1 pk
2835+
NULL 1
2836+
NULL 2
2837+
NULL 3
2838+
DROP VIEW view_t1;
2839+
DROP TABLE t1, t2;
28042840
SET sql_mode = default;
28052841
set optimizer_switch=default;

mysql-test/r/order_by_none.result

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2800,5 +2800,41 @@ Note 1003 /* select#1 */ select distinct `test`.`t1`.`a` AS `a` from `test`.`t1`
28002800
SELECT DISTINCT a FROM t1 WHERE b=1 ORDER BY 1;
28012801
a
28022802
DROP TABLE t1;
2803+
#
2804+
# Bug#18636076 DEBUG CRASH ON
2805+
# PLAN_CHANGE_WATCHDOG::~PLAN_CHANGE_WATCHDOG
2806+
#
2807+
CREATE TABLE t1 (
2808+
pk INTEGER NOT NULL,
2809+
PRIMARY KEY (pk)
2810+
) ENGINE=MyISAM;
2811+
INSERT INTO t1 VALUES (1), (2), (3);
2812+
CREATE VIEW view_t1 AS SELECT * FROM t1;
2813+
CREATE TABLE t2 (
2814+
i1 INTEGER NOT NULL
2815+
) ENGINE=MyISAM;
2816+
EXPLAIN SELECT DISTINCT t2.i1, view_t1.pk
2817+
FROM view_t1 LEFT JOIN t2
2818+
ON view_t1.pk = t2.i1
2819+
WHERE (view_t1.pk <= 204 AND t2.i1 != 3)
2820+
OR view_t1.pk BETWEEN 1 AND 7
2821+
ORDER BY t2.i1;
2822+
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
2823+
1 SIMPLE t2 NULL system NULL NULL NULL NULL 0 0.00 const row not found
2824+
1 SIMPLE t1 NULL index PRIMARY PRIMARY 4 NULL 3 100.00 Using where; Using index
2825+
Warnings:
2826+
Note 1003 /* select#1 */ select distinct NULL AS `i1`,`test`.`t1`.`pk` AS `pk` from `test`.`t1` where (((`test`.`t1`.`pk` <= 204) and (NULL <> 3)) or (`test`.`t1`.`pk` between 1 and 7)) order by NULL
2827+
SELECT DISTINCT t2.i1, view_t1.pk
2828+
FROM view_t1 LEFT JOIN t2
2829+
ON view_t1.pk = t2.i1
2830+
WHERE (view_t1.pk <= 204 AND t2.i1 != 3)
2831+
OR view_t1.pk BETWEEN 1 AND 7
2832+
ORDER BY t2.i1;
2833+
i1 pk
2834+
NULL 1
2835+
NULL 2
2836+
NULL 3
2837+
DROP VIEW view_t1;
2838+
DROP TABLE t1, t2;
28032839
SET sql_mode = default;
28042840
set optimizer_switch=default;

0 commit comments

Comments
 (0)