~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/filesort.cc

  • Committer: Brian Aker
  • Date: 2009-04-13 16:22:40 UTC
  • mfrom: (971.1.78 mordred)
  • Revision ID: brian@gaz-20090413162240-ugi3gvhofmcuglzl
Merge Monty

Show diffs side-by-side

added added

removed removed

Lines of Context:
30
30
#include <drizzled/table_list.h>
31
31
 
32
32
#include <queue>
 
33
#include <bitset>
33
34
 
34
35
using namespace std;
35
36
 
453
454
  Session *session= current_session;
454
455
  volatile Session::killed_state *killed= &session->killed;
455
456
  handler *file;
456
 
  MY_BITMAP *save_read_set, *save_write_set;
 
457
  bitset<MAX_FIELDS> *save_read_set, *save_write_set;
457
458
 
458
459
  idx=indexpos=0;
459
460
  error=quick_select=0;
489
490
  save_read_set=  sort_form->read_set;
490
491
  save_write_set= sort_form->write_set;
491
492
  /* Set up temporary column read map for columns used by sort */
492
 
  bitmap_clear_all(&sort_form->tmp_set);
 
493
  sort_form->tmp_set.reset();
493
494
  /* Temporary set for register_used_fields and register_field_in_read_map */
494
495
  sort_form->read_set= &sort_form->tmp_set;
495
496
  register_used_fields(param);
922
923
{
923
924
  register SORT_FIELD *sort_field;
924
925
  Table *table=param->sort_form;
925
 
  MY_BITMAP *bitmap= table->read_set;
 
926
  bitset<MAX_FIELDS> *bitmap= table->read_set;
926
927
 
927
928
  for (sort_field= param->local_sortorder ;
928
929
       sort_field != param->end ;
932
933
    if ((field= sort_field->field))
933
934
    {
934
935
      if (field->table == table)
935
 
      bitmap_set_bit(bitmap, field->field_index);
 
936
        bitmap->set(field->field_index);
936
937
    }
937
938
    else
938
939
    {                                           // Item
946
947
    SORT_ADDON_FIELD *addonf= param->addon_field;
947
948
    Field *field;
948
949
    for ( ; (field= addonf->field) ; addonf++)
949
 
      bitmap_set_bit(bitmap, field->field_index);
 
950
      bitmap->set(field->field_index);
950
951
  }
951
952
  else
952
953
  {
1456
1457
  uint32_t length= 0;
1457
1458
  uint32_t fields= 0;
1458
1459
  uint32_t null_fields= 0;
1459
 
  MY_BITMAP *read_set= (*ptabfield)->table->read_set;
 
1460
  bitset<MAX_FIELDS> *read_set= (*ptabfield)->table->read_set;
1460
1461
 
1461
1462
  /*
1462
1463
    If there is a reference to a field in the query add it
1471
1472
 
1472
1473
  for (pfield= ptabfield; (field= *pfield) ; pfield++)
1473
1474
  {
1474
 
    if (!bitmap_is_set(read_set, field->field_index))
 
1475
    if (!read_set->test(field->field_index))
1475
1476
      continue;
1476
1477
    if (field->flags & BLOB_FLAG)
1477
1478
      return 0;
1494
1495
  null_fields= 0;
1495
1496
  for (pfield= ptabfield; (field= *pfield) ; pfield++)
1496
1497
  {
1497
 
    if (!bitmap_is_set(read_set, field->field_index))
 
1498
    if (!read_set->test(field->field_index))
1498
1499
      continue;
1499
1500
    addonf->field= field;
1500
1501
    addonf->offset= length;