57
57
#include <drizzled/table/shell.h>
59
#include "drizzled/message/cache.h"
59
61
#include <boost/algorithm/string/compare.hpp>
61
63
static bool shutdown_has_begun= false; // Once we put in the container for the vector/etc for engines this will go away.
369
371
int StorageEngine::getTableDefinition(Session& session,
370
372
const TableIdentifier &identifier,
371
message::Table &table_message,
373
message::TablePtr &table_message,
372
374
bool include_temporary_tables)
376
378
if (include_temporary_tables)
378
if (session.doGetTableDefinition(identifier, table_message) == EEXIST)
380
Table *table= session.find_temporary_table(identifier);
383
table_message.reset(new message::Table(*table->getShare()->getTableProto()));
388
drizzled::message::TablePtr table_ptr;
389
if ((table_ptr= drizzled::message::Cache::singleton().find(identifier)))
391
table_message= table_ptr;
394
message::Table message;
382
395
EngineVector::iterator iter=
383
396
find_if(vector_of_engines.begin(), vector_of_engines.end(),
384
StorageEngineGetTableDefinition(session, identifier, table_message, err));
397
StorageEngineGetTableDefinition(session, identifier, message, err));
386
399
if (iter == vector_of_engines.end())
403
table_message.reset(new message::Table(message));
405
drizzled::message::Cache::singleton().insert(identifier, table_message);
441
457
error_message.append(const_cast<TableIdentifier &>(identifier).getSQLPath());
442
458
error_message.append(" : ");
443
error_message.append(src_proto.InitializationErrorString());
459
error_message.append(src_proto->InitializationErrorString());
445
461
my_error(ER_CORRUPT_TABLE_DEFINITION, MYF(0), error_message.c_str());
447
463
return ER_CORRUPT_TABLE_DEFINITION;
450
engine= StorageEngine::findByName(session, src_proto.engine().name());
467
engine= StorageEngine::findByName(session, src_proto->engine().name());
469
engine= StorageEngine::findByName(session, "");