mirror of
https://github.com/MariaDB/server.git
synced 2025-08-31 22:22:30 +03:00
- a fix for Bug#11458 "Prepared statement with subselects return random
data": remove the fix for another bug (8807) that added OUTER_REF_TABLE_BIT to all subqueries that used a placeholder to prevent their evaluation at prepare. As this bit hanged in Item_subselect::used_tables_cache for ever, a constant subquery with a placeholder was never evaluated as such, which caused wrong choice of the execution plan for the statement. - to fix Bug#8807 backport a better fix from 5.0 - post-review fixes.
This commit is contained in:
@@ -4123,6 +4123,14 @@ mysql_new_select(LEX *lex, bool move_down)
|
||||
select_lex->select_number= ++lex->thd->select_number;
|
||||
select_lex->init_query();
|
||||
select_lex->init_select();
|
||||
/*
|
||||
Don't evaluate this subquery during statement prepare even if
|
||||
it's a constant one. The flag is switched off in the end of
|
||||
mysql_stmt_prepare.
|
||||
*/
|
||||
if (lex->thd->current_arena->is_stmt_prepare())
|
||||
select_lex->uncacheable|= UNCACHEABLE_PREPARE;
|
||||
|
||||
if (move_down)
|
||||
{
|
||||
lex->subqueries= TRUE;
|
||||
|
Reference in New Issue
Block a user