32
32
#include <google/protobuf/io/zero_copy_stream.h>
33
33
#include <google/protobuf/io/zero_copy_stream_impl.h>
35
#include <drizzled/cached_directory.h>
35
#include "drizzled/cached_directory.h"
37
37
#include <drizzled/definitions.h>
38
38
#include <drizzled/base.h>
43
43
#include <drizzled/gettext.h>
44
44
#include <drizzled/unireg.h>
45
45
#include <drizzled/data_home.h>
46
#include <drizzled/errmsg_print.h>
47
#include <drizzled/xid.h>
48
#include <drizzled/sql_table.h>
49
#include <drizzled/global_charset_info.h>
50
#include <drizzled/charset.h>
51
#include <drizzled/internal/my_sys.h>
46
#include "drizzled/errmsg_print.h"
47
#include "drizzled/xid.h"
48
#include "drizzled/sql_table.h"
49
#include "drizzled/global_charset_info.h"
50
#include "drizzled/charset.h"
51
#include "drizzled/internal/my_sys.h"
52
#include "drizzled/db.h"
53
54
#include <drizzled/table_proto.h>
54
55
#include <drizzled/plugin/event_observer.h>
55
#include <drizzled/internal_error_handler.h>
57
57
#include <drizzled/table/shell.h>
59
#include <drizzled/message/cache.h>
59
#include "drizzled/message/cache.h"
61
61
#include <boost/algorithm/string/compare.hpp>
365
Call this function in order to give the Cursor the possiblity
366
to ask engine if there are any new tables that should be written to disk
367
or any dropped tables that need to be removed from disk
369
int StorageEngine::getTableDefinition(Session& session,
370
const identifier::Table &identifier,
371
message::table::shared_ptr &table_message,
372
bool include_temporary_tables)
374
drizzled::error_t err= static_cast<drizzled::error_t>(ENOENT);
376
if (include_temporary_tables)
378
Table *table= session.find_temporary_table(identifier);
381
table_message.reset(new message::Table(*table->getShare()->getTableProto()));
386
drizzled::message::table::shared_ptr table_ptr;
387
if ((table_ptr= drizzled::message::Cache::singleton().find(identifier)))
389
table_message= table_ptr;
392
message::Table message;
393
EngineVector::iterator iter=
394
std::find_if(vector_of_engines.begin(), vector_of_engines.end(),
395
StorageEngineGetTableDefinition(session, identifier, message, err));
397
if (iter == vector_of_engines.end())
401
table_message.reset(new message::Table(message));
403
drizzled::message::Cache::singleton().insert(identifier, table_message);
364
408
message::table::shared_ptr StorageEngine::getTableMessage(Session& session,
365
409
identifier::Table::const_reference identifier,
410
drizzled::error_t &error,
366
411
bool include_temporary_tables)
368
drizzled::error_t error;
369
413
error= static_cast<drizzled::error_t>(ENOENT);
371
415
if (include_temporary_tables)
641
687
void StorageEngine::getIdentifiers(Session &session, const identifier::Schema &schema_identifier, identifier::Table::vector &set_of_identifiers)
689
static identifier::Schema INFORMATION_SCHEMA_IDENTIFIER("information_schema");
690
static identifier::Schema DATA_DICTIONARY_IDENTIFIER("data_dictionary");
643
692
CachedDirectory directory(schema_identifier.getPath(), set_of_table_definition_ext);
645
694
if (schema_identifier == INFORMATION_SCHEMA_IDENTIFIER)
801
850
- table->getShare()->path
804
void StorageEngine::print_error(int error, myf errflag, const Table &table) const
853
void StorageEngine::print_error(int error, myf errflag, Table &table)
806
855
drizzled::error_t textno= ER_GET_ERRNO;
933
982
textno=ER_TABLE_DEF_CHANGED;
935
984
case HA_ERR_NO_SUCH_TABLE:
937
identifier::Table identifier(table.getShare()->getSchemaName(), table.getShare()->getTableName());
938
my_error(ER_TABLE_UNKNOWN, identifier);
985
my_error(ER_NO_SUCH_TABLE, MYF(0), table.getShare()->getSchemaName(),
986
table.getShare()->getTableName());
941
988
case HA_ERR_RBR_LOGGING_FAILED:
942
989
textno= ER_BINLOG_ROW_LOGGING_FAILED;
1006
1053
Returns true if this is a temporary error
1008
bool StorageEngine::get_error_message(int , String* ) const
1055
bool StorageEngine::get_error_message(int , String* )
1014
void StorageEngine::print_keydup_error(uint32_t key_nr, const char *msg, const Table &table) const
1061
void StorageEngine::print_keydup_error(uint32_t key_nr, const char *msg, Table &table)
1016
1063
/* Write the duplicated key in the error message */
1017
1064
char key[MAX_KEY_LENGTH];