~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to plugin/innobase/handler/data_dictionary.h

Re-org'd the replication stuff into slots.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* - mode: c; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2
 
 *  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
3
 
 *
4
 
 *  Copyright (C) 2010 Joseph Daly <skinny.moey@gmail.com> 
5
 
 *
6
 
 *  This program is free software; you can redistribute it and/or modify
7
 
 *  it under the terms of the GNU General Public License as published by
8
 
 *  the Free Software Foundation; either version 2 of the License, or
9
 
 *  (at your option) any later version.
10
 
 *
11
 
 *  This program is distributed in the hope that it will be useful,
12
 
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 
 *  GNU General Public License for more details.
15
 
 *
16
 
 *  You should have received a copy of the GNU General Public License
17
 
 *  along with this program; if not, write to the Free Software
18
 
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
19
 
 */
20
 
 
21
 
#ifndef PLUGIN_INNOBASE_HANDLER_DATA_DICTIONARY_H
22
 
#define PLUGIN_INNOBASE_HANDLER_DATA_DICTIONARY_H 
23
 
 
24
 
#include "drizzled/plugin/table_function.h"
25
 
#include "drizzled/field.h"
26
 
 
27
 
extern "C" {
28
 
#include "trx0i_s.h"
29
 
#include "trx0trx.h" /* for TRX_QUE_STATE_STR_MAX_LEN */
30
 
#include "buf0buddy.h" /* for i_s_cmpmem */
31
 
#include "buf0buf.h" /* for buf_pool and PAGE_ZIP_MIN_SIZE */
32
 
#include "ha_prototypes.h" /* for innobase_convert_name() */
33
 
#include "srv0start.h" /* for srv_was_started */
34
 
#include "btr0pcur.h"   /* for file sys_tables related info. */
35
 
#include "btr0types.h"
36
 
#include "dict0load.h"  /* for file sys_tables related info. */
37
 
#include "dict0mem.h"
38
 
#include "dict0types.h"
39
 
}
40
 
 
41
 
class InnodbSysTablesTool : public drizzled::plugin::TableFunction
42
 
{
43
 
public:
44
 
  InnodbSysTablesTool();
45
 
  class Generator : public drizzled::plugin::TableFunction::Generator
46
 
  {
47
 
  public:
48
 
    Generator(drizzled::Field **arg);
49
 
 
50
 
    bool populate();
51
 
  private:
52
 
    btr_pcur_t  pcur;
53
 
    const rec_t* rec;
54
 
    mem_heap_t* heap;
55
 
    mtr_t mtr;
56
 
  };
57
 
 
58
 
  Generator *generator(drizzled::Field **arg)
59
 
  {
60
 
    return new Generator(arg);
61
 
  }
62
 
};
63
 
 
64
 
class InnodbSysTableStatsTool : public drizzled::plugin::TableFunction
65
 
{
66
 
public:
67
 
  InnodbSysTableStatsTool();
68
 
  class Generator : public drizzled::plugin::TableFunction::Generator
69
 
  {
70
 
  public:
71
 
    Generator(drizzled::Field **arg);
72
 
 
73
 
    bool populate();
74
 
  private:
75
 
    btr_pcur_t  pcur;
76
 
    const rec_t* rec;
77
 
    mem_heap_t* heap;
78
 
    mtr_t mtr;
79
 
  };
80
 
 
81
 
  Generator *generator(drizzled::Field **arg)
82
 
  {
83
 
    return new Generator(arg);
84
 
  }
85
 
};
86
 
 
87
 
class InnodbSysIndexesTool : public drizzled::plugin::TableFunction
88
 
{
89
 
public:
90
 
  InnodbSysIndexesTool();
91
 
  class Generator : public drizzled::plugin::TableFunction::Generator
92
 
  {
93
 
  public:
94
 
    Generator(drizzled::Field **arg);
95
 
 
96
 
    bool populate();
97
 
  private:
98
 
    btr_pcur_t  pcur;
99
 
    const rec_t* rec;
100
 
    mem_heap_t* heap;
101
 
    mtr_t mtr;
102
 
  };
103
 
 
104
 
  Generator *generator(drizzled::Field **arg)
105
 
  {
106
 
    return new Generator(arg);
107
 
  }
108
 
};
109
 
 
110
 
class InnodbSysColumnsTool : public drizzled::plugin::TableFunction
111
 
{
112
 
public:
113
 
  InnodbSysColumnsTool();
114
 
  class Generator : public drizzled::plugin::TableFunction::Generator
115
 
  {
116
 
  public:
117
 
    Generator(drizzled::Field **arg);
118
 
 
119
 
    bool populate();
120
 
  private:
121
 
    btr_pcur_t  pcur;
122
 
    const rec_t* rec;
123
 
    mem_heap_t* heap;
124
 
    mtr_t mtr;
125
 
  };
126
 
 
127
 
  Generator *generator(drizzled::Field **arg)
128
 
  {
129
 
    return new Generator(arg);
130
 
  }
131
 
};
132
 
 
133
 
class InnodbSysFieldsTool : public drizzled::plugin::TableFunction
134
 
{
135
 
public:
136
 
  InnodbSysFieldsTool();
137
 
  class Generator : public drizzled::plugin::TableFunction::Generator
138
 
  {
139
 
  public:
140
 
    Generator(drizzled::Field **arg);
141
 
 
142
 
    bool populate();
143
 
  private:
144
 
    btr_pcur_t pcur;
145
 
    const rec_t* rec;
146
 
    mem_heap_t* heap;
147
 
    index_id_t last_id;
148
 
    mtr_t mtr;
149
 
  };
150
 
 
151
 
  Generator *generator(drizzled::Field **arg)
152
 
  {
153
 
    return new Generator(arg);
154
 
  }
155
 
};
156
 
 
157
 
class InnodbSysForeignTool : public drizzled::plugin::TableFunction
158
 
{
159
 
public:
160
 
  InnodbSysForeignTool();
161
 
  class Generator : public drizzled::plugin::TableFunction::Generator
162
 
  {
163
 
  public:
164
 
    Generator(drizzled::Field **arg);
165
 
 
166
 
    bool populate();
167
 
  private:
168
 
    btr_pcur_t pcur;
169
 
    const rec_t* rec;
170
 
    mem_heap_t* heap;
171
 
    mtr_t mtr;
172
 
  };
173
 
 
174
 
  Generator *generator(drizzled::Field **arg)
175
 
  {
176
 
    return new Generator(arg);
177
 
  }
178
 
};
179
 
 
180
 
class InnodbSysForeignColsTool : public drizzled::plugin::TableFunction
181
 
{
182
 
public:
183
 
  InnodbSysForeignColsTool();
184
 
  class Generator : public drizzled::plugin::TableFunction::Generator
185
 
  {
186
 
  public:
187
 
    Generator(drizzled::Field **arg);
188
 
 
189
 
    bool populate();
190
 
  private:
191
 
    btr_pcur_t pcur;
192
 
    const rec_t* rec;
193
 
    mem_heap_t* heap;
194
 
    mtr_t mtr;
195
 
  };
196
 
 
197
 
  Generator *generator(drizzled::Field **arg)
198
 
  {
199
 
    return new Generator(arg);
200
 
  }
201
 
};
202
 
 
203
 
class CmpTool : public drizzled::plugin::TableFunction
204
 
{
205
 
public:
206
 
 
207
 
  CmpTool(bool reset);
208
 
 
209
 
  class Generator : public drizzled::plugin::TableFunction::Generator
210
 
  {
211
 
  public:
212
 
    Generator(drizzled::Field **arg, bool outer_reset);
213
 
                        
214
 
    bool populate();
215
 
  private:
216
 
    uint32_t record_number;
217
 
    bool inner_reset;
218
 
  };
219
 
 
220
 
  Generator *generator(drizzled::Field **arg)
221
 
  {
222
 
    return new Generator(arg, outer_reset);
223
 
  }
224
 
private:
225
 
  bool outer_reset; 
226
 
};
227
 
 
228
 
class CmpmemTool : public drizzled::plugin::TableFunction
229
 
{
230
 
public:
231
 
 
232
 
  CmpmemTool(bool reset);
233
 
 
234
 
  class Generator : public drizzled::plugin::TableFunction::Generator
235
 
  {
236
 
  public:
237
 
    Generator(drizzled::Field **arg, bool outer_reset);
238
 
 
239
 
    ~Generator();
240
 
 
241
 
    bool populate();
242
 
  private:
243
 
    uint32_t record_number;
244
 
    bool inner_reset;
245
 
  };
246
 
 
247
 
  Generator *generator(drizzled::Field **arg)
248
 
  {
249
 
    return new Generator(arg, outer_reset);
250
 
  }
251
 
private:
252
 
  bool outer_reset;
253
 
};
254
 
 
255
 
class InnodbTrxTool : public drizzled::plugin::TableFunction
256
 
{
257
 
public:
258
 
 
259
 
  InnodbTrxTool(const char* in_table_name);
260
 
 
261
 
  class Generator : public drizzled::plugin::TableFunction::Generator
262
 
  {
263
 
  public:
264
 
    Generator(drizzled::Field **arg, const char* in_table_name);
265
 
 
266
 
    ~Generator();
267
 
 
268
 
    bool populate();
269
 
  private:
270
 
    void populate_innodb_trx();
271
 
    void populate_innodb_locks();
272
 
    void populate_innodb_lock_waits();
273
 
 
274
 
  private:
275
 
    uint32_t record_number;
276
 
    uint32_t number_rows;
277
 
    const char* table_name;
278
 
  };
279
 
 
280
 
  Generator *generator(drizzled::Field **arg)
281
 
  {
282
 
    return new Generator(arg, table_name);
283
 
  }
284
 
private:
285
 
  const char* table_name;
286
 
};
287
 
 
288
 
#endif /* PLUGIN_INNOBASE_HANDLER_DATA_DICTIONARY_H */