1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-08 11:22:35 +03:00

Merge branch '11.1' into 11.2

This commit is contained in:
Oleksandr Byelkin
2024-08-03 09:50:16 +02:00
463 changed files with 12095 additions and 5097 deletions

View File

@@ -5488,6 +5488,9 @@ void st_select_lex::update_correlated_cache()
while ((tl= ti++))
{
if (tl->table_function)
is_correlated|= MY_TEST(tl->table_function->used_tables() &
OUTER_REF_TABLE_BIT);
// is_correlated|= tl->is_with_table_recursive_reference();
if (tl->on_expr)
is_correlated|= MY_TEST(tl->on_expr->used_tables() & OUTER_REF_TABLE_BIT);
@@ -8205,7 +8208,7 @@ bool LEX::check_expr_allows_fields_or_error(THD *thd, const char *name) const
{
if (select_stack_top > 0)
return false; // OK, fields are allowed
my_error(ER_BAD_FIELD_ERROR, MYF(0), name, thd->where);
my_error(ER_BAD_FIELD_ERROR, MYF(0), name, thd_where(thd));
return true; // Error, fields are not allowed
}
@@ -8228,7 +8231,7 @@ Item *LEX::create_item_ident_nospvar(THD *thd,
if (unlikely(current_select->no_table_names_allowed))
{
my_error(ER_TABLENAME_NOT_ALLOWED_HERE, MYF(0), a->str, thd->where);
my_error(ER_TABLENAME_NOT_ALLOWED_HERE, MYF(0), a->str, thd_where(thd));
return NULL;
}
@@ -8443,7 +8446,7 @@ Item *LEX::create_item_ident(THD *thd,
if (current_select->no_table_names_allowed)
{
my_error(ER_TABLENAME_NOT_ALLOWED_HERE, MYF(0), b->str, thd->where);
my_error(ER_TABLENAME_NOT_ALLOWED_HERE, MYF(0), b->str, thd_where(thd));
return NULL;
}
@@ -11097,7 +11100,10 @@ void mark_or_conds_to_avoid_pushdown(Item *cond)
(if cond is marked with MARKER_FULL_EXTRACTION or
cond is an AND condition and some of its parts are marked with
MARKER_FULL_EXTRACTION)
In this case condition is transformed and pushed into attach_to_conds
In this case condition is transformed with multiple_equality_transformer
transformer. It transforms all multiple equalities in the extracted
condition into the set of equalities.
After that the transformed condition is attached into attach_to_conds
list.
2. Part of some other condition c1 that can't be entirely pushed
(if с1 isn't marked with any flag).
@@ -11114,10 +11120,6 @@ void mark_or_conds_to_avoid_pushdown(Item *cond)
In this case build_pushable_cond() is called for c1.
This method builds a clone of the c1 part that can be pushed.
Transformation mentioned above is made with multiple_equality_transformer
transformer. It transforms all multiple equalities in the extracted
condition into the set of equalities.
@note
Conditions that can be pushed are collected in attach_to_conds in this way:
1. if cond is an AND condition its parts that can be pushed into WHERE