30
30
static const string INTERNAL("INTERNAL");
31
31
static const string FUNCTION("FUNCTION");
33
static const string DEFAULT("DEFAULT");
34
static const string FIXED("FIXED");
35
static const string DYNAMIC("DYNAMIC");
36
static const string COMPRESSED("COMPRESSED");
37
static const string REDUNDANT("REDUNDANT");
38
static const string COMPACT("COMPACT");
39
static const string PAGE("PAGE");
34
41
static const string VARCHAR("VARCHAR");
35
42
static const string DOUBLE("DOUBLE");
43
50
static const string DATETIME("DATETIME");
45
52
TablesTool::TablesTool() :
46
plugin::TableFunction("DATA_DICTIONARY", "TABLES")
48
55
add_field("TABLE_SCHEMA");
49
56
add_field("TABLE_NAME");
50
57
add_field("TABLE_TYPE");
51
add_field("TABLE_ARCHETYPE");
52
58
add_field("ENGINE");
53
59
add_field("ROW_FORMAT", 10);
54
60
add_field("TABLE_COLLATION");
55
61
add_field("TABLE_CREATION_TIME");
56
62
add_field("TABLE_UPDATE_TIME");
57
63
add_field("TABLE_COMMENT", plugin::TableFunction::STRING, 2048, true);
58
add_field("AUTO_INCREMENT", plugin::TableFunction::NUMBER, 0, false);
59
add_field("TABLE_UUID", plugin::TableFunction::STRING, 36, true);
60
add_field("TABLE_VERSION", plugin::TableFunction::NUMBER, 0, true);
63
66
TablesTool::Generator::Generator(Field **arg) :
64
plugin::TableFunction::Generator(arg),
65
all_tables_generator(getSession())
67
SchemasTool::Generator(arg),
68
is_tables_primed(false)
72
bool TablesTool::Generator::nextTableCore()
80
if (not isSchemaPrimed())
84
SchemaIdentifier identifier(schema_name());
85
plugin::StorageEngine::getTableNames(getSession(), identifier, table_names);
86
table_iterator= table_names.begin();
87
is_tables_primed= true;
90
if (table_iterator == table_names.end())
95
TableIdentifier identifier(schema_name().c_str(), table_name().c_str());
96
plugin::StorageEngine::getTableDefinition(getSession(),
69
104
bool TablesTool::Generator::nextTable()
71
drizzled::message::table::shared_ptr table_ptr;
72
while ((table_ptr= all_tables_generator))
106
while (not nextTableCore())
74
table_message.CopyFrom(*table_ptr);
109
if (is_tables_primed && table_iterator != table_names.end())
112
if (not nextSchema())
115
is_tables_primed= false;
81
121
bool TablesTool::Generator::populate()
131
void TablesTool::Generator::pushRow(message::Table::TableOptions::RowType type)
136
case message::Table::TableOptions::ROW_TYPE_DEFAULT:
139
case message::Table::TableOptions::ROW_TYPE_FIXED:
142
case message::Table::TableOptions::ROW_TYPE_DYNAMIC:
145
case message::Table::TableOptions::ROW_TYPE_COMPRESSED:
148
case message::Table::TableOptions::ROW_TYPE_REDUNDANT:
151
case message::Table::TableOptions::ROW_TYPE_COMPACT:
154
case message::Table::TableOptions::ROW_TYPE_PAGE:
160
void TablesTool::Generator::pushType(message::Table::Field::FieldType type)
165
case message::Table::Field::VARCHAR:
168
case message::Table::Field::DOUBLE:
171
case message::Table::Field::BLOB:
174
case message::Table::Field::ENUM:
177
case message::Table::Field::INTEGER:
180
case message::Table::Field::BIGINT:
183
case message::Table::Field::DECIMAL:
186
case message::Table::Field::DATE:
189
case message::Table::Field::TIMESTAMP:
192
case message::Table::Field::DATETIME:
92
198
void TablesTool::Generator::fill()
153
249
/* TABLE_UPDATE_TIME */
154
time_arg= getTableMessage().update_timestamp();
250
time_arg= table_proto.update_timestamp();
155
251
localtime_r(&time_arg, &tm_buffer);
156
252
strftime(buffer, sizeof(buffer), "%a %b %d %H:%M:%S %Y", &tm_buffer);
159
255
/* TABLE_COMMENT */
160
if (getTableMessage().options().has_comment())
256
if (table_proto.options().has_comment())
162
push(getTableMessage().options().comment());
258
push(table_proto.options().comment());
170
push(getTableMessage().options().auto_increment_value());
173
push(getTableMessage().uuid());
176
push(getTableMessage().version());