Drizzled Public API Documentation

data_dictionary.h
00001 /* - mode: c; c-basic-offset: 2; indent-tabs-mode: nil; -*-
00002  *  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
00003  *
00004  *  Copyright (C) 2010 Joseph Daly <skinny.moey@gmail.com> 
00005  *
00006  *  This program is free software; you can redistribute it and/or modify
00007  *  it under the terms of the GNU General Public License as published by
00008  *  the Free Software Foundation; either version 2 of the License, or
00009  *  (at your option) any later version.
00010  *
00011  *  This program is distributed in the hope that it will be useful,
00012  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014  *  GNU General Public License for more details.
00015  *
00016  *  You should have received a copy of the GNU General Public License
00017  *  along with this program; if not, write to the Free Software
00018  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
00019  */
00020 
00021 #pragma once
00022 
00023 #include <drizzled/plugin/table_function.h>
00024 #include <drizzled/field.h>
00025 
00026 #include "trx0i_s.h"
00027 #include "trx0trx.h" /* for TRX_QUE_STATE_STR_MAX_LEN */
00028 #include "buf0buddy.h" /* for i_s_cmpmem */
00029 #include "buf0buf.h" /* for buf_pool and PAGE_ZIP_MIN_SIZE */
00030 #include "ha_prototypes.h" /* for innobase_convert_name() */
00031 #include "srv0start.h" /* for srv_was_started */
00032 #include "btr0pcur.h" /* for file sys_tables related info. */
00033 #include "btr0types.h"
00034 #include "dict0load.h"  /* for file sys_tables related info. */
00035 #include "dict0mem.h"
00036 #include "dict0types.h"
00037 
00038 class InnodbSysTablesTool : public drizzled::plugin::TableFunction
00039 {
00040 public:
00041   InnodbSysTablesTool();
00042   class Generator : public drizzled::plugin::TableFunction::Generator
00043   {
00044   public:
00045     Generator(drizzled::Field **arg);
00046 
00047     bool populate();
00048   private:
00049     btr_pcur_t  pcur;
00050     const rec_t* rec;
00051     mem_heap_t* heap;
00052     mtr_t mtr;
00053   };
00054 
00055   Generator *generator(drizzled::Field **arg)
00056   {
00057     return new Generator(arg);
00058   }
00059 };
00060 
00061 class InnodbSysTableStatsTool : public drizzled::plugin::TableFunction
00062 {
00063 public:
00064   InnodbSysTableStatsTool();
00065   class Generator : public drizzled::plugin::TableFunction::Generator
00066   {
00067   public:
00068     Generator(drizzled::Field **arg);
00069 
00070     bool populate();
00071   private:
00072     btr_pcur_t  pcur;
00073     const rec_t* rec;
00074     mem_heap_t* heap;
00075     mtr_t mtr;
00076   };
00077 
00078   Generator *generator(drizzled::Field **arg)
00079   {
00080     return new Generator(arg);
00081   }
00082 };
00083 
00084 class InnodbSysIndexesTool : public drizzled::plugin::TableFunction
00085 {
00086 public:
00087   InnodbSysIndexesTool();
00088   class Generator : public drizzled::plugin::TableFunction::Generator
00089   {
00090   public:
00091     Generator(drizzled::Field **arg);
00092 
00093     bool populate();
00094   private:
00095     btr_pcur_t  pcur;
00096     const rec_t* rec;
00097     mem_heap_t* heap;
00098     mtr_t mtr;
00099   };
00100 
00101   Generator *generator(drizzled::Field **arg)
00102   {
00103     return new Generator(arg);
00104   }
00105 };
00106 
00107 class InnodbSysColumnsTool : public drizzled::plugin::TableFunction
00108 {
00109 public:
00110   InnodbSysColumnsTool();
00111   class Generator : public drizzled::plugin::TableFunction::Generator
00112   {
00113   public:
00114     Generator(drizzled::Field **arg);
00115 
00116     bool populate();
00117   private:
00118     btr_pcur_t  pcur;
00119     const rec_t* rec;
00120     mem_heap_t* heap;
00121     mtr_t mtr;
00122   };
00123 
00124   Generator *generator(drizzled::Field **arg)
00125   {
00126     return new Generator(arg);
00127   }
00128 };
00129 
00130 class InnodbSysFieldsTool : public drizzled::plugin::TableFunction
00131 {
00132 public:
00133   InnodbSysFieldsTool();
00134   class Generator : public drizzled::plugin::TableFunction::Generator
00135   {
00136   public:
00137     Generator(drizzled::Field **arg);
00138 
00139     bool populate();
00140   private:
00141     btr_pcur_t pcur;
00142     const rec_t* rec;
00143     mem_heap_t* heap;
00144     index_id_t last_id;
00145     mtr_t mtr;
00146   };
00147 
00148   Generator *generator(drizzled::Field **arg)
00149   {
00150     return new Generator(arg);
00151   }
00152 };
00153 
00154 class InnodbSysForeignTool : public drizzled::plugin::TableFunction
00155 {
00156 public:
00157   InnodbSysForeignTool();
00158   class Generator : public drizzled::plugin::TableFunction::Generator
00159   {
00160   public:
00161     Generator(drizzled::Field **arg);
00162 
00163     bool populate();
00164   private:
00165     btr_pcur_t pcur;
00166     const rec_t* rec;
00167     mem_heap_t* heap;
00168     mtr_t mtr;
00169   };
00170 
00171   Generator *generator(drizzled::Field **arg)
00172   {
00173     return new Generator(arg);
00174   }
00175 };
00176 
00177 class InnodbSysForeignColsTool : public drizzled::plugin::TableFunction
00178 {
00179 public:
00180   InnodbSysForeignColsTool();
00181   class Generator : public drizzled::plugin::TableFunction::Generator
00182   {
00183   public:
00184     Generator(drizzled::Field **arg);
00185 
00186     bool populate();
00187   private:
00188     btr_pcur_t pcur;
00189     const rec_t* rec;
00190     mem_heap_t* heap;
00191     mtr_t mtr;
00192   };
00193 
00194   Generator *generator(drizzled::Field **arg)
00195   {
00196     return new Generator(arg);
00197   }
00198 };
00199 
00200 class CmpTool : public drizzled::plugin::TableFunction
00201 {
00202 public:
00203 
00204   CmpTool(bool reset);
00205 
00206   class Generator : public drizzled::plugin::TableFunction::Generator
00207   {
00208   public:
00209     Generator(drizzled::Field **arg, bool outer_reset);
00210                         
00211     bool populate();
00212   private:
00213     uint32_t record_number;
00214     bool inner_reset;
00215   };
00216 
00217   Generator *generator(drizzled::Field **arg)
00218   {
00219     return new Generator(arg, outer_reset);
00220   }
00221 private:
00222   bool outer_reset; 
00223 };
00224 
00225 class CmpmemTool : public drizzled::plugin::TableFunction
00226 {
00227 public:
00228 
00229   CmpmemTool(bool reset);
00230 
00231   class Generator : public drizzled::plugin::TableFunction::Generator
00232   {
00233   public:
00234     Generator(drizzled::Field **arg, bool outer_reset);
00235 
00236     ~Generator();
00237 
00238     bool populate();
00239   private:
00240     uint32_t record_number;
00241     bool inner_reset;
00242   };
00243 
00244   Generator *generator(drizzled::Field **arg)
00245   {
00246     return new Generator(arg, outer_reset);
00247   }
00248 private:
00249   bool outer_reset;
00250 };
00251 
00252 class InnodbTrxTool : public drizzled::plugin::TableFunction
00253 {
00254 public:
00255 
00256   InnodbTrxTool(const char* in_table_name);
00257 
00258   class Generator : public drizzled::plugin::TableFunction::Generator
00259   {
00260   public:
00261     Generator(drizzled::Field **arg, const char* in_table_name);
00262 
00263     ~Generator();
00264 
00265     bool populate();
00266   private:
00267     void populate_innodb_trx();
00268     void populate_innodb_locks();
00269     void populate_innodb_lock_waits();
00270 
00271   private:
00272     uint32_t record_number;
00273     uint32_t number_rows;
00274     const char* table_name;
00275   };
00276 
00277   Generator *generator(drizzled::Field **arg)
00278   {
00279     return new Generator(arg, table_name);
00280   }
00281 private:
00282   const char* table_name;
00283 };
00284