~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/sql_select.cc

  • Committer: Brian Aker
  • Date: 2010-07-16 19:54:08 UTC
  • mfrom: (1660.1.4 rollup)
  • Revision ID: brian@gaz-20100716195408-8fiuxwmy4mpqq4ko
Rollup patch + fix for not intel processors.

Show diffs side-by-side

added added

removed removed

Lines of Context:
598
598
      if (field->getValue()->type() == Item::NULL_ITEM &&
599
599
          ! field->getField()->real_maybe_null())
600
600
      {
601
 
        field->getField()->table->reginfo.not_exists_optimize= 1;
 
601
        field->getField()->getTable()->reginfo.not_exists_optimize= 1;
602
602
      }
603
603
    }
604
604
  }
933
933
bool store_val_in_field(Field *field, Item *item, enum_check_fields check_flag)
934
934
{
935
935
  bool error;
936
 
  Table *table= field->table;
 
936
  Table *table= field->getTable();
937
937
  Session *session= table->in_use;
938
938
  ha_rows cuted_fields=session->cuted_fields;
939
939
 
1159
1159
          Item *notnull;
1160
1160
          assert(item->type() == Item::FIELD_ITEM);
1161
1161
          Item_field *not_null_item= (Item_field*)item;
1162
 
          JoinTable *referred_tab= not_null_item->field->table->reginfo.join_tab;
 
1162
          JoinTable *referred_tab= not_null_item->field->getTable()->reginfo.join_tab;
1163
1163
          /*
1164
1164
            For UPDATE queries such as:
1165
1165
            UPDATE t1 SET t1.f2=(SELECT MAX(t2.f4) FROM t2 WHERE t2.f3=t1.f1);
1288
1288
  case Item::FIELD_ITEM:
1289
1289
    {
1290
1290
      Item_field *item_field= (Item_field*)item;
1291
 
      if (item_field->field->table != tbl)
 
1291
      if (item_field->field->getTable() != tbl)
1292
1292
        return true;
1293
1293
      return item_field->field->part_of_key.test(keyno);
1294
1294
    }
2324
2324
  if (outer_ref)
2325
2325
    return cmp;
2326
2326
  JoinTable **idx= (JoinTable **) table_join_idx;
2327
 
  cmp= idx[field2->field->table->tablenr]-idx[field1->field->table->tablenr];
 
2327
  cmp= idx[field2->field->getTable()->tablenr]-idx[field1->field->getTable()->tablenr];
2328
2328
  return cmp < 0 ? -1 : (cmp ? 1 : 0);
2329
2329
}
2330
2330
 
2571
2571
      while ((item_field= it++))
2572
2572
      {
2573
2573
        Field *field= item_field->field;
2574
 
        JoinTable *stat= field->table->reginfo.join_tab;
 
2574
        JoinTable *stat= field->getTable()->reginfo.join_tab;
2575
2575
        key_map possible_keys= field->key_start;
2576
 
        possible_keys&= field->table->keys_in_use_for_query;
 
2576
        possible_keys&= field->getTable()->keys_in_use_for_query;
2577
2577
        stat[0].const_keys|= possible_keys;
2578
2578
 
2579
2579
        /*
2583
2583
        */
2584
2584
        if (possible_keys.any())
2585
2585
        {
2586
 
          Table *field_tab= field->table;
 
2586
          Table *field_tab= field->getTable();
2587
2587
          optimizer::KeyUse *use;
2588
2588
          for (use= stat->keyuse; use && use->getTable() == field_tab; use++)
2589
2589
            if (possible_keys.test(use->getKey()) &&
3027
3027
    {
3028
3028
      Field *field= ((Item_field*) args[0])->field;
3029
3029
      if (field->flags & AUTO_INCREMENT_FLAG 
3030
 
          && ! field->table->maybe_null 
 
3030
          && ! field->getTable()->maybe_null 
3031
3031
          && session->options & OPTION_AUTO_IS_NULL
3032
3032
          && (
3033
3033
            session->first_successful_insert_id_in_prev_stmt > 0 
4276
4276
{
4277
4277
  Field *field=left_item->field;
4278
4278
  // No need to change const test. We also have to keep tests on LEFT JOIN
4279
 
  if (!field->table->const_table && !field->table->maybe_null)
 
4279
  if (not field->getTable()->const_table && !field->getTable()->maybe_null)
4280
4280
  {
4281
 
    Item *ref_item=part_of_refkey(field->table,field);
 
4281
    Item *ref_item=part_of_refkey(field->getTable(),field);
4282
4282
    if (ref_item && ref_item->eq(right_item,1))
4283
4283
    {
4284
4284
      right_item= right_item->real_item();
6145
6145
          saved value
6146
6146
        */
6147
6147
        field= item->field;
6148
 
        item->result_field=field->new_field(session->mem_root,field->table, 1);
 
6148
        item->result_field=field->new_field(session->mem_root,field->getTable(), 1);
6149
6149
              /*
6150
6150
                We need to allocate one extra byte for null handling and
6151
6151
                another extra byte to not get warnings from purify in
6278
6278
      }
6279
6279
      else if ((field= item->get_tmp_table_field()))
6280
6280
      {
6281
 
        if (item->type() == Item::SUM_FUNC_ITEM && field->table->group)
 
6281
        if (item->type() == Item::SUM_FUNC_ITEM && field->getTable()->group)
6282
6282
          item_field= ((Item_sum*) item)->result_item(field);
6283
6283
        else
6284
6284
          item_field= (Item*) new Item_field(field);