~ubuntu-branches/ubuntu/trusty/drizzle/trusty

« back to all changes in this revision

Viewing changes to drizzled/optimizer/sum.cc

  • Committer: Bazaar Package Importer
  • Author(s): Monty Taylor
  • Date: 2010-10-02 14:17:48 UTC
  • mfrom: (1.1.1 upstream)
  • mto: (2.1.17 sid)
  • mto: This revision was merged to the branch mainline in revision 3.
  • Revision ID: james.westby@ubuntu.com-20101002141748-m6vbfbfjhrw1153e
Tags: 2010.09.1802-1
* New upstream release.
* Removed pid-file argument hack.
* Updated GPL-2 address to be new address.
* Directly copy in drizzledump.1 since debian doesn't have sphinx 1.0 yet.
* Link to jquery from libjs-jquery. Add it as a depend.
* Add drizzled.8 symlink to the install files.

Show diffs side-by-side

added added

removed removed

Lines of Context:
135
135
  for (TableList *tl= tables; tl; tl= tl->next_leaf)
136
136
  {
137
137
    TableList *embedded= NULL;
138
 
    for (embedded= tl; embedded; embedded= embedded->embedding)
 
138
    for (embedded= tl; embedded; embedded= embedded->getEmbedding())
139
139
    {
140
140
      if (embedded->on_expr)
141
141
        break;
239
239
 
240
240
              ref.key_buff= key_buff;
241
241
              Item_field *item_field= (Item_field*) (expr->real_item());
242
 
              Table *table= item_field->field->table;
 
242
              Table *table= item_field->field->getTable();
243
243
 
244
244
              /*
245
245
                 Look for a partial key that can be used for optimization.
261
261
                const_result= 0;
262
262
                break;
263
263
              }
264
 
              error= table->cursor->ha_index_init(static_cast<uint32_t>(ref.key), 1);
 
264
              error= table->cursor->startIndexScan(static_cast<uint32_t>(ref.key), 1);
265
265
 
266
266
              if (! ref.key_length)
267
267
              {
351
351
                table->key_read= 0;
352
352
                table->cursor->extra(HA_EXTRA_NO_KEYREAD);
353
353
              }
354
 
              table->cursor->ha_index_end();
 
354
              table->cursor->endIndexScan();
355
355
              if (error)
356
356
              {
357
357
                if (error == HA_ERR_KEY_NOT_FOUND || error == HA_ERR_END_OF_FILE)
407
407
 
408
408
              ref.key_buff= key_buff;
409
409
              Item_field *item_field= (Item_field*) (expr->real_item());
410
 
              Table *table= item_field->field->table;
 
410
              Table *table= item_field->field->getTable();
411
411
 
412
412
              /*
413
413
                 Look for a partial key that can be used for optimization.
429
429
                const_result= 0;
430
430
                break;
431
431
              }
432
 
              error= table->cursor->ha_index_init(static_cast<uint32_t>(ref.key), 1);
 
432
              error= table->cursor->startIndexScan(static_cast<uint32_t>(ref.key), 1);
433
433
 
434
434
              if (! ref.key_length)
435
435
              {
459
459
                table->key_read= 0;
460
460
                table->cursor->extra(HA_EXTRA_NO_KEYREAD);
461
461
              }
462
 
              table->cursor->ha_index_end();
 
462
              table->cursor->endIndexScan();
463
463
              if (error)
464
464
              {
465
465
                if (error == HA_ERR_KEY_NOT_FOUND || error == HA_ERR_END_OF_FILE)
647
647
*/
648
648
static bool matching_cond(bool max_fl,
649
649
                          table_reference_st *ref,
650
 
                          KEY *keyinfo,
651
 
                          KEY_PART_INFO *field_part,
 
650
                          KeyInfo *keyinfo,
 
651
                          KeyPartInfo *field_part,
652
652
                          COND *cond,
653
653
                          key_part_map *key_part_used,
654
654
                          uint32_t *range_fl,
662
662
 
663
663
  field->setWriteSet();
664
664
 
665
 
  if (! (cond->used_tables() & field->table->map))
 
665
  if (! (cond->used_tables() & field->getTable()->map))
666
666
  {
667
667
    /* Condition doesn't restrict the used table */
668
668
    return 1;
748
748
 
749
749
  /* Check if field is part of the tested partial key */
750
750
  unsigned char *key_ptr= ref->key_buff;
751
 
  KEY_PART_INFO *part= NULL;
 
751
  KeyPartInfo *part= NULL;
752
752
  for (part= keyinfo->key_part; ; key_ptr+= part++->store_length)
753
753
 
754
754
  {
907
907
    return 0; // Not key field
908
908
  }
909
909
 
910
 
  Table *table= field->table;
 
910
  Table *table= field->getTable();
911
911
  uint32_t idx= 0;
912
912
 
913
 
  KEY *keyinfo,*keyinfo_end= NULL;
914
 
  for (keyinfo= table->key_info, keyinfo_end= keyinfo+table->s->keys;
 
913
  KeyInfo *keyinfo,*keyinfo_end= NULL;
 
914
  for (keyinfo= table->key_info, keyinfo_end= keyinfo+table->getShare()->sizeKeys();
915
915
       keyinfo != keyinfo_end;
916
916
       keyinfo++,idx++)
917
917
  {
918
 
    KEY_PART_INFO *part= NULL;
919
 
    KEY_PART_INFO *part_end= NULL;
 
918
    KeyPartInfo *part= NULL;
 
919
    KeyPartInfo *part_end= NULL;
920
920
    key_part_map key_part_to_use= 0;
921
921
    /*
922
922
      Perform a check if index is not disabled by ALTER Table
938
938
      }
939
939
 
940
940
      /* Check whether the index component is partial */
941
 
      Field *part_field= table->field[part->fieldnr-1];
 
941
      Field *part_field= table->getField(part->fieldnr-1);
942
942
      part_field->setWriteSet();
943
943
 
944
944
      if ((part_field->flags & BLOB_FLAG) ||
1028
1028
                           uint32_t range_fl,
1029
1029
                           uint32_t prefix_len)
1030
1030
{
1031
 
  if (key_cmp_if_same(field->table, ref->key_buff, ref->key, prefix_len))
 
1031
  if (key_cmp_if_same(field->getTable(), ref->key_buff, ref->key, prefix_len))
1032
1032
  {
1033
1033
    return 1;
1034
1034
  }
1069
1069
    return 0;
1070
1070
  }
1071
1071
 
1072
 
  if (cond->used_tables() != field->table->map)
 
1072
  if (cond->used_tables() != field->getTable()->map)
1073
1073
  {
1074
1074
    return 0;
1075
1075
  }