~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/sql_union.cc

Merge trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
172
172
void
173
173
Select_Lex_Unit::init_prepare_fake_select_lex(Session *session_arg)
174
174
{
175
 
  session_arg->lex->current_select= fake_select_lex;
 
175
  session_arg->getLex()->current_select= fake_select_lex;
176
176
  fake_select_lex->table_list.link_in_list((unsigned char *)&result_table_list,
177
177
                                           (unsigned char **)
178
178
                                           &result_table_list.next_local);
198
198
bool Select_Lex_Unit::prepare(Session *session_arg, select_result *sel_result,
199
199
                              uint64_t additional_options)
200
200
{
201
 
  Select_Lex *lex_select_save= session_arg->lex->current_select;
 
201
  Select_Lex *lex_select_save= session_arg->getLex()->current_select;
202
202
  Select_Lex *sl, *first_sl= first_select();
203
203
  select_result *tmp_result;
204
204
  bool is_union_select;
235
235
  prepared= 1;
236
236
  saved_error= false;
237
237
 
238
 
  session_arg->lex->current_select= sl= first_sl;
 
238
  session_arg->getLex()->current_select= sl= first_sl;
239
239
  found_rows_for_union= first_sl->options & OPTION_FOUND_ROWS;
240
240
  is_union_select= is_union() || fake_select_lex;
241
241
 
270
270
    if (!join)
271
271
      goto err;
272
272
 
273
 
    session_arg->lex->current_select= sl;
 
273
    session_arg->getLex()->current_select= sl;
274
274
 
275
275
    can_skip_order_by= is_union_select && !(sl->braces && sl->explicit_limit);
276
276
 
370
370
    result_table_list.setTableName((char *) "union");
371
371
    result_table_list.table= table= union_result->table;
372
372
 
373
 
    session_arg->lex->current_select= lex_select_save;
 
373
    session_arg->getLex()->current_select= lex_select_save;
374
374
    if (!item_list.elements)
375
375
    {
376
376
      saved_error= table->fill_item_list(&item_list);
387
387
    }
388
388
  }
389
389
 
390
 
  session_arg->lex->current_select= lex_select_save;
 
390
  session_arg->getLex()->current_select= lex_select_save;
391
391
 
392
392
  return(saved_error || session_arg->is_fatal_error);
393
393
 
394
394
err:
395
 
  session_arg->lex->current_select= lex_select_save;
 
395
  session_arg->getLex()->current_select= lex_select_save;
396
396
  return(true);
397
397
}
398
398
 
399
399
 
400
400
bool Select_Lex_Unit::exec()
401
401
{
402
 
  Select_Lex *lex_select_save= session->lex->current_select;
 
402
  Select_Lex *lex_select_save= session->getLex()->current_select;
403
403
  Select_Lex *select_cursor=first_select();
404
404
  uint64_t add_rows=0;
405
405
  ha_rows examined_rows= 0;
429
429
    for (Select_Lex *sl= select_cursor; sl; sl= sl->next_select())
430
430
    {
431
431
      ha_rows records_at_start= 0;
432
 
      session->lex->current_select= sl;
 
432
      session->getLex()->current_select= sl;
433
433
 
434
434
      if (optimized)
435
435
        saved_error= sl->join->reinit();
477
477
          examined_rows+= session->examined_row_count;
478
478
          if (union_result->flush())
479
479
          {
480
 
            session->lex->current_select= lex_select_save;
 
480
            session->getLex()->current_select= lex_select_save;
481
481
            return(1);
482
482
          }
483
483
        }
484
484
      }
485
485
      if (saved_error)
486
486
      {
487
 
        session->lex->current_select= lex_select_save;
 
487
        session->getLex()->current_select= lex_select_save;
488
488
        return(saved_error);
489
489
      }
490
490
      /* Needed for the following test and for records_at_start in next loop */
593
593
      */
594
594
    }
595
595
  }
596
 
  session->lex->current_select= lex_select_save;
 
596
  session->getLex()->current_select= lex_select_save;
597
597
  return(saved_error);
598
598
}
599
599