~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/sql_union.cc

  • Committer: Lee Bieber
  • Date: 2011-03-13 16:37:38 UTC
  • mfrom: (2227.4.18 session2)
  • Revision ID: kalebral@gmail.com-20110313163738-7ti21zk40o2xi3ew
Merge Olaf - Refactor Session

Show diffs side-by-side

added added

removed removed

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