1
1
/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2
2
* vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
4
* Copyright (C) 2008-2009 Sun Microsystems, Inc.
4
* Copyright (C) 2008-2009 Sun Microsystems
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
112
112
#include <boost/dynamic_bitset.hpp>
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"
140
138
#include "drizzled/temporal.h" /* Needed in get_mm_leaf() for timestamp -> datetime comparisons */
466
464
MAX_KEY if no such index was found.
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)
472
470
uint32_t match_key= MAX_KEY, match_key_len= MAX_KEY_LENGTH + 1;
475
473
for (ord= order; ord; ord= ord->next)
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)
3263
static uint32_t swap_clone_flag(uint32_t a)
3265
return ((a & 1) << 1) | ((a & 2) >> 1);
3268
3263
static optimizer::SEL_TREE *
3269
3264
tree_and(optimizer::RangeParameter *param, optimizer::SEL_TREE *tree1, optimizer::SEL_TREE *tree2)