~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/optimizer/range.cc

  • Committer: Brian Aker
  • Date: 2010-10-28 17:12:01 UTC
  • mfrom: (1887.1.3 merge)
  • Revision ID: brian@tangent.org-20101028171201-baj6l1bnntn1s4ad
Merge in POTFILES changes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2
2
 *  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
3
3
 *
4
 
 *  Copyright (C) 2008-2009 Sun Microsystems, Inc.
 
4
 *  Copyright (C) 2008-2009 Sun Microsystems
5
5
 *
6
6
 *  This program is free software; you can redistribute it and/or modify
7
7
 *  it under the terms of the GNU General Public License as published by
111
111
 
112
112
#include <boost/dynamic_bitset.hpp>
113
113
 
114
 
#include "drizzled/check_stack_overrun.h"
 
114
#include "drizzled/sql_base.h"
 
115
#include "drizzled/sql_select.h"
115
116
#include "drizzled/error.h"
 
117
#include "drizzled/optimizer/cost_vector.h"
 
118
#include "drizzled/item/cmpfunc.h"
116
119
#include "drizzled/field/num.h"
117
 
#include "drizzled/internal/iocache.h"
118
 
#include "drizzled/internal/my_sys.h"
119
 
#include "drizzled/item/cmpfunc.h"
120
 
#include "drizzled/optimizer/cost_vector.h"
 
120
#include "drizzled/check_stack_overrun.h"
 
121
#include "drizzled/optimizer/sum.h"
 
122
#include "drizzled/optimizer/range.h"
 
123
#include "drizzled/optimizer/quick_range.h"
 
124
#include "drizzled/optimizer/quick_range_select.h"
121
125
#include "drizzled/optimizer/quick_group_min_max_select.h"
122
126
#include "drizzled/optimizer/quick_index_merge_select.h"
123
 
#include "drizzled/optimizer/quick_range.h"
124
 
#include "drizzled/optimizer/quick_range_select.h"
125
127
#include "drizzled/optimizer/quick_ror_intersect_select.h"
126
128
#include "drizzled/optimizer/quick_ror_union_select.h"
127
 
#include "drizzled/optimizer/range.h"
128
 
#include "drizzled/optimizer/range_param.h"
 
129
#include "drizzled/optimizer/table_read_plan.h"
129
130
#include "drizzled/optimizer/sel_arg.h"
130
131
#include "drizzled/optimizer/sel_imerge.h"
131
132
#include "drizzled/optimizer/sel_tree.h"
132
 
#include "drizzled/optimizer/sum.h"
133
 
#include "drizzled/optimizer/table_read_plan.h"
134
 
#include "drizzled/plugin/storage_engine.h"
 
133
#include "drizzled/optimizer/range_param.h"
135
134
#include "drizzled/records.h"
136
 
#include "drizzled/sql_base.h"
137
 
#include "drizzled/sql_select.h"
138
 
#include "drizzled/table_reference.h"
 
135
#include "drizzled/internal/my_sys.h"
 
136
#include "drizzled/internal/iocache.h"
139
137
 
140
138
#include "drizzled/temporal.h" /* Needed in get_mm_leaf() for timestamp -> datetime comparisons */
141
139
 
350
348
  {
351
349
    return 0;
352
350
  }
353
 
  if (! (select= new optimizer::SqlSelect()))
 
351
  if (! (select= new optimizer::SqlSelect))
354
352
  {
355
353
    *error= 1;                  // out of memory
356
354
    return 0;
399
397
    delete cond;
400
398
    cond= 0;
401
399
  }
402
 
  file->close_cached_file();
 
400
  close_cached_file(file);
403
401
}
404
402
 
405
403
 
466
464
    MAX_KEY if no such index was found.
467
465
*/
468
466
 
469
 
uint32_t optimizer::get_index_for_order(Table *table, Order *order, ha_rows limit)
 
467
uint32_t optimizer::get_index_for_order(Table *table, order_st *order, ha_rows limit)
470
468
{
471
469
  uint32_t idx;
472
470
  uint32_t match_key= MAX_KEY, match_key_len= MAX_KEY_LENGTH + 1;
473
 
  Order *ord;
 
471
  order_st *ord;
474
472
 
475
473
  for (ord= order; ord; ord= ord->next)
476
474
    if (!ord->asc)
3259
3257
 
3260
3258
#define CLONE_KEY1_MAYBE 1
3261
3259
#define CLONE_KEY2_MAYBE 2
 
3260
#define swap_clone_flag(A) ((A & 1) << 1) | ((A & 2) >> 1)
3262
3261
 
3263
 
static uint32_t swap_clone_flag(uint32_t a)
3264
 
{
3265
 
  return ((a & 1) << 1) | ((a & 2) >> 1);
3266
 
}
3267
3262
 
3268
3263
static optimizer::SEL_TREE *
3269
3264
tree_and(optimizer::RangeParameter *param, optimizer::SEL_TREE *tree1, optimizer::SEL_TREE *tree2)
4583
4578
  uint32_t key_infix_len= 0;          /* Length of key_infix. */
4584
4579
  optimizer::GroupMinMaxReadPlan *read_plan= NULL; /* The eventually constructed TRP. */
4585
4580
  uint32_t key_part_nr;
4586
 
  Order *tmp_group= NULL;
 
4581
  order_st *tmp_group= NULL;
4587
4582
  Item *item= NULL;
4588
4583
  Item_field *item_field= NULL;
4589
4584