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);
282
269
virtual int doCreateTable(Session &session,
283
270
Table &table_arg,
284
271
const drizzled::identifier::Table &identifier,
285
message::Table &message)= 0;
272
const message::Table &message)= 0;
287
274
virtual int doRenameTable(Session &session,
288
275
const drizzled::identifier::Table &from, const drizzled::identifier::Table &to)= 0;
293
280
virtual void doGetTableIdentifiers(CachedDirectory &directory,
294
281
const drizzled::identifier::Schema &schema_identifier,
295
identifier::Table::vector &set_of_identifiers)= 0;
282
identifier::table::vector &set_of_identifiers)= 0;
297
284
virtual bool doDoesTableExist(Session& session, const drizzled::identifier::Table &identifier);
323
310
static bool addPlugin(plugin::StorageEngine *engine);
324
311
static void removePlugin(plugin::StorageEngine *engine);
326
static int getTableDefinition(Session& session,
327
const drizzled::identifier::Table &identifier,
328
message::table::shared_ptr &table_proto,
329
bool include_temporary_tables= true);
330
313
static message::table::shared_ptr getTableMessage(Session& session,
331
314
const drizzled::identifier::Table &identifier,
332
drizzled::error_t &error,
333
315
bool include_temporary_tables= true);
334
316
static bool doesTableExist(Session &session,
335
317
const drizzled::identifier::Table &identifier,
351
333
static bool dropTable(Session& session,
352
334
StorageEngine &engine,
353
identifier::Table::const_reference identifier,
335
const identifier::Table& identifier,
354
336
drizzled::error_t &error);
356
338
static void getIdentifiers(Session &session,
357
339
const identifier::Schema &schema_identifier,
358
identifier::Table::vector &set_of_identifiers);
340
identifier::table::vector &set_of_identifiers);
360
342
// Check to see if any SE objects to creation.
361
343
static bool canCreateTable(const drizzled::identifier::Table &identifier);
363
345
// @note All schema methods defined here
364
static void getIdentifiers(Session &session, identifier::Schema::vector &schemas);
365
static bool getSchemaDefinition(const drizzled::identifier::Table &identifier, message::schema::shared_ptr &proto);
366
static bool getSchemaDefinition(const drizzled::identifier::Schema &identifier, message::schema::shared_ptr &proto);
346
static void getIdentifiers(Session &session, identifier::schema::vector &schemas);
347
static message::schema::shared_ptr getSchemaDefinition(const drizzled::identifier::Table &identifier);
348
static message::schema::shared_ptr getSchemaDefinition(const drizzled::identifier::Schema &identifier);
367
349
static bool doesSchemaExist(const drizzled::identifier::Schema &identifier);
368
static const CHARSET_INFO *getSchemaCollation(const drizzled::identifier::Schema &identifier);
350
static const charset_info_st *getSchemaCollation(const drizzled::identifier::Schema &identifier);
369
351
static bool createSchema(const drizzled::message::Schema &schema_message);
370
static bool dropSchema(drizzled::Session& session, identifier::Schema::const_reference identifier);
352
static bool dropSchema(Session &session,
353
const identifier::Schema& identifier,
354
message::schema::const_reference schema_message);
371
355
static bool alterSchema(const drizzled::message::Schema &schema_message);
373
357
// @note make private/protected
375
virtual void doGetSchemaIdentifiers(identifier::Schema::vector&)
359
virtual void doGetSchemaIdentifiers(identifier::schema::vector&)
378
virtual bool doGetSchemaDefinition(const drizzled::identifier::Schema&, drizzled::message::schema::shared_ptr&)
362
virtual drizzled::message::schema::shared_ptr doGetSchemaDefinition(const drizzled::identifier::Schema&)
364
return drizzled::message::schema::shared_ptr();
383
367
virtual bool doCreateSchema(const drizzled::message::Schema&)
404
388
Cursor *getCursor(Table &share);
406
390
uint32_t max_record_length() const
407
{ return std::min((unsigned int)HA_MAX_REC_LENGTH, max_supported_record_length()); }
391
{ return std::min(HA_MAX_REC_LENGTH, max_supported_record_length()); }
408
392
uint32_t max_keys() const
409
{ return std::min((unsigned int)MAX_KEY, max_supported_keys()); }
393
{ return std::min(MAX_KEY, max_supported_keys()); }
410
394
uint32_t max_key_parts() const
411
{ return std::min((unsigned int)MAX_REF_PARTS, max_supported_key_parts()); }
395
{ return std::min(MAX_REF_PARTS, max_supported_key_parts()); }
412
396
uint32_t max_key_length() const
413
{ return std::min((unsigned int)MAX_KEY_LENGTH, max_supported_key_length()); }
397
{ return std::min(MAX_KEY_LENGTH, max_supported_key_length()); }
414
398
uint32_t max_key_part_length(void) const
415
{ return std::min((unsigned int)MAX_KEY_LENGTH, max_supported_key_part_length()); }
399
{ return std::min(MAX_KEY_LENGTH, max_supported_key_part_length()); }
417
401
virtual uint32_t max_supported_record_length(void) const
418
402
{ return HA_MAX_REC_LENGTH; }
426
410
static int deleteDefinitionFromPath(const drizzled::identifier::Table &identifier);
427
411
static int renameDefinitionFromPath(const drizzled::identifier::Table &dest, const drizzled::identifier::Table &src);
428
static int writeDefinitionFromPath(const drizzled::identifier::Table &identifier, message::Table &proto);
412
static int writeDefinitionFromPath(const drizzled::identifier::Table &identifier, const message::Table &proto);
429
413
static bool readTableFile(const std::string &path, message::Table &table_message);