summaryrefslogtreecommitdiff
path: root/sql/ha_berkeley.cc
diff options
context:
space:
mode:
authorunknown <brian@zim.(none)>2005-10-03 21:09:01 -0700
committerunknown <brian@zim.(none)>2005-10-03 21:09:01 -0700
commit5362ca276c6f871ca08710fa1d5a0baa43309713 (patch)
treed93e8b84b71a21fb41e696c41bfd0595d280b63d /sql/ha_berkeley.cc
parenta454c695d39b8b84abe7199924291da1219665e3 (diff)
parented35cecdccff8eb8be7e606c1611946937623f88 (diff)
downloadmariadb-git-5362ca276c6f871ca08710fa1d5a0baa43309713.tar.gz
Merge baker@bk-internal.mysql.com:/home/bk/mysql-5.0
into zim.(none):/home/brian/mysql/fix-5.0 sql/ha_berkeley.cc: Auto merged sql/ha_berkeley.h: Auto merged sql/ha_innodb.cc: Auto merged sql/ha_innodb.h: Auto merged sql/ha_ndbcluster.cc: Auto merged sql/ha_ndbcluster.h: Auto merged sql/handler.h: Auto merged sql/mysql_priv.h: Auto merged
Diffstat (limited to 'sql/ha_berkeley.cc')
-rw-r--r--sql/ha_berkeley.cc18
1 files changed, 14 insertions, 4 deletions
diff --git a/sql/ha_berkeley.cc b/sql/ha_berkeley.cc
index a4c91c72368..7cbb4e90452 100644
--- a/sql/ha_berkeley.cc
+++ b/sql/ha_berkeley.cc
@@ -109,6 +109,10 @@ static int berkeley_rollback(THD *thd, bool all);
handlerton berkeley_hton = {
"BerkeleyDB",
+ SHOW_OPTION_YES,
+ "Supports transactions and page-level locking",
+ DB_TYPE_BERKELEY_DB,
+ berkeley_init,
0, /* slot */
0, /* savepoint size */
berkeley_close_connection,
@@ -135,10 +139,13 @@ typedef struct st_berkeley_trx_data {
/* General functions */
-handlerton *berkeley_init(void)
+bool berkeley_init(void)
{
DBUG_ENTER("berkeley_init");
+ if (have_berkeley_db != SHOW_OPTION_YES)
+ goto error;
+
if (!berkeley_tmpdir)
berkeley_tmpdir=mysql_tmpdir;
if (!berkeley_home)
@@ -164,7 +171,7 @@ handlerton *berkeley_init(void)
berkeley_log_file_size= max(berkeley_log_file_size, 10*1024*1024L);
if (db_env_create(&db_env,0))
- DBUG_RETURN(0);
+ goto error;
db_env->set_errcall(db_env,berkeley_print_error);
db_env->set_errpfx(db_env,"bdb");
db_env->set_noticecall(db_env, berkeley_noticecall);
@@ -194,13 +201,16 @@ handlerton *berkeley_init(void)
{
db_env->close(db_env,0);
db_env=0;
- DBUG_RETURN(0);
+ goto error;
}
(void) hash_init(&bdb_open_tables,system_charset_info,32,0,0,
(hash_get_key) bdb_get_key,0,0);
pthread_mutex_init(&bdb_mutex,MY_MUTEX_INIT_FAST);
- DBUG_RETURN(&berkeley_hton);
+ DBUG_RETURN(FALSE);
+error:
+ have_berkeley_db= SHOW_OPTION_DISABLED; // If we couldn't use handler
+ DBUG_RETURN(TRUE);
}