~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/sql_base.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:
45
45
#include <drizzled/check_stack_overrun.h>
46
46
#include <drizzled/lock.h>
47
47
 
48
 
#include <bitset>
49
 
 
50
 
using namespace std;
51
 
 
52
48
extern drizzled::TransactionServices transaction_services;
53
49
 
54
50
/**
3523
3519
  return(error);
3524
3520
}
3525
3521
 
3526
 
/*
3527
 
 * Helper function which tests whether a bit is set in the 
3528
 
 * bitset or not. It also sets the bit after this test is
3529
 
 * performed.
3530
 
 */
3531
 
static bool test_and_set_bit(bitset<MAX_FIELDS> *bitmap, uint32_t pos)
3532
 
{
3533
 
  bool ret= false;
3534
 
  if (bitmap->test(pos))
3535
 
    ret= true;
3536
 
  bitmap->set(pos);
3537
 
  return ret;
3538
 
}
3539
3522
 
3540
3523
/*****************************************************************************
3541
3524
* The following find_field_in_XXX procedures implement the core of the
3556
3539
{
3557
3540
  if (session->mark_used_columns != MARK_COLUMNS_NONE)
3558
3541
  {
3559
 
    bitset<MAX_FIELDS> *current_bitmap, *other_bitmap;
 
3542
    MY_BITMAP *current_bitmap, *other_bitmap;
3560
3543
 
3561
3544
    /*
3562
3545
      We always want to register the used keys, as the column bitmap may have
3577
3560
      other_bitmap=   table->read_set;
3578
3561
    }
3579
3562
 
3580
 
    if (test_and_set_bit(current_bitmap, field->field_index))
 
3563
    if (bitmap_fast_test_and_set(current_bitmap, field->field_index))
3581
3564
    {
3582
3565
      if (session->mark_used_columns == MARK_COLUMNS_WRITE)
3583
3566
        session->dup_field= field;
3894
3877
        {
3895
3878
          Table *table= field_to_set->table;
3896
3879
          if (session->mark_used_columns == MARK_COLUMNS_READ)
3897
 
            table->read_set->set(field_to_set->field_index);
 
3880
            bitmap_set_bit(table->read_set, field_to_set->field_index);
3898
3881
          else
3899
 
            table->write_set->set(field_to_set->field_index);
 
3882
            bitmap_set_bit(table->write_set, field_to_set->field_index);
3900
3883
        }
3901
3884
      }
3902
3885
  }
4644
4627
      {
4645
4628
        Table *table_1= nj_col_1->table_ref->table;
4646
4629
        /* Mark field_1 used for table cache. */
4647
 
        table_1->read_set->set(field_1->field_index);
 
4630
        bitmap_set_bit(table_1->read_set, field_1->field_index);
4648
4631
        table_1->covering_keys.intersect(field_1->part_of_key);
4649
4632
        table_1->merge_keys.merge(field_1->part_of_key);
4650
4633
      }
4652
4635
      {
4653
4636
        Table *table_2= nj_col_2->table_ref->table;
4654
4637
        /* Mark field_2 used for table cache. */
4655
 
        table_2->read_set->set(field_2->field_index);
 
4638
        bitmap_set_bit(table_2->read_set, field_2->field_index);
4656
4639
        table_2->covering_keys.intersect(field_2->part_of_key);
4657
4640
        table_2->merge_keys.merge(field_2->part_of_key);
4658
4641
      }
5446
5429
      if ((field= field_iterator.field()))
5447
5430
      {
5448
5431
        /* Mark fields as used to allow storage engine to optimze access */
5449
 
        field->table->read_set->set(field->field_index);
 
5432
        bitmap_set_bit(field->table->read_set, field->field_index);
5450
5433
        if (table)
5451
5434
        {
5452
5435
          table->covering_keys.intersect(field->part_of_key);