1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-01 03:47:19 +03:00

Merge branch 'bb-10.2-ext' into 10.3

This commit is contained in:
Sergei Golubchik
2017-08-26 00:34:43 +02:00
570 changed files with 79204 additions and 12258 deletions

View File

@ -350,12 +350,12 @@ ORDER *st_select_lex::find_common_window_func_partition_fields(THD *thd)
Item *item;
DBUG_ASSERT(window_funcs.elements);
List_iterator_fast<Item_window_func> it(window_funcs);
Item_window_func *wf= it++;
if (!wf->window_spec->partition_list)
Item_window_func *first_wf= it++;
if (!first_wf->window_spec->partition_list)
return 0;
List<Item> common_fields;
uint first_partition_elements;
for (ord= wf->window_spec->partition_list->first; ord; ord= ord->next)
uint first_partition_elements= 0;
for (ord= first_wf->window_spec->partition_list->first; ord; ord= ord->next)
{
if ((*ord->item)->real_item()->type() == Item::FIELD_ITEM)
common_fields.push_back(*ord->item, thd->mem_root);
@ -363,8 +363,9 @@ ORDER *st_select_lex::find_common_window_func_partition_fields(THD *thd)
}
if (window_specs.elements == 1 &&
common_fields.elements == first_partition_elements)
return wf->window_spec->partition_list->first;
return first_wf->window_spec->partition_list->first;
List_iterator<Item> li(common_fields);
Item_window_func *wf;
while (common_fields.elements && (wf= it++))
{
if (!wf->window_spec->partition_list)
@ -384,11 +385,9 @@ ORDER *st_select_lex::find_common_window_func_partition_fields(THD *thd)
if (!common_fields.elements)
return 0;
if (common_fields.elements == first_partition_elements)
return wf->window_spec->partition_list->first;
return first_wf->window_spec->partition_list->first;
SQL_I_List<ORDER> res_list;
it.rewind();
wf= it++;
for (ord= wf->window_spec->partition_list->first, item= li++;
for (ord= first_wf->window_spec->partition_list->first, item= li++;
ord; ord= ord->next)
{
if (item != *ord->item)