mirror of
https://github.com/MariaDB/server.git
synced 2025-01-21 22:34:18 +01:00
Merge joreland@bk-internal.mysql.com:/home/bk/mysql-5.0
into perch.ndb.mysql.com:/home/jonas/src/mysql-5.0-push sql/ha_ndbcluster.cc: Auto merged
This commit is contained in:
commit
d800227f61
15 changed files with 231 additions and 112 deletions
|
@ -323,17 +323,12 @@ execute stmt4;
|
||||||
Engine Support Comment
|
Engine Support Comment
|
||||||
MyISAM YES/NO Default engine as of MySQL 3.23 with great performance
|
MyISAM YES/NO Default engine as of MySQL 3.23 with great performance
|
||||||
MEMORY YES/NO Hash based, stored in memory, useful for temporary tables
|
MEMORY YES/NO Hash based, stored in memory, useful for temporary tables
|
||||||
HEAP YES/NO Alias for MEMORY
|
MRG_MYISAM YES/NO Collection of identical MyISAM tables
|
||||||
MERGE YES/NO Collection of identical MyISAM tables
|
|
||||||
MRG_MYISAM YES/NO Alias for MERGE
|
|
||||||
ISAM YES/NO Obsolete storage engine, now replaced by MyISAM
|
ISAM YES/NO Obsolete storage engine, now replaced by MyISAM
|
||||||
MRG_ISAM YES/NO Obsolete storage engine, now replaced by MERGE
|
MRG_ISAM YES/NO Obsolete storage engine, now replaced by MERGE
|
||||||
InnoDB YES/NO Supports transactions, row-level locking, and foreign keys
|
InnoDB YES/NO Supports transactions, row-level locking, and foreign keys
|
||||||
INNOBASE YES/NO Alias for INNODB
|
BERKELEYDB YES/NO Supports transactions and page-level locking
|
||||||
BDB YES/NO Supports transactions and page-level locking
|
|
||||||
BERKELEYDB YES/NO Alias for BDB
|
|
||||||
NDBCLUSTER YES/NO Clustered, fault-tolerant, memory-based tables
|
NDBCLUSTER YES/NO Clustered, fault-tolerant, memory-based tables
|
||||||
NDB YES/NO Alias for NDBCLUSTER
|
|
||||||
EXAMPLE YES/NO Example storage engine
|
EXAMPLE YES/NO Example storage engine
|
||||||
ARCHIVE YES/NO Archive storage engine
|
ARCHIVE YES/NO Archive storage engine
|
||||||
CSV YES/NO CSV storage engine
|
CSV YES/NO CSV storage engine
|
||||||
|
|
|
@ -147,7 +147,7 @@ Variable_name Value
|
||||||
storage_engine MEMORY
|
storage_engine MEMORY
|
||||||
show global variables like 'storage_engine';
|
show global variables like 'storage_engine';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
storage_engine MERGE
|
storage_engine MRG_MYISAM
|
||||||
set GLOBAL query_cache_size=100000;
|
set GLOBAL query_cache_size=100000;
|
||||||
set GLOBAL myisam_max_sort_file_size=2000000;
|
set GLOBAL myisam_max_sort_file_size=2000000;
|
||||||
show global variables like 'myisam_max_sort_file_size';
|
show global variables like 'myisam_max_sort_file_size';
|
||||||
|
|
|
@ -136,7 +136,7 @@ static HASH archive_open_tables;
|
||||||
#define ARCHIVE_CHECK_HEADER 254 // The number we use to determine corruption
|
#define ARCHIVE_CHECK_HEADER 254 // The number we use to determine corruption
|
||||||
|
|
||||||
/* dummy handlerton - only to have something to return from archive_db_init */
|
/* dummy handlerton - only to have something to return from archive_db_init */
|
||||||
static handlerton archive_hton = {
|
handlerton archive_hton = {
|
||||||
"archive",
|
"archive",
|
||||||
0, /* slot */
|
0, /* slot */
|
||||||
0, /* savepoint size. */
|
0, /* savepoint size. */
|
||||||
|
|
|
@ -73,7 +73,7 @@
|
||||||
#include "ha_example.h"
|
#include "ha_example.h"
|
||||||
|
|
||||||
|
|
||||||
static handlerton example_hton= {
|
handlerton example_hton= {
|
||||||
"CSV",
|
"CSV",
|
||||||
0, /* slot */
|
0, /* slot */
|
||||||
0, /* savepoint size. */
|
0, /* savepoint size. */
|
||||||
|
|
|
@ -54,7 +54,7 @@ pthread_mutex_t tina_mutex;
|
||||||
static HASH tina_open_tables;
|
static HASH tina_open_tables;
|
||||||
static int tina_init= 0;
|
static int tina_init= 0;
|
||||||
|
|
||||||
static handlerton tina_hton= {
|
handlerton tina_hton= {
|
||||||
"CSV",
|
"CSV",
|
||||||
0, /* slot */
|
0, /* slot */
|
||||||
0, /* savepoint size. */
|
0, /* savepoint size. */
|
||||||
|
|
|
@ -107,7 +107,7 @@ static int berkeley_close_connection(THD *thd);
|
||||||
static int berkeley_commit(THD *thd, bool all);
|
static int berkeley_commit(THD *thd, bool all);
|
||||||
static int berkeley_rollback(THD *thd, bool all);
|
static int berkeley_rollback(THD *thd, bool all);
|
||||||
|
|
||||||
static handlerton berkeley_hton = {
|
handlerton berkeley_hton = {
|
||||||
"BerkeleyDB",
|
"BerkeleyDB",
|
||||||
0, /* slot */
|
0, /* slot */
|
||||||
0, /* savepoint size */
|
0, /* savepoint size */
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
|
|
||||||
/* Blackhole storage engine handlerton */
|
/* Blackhole storage engine handlerton */
|
||||||
|
|
||||||
static handlerton blackhole_hton= {
|
handlerton blackhole_hton= {
|
||||||
"BLACKHOLE",
|
"BLACKHOLE",
|
||||||
0, /* slot */
|
0, /* slot */
|
||||||
0, /* savepoint size. */
|
0, /* savepoint size. */
|
||||||
|
|
|
@ -693,7 +693,7 @@ error:
|
||||||
|
|
||||||
/* Federated storage engine handlerton */
|
/* Federated storage engine handlerton */
|
||||||
|
|
||||||
static handlerton federated_hton= {
|
handlerton federated_hton= {
|
||||||
"FEDERATED",
|
"FEDERATED",
|
||||||
0, /* slot */
|
0, /* slot */
|
||||||
0, /* savepoint size. */
|
0, /* savepoint size. */
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
#include <myisampack.h>
|
#include <myisampack.h>
|
||||||
#include "ha_heap.h"
|
#include "ha_heap.h"
|
||||||
|
|
||||||
static handlerton heap_hton= {
|
handlerton heap_hton= {
|
||||||
"MEMORY",
|
"MEMORY",
|
||||||
0, /* slot */
|
0, /* slot */
|
||||||
0, /* savepoint size. */
|
0, /* savepoint size. */
|
||||||
|
|
|
@ -206,7 +206,7 @@ static int innobase_rollback_to_savepoint(THD* thd, void *savepoint);
|
||||||
static int innobase_savepoint(THD* thd, void *savepoint);
|
static int innobase_savepoint(THD* thd, void *savepoint);
|
||||||
static int innobase_release_savepoint(THD* thd, void *savepoint);
|
static int innobase_release_savepoint(THD* thd, void *savepoint);
|
||||||
|
|
||||||
static handlerton innobase_hton = {
|
handlerton innobase_hton = {
|
||||||
"InnoDB",
|
"InnoDB",
|
||||||
0, /* slot */
|
0, /* slot */
|
||||||
sizeof(trx_named_savept_t), /* savepoint size. TODO: use it */
|
sizeof(trx_named_savept_t), /* savepoint size. TODO: use it */
|
||||||
|
|
|
@ -46,7 +46,7 @@ TYPELIB myisam_recover_typelib= {array_elements(myisam_recover_names)-1,"",
|
||||||
|
|
||||||
/* MyISAM handlerton */
|
/* MyISAM handlerton */
|
||||||
|
|
||||||
static handlerton myisam_hton= {
|
handlerton myisam_hton= {
|
||||||
"MyISAM",
|
"MyISAM",
|
||||||
0, /* slot */
|
0, /* slot */
|
||||||
0, /* savepoint size. */
|
0, /* savepoint size. */
|
||||||
|
|
|
@ -34,8 +34,8 @@
|
||||||
|
|
||||||
/* MyISAM MERGE handlerton */
|
/* MyISAM MERGE handlerton */
|
||||||
|
|
||||||
static handlerton myisammrg_hton= {
|
handlerton myisammrg_hton= {
|
||||||
"MRG_MyISAM",
|
"MRG_MYISAM",
|
||||||
0, /* slot */
|
0, /* slot */
|
||||||
0, /* savepoint size. */
|
0, /* savepoint size. */
|
||||||
NULL, /* close_connection */
|
NULL, /* close_connection */
|
||||||
|
|
|
@ -49,7 +49,7 @@ static int ndbcluster_close_connection(THD *thd);
|
||||||
static int ndbcluster_commit(THD *thd, bool all);
|
static int ndbcluster_commit(THD *thd, bool all);
|
||||||
static int ndbcluster_rollback(THD *thd, bool all);
|
static int ndbcluster_rollback(THD *thd, bool all);
|
||||||
|
|
||||||
static handlerton ndbcluster_hton = {
|
handlerton ndbcluster_hton = {
|
||||||
"ndbcluster",
|
"ndbcluster",
|
||||||
0, /* slot */
|
0, /* slot */
|
||||||
0, /* savepoint size */
|
0, /* savepoint size */
|
||||||
|
|
287
sql/handler.cc
287
sql/handler.cc
|
@ -27,31 +27,44 @@
|
||||||
#include "ha_myisammrg.h"
|
#include "ha_myisammrg.h"
|
||||||
#ifdef HAVE_BERKELEY_DB
|
#ifdef HAVE_BERKELEY_DB
|
||||||
#include "ha_berkeley.h"
|
#include "ha_berkeley.h"
|
||||||
|
extern handlerton berkeley_hton;
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_BLACKHOLE_DB
|
#ifdef HAVE_BLACKHOLE_DB
|
||||||
#include "ha_blackhole.h"
|
#include "ha_blackhole.h"
|
||||||
|
extern handlerton blackhole_hton;
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_EXAMPLE_DB
|
#ifdef HAVE_EXAMPLE_DB
|
||||||
#include "examples/ha_example.h"
|
#include "examples/ha_example.h"
|
||||||
|
extern handlerton example_hton;
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_ARCHIVE_DB
|
#ifdef HAVE_ARCHIVE_DB
|
||||||
#include "examples/ha_archive.h"
|
#include "examples/ha_archive.h"
|
||||||
|
extern handlerton archive_hton;
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_CSV_DB
|
#ifdef HAVE_CSV_DB
|
||||||
#include "examples/ha_tina.h"
|
#include "examples/ha_tina.h"
|
||||||
|
extern handlerton tina_hton;
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_INNOBASE_DB
|
#ifdef HAVE_INNOBASE_DB
|
||||||
#include "ha_innodb.h"
|
#include "ha_innodb.h"
|
||||||
|
extern handlerton innobase_hton;
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_NDBCLUSTER_DB
|
#ifdef HAVE_NDBCLUSTER_DB
|
||||||
#include "ha_ndbcluster.h"
|
#include "ha_ndbcluster.h"
|
||||||
|
extern handlerton ndbcluster_hton;
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_FEDERATED_DB
|
#ifdef HAVE_FEDERATED_DB
|
||||||
#include "ha_federated.h"
|
#include "ha_federated.h"
|
||||||
|
extern handlerton federated_hton;
|
||||||
#endif
|
#endif
|
||||||
#include <myisampack.h>
|
#include <myisampack.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
|
extern handlerton myisam_hton;
|
||||||
|
extern handlerton myisammrg_hton;
|
||||||
|
extern handlerton heap_hton;
|
||||||
|
|
||||||
|
|
||||||
/* static functions defined in this file */
|
/* static functions defined in this file */
|
||||||
|
|
||||||
static SHOW_COMP_OPTION have_yes= SHOW_OPTION_YES;
|
static SHOW_COMP_OPTION have_yes= SHOW_OPTION_YES;
|
||||||
|
@ -66,46 +79,52 @@ ulong total_ha_2pc;
|
||||||
/* size of savepoint storage area (see ha_init) */
|
/* size of savepoint storage area (see ha_init) */
|
||||||
ulong savepoint_alloc_size;
|
ulong savepoint_alloc_size;
|
||||||
|
|
||||||
|
/*
|
||||||
|
This structure will go away in the future.
|
||||||
|
*/
|
||||||
struct show_table_type_st sys_table_types[]=
|
struct show_table_type_st sys_table_types[]=
|
||||||
{
|
{
|
||||||
{"MyISAM", &have_yes,
|
{"MyISAM", &have_yes,
|
||||||
"Default engine as of MySQL 3.23 with great performance", DB_TYPE_MYISAM},
|
"Default engine as of MySQL 3.23 with great performance", DB_TYPE_MYISAM,
|
||||||
|
NULL},
|
||||||
{"MEMORY", &have_yes,
|
{"MEMORY", &have_yes,
|
||||||
"Hash based, stored in memory, useful for temporary tables", DB_TYPE_HEAP},
|
"Hash based, stored in memory, useful for temporary tables", DB_TYPE_HEAP,
|
||||||
{"HEAP", &have_yes,
|
NULL},
|
||||||
"Alias for MEMORY", DB_TYPE_HEAP},
|
{"MRG_MYISAM", &have_yes,
|
||||||
{"MERGE", &have_yes,
|
"Collection of identical MyISAM tables", DB_TYPE_MRG_MYISAM, NULL},
|
||||||
"Collection of identical MyISAM tables", DB_TYPE_MRG_MYISAM},
|
|
||||||
{"MRG_MYISAM",&have_yes,
|
|
||||||
"Alias for MERGE", DB_TYPE_MRG_MYISAM},
|
|
||||||
{"ISAM", &have_isam,
|
{"ISAM", &have_isam,
|
||||||
"Obsolete storage engine, now replaced by MyISAM", DB_TYPE_ISAM},
|
"Obsolete storage engine, now replaced by MyISAM", DB_TYPE_ISAM, NULL},
|
||||||
{"MRG_ISAM", &have_isam,
|
{"MRG_ISAM", &have_isam,
|
||||||
"Obsolete storage engine, now replaced by MERGE", DB_TYPE_MRG_ISAM},
|
"Obsolete storage engine, now replaced by MERGE", DB_TYPE_MRG_ISAM, NULL},
|
||||||
{"InnoDB", &have_innodb,
|
{"InnoDB", &have_innodb,
|
||||||
"Supports transactions, row-level locking, and foreign keys", DB_TYPE_INNODB},
|
"Supports transactions, row-level locking, and foreign keys", DB_TYPE_INNODB,
|
||||||
{"INNOBASE", &have_innodb,
|
NULL},
|
||||||
"Alias for INNODB", DB_TYPE_INNODB},
|
{"BERKELEYDB", &have_berkeley_db,
|
||||||
{"BDB", &have_berkeley_db,
|
"Supports transactions and page-level locking", DB_TYPE_BERKELEY_DB, NULL},
|
||||||
"Supports transactions and page-level locking", DB_TYPE_BERKELEY_DB},
|
|
||||||
{"BERKELEYDB",&have_berkeley_db,
|
|
||||||
"Alias for BDB", DB_TYPE_BERKELEY_DB},
|
|
||||||
{"NDBCLUSTER", &have_ndbcluster,
|
{"NDBCLUSTER", &have_ndbcluster,
|
||||||
"Clustered, fault-tolerant, memory-based tables", DB_TYPE_NDBCLUSTER},
|
"Clustered, fault-tolerant, memory-based tables", DB_TYPE_NDBCLUSTER, NULL},
|
||||||
{"NDB", &have_ndbcluster,
|
|
||||||
"Alias for NDBCLUSTER", DB_TYPE_NDBCLUSTER},
|
|
||||||
{"EXAMPLE",&have_example_db,
|
{"EXAMPLE",&have_example_db,
|
||||||
"Example storage engine", DB_TYPE_EXAMPLE_DB},
|
"Example storage engine", DB_TYPE_EXAMPLE_DB, NULL},
|
||||||
{"ARCHIVE",&have_archive_db,
|
{"ARCHIVE",&have_archive_db,
|
||||||
"Archive storage engine", DB_TYPE_ARCHIVE_DB},
|
"Archive storage engine", DB_TYPE_ARCHIVE_DB, NULL},
|
||||||
{"CSV",&have_csv_db,
|
{"CSV",&have_csv_db,
|
||||||
"CSV storage engine", DB_TYPE_CSV_DB},
|
"CSV storage engine", DB_TYPE_CSV_DB, NULL},
|
||||||
{"FEDERATED",&have_federated_db,
|
{"FEDERATED",&have_federated_db,
|
||||||
"Federated MySQL storage engine", DB_TYPE_FEDERATED_DB},
|
"Federated MySQL storage engine", DB_TYPE_FEDERATED_DB, NULL},
|
||||||
{"BLACKHOLE",&have_blackhole_db,
|
{"BLACKHOLE",&have_blackhole_db,
|
||||||
"/dev/null storage engine (anything you write to it disappears)",
|
"/dev/null storage engine (anything you write to it disappears)",
|
||||||
DB_TYPE_BLACKHOLE_DB},
|
DB_TYPE_BLACKHOLE_DB, NULL},
|
||||||
{NullS, NULL, NullS, DB_TYPE_UNKNOWN}
|
{NullS, NULL, NullS, DB_TYPE_UNKNOWN, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
struct show_table_alias_st sys_table_aliases[]=
|
||||||
|
{
|
||||||
|
{"INNOBASE", "InnoDB", NULL },
|
||||||
|
{"NDB", "NDBCLUSTER", NULL},
|
||||||
|
{"BDB", "BERKELEYDB", NULL},
|
||||||
|
{"HEAP", "MEMORY", NULL},
|
||||||
|
{"MERGE", "MRG_MYISAM", NULL},
|
||||||
|
{NullS, NullS, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
const char *ha_row_type[] = {
|
const char *ha_row_type[] = {
|
||||||
|
@ -124,16 +143,27 @@ uint known_extensions_id= 0;
|
||||||
enum db_type ha_resolve_by_name(const char *name, uint namelen)
|
enum db_type ha_resolve_by_name(const char *name, uint namelen)
|
||||||
{
|
{
|
||||||
THD *thd= current_thd;
|
THD *thd= current_thd;
|
||||||
|
show_table_alias_st *table_alias;
|
||||||
|
show_table_type_st *types;
|
||||||
|
|
||||||
if (thd && !my_strcasecmp(&my_charset_latin1, name, "DEFAULT")) {
|
if (thd && !my_strcasecmp(&my_charset_latin1, name, "DEFAULT")) {
|
||||||
return (enum db_type) thd->variables.table_type;
|
return (enum db_type) thd->variables.table_type;
|
||||||
}
|
}
|
||||||
|
|
||||||
show_table_type_st *types;
|
|
||||||
for (types= sys_table_types; types->type; types++)
|
for (types= sys_table_types; types->type; types++)
|
||||||
{
|
{
|
||||||
if (!my_strcasecmp(&my_charset_latin1, name, types->type))
|
if (!my_strcasecmp(&my_charset_latin1, name, types->type))
|
||||||
return (enum db_type) types->db_type;
|
return (enum db_type) types->db_type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
We check for the historical aliases next.
|
||||||
|
*/
|
||||||
|
for (table_alias= sys_table_aliases; table_alias->type; table_alias++)
|
||||||
|
{
|
||||||
|
if (!my_strcasecmp(&my_charset_latin1, name, table_alias->alias) && table_alias->st)
|
||||||
|
return (enum db_type) table_alias->st->db_type;
|
||||||
|
}
|
||||||
return DB_TYPE_UNKNOWN;
|
return DB_TYPE_UNKNOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -361,11 +391,156 @@ int ha_init()
|
||||||
{
|
{
|
||||||
int error= 0;
|
int error= 0;
|
||||||
handlerton **ht= handlertons;
|
handlerton **ht= handlertons;
|
||||||
|
show_table_type_st *types;
|
||||||
|
show_table_alias_st *table_alias;
|
||||||
total_ha= savepoint_alloc_size= 0;
|
total_ha= savepoint_alloc_size= 0;
|
||||||
|
|
||||||
if (ha_init_errors())
|
if (ha_init_errors())
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
for (types= sys_table_types; types->type; types++)
|
||||||
|
{
|
||||||
|
switch (types->db_type) {
|
||||||
|
case DB_TYPE_HEAP:
|
||||||
|
types->ht= &heap_hton;
|
||||||
|
for (table_alias= sys_table_aliases; table_alias->type; table_alias++)
|
||||||
|
{
|
||||||
|
if (!my_strcasecmp(&my_charset_latin1, types->ht->name,
|
||||||
|
table_alias->type))
|
||||||
|
table_alias->st= types;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case DB_TYPE_MYISAM:
|
||||||
|
types->ht= &myisam_hton;
|
||||||
|
break;
|
||||||
|
case DB_TYPE_MRG_MYISAM:
|
||||||
|
types->ht= &myisammrg_hton;
|
||||||
|
for (table_alias= sys_table_aliases; table_alias->type; table_alias++)
|
||||||
|
{
|
||||||
|
if (!my_strcasecmp(&my_charset_latin1, types->ht->name,
|
||||||
|
table_alias->type))
|
||||||
|
table_alias->st= types;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
#ifdef HAVE_BERKELEY_DB
|
||||||
|
case DB_TYPE_BERKELEY_DB:
|
||||||
|
if (have_berkeley_db == SHOW_OPTION_YES)
|
||||||
|
{
|
||||||
|
if (!(*ht= berkeley_init()))
|
||||||
|
{
|
||||||
|
have_berkeley_db= SHOW_OPTION_DISABLED; // If we couldn't use handler
|
||||||
|
error= 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
types->ht= &berkeley_hton;
|
||||||
|
for (table_alias= sys_table_aliases; table_alias->type; table_alias++)
|
||||||
|
{
|
||||||
|
if (!my_strcasecmp(&my_charset_latin1, types->ht->name, table_alias->type))
|
||||||
|
table_alias->st= types;
|
||||||
|
}
|
||||||
|
ha_was_inited_ok(ht++);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_INNOBASE_DB
|
||||||
|
case DB_TYPE_INNODB:
|
||||||
|
if (have_innodb == SHOW_OPTION_YES)
|
||||||
|
{
|
||||||
|
if (!(*ht= innobase_init()))
|
||||||
|
{
|
||||||
|
have_innodb= SHOW_OPTION_DISABLED; // If we couldn't use handler
|
||||||
|
error= 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ha_was_inited_ok(ht++);
|
||||||
|
types->ht= &innobase_hton;
|
||||||
|
for (table_alias= sys_table_aliases; table_alias->type; table_alias++)
|
||||||
|
{
|
||||||
|
if (!my_strcasecmp(&my_charset_latin1, types->ht->name, table_alias->type))
|
||||||
|
table_alias->st= types;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_NDBCLUSTER_DB
|
||||||
|
case DB_TYPE_NDBCLUSTER:
|
||||||
|
if (have_ndbcluster == SHOW_OPTION_YES)
|
||||||
|
{
|
||||||
|
if (!(*ht= ndbcluster_init()))
|
||||||
|
{
|
||||||
|
have_ndbcluster= SHOW_OPTION_DISABLED;
|
||||||
|
error= 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ha_was_inited_ok(ht++);
|
||||||
|
types->ht= &ndbcluster_hton;
|
||||||
|
for (table_alias= sys_table_aliases; table_alias->type; table_alias++)
|
||||||
|
{
|
||||||
|
if (!my_strcasecmp(&my_charset_latin1, types->ht->name, table_alias->type))
|
||||||
|
table_alias->st= types;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_EXAMPLE_DB
|
||||||
|
case DB_TYPE_EXAMPLE_DB:
|
||||||
|
types->ht= &example_hton;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_ARCHIVE_DB
|
||||||
|
case DB_TYPE_ARCHIVE_DB:
|
||||||
|
if (have_archive_db == SHOW_OPTION_YES)
|
||||||
|
{
|
||||||
|
if (!(*ht= archive_db_init()))
|
||||||
|
{
|
||||||
|
have_archive_db= SHOW_OPTION_DISABLED;
|
||||||
|
error= 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ha_was_inited_ok(ht++);
|
||||||
|
types->ht= &archive_hton;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_CSV_DB
|
||||||
|
case DB_TYPE_CSV_DB,:
|
||||||
|
types->ht= &tina_hton;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_FEDERATED_DB
|
||||||
|
case DB_TYPE_FEDERATED_DB:
|
||||||
|
if (have_federated_db == SHOW_OPTION_YES)
|
||||||
|
{
|
||||||
|
if (federated_db_init())
|
||||||
|
{
|
||||||
|
have_federated_db= SHOW_OPTION_DISABLED;
|
||||||
|
error= 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
types->ht= &federated_hton;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_BLACKHOLE_DB
|
||||||
|
case DB_TYPE_BLACKHOLE_DB:
|
||||||
|
types->ht= &blackhole_hton;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
default:
|
||||||
|
types->ht= NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (opt_bin_log)
|
if (opt_bin_log)
|
||||||
{
|
{
|
||||||
if (!(*ht= binlog_init())) // Always succeed
|
if (!(*ht= binlog_init())) // Always succeed
|
||||||
|
@ -377,64 +552,6 @@ int ha_init()
|
||||||
else
|
else
|
||||||
ha_was_inited_ok(ht++);
|
ha_was_inited_ok(ht++);
|
||||||
}
|
}
|
||||||
#ifdef HAVE_BERKELEY_DB
|
|
||||||
if (have_berkeley_db == SHOW_OPTION_YES)
|
|
||||||
{
|
|
||||||
if (!(*ht= berkeley_init()))
|
|
||||||
{
|
|
||||||
have_berkeley_db= SHOW_OPTION_DISABLED; // If we couldn't use handler
|
|
||||||
error= 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
ha_was_inited_ok(ht++);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#ifdef HAVE_INNOBASE_DB
|
|
||||||
if (have_innodb == SHOW_OPTION_YES)
|
|
||||||
{
|
|
||||||
if (!(*ht= innobase_init()))
|
|
||||||
{
|
|
||||||
have_innodb= SHOW_OPTION_DISABLED; // If we couldn't use handler
|
|
||||||
error= 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
ha_was_inited_ok(ht++);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#ifdef HAVE_NDBCLUSTER_DB
|
|
||||||
if (have_ndbcluster == SHOW_OPTION_YES)
|
|
||||||
{
|
|
||||||
if (!(*ht= ndbcluster_init()))
|
|
||||||
{
|
|
||||||
have_ndbcluster= SHOW_OPTION_DISABLED;
|
|
||||||
error= 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
ha_was_inited_ok(ht++);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#ifdef HAVE_FEDERATED_DB
|
|
||||||
if (have_federated_db == SHOW_OPTION_YES)
|
|
||||||
{
|
|
||||||
if (federated_db_init())
|
|
||||||
{
|
|
||||||
have_federated_db= SHOW_OPTION_DISABLED;
|
|
||||||
error= 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#ifdef HAVE_ARCHIVE_DB
|
|
||||||
if (have_archive_db == SHOW_OPTION_YES)
|
|
||||||
{
|
|
||||||
if (!(*ht= archive_db_init()))
|
|
||||||
{
|
|
||||||
have_archive_db= SHOW_OPTION_DISABLED;
|
|
||||||
error= 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
ha_was_inited_ok(ht++);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
DBUG_ASSERT(total_ha < MAX_HA);
|
DBUG_ASSERT(total_ha < MAX_HA);
|
||||||
/*
|
/*
|
||||||
Check if there is a transaction-capable storage engine besides the
|
Check if there is a transaction-capable storage engine besides the
|
||||||
|
|
|
@ -177,13 +177,6 @@ enum db_type
|
||||||
DB_TYPE_DEFAULT // Must be last
|
DB_TYPE_DEFAULT // Must be last
|
||||||
};
|
};
|
||||||
|
|
||||||
struct show_table_type_st {
|
|
||||||
const char *type;
|
|
||||||
SHOW_COMP_OPTION *value;
|
|
||||||
const char *comment;
|
|
||||||
enum db_type db_type;
|
|
||||||
};
|
|
||||||
|
|
||||||
enum row_type { ROW_TYPE_NOT_USED=-1, ROW_TYPE_DEFAULT, ROW_TYPE_FIXED,
|
enum row_type { ROW_TYPE_NOT_USED=-1, ROW_TYPE_DEFAULT, ROW_TYPE_FIXED,
|
||||||
ROW_TYPE_DYNAMIC, ROW_TYPE_COMPRESSED,
|
ROW_TYPE_DYNAMIC, ROW_TYPE_COMPRESSED,
|
||||||
ROW_TYPE_REDUNDANT, ROW_TYPE_COMPACT };
|
ROW_TYPE_REDUNDANT, ROW_TYPE_COMPACT };
|
||||||
|
@ -363,6 +356,20 @@ typedef struct
|
||||||
uint32 flags; /* global handler flags */
|
uint32 flags; /* global handler flags */
|
||||||
} handlerton;
|
} handlerton;
|
||||||
|
|
||||||
|
struct show_table_type_st {
|
||||||
|
const char *type;
|
||||||
|
SHOW_COMP_OPTION *value;
|
||||||
|
const char *comment;
|
||||||
|
enum db_type db_type;
|
||||||
|
handlerton *ht;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct show_table_alias_st {
|
||||||
|
const char *alias;
|
||||||
|
const char *type;
|
||||||
|
show_table_type_st *st;
|
||||||
|
};
|
||||||
|
|
||||||
/* Possible flags of a handlerton */
|
/* Possible flags of a handlerton */
|
||||||
#define HTON_NO_FLAGS 0
|
#define HTON_NO_FLAGS 0
|
||||||
#define HTON_CLOSE_CURSORS_AT_COMMIT 1
|
#define HTON_CLOSE_CURSORS_AT_COMMIT 1
|
||||||
|
|
Loading…
Add table
Reference in a new issue