00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <config.h>
00022
00023 #include <plugin/show_dictionary/dictionary.h>
00024
00025 using namespace std;
00026 using namespace drizzled;
00027
00028 ShowTemporaryTables::ShowTemporaryTables() :
00029 show_dictionary::Show("SHOW_TEMPORARY_TABLES")
00030 {
00031 add_field("TABLE_SCHEMA");
00032 add_field("TABLE_NAME");
00033 add_field("RECORDS", plugin::TableFunction::NUMBER, 0, false);
00034 add_field("RECORD_LENGTH", plugin::TableFunction::NUMBER, 0, false);
00035 add_field("ENGINE");
00036 }
00037
00038 ShowTemporaryTables::Generator::Generator(Field **arg) :
00039 show_dictionary::Show::Generator(arg),
00040 session(getSession())
00041 {
00042 table= session.getTemporaryTables();
00043 }
00044
00045 bool ShowTemporaryTables::Generator::populate()
00046 {
00047 while (table)
00048 {
00049 if (not isWild(table->getShare()->getTableName()))
00050 {
00051 break;
00052 }
00053 table= table->getNext();
00054 }
00055
00056 if (not table)
00057 return false;
00058
00059 fill();
00060
00061 table= table->getNext();
00062
00063 return true;
00064 }
00065
00066 void ShowTemporaryTables::Generator::fill()
00067 {
00068
00069 push(table->getShare()->getSchemaName());
00070
00071
00072 push(table->getShare()->getTableName());
00073
00074
00075 push(static_cast<uint64_t>(table->getCursor().records()));
00076
00077
00078 push(static_cast<uint64_t>(table->getRecordLength()));
00079
00080
00081 push(table->getEngine()->getName());
00082 }