diff options
author | Sergey Glukhov <Sergey.Glukhov@sun.com> | 2010-03-19 10:01:02 +0400 |
---|---|---|
committer | Sergey Glukhov <Sergey.Glukhov@sun.com> | 2010-03-19 10:01:02 +0400 |
commit | bed0948145a6874807bc696b7742cdec47679326 (patch) | |
tree | d4a6eeb8c33141b7d7636e1ba763013240c4ed03 /mysql-test/r | |
parent | 0d608d5b11e621e604e67bfe460a36452ccbbf35 (diff) | |
download | mariadb-git-bed0948145a6874807bc696b7742cdec47679326.tar.gz |
Bug#51494 crash with join, explain and 'sounds like' operator
The crash happens because of discrepancy between values of
conts_tables and join->const_table_map(make_join_statisctics).
Calculation of conts_tables used condition with
HA_STATS_RECORDS_IS_EXACT flag check. Calculation of
join->const_table_map does not use this flag check.
In case of MERGE table without union with index
the table does not become const table and
thus join_read_const_table() is not called
for the table. join->const_table_map supposes
this table is const and later in make_join_select
this table is used for making&calculation const
condition. As table record buffer is not populated
it leads to crash.
The fix is adding a check if an engine supports
HA_STATS_RECORDS_IS_EXACT flag before updating
join->const_table_map.
Diffstat (limited to 'mysql-test/r')
-rw-r--r-- | mysql-test/r/merge.result | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/mysql-test/r/merge.result b/mysql-test/r/merge.result index 184cd92e053..dbffbba1b8b 100644 --- a/mysql-test/r/merge.result +++ b/mysql-test/r/merge.result @@ -2286,4 +2286,16 @@ m1 CREATE TABLE `m1` ( DROP TABLE m1; DROP TABLE `test@1`.`t@1`; DROP DATABASE `test@1`; +# +# Bug#51494c rash with join, explain and 'sounds like' operator +# +CREATE TABLE t1 (a INT) ENGINE=MYISAM; +INSERT INTO t1 VALUES(1); +CREATE TABLE t2 (b INT NOT NULL,c INT,d INT,e BLOB NOT NULL, +KEY idx0 (d, c)) ENGINE=MERGE; +EXPLAIN SELECT * FROM t1 NATURAL RIGHT JOIN +t2 WHERE b SOUNDS LIKE e AND d = 1; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables +DROP TABLE t2, t1; End of 5.1 tests |