~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/item/sum.cc

  • Committer: Brian Aker
  • Date: 2009-02-07 22:02:41 UTC
  • Revision ID: brian@tangent.org-20090207220241-ez3828o1246ab2sp
Removing on typedeffed class.

Show diffs side-by-side

added added

removed removed

Lines of Context:
100
100
    If the context conditions are not met the method reports an error.
101
101
    If the set function is aggregated in some outer subquery the method
102
102
    adds it to the chain of items for such set functions that is attached
103
 
    to the the st_select_lex structure for this subquery.
 
103
    to the the Select_Lex structure for this subquery.
104
104
 
105
105
    A number of designated members of the object are used to check the
106
106
    conditions. They are specified in the comment before the Item_sum
251
251
    List_iterator<Item_field> of(outer_fields);
252
252
    while ((field= of++))
253
253
    {
254
 
      SELECT_LEX *sel= field->cached_table->select_lex;
 
254
      Select_Lex *sel= field->cached_table->select_lex;
255
255
      if (sel->nest_level < aggr_level)
256
256
      {
257
257
        if (in_sum_func)
308
308
 
309
309
bool Item_sum::register_sum_func(Session *session, Item **ref)
310
310
{
311
 
  SELECT_LEX *sl;
 
311
  Select_Lex *sl;
312
312
  nesting_map allow_sum_func= session->lex->allow_sum_func;
313
313
  for (sl= session->lex->current_select->master_unit()->outer_select() ;
314
314
       sl && sl->nest_level > max_arg_level;
350
350
      Mark Item_subselect(s) as containing aggregate function all the way up
351
351
      to aggregate function's calculation context.
352
352
      Note that we must not mark the Item of calculation context itself
353
 
      because with_sum_func on the calculation context st_select_lex is
 
353
      because with_sum_func on the calculation context Select_Lex is
354
354
      already set above.
355
355
 
356
356
      with_sum_func being set for an Item means that this Item refers
358
358
      or through intermediate items to an aggregate function that is calculated
359
359
      in a context "outside" of the Item (e.g. in the current or outer select).
360
360
 
361
 
      with_sum_func being set for an st_select_lex means that this st_select_lex
 
361
      with_sum_func being set for an Select_Lex means that this Select_Lex
362
362
      has aggregate functions directly referenced (i.e. not through a sub-select).
363
363
    */
364
364
    for (sl= session->lex->current_select;
412
412
 
413
413
void Item_sum::mark_as_sum_func()
414
414
{
415
 
  SELECT_LEX *cur_select= current_session->lex->current_select;
 
415
  Select_Lex *cur_select= current_session->lex->current_select;
416
416
  cur_select->n_sum_items++;
417
417
  cur_select->with_sum_func= 1;
418
418
  with_sum_func= 1;
2585
2585
bool Item_sum_count_distinct::setup(Session *session)
2586
2586
{
2587
2587
  List<Item> list;
2588
 
  SELECT_LEX *select_lex= session->lex->current_select;
 
2588
  Select_Lex *select_lex= session->lex->current_select;
2589
2589
 
2590
2590
  /*
2591
2591
    Setup can be called twice for ROLLUP items. This is a bug.
3223
3223
bool Item_func_group_concat::setup(Session *session)
3224
3224
{
3225
3225
  List<Item> list;
3226
 
  SELECT_LEX *select_lex= session->lex->current_select;
 
3226
  Select_Lex *select_lex= session->lex->current_select;
3227
3227
 
3228
3228
  /*
3229
3229
    Currently setup() can be called twice. Please add