mirror of
https://github.com/MariaDB/server.git
synced 2026-01-06 05:22:24 +03:00
Next big patch for loadable storage engines!
Handlerton array is now created instead of using sys_table_types_st. All storage engines can now have inits and giant ifdef's are now gone for startup. No compeltely clean yet, handlertons will next be merged with sys_table_types. Federated and archive now have real cleanup if their inits fail.
This commit is contained in:
@@ -116,7 +116,7 @@
|
||||
*/
|
||||
|
||||
/* If the archive storage engine has been inited */
|
||||
static bool archive_inited= 0;
|
||||
static bool archive_inited= FALSE;
|
||||
/* Variables for archive share methods */
|
||||
pthread_mutex_t archive_mutex;
|
||||
static HASH archive_open_tables;
|
||||
@@ -138,6 +138,10 @@ static HASH archive_open_tables;
|
||||
/* dummy handlerton - only to have something to return from archive_db_init */
|
||||
handlerton archive_hton = {
|
||||
"archive",
|
||||
SHOW_OPTION_YES,
|
||||
"Archive storage engine",
|
||||
DB_TYPE_ARCHIVE_DB,
|
||||
archive_db_init,
|
||||
0, /* slot */
|
||||
0, /* savepoint size. */
|
||||
NULL, /* close_connection */
|
||||
@@ -176,18 +180,29 @@ static byte* archive_get_key(ARCHIVE_SHARE *share,uint *length,
|
||||
void
|
||||
|
||||
RETURN
|
||||
&archive_hton OK
|
||||
0 Error
|
||||
FALSE OK
|
||||
TRUE Error
|
||||
*/
|
||||
|
||||
handlerton *archive_db_init()
|
||||
bool archive_db_init()
|
||||
{
|
||||
archive_inited= 1;
|
||||
VOID(pthread_mutex_init(&archive_mutex, MY_MUTEX_INIT_FAST));
|
||||
DBUG_ENTER("archive_db_init");
|
||||
if (pthread_mutex_init(&archive_mutex, MY_MUTEX_INIT_FAST))
|
||||
goto error;
|
||||
if (hash_init(&archive_open_tables, system_charset_info, 32, 0, 0,
|
||||
(hash_get_key) archive_get_key, 0, 0))
|
||||
return 0;
|
||||
return &archive_hton;
|
||||
{
|
||||
VOID(pthread_mutex_destroy(&archive_mutex));
|
||||
}
|
||||
else
|
||||
{
|
||||
archive_inited= TRUE;
|
||||
DBUG_RETURN(FALSE);
|
||||
}
|
||||
error:
|
||||
have_archive_db= SHOW_OPTION_DISABLED; // If we couldn't use handler
|
||||
archive_hton.state= SHOW_OPTION_DISABLED;
|
||||
DBUG_RETURN(TRUE);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -105,6 +105,6 @@ public:
|
||||
enum thr_lock_type lock_type);
|
||||
};
|
||||
|
||||
handlerton *archive_db_init(void);
|
||||
bool archive_db_init(void);
|
||||
bool archive_db_end(void);
|
||||
|
||||
|
||||
@@ -74,7 +74,11 @@
|
||||
|
||||
|
||||
handlerton example_hton= {
|
||||
"CSV",
|
||||
"EXAMPLE",
|
||||
SHOW_OPTION_YES,
|
||||
"Example storage engine",
|
||||
DB_TYPE_EXAMPLE_DB,
|
||||
NULL, /* We do need to write one! */
|
||||
0, /* slot */
|
||||
0, /* savepoint size. */
|
||||
NULL, /* close_connection */
|
||||
|
||||
@@ -56,6 +56,10 @@ static int tina_init= 0;
|
||||
|
||||
handlerton tina_hton= {
|
||||
"CSV",
|
||||
SHOW_OPTION_YES,
|
||||
"CSV storage engine",
|
||||
DB_TYPE_CSV_DB,
|
||||
NULL, /* One needs to be written! */
|
||||
0, /* slot */
|
||||
0, /* savepoint size. */
|
||||
NULL, /* close_connection */
|
||||
|
||||
Reference in New Issue
Block a user