summaryrefslogtreecommitdiff
path: root/sql/sql_delete.cc
diff options
context:
space:
mode:
authorSergey Petrunya <psergey@askmonty.org>2013-05-03 00:10:43 +0400
committerSergey Petrunya <psergey@askmonty.org>2013-05-03 00:10:43 +0400
commit6ed00c4d8a90129e7098bcb5fad5b01332e9882c (patch)
tree162d5b00e042e0a8149c601c1232cbfdf5831066 /sql/sql_delete.cc
parent8d75f11a67d620727b87ef3a00d61a6f92418817 (diff)
downloadmariadb-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.cc2
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;