1
0
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:
brian@zim.(none)
2005-10-02 19:44:28 -07:00
parent acdc193a45
commit 54a958993c
20 changed files with 244 additions and 239 deletions

View File

@@ -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);
}
/*

View File

@@ -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);

View File

@@ -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 */

View File

@@ -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 */