diff options
author | unknown <gshchepa/uchum@host.loc> | 2008-04-23 02:27:23 +0500 |
---|---|---|
committer | unknown <gshchepa/uchum@host.loc> | 2008-04-23 02:27:23 +0500 |
commit | 5bb4282ed38e2dc0c991445bb4fb0cf2fa449f8f (patch) | |
tree | aabf58dec7cdd1b951b6c9d378efa2e54c68ac84 /mysql-test/r/have_mysql_upgrade.result | |
parent | 841821401f6f9c8e1800fcadfd81efb8bc0814d9 (diff) | |
download | mariadb-git-5bb4282ed38e2dc0c991445bb4fb0cf2fa449f8f.tar.gz |
Fixed bug#36005: server crashes inside NOT IN clause subquery with
impossible WHERE/HAVING clause
(subselect_single_select_engine::exec).
Allocation and initialization of joined table list t1, t2... of
subqueries like:
NOT IN (SELECT ... FROM t1,t2,... WHERE 0)
is optimized out, however server tries to traverse this list.
mysql-test/r/subselect3.result:
Added test case for bug#36005.
mysql-test/t/subselect3.test:
Added test case for bug#36005.
sql/sql_select.cc:
Fixed bug#36005.
1. JOIN::prepare initializes JOIN::table counter (actually a size
of the JOIN::join_tab array) and sets it to a number of joined tables.
2. The make_join_statistics function (when called from JOIN::optimize)
allocates and fills the JOIN::join_tab array.
However, when optimizing subselect has impossible (definite false)
WHERE or HAVING clause, optimizer skips call to make_join_statistics
and leaves JOIN::join_tab == NULL.
3. subselect_single_select_engine::exec does traversal of the JOIN::join_tab
array and the server dies because array is not allocated but array
counter is greater than 0.
The JOIN::optimize method has been modified to reset the JOIN::table
counter to 0 in cause of impossible WHERE/HAVING clause.
Diffstat (limited to 'mysql-test/r/have_mysql_upgrade.result')
0 files changed, 0 insertions, 0 deletions