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 #include <drizzled/open_tables_state.h>
00025
00026 using namespace std;
00027 using namespace drizzled;
00028
00029 ShowTemporaryTables::ShowTemporaryTables() :
00030 show_dictionary::Show("SHOW_TEMPORARY_TABLES")
00031 {
00032 add_field("TABLE_SCHEMA", plugin::TableFunction::STRING, MAXIMUM_IDENTIFIER_LENGTH, false);
00033 add_field("TABLE_NAME", plugin::TableFunction::STRING, MAXIMUM_IDENTIFIER_LENGTH, false);
00034 add_field("RECORDS", plugin::TableFunction::NUMBER, 0, false);
00035 add_field("RECORD_LENGTH", plugin::TableFunction::NUMBER, 0, false);
00036 add_field("ENGINE");
00037 }
00038
00039 ShowTemporaryTables::Generator::Generator(Field **arg) :
00040 show_dictionary::Show::Generator(arg),
00041 session(getSession())
00042 {
00043 table= session.open_tables.getTemporaryTables();
00044 }
00045
00046 bool ShowTemporaryTables::Generator::populate()
00047 {
00048 while (table)
00049 {
00050 if (not isWild(table->getShare()->getTableName()))
00051 {
00052 break;
00053 }
00054 table= table->getNext();
00055 }
00056
00057 if (not table)
00058 return false;
00059
00060 fill();
00061
00062 table= table->getNext();
00063
00064 return true;
00065 }
00066
00067 void ShowTemporaryTables::Generator::fill()
00068 {
00069
00070 push(table->getShare()->getSchemaName());
00071
00072
00073 push(table->getShare()->getTableName());
00074
00075
00076 push(static_cast<uint64_t>(table->getCursor().records()));
00077
00078
00079 push(static_cast<uint64_t>(table->getRecordLength()));
00080
00081
00082 push(table->getEngine()->getName());
00083 }