mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
Merge from 4.1
Archive fix by Ingo. Innodb compile fix by Monty. configure.in: Auto merged innobase/include/univ.i: Auto merged BUILD/SETUP.sh: Auto merged mysql-test/t/archive.test: Auto merged sql/examples/ha_archive.cc: Auto merged sql/examples/ha_archive.h: Auto merged sql/handler.cc: Auto merged sql/sql_select.cc: Auto merged innobase/fil/fil0fil.c: Merged Montys fix.
This commit is contained in:
commit
01e8459895
8 changed files with 74 additions and 25 deletions
8
BUILD/SETUP.sh
Normal file → Executable file
8
BUILD/SETUP.sh
Normal file → Executable file
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#
|
||||
# Simple test for archive example
|
||||
# Taken fromm the select test
|
||||
# Taken from the select test
|
||||
#
|
||||
-- source include/have_archive.inc
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -372,6 +372,16 @@ int ha_init()
|
|||
else
|
||||
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;
|
||||
}
|
||||
|
@ -403,6 +413,10 @@ int ha_panic(enum ha_panic_function flag)
|
|||
#ifdef HAVE_NDBCLUSTER_DB
|
||||
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;
|
||||
|
|
Loading…
Reference in a new issue