17
17
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
20
#ifndef DRIZZLED_PLUGIN_STORAGE_ENGINE_H
21
#define DRIZZLED_PLUGIN_STORAGE_ENGINE_H
24
#include <drizzled/cached_directory.h>
25
22
#include <drizzled/definitions.h>
26
23
#include <drizzled/error_t.h>
27
24
#include <drizzled/handler_structs.h>
28
#include <drizzled/identifier.h>
29
25
#include <drizzled/message.h>
30
26
#include <drizzled/message/cache.h>
31
27
#include <drizzled/plugin.h>
41
37
#include <drizzled/visibility.h>
49
typedef struct st_hash HASH;
52
43
typedef bool (stat_print_fn)(Session *session, const char *type, uint32_t type_len,
53
44
const char *file, uint32_t file_len,
54
45
const char *status, uint32_t status_len);
204
196
pthread_mutex_t proto_cache_mutex;
207
StorageEngine(const std::string name_arg,
199
StorageEngine(const std::string &name_arg,
208
200
const std::bitset<HTON_BIT_SIZE> &flags_arg= HTON_NO_FLAGS);
210
202
virtual ~StorageEngine();
282
274
virtual int doCreateTable(Session &session,
283
275
Table &table_arg,
284
276
const drizzled::identifier::Table &identifier,
285
message::Table &message)= 0;
277
const message::Table &message)= 0;
287
279
virtual int doRenameTable(Session &session,
288
280
const drizzled::identifier::Table &from, const drizzled::identifier::Table &to)= 0;
293
285
virtual void doGetTableIdentifiers(CachedDirectory &directory,
294
286
const drizzled::identifier::Schema &schema_identifier,
295
identifier::Table::vector &set_of_identifiers)= 0;
287
identifier::table::vector &set_of_identifiers)= 0;
297
289
virtual bool doDoesTableExist(Session& session, const drizzled::identifier::Table &identifier);
333
325
static plugin::StorageEngine *findByName(const std::string &find_str);
334
326
static plugin::StorageEngine *findByName(Session& session, const std::string &find_str);
336
static void closeConnection(Session* session);
328
static void closeConnection(Session&);
337
329
static void dropDatabase(char* path);
338
330
static bool flushLogs(plugin::StorageEngine *db_type);
346
338
static bool dropTable(Session& session,
347
339
StorageEngine &engine,
348
identifier::Table::const_reference identifier,
340
const identifier::Table& identifier,
349
341
drizzled::error_t &error);
351
343
static void getIdentifiers(Session &session,
352
344
const identifier::Schema &schema_identifier,
353
identifier::Table::vector &set_of_identifiers);
345
identifier::table::vector &set_of_identifiers);
355
347
// Check to see if any SE objects to creation.
356
348
static bool canCreateTable(const drizzled::identifier::Table &identifier);
358
350
// @note All schema methods defined here
359
static void getIdentifiers(Session &session, identifier::Schema::vector &schemas);
351
static void getIdentifiers(Session &session, identifier::schema::vector &schemas);
360
352
static message::schema::shared_ptr getSchemaDefinition(const drizzled::identifier::Table &identifier);
361
353
static message::schema::shared_ptr getSchemaDefinition(const drizzled::identifier::Schema &identifier);
362
354
static bool doesSchemaExist(const drizzled::identifier::Schema &identifier);
363
static const CHARSET_INFO *getSchemaCollation(const drizzled::identifier::Schema &identifier);
355
static const charset_info_st *getSchemaCollation(const drizzled::identifier::Schema &identifier);
364
356
static bool createSchema(const drizzled::message::Schema &schema_message);
365
357
static bool dropSchema(Session &session,
366
identifier::Schema::const_reference identifier,
358
const identifier::Schema& identifier,
367
359
message::schema::const_reference schema_message);
368
360
static bool alterSchema(const drizzled::message::Schema &schema_message);
370
362
// @note make private/protected
372
virtual void doGetSchemaIdentifiers(identifier::Schema::vector&)
364
virtual void doGetSchemaIdentifiers(identifier::schema::vector&)
375
367
virtual drizzled::message::schema::shared_ptr doGetSchemaDefinition(const drizzled::identifier::Schema&)
423
415
static int deleteDefinitionFromPath(const drizzled::identifier::Table &identifier);
424
416
static int renameDefinitionFromPath(const drizzled::identifier::Table &dest, const drizzled::identifier::Table &src);
425
static int writeDefinitionFromPath(const drizzled::identifier::Table &identifier, message::Table &proto);
417
static int writeDefinitionFromPath(const drizzled::identifier::Table &identifier, const message::Table &proto);
426
418
static bool readTableFile(const std::string &path, message::Table &table_message);