diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2021-09-24 14:38:52 +0300 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2021-09-24 14:38:52 +0300 |
commit | d95361107c07b6e8257a7a82c41b18af64ab8d89 (patch) | |
tree | 92df0d7f2670e1ec41e62e21741bd121beeceacb /sql/sql_delete.cc | |
parent | 37a074f6c35af22f403b3e1d150c17e8ab07f164 (diff) | |
parent | 88f38661b75e68ed255491ed51e52e73cfe06011 (diff) | |
download | mariadb-git-d95361107c07b6e8257a7a82c41b18af64ab8d89.tar.gz |
Merge 10.5 into 10.6
Diffstat (limited to 'sql/sql_delete.cc')
-rw-r--r-- | sql/sql_delete.cc | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc index 0a2db2ea93a..e35cf17b182 100644 --- a/sql/sql_delete.cc +++ b/sql/sql_delete.cc @@ -631,14 +631,18 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, if (!table->check_virtual_columns_marked_for_read()) { DBUG_PRINT("info", ("Trying direct delete")); - if (select && select->cond && - (select->cond->used_tables() == table->map)) + bool use_direct_delete= !select || !select->cond; + if (!use_direct_delete && + (select->cond->used_tables() & ~RAND_TABLE_BIT) == table->map) { DBUG_ASSERT(!table->file->pushed_cond); if (!table->file->cond_push(select->cond)) + { + use_direct_delete= TRUE; table->file->pushed_cond= select->cond; + } } - if (!table->file->direct_delete_rows_init()) + if (use_direct_delete && !table->file->direct_delete_rows_init()) { /* Direct deleting is supported */ DBUG_PRINT("info", ("Using direct delete")); |