summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorunknown <paul@teton.kitebird.com>2004-03-02 09:25:21 -0600
committerunknown <paul@teton.kitebird.com>2004-03-02 09:25:21 -0600
commit9721346aebbc50dacae57f4c0b77d6757e66bc1a (patch)
tree327da3de392124091aeede2c29da02fa9faa79c0 /sql
parent8bdada3e44289789b076350198cccafb6b2de91b (diff)
parent8286684e26d1639b56c942e0cce6c238a11f2a92 (diff)
downloadmariadb-git-9721346aebbc50dacae57f4c0b77d6757e66bc1a.tar.gz
Merge paul@bk-internal.mysql.com:/home/bk/mysql-4.1
into teton.kitebird.com:/home/paul/mysql-4.1
Diffstat (limited to 'sql')
-rw-r--r--sql/ha_berkeley.cc2
-rw-r--r--sql/ha_berkeley.h2
-rw-r--r--sql/ha_innodb.cc3
-rw-r--r--sql/ha_innodb.h1
-rw-r--r--sql/ha_isam.cc1
-rw-r--r--sql/ha_isam.h1
-rw-r--r--sql/handler.cc76
-rw-r--r--sql/mysqld.cc20
-rw-r--r--sql/sql_show.cc2
9 files changed, 39 insertions, 69 deletions
diff --git a/sql/ha_berkeley.cc b/sql/ha_berkeley.cc
index 0dccab0c9d3..c056241fef8 100644
--- a/sql/ha_berkeley.cc
+++ b/sql/ha_berkeley.cc
@@ -72,7 +72,7 @@
#define STATUS_BDB_ANALYZE 4
const char *ha_berkeley_ext=".db";
-bool berkeley_skip=0,berkeley_shared_data=0;
+bool berkeley_shared_data=0;
u_int32_t berkeley_init_flags= DB_PRIVATE | DB_RECOVER, berkeley_env_flags=0,
berkeley_lock_type=DB_LOCK_DEFAULT;
ulong berkeley_cache_size, berkeley_log_buffer_size, berkeley_log_file_size=0;
diff --git a/sql/ha_berkeley.h b/sql/ha_berkeley.h
index aa0a7daeb43..581b50501e8 100644
--- a/sql/ha_berkeley.h
+++ b/sql/ha_berkeley.h
@@ -170,7 +170,7 @@ class ha_berkeley: public handler
uint8 table_cache_type() { return HA_CACHE_TBL_TRANSACT; }
};
-extern bool berkeley_skip, berkeley_shared_data;
+extern bool berkeley_shared_data;
extern u_int32_t berkeley_init_flags,berkeley_env_flags, berkeley_lock_type,
berkeley_lock_types[];
extern ulong berkeley_cache_size, berkeley_max_lock, berkeley_log_buffer_size;
diff --git a/sql/ha_innodb.cc b/sql/ha_innodb.cc
index 3d226e42d82..078238fe78f 100644
--- a/sql/ha_innodb.cc
+++ b/sql/ha_innodb.cc
@@ -80,7 +80,6 @@ extern "C" {
#define HA_INNOBASE_ROWS_IN_TABLE 10000 /* to get optimization right */
#define HA_INNOBASE_RANGE_COUNT 100
-bool innodb_skip = 0;
uint innobase_init_flags = 0;
ulong innobase_cache_size = 0;
@@ -4758,7 +4757,7 @@ innodb_show_status(
DBUG_ENTER("innodb_show_status");
- if (innodb_skip) {
+ if (have_innodb != SHOW_OPTION_YES) {
my_message(ER_NOT_SUPPORTED_YET,
"Cannot call SHOW INNODB STATUS because skip-innodb is defined",
MYF(0));
diff --git a/sql/ha_innodb.h b/sql/ha_innodb.h
index 229ca514eda..4efde3e95d2 100644
--- a/sql/ha_innodb.h
+++ b/sql/ha_innodb.h
@@ -190,7 +190,6 @@ class ha_innobase: public handler
uint8 table_cache_type() { return HA_CACHE_TBL_ASKTRANSACT; }
};
-extern bool innodb_skip;
extern uint innobase_init_flags, innobase_lock_type;
extern uint innobase_flush_log_at_trx_commit;
extern ulong innobase_cache_size;
diff --git a/sql/ha_isam.cc b/sql/ha_isam.cc
index 1763427e8d9..299d6caaf43 100644
--- a/sql/ha_isam.cc
+++ b/sql/ha_isam.cc
@@ -34,7 +34,6 @@
** isam tables
*****************************************************************************/
-bool isam_skip;
const char **ha_isam::bas_ext() const
{ static const char *ext[]= { ".ISM",".ISD", NullS }; return ext; }
diff --git a/sql/ha_isam.h b/sql/ha_isam.h
index 0b8619e5f33..129777e68e5 100644
--- a/sql/ha_isam.h
+++ b/sql/ha_isam.h
@@ -82,4 +82,3 @@ class ha_isam: public handler
enum thr_lock_type lock_type);
};
-extern bool isam_skip;
diff --git a/sql/handler.cc b/sql/handler.cc
index 5aa3967edb6..a81c43fc16c 100644
--- a/sql/handler.cc
+++ b/sql/handler.cc
@@ -120,34 +120,21 @@ const char *ha_get_storage_engine(enum db_type db_type)
enum db_type ha_checktype(enum db_type database_type)
{
+ show_table_type_st *types;
+ for (types= sys_table_types; types->type; types++)
+ {
+ if ((database_type == types->db_type) &&
+ (SHOW_OPTION_YES == *types->value))
+ return database_type;
+ }
+
switch (database_type) {
-#ifdef HAVE_BERKELEY_DB
- case DB_TYPE_BERKELEY_DB:
- if (berkeley_skip) break;
- return (database_type);
-#endif
-#ifdef HAVE_INNOBASE_DB
- case DB_TYPE_INNODB:
- if (innodb_skip) break;
- return (database_type);
-#endif
#ifndef NO_HASH
case DB_TYPE_HASH:
-#endif
-#ifdef HAVE_ISAM
- case DB_TYPE_ISAM:
- if (isam_skip) break;
return (database_type);
- case DB_TYPE_MRG_ISAM:
- return (isam_skip ? DB_TYPE_MRG_MYISAM : database_type);
-#else
+#endif
case DB_TYPE_MRG_ISAM:
return (DB_TYPE_MRG_MYISAM);
-#endif
- case DB_TYPE_HEAP:
- case DB_TYPE_MYISAM:
- case DB_TYPE_MRG_MYISAM:
- return (database_type); /* Database exists on system */
default:
break;
}
@@ -165,7 +152,8 @@ handler *get_new_handler(TABLE *table, enum db_type db_type)
{
switch (db_type) {
#ifndef NO_HASH
- return new ha_hash(table);
+ case DB_TYPE_HASH:
+ return new ha_hash(table);
#endif
#ifdef HAVE_ISAM
case DB_TYPE_MRG_ISAM:
@@ -203,30 +191,32 @@ handler *get_new_handler(TABLE *table, enum db_type db_type)
int ha_init()
{
+ int error= 0;
#ifdef HAVE_BERKELEY_DB
- if (!berkeley_skip)
+ if (have_berkeley_db == SHOW_OPTION_YES)
{
- int error;
- if ((error=berkeley_init()))
- return error;
- if (!berkeley_skip) // If we couldn't use handler
- opt_using_transactions=1;
+ if (berkeley_init())
+ {
+ have_berkeley_db= SHOW_OPTION_DISABLED; // If we couldn't use handler
+ error= 1;
+ }
else
- have_berkeley_db=SHOW_OPTION_DISABLED;
+ opt_using_transactions=1;
}
#endif
#ifdef HAVE_INNOBASE_DB
- if (!innodb_skip)
+ if (have_innodb == SHOW_OPTION_YES)
{
if (innobase_init())
- return -1;
- if (!innodb_skip) // If we couldn't use handler
- opt_using_transactions=1;
+ {
+ have_innodb= SHOW_OPTION_DISABLED; // If we couldn't use handler
+ error= 1;
+ }
else
- have_innodb=SHOW_OPTION_DISABLED;
+ opt_using_transactions=1;
}
#endif
- return 0;
+ return error;
}
/* close, flush or restart databases */
@@ -246,11 +236,11 @@ int ha_panic(enum ha_panic_function flag)
error|=mi_panic(flag);
error|=myrg_panic(flag);
#ifdef HAVE_BERKELEY_DB
- if (!berkeley_skip)
+ if (have_berkeley_db == SHOW_OPTION_YES)
error|=berkeley_end();
#endif
#ifdef HAVE_INNOBASE_DB
- if (!innodb_skip)
+ if (have_innodb == SHOW_OPTION_YES)
error|=innobase_end();
#endif
return error;
@@ -259,7 +249,7 @@ int ha_panic(enum ha_panic_function flag)
void ha_drop_database(char* path)
{
#ifdef HAVE_INNOBASE_DB
- if (!innodb_skip)
+ if (have_innodb == SHOW_OPTION_YES)
innobase_drop_database(path);
#endif
}
@@ -267,7 +257,7 @@ void ha_drop_database(char* path)
void ha_close_connection(THD* thd)
{
#ifdef HAVE_INNOBASE_DB
- if (!innodb_skip)
+ if (have_innodb == SHOW_OPTION_YES)
innobase_close_connection(thd);
#endif
}
@@ -632,11 +622,13 @@ bool ha_flush_logs()
{
bool result=0;
#ifdef HAVE_BERKELEY_DB
- if (!berkeley_skip && berkeley_flush_logs())
+ if ((have_berkeley_db == SHOW_OPTION_YES) &&
+ berkeley_flush_logs())
result=1;
#endif
#ifdef HAVE_INNOBASE_DB
- if (!innodb_skip && innobase_flush_logs())
+ if ((have_innodb == SHOW_OPTION_YES) &&
+ innobase_flush_logs())
result=1;
#endif
return result;
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index 5071cfaff6b..5b6c592cd51 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -2362,7 +2362,7 @@ static void create_maintenance_thread()
{
if (
#ifdef HAVE_BERKELEY_DB
- !berkeley_skip ||
+ (have_berkeley_db == SHOW_OPTION_YES) ||
#endif
(flush_time && flush_time != ~(ulong) 0L))
{
@@ -5532,43 +5532,25 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
case OPT_BDB:
#ifdef HAVE_BERKELEY_DB
if (opt_bdb)
- {
- berkeley_skip=0;
have_berkeley_db=SHOW_OPTION_YES;
- }
else
- {
- berkeley_skip=1;
have_berkeley_db=SHOW_OPTION_DISABLED;
- }
#endif
break;
case OPT_ISAM:
#ifdef HAVE_ISAM
if (opt_isam)
- {
- isam_skip=0;
have_isam= SHOW_OPTION_YES;
- }
else
- {
- isam_skip=1;
have_isam= SHOW_OPTION_DISABLED;
- }
#endif
break;
case OPT_INNODB:
#ifdef HAVE_INNOBASE_DB
if (opt_innodb)
- {
- innodb_skip=0;
have_innodb=SHOW_OPTION_YES;
- }
else
- {
- innodb_skip=1;
have_innodb=SHOW_OPTION_DISABLED;
- }
#endif
break;
case OPT_INNODB_DATA_FILE_PATH:
diff --git a/sql/sql_show.cc b/sql/sql_show.cc
index c169ea8952f..ff4ff43519a 100644
--- a/sql/sql_show.cc
+++ b/sql/sql_show.cc
@@ -921,7 +921,7 @@ mysqld_show_logs(THD *thd)
DBUG_RETURN(1);
#ifdef HAVE_BERKELEY_DB
- if (!berkeley_skip && berkeley_show_logs(protocol))
+ if ((have_berkeley_db == SHOW_OPTION_YES) && berkeley_show_logs(protocol))
DBUG_RETURN(-1);
#endif