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 #include <plugin/information_schema_dictionary/dictionary.h>
00023
00024 using namespace std;
00025 using namespace drizzled;
00026
00027 Tables::Tables() :
00028 InformationSchema("TABLES")
00029 {
00030 add_field("TABLE_CATALOG", plugin::TableFunction::STRING, MAXIMUM_IDENTIFIER_LENGTH, false);
00031 add_field("TABLE_SCHEMA", plugin::TableFunction::STRING, MAXIMUM_IDENTIFIER_LENGTH, false);
00032 add_field("TABLE_NAME", plugin::TableFunction::STRING, MAXIMUM_IDENTIFIER_LENGTH, false);
00033 add_field("TABLE_TYPE", plugin::TableFunction::STRING, MAXIMUM_IDENTIFIER_LENGTH, false);
00034 }
00035
00036 Tables::Generator::Generator(drizzled::Field **arg) :
00037 InformationSchema::Generator(arg),
00038 generator(getSession())
00039 {
00040 }
00041
00042 bool Tables::Generator::populate()
00043 {
00044 const drizzled::identifier::Table *identifier;
00045
00046 while ((identifier= generator))
00047 {
00048
00049 push(identifier->getCatalogName());
00050
00051
00052 push(identifier->getSchemaName());
00053
00054
00055 push(identifier->getTableName());
00056
00057
00058 if (identifier->isView())
00059 {
00060 push("VIEW");
00061 }
00062 else
00063 {
00064 push("BASE");
00065 }
00066
00067 return true;
00068 }
00069
00070 return false;
00071 }