diff options
author | Sergey Petrunya <psergey@askmonty.org> | 2013-05-03 00:10:43 +0400 |
---|---|---|
committer | Sergey Petrunya <psergey@askmonty.org> | 2013-05-03 00:10:43 +0400 |
commit | 6ed00c4d8a90129e7098bcb5fad5b01332e9882c (patch) | |
tree | 162d5b00e042e0a8149c601c1232cbfdf5831066 /sql/sql_delete.cc | |
parent | 8d75f11a67d620727b87ef3a00d61a6f92418817 (diff) | |
download | mariadb-git-6ed00c4d8a90129e7098bcb5fad5b01332e9882c.tar.gz |
MDEV-4465: Reproducible crash (mysqld got signal 11) in multi_delete::initialize_tables...
- make multi_delete::initialize_tables() take into account that the JOIN structure may have
semi-join nests (which are not fully initialized when this function is called, they have
tab->table=NULL which caused the crash)
- Also checked multi_update::initialize_tables(): it has a different logic and needed no fixing.
Diffstat (limited to 'sql/sql_delete.cc')
-rw-r--r-- | sql/sql_delete.cc | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc index 3c245807b47..64fd33bbc2c 100644 --- a/sql/sql_delete.cc +++ b/sql/sql_delete.cc @@ -677,7 +677,7 @@ multi_delete::initialize_tables(JOIN *join) tab; tab= next_linear_tab(join, tab, WITHOUT_BUSH_ROOTS)) { - if (tab->table->map & tables_to_delete_from) + if (!tab->bush_children && tab->table->map & tables_to_delete_from) { /* We are going to delete from this table */ TABLE *tbl=walk->table=tab->table; |