24
24
#include <drizzled/definitions.h>
25
25
#include <drizzled/plugin.h>
26
26
#include <drizzled/handler_structs.h>
27
#include <drizzled/message.h>
28
#include <drizzled/message/cache.h>
27
#include <drizzled/message/schema.pb.h>
28
#include <drizzled/message/table.pb.h>
29
29
#include "drizzled/plugin/plugin.h"
30
30
#include "drizzled/sql_string.h"
31
#include "drizzled/identifier.h"
31
#include "drizzled/schema_identifier.h"
32
#include "drizzled/table_identifier.h"
32
33
#include "drizzled/cached_directory.h"
33
34
#include "drizzled/plugin/monitored_in_transaction.h"
36
#include <drizzled/unordered_map.h>
255
virtual Cursor *create(Table &)= 0;
259
virtual Cursor *create(TableShare &, memory::Root *)= 0;
257
261
virtual bool flush_logs() { return false; }
258
262
virtual bool show_status(Session *, stat_print_fn *, enum ha_stat_type)
287
291
int renameTable(Session &session, const drizzled::TableIdentifier &from, const drizzled::TableIdentifier &to);
293
// @todo move these to protected
294
virtual void doGetTableNames(CachedDirectory &directory,
295
drizzled::SchemaIdentifier &schema_identifier,
296
TableNameList &set_of_names)= 0;
289
298
virtual void doGetTableIdentifiers(CachedDirectory &directory,
290
const drizzled::SchemaIdentifier &schema_identifier,
291
TableIdentifier::vector &set_of_identifiers)= 0;
299
drizzled::SchemaIdentifier &schema_identifier,
300
TableIdentifiers &set_of_identifiers)= 0;
293
302
virtual int doDropTable(Session &session,
294
303
const drizzled::TableIdentifier &identifier)= 0;
300
309
static int getTableDefinition(Session& session,
301
310
const drizzled::TableIdentifier &identifier,
302
message::table::shared_ptr &table_proto,
311
message::Table &table_proto,
303
312
bool include_temporary_tables= true);
304
313
static bool doesTableExist(Session &session,
305
314
const drizzled::TableIdentifier &identifier,
318
327
static int dropTable(Session& session,
319
328
StorageEngine &engine,
320
329
const drizzled::TableIdentifier &identifier);
321
static void getIdentifiers(Session &session,
322
const SchemaIdentifier &schema_identifier,
323
TableIdentifier::vector &set_of_identifiers);
330
static void getTableNames(Session &session, drizzled::SchemaIdentifier& schema_identifier, TableNameList &set_of_names);
331
static void getTableIdentifiers(Session &session, SchemaIdentifier &schema_identifier, TableIdentifiers &set_of_identifiers);
325
333
// Check to see if any SE objects to creation.
326
334
static bool canCreateTable(const drizzled::TableIdentifier &identifier);
328
336
{ (void)identifier; return true; }
330
338
// @note All schema methods defined here
331
static void getIdentifiers(Session &session, SchemaIdentifier::vector &schemas);
332
static bool getSchemaDefinition(const drizzled::TableIdentifier &identifier, message::schema::shared_ptr &proto);
333
static bool getSchemaDefinition(const drizzled::SchemaIdentifier &identifier, message::schema::shared_ptr &proto);
334
static bool doesSchemaExist(const drizzled::SchemaIdentifier &identifier);
335
static const CHARSET_INFO *getSchemaCollation(const drizzled::SchemaIdentifier &identifier);
339
static void getSchemaIdentifiers(Session &session, SchemaIdentifierList &schemas);
340
static bool getSchemaDefinition(const drizzled::TableIdentifier &identifier, message::Schema &proto);
341
static bool getSchemaDefinition(drizzled::SchemaIdentifier &identifier, message::Schema &proto);
342
static bool doesSchemaExist(drizzled::SchemaIdentifier &identifier);
343
static const CHARSET_INFO *getSchemaCollation(drizzled::SchemaIdentifier &identifier);
336
344
static bool createSchema(const drizzled::message::Schema &schema_message);
337
static bool dropSchema(const drizzled::SchemaIdentifier &identifier);
345
static bool dropSchema(drizzled::SchemaIdentifier &identifier);
338
346
static bool alterSchema(const drizzled::message::Schema &schema_message);
340
348
// @note make private/protected
341
virtual void doGetSchemaIdentifiers(SchemaIdentifier::vector&)
349
virtual void doGetSchemaIdentifiers(SchemaIdentifierList&)
344
virtual bool doGetSchemaDefinition(const drizzled::SchemaIdentifier&, drizzled::message::schema::shared_ptr&)
352
virtual bool doGetSchemaDefinition(drizzled::SchemaIdentifier&, drizzled::message::Schema&)
352
360
virtual bool doAlterSchema(const drizzled::message::Schema&)
353
361
{ return false; }
355
virtual bool doDropSchema(const drizzled::SchemaIdentifier&)
363
virtual bool doDropSchema(drizzled::SchemaIdentifier&)
356
364
{ return false; }
358
366
static inline const std::string &resolveName(const StorageEngine *engine)
367
375
static void removeLostTemporaryTables(Session &session, const char *directory);
369
Cursor *getCursor(Table &share);
377
Cursor *getCursor(TableShare &share, memory::Root *alloc);
371
379
uint32_t max_record_length() const
372
380
{ return std::min((unsigned int)HA_MAX_REC_LENGTH, max_supported_record_length()); }