diff options
Diffstat (limited to 'sql/sql_olap.cc')
-rw-r--r-- | sql/sql_olap.cc | 31 |
1 files changed, 11 insertions, 20 deletions
diff --git a/sql/sql_olap.cc b/sql/sql_olap.cc index 6eb4fbcaaf6..46f1e6c156e 100644 --- a/sql/sql_olap.cc +++ b/sql/sql_olap.cc @@ -62,9 +62,9 @@ static int make_new_olap_select(LEX *lex, SELECT_LEX *select_lex, List<Item> new List_iterator<Item> list_it(select_lex->item_list); List_iterator<Item> new_it(new_fields); - while((item=list_it++)) + while ((item=list_it++)) { - bool not_found=true; + bool not_found= TRUE; if (item->type()==Item::FIELD_ITEM) { Item_field *iif = (Item_field *)item; @@ -109,15 +109,15 @@ static int olap_combos(List<Item> old_fields, List<Item> new_fields, Item *item int num_new_fields) { int sl_return = 0; - if(position == num_new_fields) + if (position == num_new_fields) { - if(item) + if (item) new_fields.push_front(item); sl_return = make_new_olap_select(lex, select_lex, new_fields); } else { - if(item) + if (item) new_fields.push_front(item); while ((num_fields - num_new_fields >= selection - position) && !sl_return) { @@ -143,17 +143,6 @@ int handle_olaps(LEX *lex, SELECT_LEX *select_lex) int count=select_lex->group_list.elements; int sl_return=0; -// a fix for UNION's - for (TABLE_LIST *cursor= (TABLE_LIST *)select_lex->table_list.first; - cursor; - cursor=cursor->next) - { - if (cursor->do_redirect) - { - cursor->table= ((TABLE_LIST*) cursor->table)->table; - cursor->do_redirect= 0; - } - } lex->last_selects=select_lex; @@ -164,18 +153,20 @@ int handle_olaps(LEX *lex, SELECT_LEX *select_lex) if (setup_tables((TABLE_LIST *)select_lex->table_list.first) || - setup_fields(lex->thd,(TABLE_LIST *)select_lex->table_list.first,select_lex->item_list,1,&all_fields,1) || - setup_fields(lex->thd,(TABLE_LIST *)select_lex->table_list.first,item_list_copy,1,&all_fields,1)) + setup_fields(lex->thd, 0, (TABLE_LIST *)select_lex->table_list.first, + select_lex->item_list, 1, &all_fields,1) || + setup_fields(lex->thd, 0, (TABLE_LIST *)select_lex->table_list.first, + item_list_copy, 1, &all_fields, 1)) return -1; if (select_lex->olap == CUBE_TYPE) { - for( int i=count-1; i>=0 && !sl_return; i--) + for ( int i=count-1; i>=0 && !sl_return; i--) sl_return=olap_combos(item_list_copy, new_item_list, (Item *)0, lex, select_lex, 0, 0, count, i); } else if (select_lex->olap == ROLLUP_TYPE) { - for( int i=count-1; i>=0 && !sl_return; i--) + for ( int i=count-1; i>=0 && !sl_return; i--) { Item *item; item_list_copy.pop(); |