1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

MDEV-26545 Spider does not correctly handle UDF and stored function in where conds

- Handle stored function conditions correctly, with the same logic as with UDFs.
- When running queries on Spider SE, by default, we do not push down WHERE conditions containing usage of UDFs/stored functions to remote data nodes, unless the user demands (by setting spider_use_pushdown_udf).
- Disable direct update/delete when a udf condition is skipped.
This commit is contained in:
Daniel Ye
2021-09-22 17:55:05 +08:00
committed by GitHub
parent 3d30458695
commit 9fc1ef932f
7 changed files with 429 additions and 7 deletions

View File

@ -583,14 +583,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"));