mirror of
https://github.com/MariaDB/server.git
synced 2025-12-24 11:21:21 +03:00
Bug#8670
Rework to resolve ambigious grammer: conflict in join expression
handling of parentheses for nested joins and derived tables.
Tests included of failing statements
Optimize item construction for AND/OR logical expressions
mysql-test/r/select.result:
Bug#8670
Tests for failing expressions
mysql-test/t/select.test:
Bug#8670
Tests for failing expressions
sql/sql_parse.cc:
Bug#8670
method st_select_lex::end_nested_join() returns NULL when
there are no elements in the join.
sql/sql_yacc.yy:
Optimize construction for Item_cond_or and Item_cond_and
Reduces object count in case of complex expressions.
Bug#8670
Solve ambigious grammar.
Fix handling of parentheses in join expressions to
correct handling of nested joins and derived tables.
This commit is contained in:
@@ -5852,6 +5852,7 @@ TABLE_LIST *st_select_lex::end_nested_join(THD *thd)
|
||||
{
|
||||
TABLE_LIST *ptr;
|
||||
DBUG_ENTER("end_nested_join");
|
||||
DBUG_ASSERT(embedding);
|
||||
ptr= embedding;
|
||||
join_list= ptr->join_list;
|
||||
embedding= ptr->embedding;
|
||||
@@ -5865,6 +5866,12 @@ TABLE_LIST *st_select_lex::end_nested_join(THD *thd)
|
||||
join_list->push_front(embedded);
|
||||
ptr= embedded;
|
||||
}
|
||||
else
|
||||
if (nested_join->join_list.elements == 0)
|
||||
{
|
||||
join_list->pop();
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
DBUG_RETURN(ptr);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user