~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/item/sum.cc

  • Committer: Brian Aker
  • Date: 2010-06-04 23:50:43 UTC
  • mfrom: (1578.2.16 drizzle)
  • Revision ID: brian@gaz-20100604235043-61wg3zu6qhtkqiap
Merge for getTable() to have its own getField.* type methods. 

Show diffs side-by-side

added added

removed removed

Lines of Context:
1047
1047
 
1048
1048
bool Item_sum_distinct::add()
1049
1049
{
1050
 
  args[0]->save_in_field(table->field[0], false);
 
1050
  args[0]->save_in_field(table->getField(0), false);
1051
1051
  is_evaluated= false;
1052
 
  if (!table->field[0]->is_null())
 
1052
  if (!table->getField(0)->is_null())
1053
1053
  {
1054
1054
    assert(tree);
1055
1055
    null_value= 0;
1057
1057
      '0' values are also stored in the tree. This doesn't matter
1058
1058
      for SUM(DISTINCT), but is important for AVG(DISTINCT)
1059
1059
    */
1060
 
    return tree->unique_add(table->field[0]->ptr);
 
1060
    return tree->unique_add(table->getField(0)->ptr);
1061
1061
  }
1062
1062
  return 0;
1063
1063
}
1065
1065
 
1066
1066
bool Item_sum_distinct::unique_walk_function(void *element)
1067
1067
{
1068
 
  memcpy(table->field[0]->ptr, element, tree_key_length);
 
1068
  memcpy(table->getField(0)->ptr, element, tree_key_length);
1069
1069
  ++count;
1070
 
  val.traits->add(&val, table->field[0]);
 
1070
  val.traits->add(&val, table->getField(0));
1071
1071
  return 0;
1072
1072
}
1073
1073
 
1109
1109
     */
1110
1110
    if (tree)
1111
1111
    {
1112
 
      table->field[0]->set_notnull();
 
1112
      table->getField(0)->set_notnull();
1113
1113
      tree->walk(item_sum_distinct_walk, (void*) this);
1114
1114
    }
1115
1115
    is_evaluated= true;
2493
2493
int composite_key_cmp(void* arg, unsigned char* key1, unsigned char* key2)
2494
2494
{
2495
2495
  Item_sum_count_distinct* item = (Item_sum_count_distinct*)arg;
2496
 
  Field **field    = item->table->field;
 
2496
  Field **field    = item->table->getFields();
2497
2497
  Field **field_end= field + item->table->getShare()->sizeFields();
2498
2498
  uint32_t *lengths=item->field_lengths;
2499
2499
  for (; field < field_end; ++field)
2616
2616
    */
2617
2617
    qsort_cmp2 compare_key;
2618
2618
    void* cmp_arg;
2619
 
    Field **field= table->field;
 
2619
    Field **field= table->getFields();
2620
2620
    Field **field_end= field + table->getShare()->sizeFields();
2621
2621
    bool all_binary= true;
2622
2622
 
2647
2647
          about other fields.
2648
2648
        */
2649
2649
        compare_key= (qsort_cmp2) simple_str_key_cmp;
2650
 
        cmp_arg= (void*) table->field[0];
 
2650
        cmp_arg= (void*) table->getField(0);
2651
2651
        /* tree_key_length has been set already */
2652
2652
      }
2653
2653
      else
2656
2656
        compare_key= (qsort_cmp2) composite_key_cmp;
2657
2657
        cmp_arg= (void*) this;
2658
2658
        field_lengths= (uint32_t*) session->alloc(table->getShare()->sizeFields() * sizeof(uint32_t));
2659
 
        for (tree_key_length= 0, length= field_lengths, field= table->field;
 
2659
        for (tree_key_length= 0, length= field_lengths, field= table->getFields();
2660
2660
             field < field_end; ++field, ++length)
2661
2661
        {
2662
2662
          *length= (*field)->pack_length();
2711
2711
  copy_fields(tmp_table_param);
2712
2712
  copy_funcs(tmp_table_param->items_to_copy);
2713
2713
 
2714
 
  for (Field **field=table->field ; *field ; field++)
 
2714
  for (Field **field= table->getFields() ; *field ; field++)
 
2715
  {
2715
2716
    if ((*field)->is_real_null(0))
 
2717
    {
2716
2718
      return 0;                                 // Don't count NULL
 
2719
    }
 
2720
  }
2717
2721
 
2718
2722
  is_evaluated= false;
2719
2723
  if (tree)