1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-27 18:02:13 +03:00

5.3.4 merge

This commit is contained in:
Sergei Golubchik
2012-02-15 18:08:08 +01:00
117 changed files with 4695 additions and 2204 deletions

View File

@ -899,6 +899,8 @@ int JOIN_CACHE::alloc_buffer()
curr_buff_space_sz+= cache->get_join_buffer_size();
}
}
curr_min_buff_space_sz+= min_buff_size;
curr_buff_space_sz+= buff_size;
if (curr_min_buff_space_sz > join_buff_space_limit ||
(curr_buff_space_sz > join_buff_space_limit &&
@ -2110,16 +2112,6 @@ enum_nested_loop_state JOIN_CACHE::join_records(bool skip_last)
if (rc != NESTED_LOOP_OK && rc != NESTED_LOOP_NO_MORE_ROWS)
goto finish;
}
if (outer_join_first_inner)
{
/*
All null complemented rows have been already generated for all
outer records from join buffer. Restore the state of the
first_unmatched values to 0 to avoid another null complementing.
*/
for (tab= join_tab->first_inner; tab <= join_tab->last_inner; tab++)
tab->first_unmatched= 0;
}
if (skip_last)
{
@ -2132,6 +2124,16 @@ enum_nested_loop_state JOIN_CACHE::join_records(bool skip_last)
}
finish:
if (outer_join_first_inner)
{
/*
All null complemented rows have been already generated for all
outer records from join buffer. Restore the state of the
first_unmatched values to 0 to avoid another null complementing.
*/
for (tab= join_tab->first_inner; tab <= join_tab->last_inner; tab++)
tab->first_unmatched= 0;
}
restore_last_record();
reset(TRUE);
DBUG_PRINT("exit", ("rc: %d", rc));