Drizzled Public API Documentation

drizzled::plugin::StorageEngine Class Referenceabstract
Inheritance diagram for drizzled::plugin::StorageEngine:
drizzled::plugin::Plugin drizzled::plugin::MonitoredInTransaction drizzled::plugin::TransactionalStorageEngine Function Schema TableProtoTesterEngine drizzled::plugin::SEAPITester drizzled::plugin::XaStorageEngine

Public Types

typedef uint64_t Table_flags
 
typedef std::pair< const
std::string, const std::string > 
map_key
 
typedef std::map< const
map_key, plugin::Plugin * > 
map
 
typedef std::vector< Plugin * > vector
 

Public Member Functions

const std::string & getTableDefinitionFileExtension ()
 
virtual
message::Table::Index::IndexType 
default_index_type () const
 
const std::vector< std::string > & getAliases () const
 
void addAlias (std::string alias)
 
 StorageEngine (const std::string &name_arg, const std::bitset< HTON_BIT_SIZE > &flags_arg=HTON_NO_FLAGS)
 
virtual void print_error (int error, myf errflag, const Table &table) const
 
bool is_user_selectable () const
 
bool check_flag (const engine_flag_bits flag) const
 
virtual uint32_t index_flags (enum ha_key_alg) const
 
virtual void startStatement (Session *session)
 
virtual void endStatement (Session *session)
 
virtual int close_connection (Session *)
 
virtual Cursorcreate (Table &)=0
 
virtual bool flush_logs ()
 
virtual bool show_status (Session *, stat_print_fn *, enum ha_stat_type)
 
virtual const char ** bas_ext () const =0
 
int renameTable (Session &session, const drizzled::identifier::Table &from, const drizzled::identifier::Table &to)
 
CursorgetCursor (Table &share)
 
uint32_t max_record_length () const
 
uint32_t max_keys () const
 
uint32_t max_key_parts () const
 
uint32_t max_key_length () const
 
uint32_t max_key_part_length (void) const
 
virtual uint32_t max_supported_record_length (void) const
 
virtual uint32_t max_supported_keys (void) const
 
virtual uint32_t max_supported_key_parts (void) const
 
virtual uint32_t max_supported_key_length (void) const
 
virtual uint32_t max_supported_key_part_length (void) const
 
virtual bool participatesInSqlTransaction () const
 
virtual bool participatesInXaTransaction () const
 
virtual bool alwaysRegisterForXaTransaction () const
 
virtual bool validateCreateTableOption (const std::string &key, const std::string &state)
 
virtual bool validateCreateSchemaOption (const std::string &key, const std::string &state)
 
virtual void shutdownPlugin ()
 
virtual void prime ()
 
virtual void startup (drizzled::Session &)
 
void activate ()
 
void deactivate ()
 
bool isActive () const
 
const std::string & getName () const
 
void setModule (module::Module *module)
 
const std::string & getTypeName () const
 
virtual bool removeLast () const
 
const std::string & getModuleName () const
 
size_t getId () const
 

Static Public Member Functions

static bool addPlugin (plugin::StorageEngine *engine)
 
static void removePlugin (plugin::StorageEngine *engine)
 
static message::table::shared_ptr getTableMessage (Session &session, const drizzled::identifier::Table &identifier, bool include_temporary_tables=true)
 
static bool doesTableExist (Session &session, const drizzled::identifier::Table &identifier, bool include_temporary_tables=true)
 
static plugin::StorageEnginefindByName (const std::string &find_str)
 
static plugin::StorageEnginefindByName (Session &session, const std::string &find_str)
 
static void closeConnection (Session &)
 
static void dropDatabase (char *path)
 
static bool flushLogs (plugin::StorageEngine *db_type)
 
static bool dropTable (Session &session, const drizzled::identifier::Table &identifier)
 
static bool dropTable (Session &session, const drizzled::identifier::Table &identifier, drizzled::error_t &error)
 
static bool dropTable (Session &session, StorageEngine &engine, const identifier::Table &identifier, drizzled::error_t &error)
 
static void getIdentifiers (Session &session, const identifier::Schema &schema_identifier, identifier::table::vector &set_of_identifiers)
 
static bool canCreateTable (const drizzled::identifier::Table &identifier)
 
static void getIdentifiers (Session &session, identifier::schema::vector &schemas)
 
static message::schema::shared_ptr getSchemaDefinition (const drizzled::identifier::Table &identifier)
 
static message::schema::shared_ptr getSchemaDefinition (const drizzled::identifier::Schema &identifier)
 
static bool doesSchemaExist (const drizzled::identifier::Schema &identifier)
 
static const charset_info_stgetSchemaCollation (const drizzled::identifier::Schema &identifier)
 
static bool createSchema (const drizzled::message::Schema &schema_message)
 
static bool dropSchema (Session &session, const identifier::Schema &identifier, message::schema::const_reference schema_message)
 
static bool alterSchema (const drizzled::message::Schema &schema_message)
 
static const std::string & resolveName (const StorageEngine *engine)
 
static bool createTable (Session &session, const identifier::Table &identifier, message::Table &table_message)
 
static void removeLostTemporaryTables (Session &session, const char *directory)
 

Protected Types

typedef std::map< std::string,
message::Table
ProtoCache
 Used as a protobuf storage currently by TEMP only engines.
 

Protected Member Functions

virtual int doGetTableDefinition (Session &session, const drizzled::identifier::Table &identifier, message::Table &table_message)
 
void print_keydup_error (uint32_t key_nr, const char *msg, const Table &table) const
 
virtual bool get_error_message (int error, String *buf) const
 
virtual int doCreateTable (Session &session, Table &table_arg, const drizzled::identifier::Table &identifier, const message::Table &message)=0
 
virtual int doRenameTable (Session &session, const drizzled::identifier::Table &from, const drizzled::identifier::Table &to)=0
 
virtual int doDropTable (Session &session, const drizzled::identifier::Table &identifier)=0
 
virtual void doGetTableIdentifiers (CachedDirectory &directory, const drizzled::identifier::Schema &schema_identifier, identifier::table::vector &set_of_identifiers)=0
 
virtual bool doDoesTableExist (Session &session, const drizzled::identifier::Table &identifier)
 
virtual bool doCanCreateTable (const drizzled::identifier::Table &identifier)
 
virtual void doGetSchemaIdentifiers (identifier::schema::vector &)
 
virtual
drizzled::message::schema::shared_ptr 
doGetSchemaDefinition (const drizzled::identifier::Schema &)
 
virtual bool doCreateSchema (const drizzled::message::Schema &)
 
virtual bool doAlterSchema (const drizzled::message::Schema &)
 
virtual bool doDropSchema (const drizzled::identifier::Schema &)
 

Static Protected Member Functions

static int deleteDefinitionFromPath (const drizzled::identifier::Table &identifier)
 
static int renameDefinitionFromPath (const drizzled::identifier::Table &dest, const drizzled::identifier::Table &src)
 
static int writeDefinitionFromPath (const drizzled::identifier::Table &identifier, const message::Table &proto)
 
static bool readTableFile (const std::string &path, message::Table &table_message)
 

Protected Attributes

std::string table_definition_ext
 
ProtoCache proto_cache
 
pthread_mutex_t proto_cache_mutex
 

Private Member Functions

virtual void setTransactionReadWrite (Session &session)
 
virtual void doStartStatement (Session *session)
 
virtual void doEndStatement (Session *session)
 

Static Private Member Functions

static EngineVector & getSchemaEngines ()
 

Private Attributes

const std::bitset< HTON_BIT_SIZE > flags
 
std::vector< std::string > aliases
 

Friends

class SEAPITester
 
class AddSchemaNames
 
class AddTableIdentifier
 
class AlterSchema
 
class CanCreateTable
 
class CreateSchema
 
class DropSchema
 
class DropTable
 
class DropTables
 
class FindEngineByName
 
class Ha_delete_table_error_handler
 
class StorageEngineCloseConnection
 
class StorageEngineDoesTableExist
 
class StorageEngineGetSchemaDefinition
 
class StorageEngineGetTableDefinition
 
class DropTableByIdentifier
 

Detailed Description

Definition at line 126 of file storage_engine.h.

Member Function Documentation

virtual bool drizzled::plugin::StorageEngine::alwaysRegisterForXaTransaction ( ) const
inlinevirtual

Returns true if the class should be registered for every XA transaction regardless of whether the class modifies the server's state.

Note

As an example, the XaTransactionApplier plugin class returns true for this virtual method. Even though it does not change the result of the transaction (it simply is logging the changes made by other resource managers), the applier plugin should be enlisted in all XA transactions in order to be able to rollback or recover its logging activity properly.

Implements drizzled::plugin::MonitoredInTransaction.

Reimplemented in drizzled::plugin::TransactionalStorageEngine, and drizzled::plugin::XaStorageEngine.

Definition at line 433 of file storage_engine.h.

virtual const char** drizzled::plugin::StorageEngine::bas_ext ( ) const
pure virtual

If frm_error() is called then we will use this to find out what file extentions exist for the storage engine. This is also used by the default rename_table and delete_table method in Cursor.cc.

For engines that have two file name extentions (separate meta/index file and data file), the order of elements is relevant. First element of engine file name extentions array should be meta/index file extention. Second element - data file extention. This order is assumed by prepare_for_repair() when REPAIR Table ... USE_FRM is issued.

Implemented in drizzled::plugin::SEAPITester, Schema, TableProtoTesterEngine, and Function.

Referenced by doDropTable().

bool drizzled::plugin::StorageEngine::canCreateTable ( const drizzled::identifier::Table identifier)
static
Note
on success table can be created.

Definition at line 954 of file storage_engine.cc.

void drizzled::plugin::StorageEngine::closeConnection ( Session session)
static
Note
don't bother to rollback here, it's done already

Definition at line 196 of file storage_engine.cc.

bool drizzled::plugin::StorageEngine::createTable ( Session session,
const identifier::Table identifier,
message::Table table_message 
)
static

Initiates table-file and calls appropriate database-creator.

Return values
0ok
1error

Definition at line 413 of file storage_engine.cc.

References drizzled::Table::delete_table().

int drizzled::plugin::StorageEngine::doDropTable ( Session session,
const drizzled::identifier::Table identifier 
)
protectedpure virtual

Delete all files with extension from bas_ext().

Parameters
nameBase name of table
Note
We assume that the Cursor may return more extensions than was actually used for the file.
Return values
0If we successfully deleted at least one file from base_ext and didn't get any other errors than ENOENT
!0Error

Implemented in drizzled::plugin::SEAPITester, Schema, TableProtoTesterEngine, and Function.

Definition at line 122 of file storage_engine.cc.

References bas_ext().

bool StorageEngine::doesTableExist ( Session session,
const drizzled::identifier::Table identifier,
bool  include_temporary_tables = true 
)
static

Utility method which hides some of the details of getTableDefinition()

Definition at line 249 of file storage_engine.cc.

bool drizzled::plugin::StorageEngine::get_error_message ( int  error,
String buf 
) const
protectedvirtual

Return an error message specific to this Cursor.

Parameters
errorerror code previously returned by Cursor
bufpointer to String where to add error message
Returns
Returns true if this is a temporary error

Definition at line 807 of file storage_engine.cc.

Referenced by print_error().

size_t drizzled::plugin::MonitoredInTransaction::getId ( ) const
inlineinherited

Returns the "slot" or ID of the monitored resource

Definition at line 87 of file monitored_in_transaction.h.

virtual bool drizzled::plugin::StorageEngine::participatesInSqlTransaction ( ) const
inlinevirtual

Returns true if the class should participate in the SQL transaction.

Implements drizzled::plugin::MonitoredInTransaction.

Reimplemented in drizzled::plugin::TransactionalStorageEngine, and drizzled::plugin::XaStorageEngine.

Definition at line 425 of file storage_engine.h.

virtual bool drizzled::plugin::StorageEngine::participatesInXaTransaction ( ) const
inlinevirtual

Returns true if the class should participate in the XA transaction.

Implements drizzled::plugin::MonitoredInTransaction.

Reimplemented in drizzled::plugin::TransactionalStorageEngine, and drizzled::plugin::XaStorageEngine.

Definition at line 429 of file storage_engine.h.

void drizzled::plugin::StorageEngine::print_error ( int  error,
myf  errflag,
const Table table 
) const
virtual

Print error that we got from Cursor function.

Note
In case of delete table it's only safe to use the following parts of the 'table' structure:
  • table->getShare()->path
  • table->alias

Definition at line 606 of file storage_engine.cc.

References drizzled::Table::get_dup_key(), get_error_message(), and drizzled::Table::key_info.


The documentation for this class was generated from the following files: