~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/optimizer/table_read_plan.h

Merge Padraig

Show diffs side-by-side

added added

removed removed

Lines of Context:
36
36
  Table rows retrieval plan. Range optimizer creates QuickSelectInterface-derived
37
37
  objects from table read plans.
38
38
*/
39
 
class TABLE_READ_PLAN
 
39
class TableReadPlan
40
40
{
41
41
public:
42
42
  /*
84
84
  static void operator delete(void *, drizzled::memory::Root *)
85
85
    { /* Never called */ }
86
86
 
87
 
  virtual ~TABLE_READ_PLAN() {} /* Remove gcc warning */
 
87
  virtual ~TableReadPlan() {} /* Remove gcc warning */
88
88
 
89
89
};
90
90
 
91
91
 
92
92
/*
93
93
  Plan for a QuickRangeSelect scan.
94
 
  TRP_RANGE::make_quick ignores retrieve_full_rows parameter because
 
94
  RangeReadPlan::make_quick ignores retrieve_full_rows parameter because
95
95
  QuickRangeSelect doesn't distinguish between 'index only' scans and full
96
96
  record retrieval scans.
97
97
*/
98
 
class TRP_RANGE : public TABLE_READ_PLAN
 
98
class RangeReadPlan : public TableReadPlan
99
99
{
100
100
 
101
101
public:
105
105
  uint32_t     mrr_flags;
106
106
  uint32_t     mrr_buf_size;
107
107
 
108
 
  TRP_RANGE(SEL_ARG *key_arg, uint32_t idx_arg, uint32_t mrr_flags_arg)
 
108
  RangeReadPlan(SEL_ARG *key_arg, uint32_t idx_arg, uint32_t mrr_flags_arg)
109
109
    :
110
110
      key(key_arg),
111
111
      key_idx(idx_arg),
112
112
      mrr_flags(mrr_flags_arg)
113
113
  {}
114
 
  virtual ~TRP_RANGE() {}                     /* Remove gcc warning */
 
114
  virtual ~RangeReadPlan() {}                     /* Remove gcc warning */
115
115
 
116
116
  QuickSelectInterface *make_quick(Parameter *param, bool, drizzled::memory::Root *parent_alloc);
117
117
 
119
119
 
120
120
 
121
121
/* Plan for QuickRorIntersectSelect scan. */
122
 
 
123
 
class TRP_ROR_INTERSECT : public TABLE_READ_PLAN
 
122
class RorIntersectReadPlan : public TableReadPlan
124
123
{
125
124
public:
126
 
  TRP_ROR_INTERSECT() {}                      /* Remove gcc warning */
127
 
  virtual ~TRP_ROR_INTERSECT() {}             /* Remove gcc warning */
 
125
  RorIntersectReadPlan() {}                      /* Remove gcc warning */
 
126
  virtual ~RorIntersectReadPlan() {}             /* Remove gcc warning */
128
127
  QuickSelectInterface *make_quick(Parameter *param,
129
128
                                   bool retrieve_full_rows,
130
129
                                   drizzled::memory::Root *parent_alloc);
144
143
  is ignored by make_quick.
145
144
*/
146
145
 
147
 
class TRP_ROR_UNION : public TABLE_READ_PLAN
 
146
class RorUnionReadPlan : public TableReadPlan
148
147
{
149
148
public:
150
 
  TRP_ROR_UNION() {}                          /* Remove gcc warning */
151
 
  virtual ~TRP_ROR_UNION() {}                 /* Remove gcc warning */
 
149
  RorUnionReadPlan() {}                          /* Remove gcc warning */
 
150
  virtual ~RorUnionReadPlan() {}                 /* Remove gcc warning */
152
151
  QuickSelectInterface *make_quick(Parameter *param,
153
152
                                   bool retrieve_full_rows,
154
153
                                   drizzled::memory::Root *parent_alloc);
155
 
  TABLE_READ_PLAN **first_ror; /* array of ptrs to plans for merged scans */
156
 
  TABLE_READ_PLAN **last_ror;  /* end of the above array */
 
154
  TableReadPlan **first_ror; /* array of ptrs to plans for merged scans */
 
155
  TableReadPlan **last_ror;  /* end of the above array */
157
156
};
158
157
 
159
158
 
163
162
  is ignored by make_quick.
164
163
*/
165
164
 
166
 
class TRP_INDEX_MERGE : public TABLE_READ_PLAN
 
165
class IndexMergeReadPlan : public TableReadPlan
167
166
{
168
167
public:
169
 
  TRP_INDEX_MERGE() {}                        /* Remove gcc warning */
170
 
  virtual ~TRP_INDEX_MERGE() {}               /* Remove gcc warning */
 
168
  IndexMergeReadPlan() {}                        /* Remove gcc warning */
 
169
  virtual ~IndexMergeReadPlan() {}               /* Remove gcc warning */
171
170
  QuickSelectInterface *make_quick(Parameter *param,
172
171
                                   bool retrieve_full_rows,
173
172
                                   drizzled::memory::Root *parent_alloc);
174
 
  TRP_RANGE **range_scans; /* array of ptrs to plans of merged scans */
175
 
  TRP_RANGE **range_scans_end; /* end of the array */
 
173
  RangeReadPlan **range_scans; /* array of ptrs to plans of merged scans */
 
174
  RangeReadPlan **range_scans_end; /* end of the array */
176
175
};
177
176
 
178
177
 
180
179
  Plan for a QuickGroupMinMaxSelect scan.
181
180
*/
182
181
 
183
 
class TRP_GROUP_MIN_MAX : public TABLE_READ_PLAN
 
182
class GroupMinMaxReadPlan : public TableReadPlan
184
183
{
185
184
private:
186
185
  bool have_min;
201
200
  ha_rows quick_prefix_records;
202
201
 
203
202
public:
204
 
  TRP_GROUP_MIN_MAX(bool have_min_arg, 
205
 
                    bool have_max_arg,
206
 
                    KEY_PART_INFO *min_max_arg_part_arg,
207
 
                    uint32_t group_prefix_len_arg, 
208
 
                    uint32_t used_key_parts_arg,
209
 
                    uint32_t group_key_parts_arg, 
210
 
                    KEY *index_info_arg,
211
 
                    uint32_t index_arg, 
212
 
                    uint32_t key_infix_len_arg,
213
 
                    unsigned char *key_infix_arg,
214
 
                    SEL_TREE *tree_arg, 
215
 
                    SEL_ARG *index_tree_arg,
216
 
                    uint32_t param_idx_arg, 
217
 
                    ha_rows quick_prefix_records_arg)
 
203
  GroupMinMaxReadPlan(bool have_min_arg, 
 
204
                      bool have_max_arg,
 
205
                      KEY_PART_INFO *min_max_arg_part_arg,
 
206
                      uint32_t group_prefix_len_arg, 
 
207
                      uint32_t used_key_parts_arg,
 
208
                      uint32_t group_key_parts_arg, 
 
209
                      KEY *index_info_arg,
 
210
                      uint32_t index_arg, 
 
211
                      uint32_t key_infix_len_arg,
 
212
                      unsigned char *key_infix_arg,
 
213
                      SEL_TREE *tree_arg, 
 
214
                      SEL_ARG *index_tree_arg,
 
215
                      uint32_t param_idx_arg, 
 
216
                      ha_rows quick_prefix_records_arg)
218
217
    :
219
218
      have_min(have_min_arg),
220
219
      have_max(have_max_arg),
233
232
      if (key_infix_len)
234
233
        memcpy(this->key_infix, key_infix_arg, key_infix_len);
235
234
    }
236
 
  virtual ~TRP_GROUP_MIN_MAX() {}             /* Remove gcc warning */
 
235
  virtual ~GroupMinMaxReadPlan() {}             /* Remove gcc warning */
237
236
 
238
237
  QuickSelectInterface *make_quick(Parameter *param,
239
238
                                   bool retrieve_full_rows,