summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoringo@mysql.com <>2005-01-26 15:51:46 +0100
committeringo@mysql.com <>2005-01-26 15:51:46 +0100
commitbbcd542917a2e467e6bf01cc6a5f21858e5c94e5 (patch)
tree529f781833794ea64fd20c882773a307e9bf1095
parentbe5dade8531b7ffcea72d1f05d30376f77854b43 (diff)
parent300337cee71bce88ae4197288c4dd78b77293c61 (diff)
downloadmariadb-git-bbcd542917a2e467e6bf01cc6a5f21858e5c94e5.tar.gz
Merge from 4.1
Archive fix by Ingo. Innodb compile fix by Monty.
-rwxr-xr-x[-rw-r--r--]BUILD/SETUP.sh8
-rwxr-xr-xBUILD/compile-pentium64-debug2
-rw-r--r--configure.in6
-rw-r--r--innobase/include/univ.i4
-rw-r--r--mysql-test/t/archive.test2
-rw-r--r--sql/examples/ha_archive.cc59
-rw-r--r--sql/examples/ha_archive.h4
-rw-r--r--sql/handler.cc14
8 files changed, 74 insertions, 25 deletions
diff --git a/BUILD/SETUP.sh b/BUILD/SETUP.sh
index fa20fd14571..215d7ba24b9 100644..100755
--- a/BUILD/SETUP.sh
+++ b/BUILD/SETUP.sh
@@ -25,7 +25,10 @@ Any other options will be passed directly to configure.
Note: this script is intended for internal use by MySQL developers.
EOF
--with-debug=full ) full_debug="=full"; shift ;;
- * ) break ;;
+ * )
+ echo "Unknown option '$1'"
+ exit 1
+ break ;;
esac
done
@@ -62,6 +65,7 @@ fast_cflags="-O3 -fno-omit-frame-pointer"
reckless_cflags="-O3 -fomit-frame-pointer "
debug_cflags="-DUNIV_MUST_NOT_INLINE -DEXTRA_DEBUG -DFORCE_INIT_OF_VARS -DSAFEMALLOC -DPEDANTIC_SAFEMALLOC -DSAFE_MUTEX"
+debug_extra_cflags="-O1 -Wuninitialized"
base_cxxflags="-felide-constructors -fno-exceptions -fno-rtti"
amd64_cxxflags="-DBIG_TABLES"
@@ -80,7 +84,7 @@ local_infile_configs="--enable-local-infile"
debug_configs="--with-debug$full_debug"
if [ -z "$full_debug" ]
then
- debug_cflags="$debug_cflags -O1 -Wuninitialized"
+ debug_cflags="$debug_cflags $debug_extra_cflags"
fi
if gmake --version > /dev/null 2>&1
diff --git a/BUILD/compile-pentium64-debug b/BUILD/compile-pentium64-debug
index 1bbca36d851..0299669f79a 100755
--- a/BUILD/compile-pentium64-debug
+++ b/BUILD/compile-pentium64-debug
@@ -1,7 +1,7 @@
#! /bin/sh
path=`dirname $0`
-. "$path/SETUP.sh"
+. "$path/SETUP.sh" $@ --with-debug=full
extra_flags="$pentium64_cflags $debug_cflags"
c_warnings="$c_warnings $debug_extra_warnings"
diff --git a/configure.in b/configure.in
index fbbf3918c45..8cf0c2c5e58 100644
--- a/configure.in
+++ b/configure.in
@@ -1678,12 +1678,12 @@ if test "$with_debug" = "yes"
then
# Medium debug.
CFLAGS="$DEBUG_CFLAGS $DEBUG_OPTIMIZE_CC -DDBUG_ON -DSAFE_MUTEX $CFLAGS"
- CXXFLAGS="$DEBUG_CXXFLAGS $DEBUG_OPTIMIZE_CXX -DSAFE_MUTEX $CXXFLAGS"
+ CXXFLAGS="$DEBUG_CXXFLAGS $DEBUG_OPTIMIZE_CXX -DDBUG_ON -DSAFE_MUTEX $CXXFLAGS"
elif test "$with_debug" = "full"
then
# Full debug. Very slow in some cases
- CFLAGS="$DEBUG_CFLAGS -DDBUG_ON -DSAFE_MUTEX -DSAFEMALLOC $CFLAGS"
- CXXFLAGS="$DEBUG_CXXFLAGS -DSAFE_MUTEX -DSAFEMALLOC $CXXFLAGS"
+ CFLAGS="$DEBUG_CFLAGS -DDBUG_ON -DSAFE_MUTEX -DSAFEMALLOC -DUNIV_DEBUG $CFLAGS"
+ CXXFLAGS="$DEBUG_CXXFLAGS -DDBUG_ON -DSAFE_MUTEX -DSAFEMALLOC -DUNIV_DEBUG $CXXFLAGS"
else
# Optimized version. No debug
CFLAGS="$OPTIMIZE_CFLAGS -DDBUG_OFF $CFLAGS"
diff --git a/innobase/include/univ.i b/innobase/include/univ.i
index 8158c198e21..5d1e8e208cd 100644
--- a/innobase/include/univ.i
+++ b/innobase/include/univ.i
@@ -80,6 +80,10 @@ memory is read outside the allocated blocks. */
/* Make a non-inline debug version */
+#ifdef DBUG_ON
+#define UNIV_DEBUG
+#endif /* DBUG_ON */
+
/*
#define UNIV_DEBUG
#define UNIV_MEM_DEBUG
diff --git a/mysql-test/t/archive.test b/mysql-test/t/archive.test
index 8cf54610914..f7ec603ca79 100644
--- a/mysql-test/t/archive.test
+++ b/mysql-test/t/archive.test
@@ -1,6 +1,6 @@
#
# Simple test for archive example
-# Taken fromm the select test
+# Taken from the select test
#
-- source include/have_archive.inc
diff --git a/sql/examples/ha_archive.cc b/sql/examples/ha_archive.cc
index dccff88bf1f..f0d0f617a5d 100644
--- a/sql/examples/ha_archive.cc
+++ b/sql/examples/ha_archive.cc
@@ -117,7 +117,6 @@
/* Variables for archive share methods */
pthread_mutex_t archive_mutex;
static HASH archive_open_tables;
-static int archive_init= 0;
/* The file extension */
#define ARZ ".ARZ" // The data file
@@ -143,6 +142,46 @@ static byte* archive_get_key(ARCHIVE_SHARE *share,uint *length,
return (byte*) share->table_name;
}
+
+/*
+ Initialize the archive handler.
+
+ SYNOPSIS
+ archive_db_init()
+ void
+
+ RETURN
+ FALSE OK
+ TRUE Error
+*/
+
+bool archive_db_init()
+{
+ VOID(pthread_mutex_init(&archive_mutex, MY_MUTEX_INIT_FAST));
+ return (hash_init(&archive_open_tables, system_charset_info, 32, 0, 0,
+ (hash_get_key) archive_get_key, 0, 0));
+}
+
+
+/*
+ Release the archive handler.
+
+ SYNOPSIS
+ archive_db_end()
+ void
+
+ RETURN
+ FALSE OK
+*/
+
+bool archive_db_end()
+{
+ hash_free(&archive_open_tables);
+ VOID(pthread_mutex_destroy(&archive_mutex));
+ return FALSE;
+}
+
+
/*
This method reads the header of a datafile and returns whether or not it was successful.
*/
@@ -269,23 +308,6 @@ ARCHIVE_SHARE *ha_archive::get_share(const char *table_name, TABLE *table)
uint length;
char *tmp_name;
- if (!archive_init)
- {
- /* Hijack a mutex for init'ing the storage engine */
- pthread_mutex_lock(&LOCK_mysql_create_db);
- if (!archive_init)
- {
- VOID(pthread_mutex_init(&archive_mutex,MY_MUTEX_INIT_FAST));
- if (hash_init(&archive_open_tables,system_charset_info,32,0,0,
- (hash_get_key) archive_get_key,0,0))
- {
- pthread_mutex_unlock(&LOCK_mysql_create_db);
- return NULL;
- }
- archive_init++;
- }
- pthread_mutex_unlock(&LOCK_mysql_create_db);
- }
pthread_mutex_lock(&archive_mutex);
length=(uint) strlen(table_name);
@@ -371,6 +393,7 @@ int ha_archive::free_share(ARCHIVE_SHARE *share)
(void)write_meta_file(share->meta_file, share->rows_recorded, FALSE);
if (gzclose(share->archive_write) == Z_ERRNO)
rc= 1;
+ my_close(share->meta_file,MYF(0));
my_free((gptr) share, MYF(0));
}
pthread_mutex_unlock(&archive_mutex);
diff --git a/sql/examples/ha_archive.h b/sql/examples/ha_archive.h
index 07bc7baa400..a511b5c67d6 100644
--- a/sql/examples/ha_archive.h
+++ b/sql/examples/ha_archive.h
@@ -105,3 +105,7 @@ public:
THR_LOCK_DATA **store_lock(THD *thd, THR_LOCK_DATA **to,
enum thr_lock_type lock_type);
};
+
+bool archive_db_init(void);
+bool archive_db_end(void);
+
diff --git a/sql/handler.cc b/sql/handler.cc
index b1b741dfee9..059d1feaed1 100644
--- a/sql/handler.cc
+++ b/sql/handler.cc
@@ -373,6 +373,16 @@ int ha_init()
opt_using_transactions=1;
}
#endif
+#ifdef HAVE_ARCHIVE_DB
+ if (have_archive_db == SHOW_OPTION_YES)
+ {
+ if (archive_db_init())
+ {
+ have_archive_db= SHOW_OPTION_DISABLED;
+ error= 1;
+ }
+ }
+#endif
return error;
}
@@ -404,6 +414,10 @@ int ha_panic(enum ha_panic_function flag)
if (have_ndbcluster == SHOW_OPTION_YES)
error|=ndbcluster_end();
#endif
+#ifdef HAVE_ARCHIVE_DB
+ if (have_archive_db == SHOW_OPTION_YES)
+ error|= archive_db_end();
+#endif
if (ha_finish_errors())
error= 1;
return error;