~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/filesort.cc

  • Committer: Monty Taylor
  • Date: 2009-05-08 19:27:21 UTC
  • mto: This revision was merged to the branch mainline in revision 1009.
  • Revision ID: mordred@inaugust.com-20090508192721-glbsg850k7wqp1rd
Further reversion of P.

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>
34
33
 
35
34
using namespace std;
36
35
 
454
453
  Session *session= current_session;
455
454
  volatile Session::killed_state *killed= &session->killed;
456
455
  handler *file;
457
 
  bitset<MAX_FIELDS> *save_read_set, *save_write_set;
 
456
  MY_BITMAP *save_read_set, *save_write_set;
458
457
 
459
458
  idx=indexpos=0;
460
459
  error=quick_select=0;
490
489
  save_read_set=  sort_form->read_set;
491
490
  save_write_set= sort_form->write_set;
492
491
  /* Set up temporary column read map for columns used by sort */
493
 
  sort_form->tmp_set.reset();
 
492
  bitmap_clear_all(&sort_form->tmp_set);
494
493
  /* Temporary set for register_used_fields and register_field_in_read_map */
495
494
  sort_form->read_set= &sort_form->tmp_set;
496
495
  register_used_fields(param);
921
920
{
922
921
  register SORT_FIELD *sort_field;
923
922
  Table *table=param->sort_form;
924
 
  bitset<MAX_FIELDS> *bitmap= table->read_set;
 
923
  MY_BITMAP *bitmap= table->read_set;
925
924
 
926
925
  for (sort_field= param->local_sortorder ;
927
926
       sort_field != param->end ;
931
930
    if ((field= sort_field->field))
932
931
    {
933
932
      if (field->table == table)
934
 
        bitmap->set(field->field_index);
 
933
      bitmap_set_bit(bitmap, field->field_index);
935
934
    }
936
935
    else
937
936
    {                                           // Item
945
944
    SORT_ADDON_FIELD *addonf= param->addon_field;
946
945
    Field *field;
947
946
    for ( ; (field= addonf->field) ; addonf++)
948
 
      bitmap->set(field->field_index);
 
947
      bitmap_set_bit(bitmap, field->field_index);
949
948
  }
950
949
  else
951
950
  {
1455
1454
  uint32_t length= 0;
1456
1455
  uint32_t fields= 0;
1457
1456
  uint32_t null_fields= 0;
1458
 
  bitset<MAX_FIELDS> *read_set= (*ptabfield)->table->read_set;
 
1457
  MY_BITMAP *read_set= (*ptabfield)->table->read_set;
1459
1458
 
1460
1459
  /*
1461
1460
    If there is a reference to a field in the query add it
1470
1469
 
1471
1470
  for (pfield= ptabfield; (field= *pfield) ; pfield++)
1472
1471
  {
1473
 
    if (!read_set->test(field->field_index))
 
1472
    if (!bitmap_is_set(read_set, field->field_index))
1474
1473
      continue;
1475
1474
    if (field->flags & BLOB_FLAG)
1476
1475
      return 0;
1493
1492
  null_fields= 0;
1494
1493
  for (pfield= ptabfield; (field= *pfield) ; pfield++)
1495
1494
  {
1496
 
    if (!read_set->test(field->field_index))
 
1495
    if (!bitmap_is_set(read_set, field->field_index))
1497
1496
      continue;
1498
1497
    addonf->field= field;
1499
1498
    addonf->offset= length;