summaryrefslogtreecommitdiff
path: root/sql/handler.cc
diff options
context:
space:
mode:
authorunknown <pem@mysql.com>2003-11-19 15:19:46 +0100
committerunknown <pem@mysql.com>2003-11-19 15:19:46 +0100
commit214ad8280394bac10ddaf6a4a837617214b09d7e (patch)
treee3ba11d4938f6675c5c72ee69cc88980a81ad705 /sql/handler.cc
parentb52b44f8970a93b45ebbd3b148cfefb1ec83bff7 (diff)
parentbd2263503d82958ced3fbf700ab4a7f9265e9dc5 (diff)
downloadmariadb-git-214ad8280394bac10ddaf6a4a837617214b09d7e.tar.gz
Merging 4.1->5.0.
BitKeeper/etc/ignore: auto-union BitKeeper/etc/logging_ok: auto-union BitKeeper/triggers/post-commit: Auto merged client/mysql.cc: Auto merged configure.in: Auto merged include/my_global.h: Auto merged include/my_pthread.h: Auto merged include/mysql_com.h: Auto merged libmysql/libmysql.c: Auto merged libmysqld/Makefile.am: Auto merged libmysqld/lib_sql.cc: Auto merged myisam/mi_check.c: Auto merged myisam/myisamchk.c: Auto merged myisam/myisamdef.h: Auto merged mysql-test/r/rpl_temporary.result: Auto merged mysql-test/r/show_check.result: Auto merged mysql-test/r/subselect.result: Auto merged mysql-test/r/variables.result: Auto merged mysql-test/t/subselect.test: Auto merged mysql-test/t/variables.test: Auto merged scripts/mysql_install_db.sh: Auto merged sql/Makefile.am: Auto merged sql/ha_berkeley.cc: Auto merged sql/ha_innodb.cc: Auto merged sql/ha_myisam.cc: Auto merged sql/handler.cc: Auto merged sql/handler.h: Auto merged sql/item_subselect.cc: Auto merged sql/item_sum.cc: Auto merged sql/item_sum.h: Auto merged sql/mysql_priv.h: Auto merged sql/mysqld.cc: Auto merged sql/slave.cc: Auto merged sql/sql_acl.cc: Auto merged sql/sql_base.cc: Auto merged sql/sql_cache.cc: Auto merged sql/sql_db.cc: Auto merged sql/sql_delete.cc: Auto merged sql/sql_lex.cc: Auto merged sql/sql_prepare.cc: Auto merged sql/sql_repl.cc: Auto merged sql/sql_show.cc: Auto merged sql/sql_table.cc: Auto merged sql/sql_union.cc: Auto merged sql/sql_update.cc: Auto merged sql/table.h: Auto merged
Diffstat (limited to 'sql/handler.cc')
-rw-r--r--sql/handler.cc47
1 files changed, 43 insertions, 4 deletions
diff --git a/sql/handler.cc b/sql/handler.cc
index 56db355f45e..96444f97da8 100644
--- a/sql/handler.cc
+++ b/sql/handler.cc
@@ -70,6 +70,37 @@ const char *tx_isolation_names[] =
TYPELIB tx_isolation_typelib= {array_elements(tx_isolation_names)-1,"",
tx_isolation_names};
+enum db_type ha_resolve_by_name(char *name, uint namelen)
+{
+ enum db_type result = DB_TYPE_UNKNOWN;
+ if (!my_strcasecmp(&my_charset_latin1, name, "HEAP") ||
+ !my_strcasecmp(&my_charset_latin1, name, "MEMORY")) {
+ result = DB_TYPE_HEAP;
+ } else
+ if (!my_strcasecmp(&my_charset_latin1, name, "MRG_MYISAM") ||
+ !my_strcasecmp(&my_charset_latin1, name, "MERGE")) {
+ result = DB_TYPE_MRG_MYISAM;
+ } else
+ if (!my_strcasecmp(&my_charset_latin1, name, "MYISAM")) {
+ result = DB_TYPE_MYISAM;
+ } else
+ if (!my_strcasecmp(&my_charset_latin1, name, "BDB") ||
+ !my_strcasecmp(&my_charset_latin1, name, "BERKELEYDB")) {
+ result = DB_TYPE_BERKELEY_DB;
+ } else
+ if (!my_strcasecmp(&my_charset_latin1, name, "INNODB") ||
+ !my_strcasecmp(&my_charset_latin1, name, "INNOBASE")) {
+ result = DB_TYPE_INNODB;
+ } else
+ if (!my_strcasecmp(&my_charset_latin1, name, "ISAM")) {
+ result = DB_TYPE_ISAM;
+ } else
+ if (!my_strcasecmp(&my_charset_latin1, name, "DEFAULT")) {
+ result = (enum db_type) current_thd->variables.table_type;
+ }
+ return result;
+}
+
/* Use other database handler if databasehandler is not incompiled */
enum db_type ha_checktype(enum db_type database_type)
@@ -77,18 +108,21 @@ enum db_type ha_checktype(enum db_type database_type)
switch (database_type) {
#ifdef HAVE_BERKELEY_DB
case DB_TYPE_BERKELEY_DB:
- return(berkeley_skip ? DB_TYPE_MYISAM : database_type);
+ if (berkeley_skip) break;
+ return (database_type);
#endif
#ifdef HAVE_INNOBASE_DB
case DB_TYPE_INNODB:
- return(innodb_skip ? DB_TYPE_MYISAM : database_type);
+ if (innodb_skip) break;
+ return (database_type);
#endif
#ifndef NO_HASH
case DB_TYPE_HASH:
#endif
#ifdef HAVE_ISAM
case DB_TYPE_ISAM:
- return (isam_skip ? DB_TYPE_MYISAM : database_type);
+ if (isam_skip) break;
+ return (database_type);
case DB_TYPE_MRG_ISAM:
return (isam_skip ? DB_TYPE_MRG_MYISAM : database_type);
#else
@@ -102,7 +136,12 @@ enum db_type ha_checktype(enum db_type database_type)
default:
break;
}
- return(DB_TYPE_MYISAM); /* Use this as default */
+ /* Use this as default */
+#if 0
+ return((enum db_type) current_thd->variables.table_type);
+#else
+ return(DB_TYPE_MYISAM);
+#endif
} /* ha_checktype */