Commit ef68a99a authored by Satya B's avatar Satya B

Applying InnoDB Plugin 1.0.5 snapshot, part 13

1. Undo r6031 btr/btr0btr.c changes

2. apply skipped Plug.in changes and missed revisions

Detailed revision comments:

r5865 | vasil | 2009-09-12 02:26:03 -0500 (Sat, 12 Sep 2009) | 10 lines
branches/zip:

Simplify the compile time checks by splittig them into 5 independent checks:

* Whether GCC atomics are available
* Whether pthread_t can be used by GCC atomics
* Whether Solaris libc atomics are available
* Whether pthread_t can be used by Solaris libs atomics
* Checking the size of pthread_t

r5869 | vasil | 2009-09-12 03:33:11 -0500 (Sat, 12 Sep 2009) | 15 lines
branches/zip:

Include ut0auxconf.h only if none of the macros it would define is defined.
The check when to include this header was outdated from the time when there
was only one macro involved.

Move the atomics checks that are in univ.i outside of
#if windows ... #else ... #endif
This simplifies the code and removes some duplicates like defining
HAVE_ATOMIC_BUILTINS if HAVE_WINDOWS_ATOMICS is defined in both branches.

Do not define the same macro HAVE_ATOMIC_PTHREAD_T for different events.
Instead define HAVE_IB_ATOMIC_PTHREAD_T_GCC and
HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS.

r5871 | vasil | 2009-09-12 04:25:44 -0500 (Sat, 12 Sep 2009) | 6 lines
branches/zip:

Rename HAVE_SOLARIS_ATOMICS to HAVE_IB_SOLARIS_ATOMICS and 
IB_HAVE_PAUSE_INSTRUCTION to HAVE_IB_PAUSE_INSTRUCTION so they
all follow the same HAVE_IB_* convention.

r5888 | vasil | 2009-09-14 03:38:45 -0500 (Mon, 14 Sep 2009) | 40 lines
branches/zip:

Back-merge c5880 and c5881 from branches/embedded-1.0:

  ------------------------------------------------------------------------
  r5880 | vasil | 2009-09-12 17:28:44 +0300 (Sat, 12 Sep 2009) | 18 lines
  Changed paths:
     M /branches/embedded-1.0/configure.in
     M /branches/embedded-1.0/include/os0sync.h
     M /branches/embedded-1.0/srv/srv0start.c
  
  branches/embedded-1.0:
  
  Clean up and simplify the code that surrounds the atomic ops:
  
  * Simplify the code that prints what atomics are used:
  Instead of repeating the same conditions on which each atomics are used
  use just one printf that prints a variable defined by the code which
  chooses what atomics to use.
  
  * In os0sync.h pick up each atomic variant only if it has been selected
  by autoconf (based on IB_ATOMIC_MODE_* macros). Define the startup message
  to be printed.
  
  * In configure.in: check what user has chosen and if he has chosen
  something that is not available, emit an error. If nothing has been chosen
  explicitly by the user, auto select an option according to the described
  logic in configure.in.
  
  ------------------------------------------------------------------------
  r5881 | vasil | 2009-09-12 20:08:27 +0300 (Sat, 12 Sep 2009) | 4 lines
  Changed paths:
     M /branches/embedded-1.0/configure.in
  
  branches/embedded-1.0:
  
  Fix syntax error in test program.
  
  ------------------------------------------------------------------------

r5889 | vasil | 2009-09-14 04:17:18 -0500 (Mon, 14 Sep 2009) | 5 lines
branches/zip:

Add missing return statement in the test program that could have
caused a warning.

r5893 | inaam | 2009-09-14 10:20:48 -0500 (Mon, 14 Sep 2009) | 10 lines
branches/zip  rb://159

In case of pages that are not made young the counter is incremented
only when the page in question is 'old'. In case of pages that are
made young the counter is incremented in case of all pages. For apple
to apple comparison this patch changes the 'young-making' counter to
consider only 'old' blocks.

Approved by: Marko

r5537 | vasil | 2009-07-21 04:31:26 -0500 (Tue, 21 Jul 2009) | 5 lines
branches/zip:

Fixups in ChangeLog: sort filenames alphabetically and wrap to 78 chars per
line.
r5870 | vasil | 2009-09-12 04:13:44 -0500 (Sat, 12 Sep 2009) | 7 lines
branches/zip:

Define HAVE_ATOMIC_BUILTINS and INNODB_RW_LOCKS_USE_ATOMICS in os0sync.h
instead of in univ.i. The code expects os_*() macros to be present if
HAVE_ATOMIC_BUILTINS and INNODB_RW_LOCKS_USE_ATOMICS are defined. So define
them next to defining the os_*() macros.

r5696 | vasil | 2009-08-26 08:15:59 -0500 (Wed, 26 Aug 2009) | 14 lines
branches/zip:

Merge a change from MySQL:

 http://lists.mysql.com/commits/80832

 2968 Jonathan Perkin	2009-08-14
      Build fixes for Windows, AIX, HP/UX and Sun Studio11, from Timothy Smith.
      modified:
        CMakeLists.txt
        cmd-line-utils/readline/util.c
        storage/innodb_plugin/handler/i_s.cc
        storage/innodb_plugin/include/univ.i

r5897 | marko | 2009-09-15 03:29:00 -0500 (Tue, 15 Sep 2009) | 8 lines
branches/zip: Avoid bogus messages about latching order violations when
UNIV_SYNC_DEBUG is defined.

sync_thread_levels_g(): Add the parameter "warn".  Do not print
anything unless it is set.

sync_thread_add_level(): Pass warn=TRUE to sync_thread_levels_g()
when the check is within an assertion; FALSE if it is not.

r5899 | marko | 2009-09-15 06:26:01 -0500 (Tue, 15 Sep 2009) | 4 lines
branches/zip: ut0ut.h: Do not #include "os0sync.h" #ifdef UNIV_HOTBACKUP.
Since r5872, the InnoDB Hot Backup build was broken.
Fix it by not defining any thread synchronization primitives in ut0ut.h.
InnoDB Hot Backup is a single-threaded program.
parent e011c02e
......@@ -42,10 +42,10 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
# Removing compiler optimizations for innodb/mem/* files on 64-bit Windows
# due to 64-bit compiler error, See MySQL Bug #19424, #36366, #34297
IF(MSVC AND $(WIN64))
IF (MSVC AND $(WIN64))
SET_SOURCE_FILES_PROPERTIES(mem/mem0mem.c mem/mem0pool.c
PROPERTIES COMPILE_FLAGS -Od)
ENDIF(MSVC AND $(WIN64))
ENDIF (MSVC AND $(WIN64))
SET(INNODB_PLUGIN_SOURCES btr/btr0btr.c btr/btr0cur.c btr/btr0pcur.c btr/btr0sea.c
buf/buf0buddy.c buf/buf0buf.c buf/buf0flu.c buf/buf0lru.c buf/buf0rea.c
......@@ -83,16 +83,17 @@ SET(INNODB_PLUGIN_SOURCES btr/btr0btr.c btr/btr0cur.c btr/btr0pcur.c btr/btr0sea
ADD_DEFINITIONS(-DHAVE_WINDOWS_ATOMICS -DINNODB_RW_LOCKS_USE_ATOMICS -DIB_HAVE_PAUSE_INSTRUCTION)
MYSQL_STORAGE_ENGINE(INNODB_PLUGIN)
IF (MYSQL_VERSION_ID GREATER "50137")
IF (WITH_INNOBASE_STORAGE_ENGINE)
MYSQL_STORAGE_ENGINE(INNOBASE)
ELSE (WITH_INNOBASE_STORAGE_ENGINE)
SET (INNODB_SOURCES ${INNOBASE_SOURCES})
MYSQL_STORAGE_ENGINE(INNODB)
ENDIF (WITH_INNOBASE_STORAGE_ENGINE)
IF (WITH_INNOBASE_STORAGE_ENGINE)
MYSQL_STORAGE_ENGINE(INNOBASE)
ELSE (WITH_INNOBASE_STORAGE_ENGINE)
SET (INNODB_SOURCES ${INNOBASE_SOURCES})
MYSQL_STORAGE_ENGINE(INNODB)
ENDIF (WITH_INNOBASE_STORAGE_ENGINE)
ELSE (MYSQL_VERSION_ID GREATER "50137")
IF (NOT SOURCE_SUBLIBS)
ADD_DEFINITIONS(-D_WIN32 -DMYSQL_SERVER)
ADD_LIBRARY(innobase STATIC ${INNOBASE_SOURCES})
# Require mysqld_error.h, which is built as part of the GenError
ADD_DEPENDENCIES(innobase GenError)
ENDIF (NOT SOURCE_SUBLIBS)
IF (NOT SOURCE_SUBLIBS)
ADD_DEFINITIONS(-D_WIN32 -DMYSQL_SERVER)
ADD_LIBRARY(innobase STATIC ${INNOBASE_SOURCES})
# Require mysqld_error.h, which is built as part of the GenError
ADD_DEPENDENCIES(innobase GenError)
ENDIF (NOT SOURCE_SUBLIBS)
ENDIF (MYSQL_VERSION_ID GREATER "50137")
......@@ -146,7 +146,8 @@
2009-07-20 The InnoDB Team
* handler/ha_innodb.cc, buf/buf0rea.c, include/srv0srv.h, srv/srv0srv.c
* buf/buf0rea.c, handler/ha_innodb.cc, include/srv0srv.h,
srv/srv0srv.c:
Change the read ahead parameter name to innodb_read_ahead_threshold.
Change the meaning of this parameter to signify the number of pages
that must be sequentially accessed for InnoDB to trigger a readahead
......@@ -161,8 +162,8 @@
* include/univ.i:
Support inlining of functions and prefetch with Sun Studio.
These changes are based on contribution from
Sun Microsystems Inc. under a BSD license.
These changes are based on contribution from Sun Microsystems Inc.
under a BSD license.
2009-07-14 The InnoDB Team
......@@ -185,9 +186,9 @@
2009-07-08 The InnoDB Team
* srv/srv0srv.c, buf/buf0flu.c, handler/ha_innodb.cc,
include/srv0srv.h, include/log0log.ic, include/buf0flu.h,
include/log0log.h:
* buf/buf0flu.c, handler/ha_innodb.cc, include/buf0flu.h,
include/log0log.h, include/log0log.ic, include/srv0srv.h,
srv/srv0srv.c:
Implement the adaptive flushing of dirty pages, which uses
a heuristics based flushing rate of dirty pages to avoid IO
bursts at checkpoint. Expose new configure knob
......@@ -196,8 +197,8 @@
2009-07-07 The InnoDB Team
* srv/srv0srv.c, handler/ha_innodb.cc, log/log0log.c,
include/srv0srv.h:
* handler/ha_innodb.cc, include/srv0srv.h, log/log0log.c,
srv/srv0srv.c:
Implement IO capacity tuning. Expose new configure knob
innodb_io_capacity to control the master threads IO rate. The
ibuf merge is also changed from synchronous to asynchronous.
......@@ -234,13 +235,12 @@
* handler/handler0alter.cc:
Start the user transaction prebuilt->trx if it was not started
before adding or dropping an index. Without this fix, the
before adding or dropping an index. Without this fix, the
table could be locked outside an active transaction.
2009-06-25 The InnoDB Team
* handler/ha_innodb.cc,
mysql-test/innodb_bug42101.test,
* handler/ha_innodb.cc, mysql-test/innodb_bug42101.test,
mysql-test/innodb_bug42101.result,
mysql-test/innodb_bug42101-nonzero.test,
mysql-test/innodb_bug42101-nonzero.result:
......
......@@ -41,7 +41,6 @@ Created 6/2/1994 Heikki Tuuri
#include "lock0lock.h"
#include "ibuf0ibuf.h"
#include "trx0trx.h"
#include "log0log.h"
/*
Latching strategy of the InnoDB B-tree
......@@ -874,8 +873,6 @@ leaf_loop:
goto leaf_loop;
}
log_write_up_to(mtr.end_lsn, LOG_WAIT_ALL_GROUPS, TRUE);
top_loop:
mtr_start(&mtr);
......
......@@ -1273,7 +1273,10 @@ buf_LRU_make_block_young(
buf_page_t* bpage) /*!< in: control block */
{
ut_ad(buf_pool_mutex_own());
buf_pool->stat.n_pages_made_young++;
if (bpage->old) {
buf_pool->stat.n_pages_made_young++;
}
buf_LRU_remove_block(bpage);
buf_LRU_add_block_low(bpage, FALSE);
......
/*****************************************************************************
Copyright (c) 2008, 2009, Innobase Oy. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
*****************************************************************************/
/*******************************************************************//**
@file handler/handler0vars.h
This file contains accessor functions for dynamic plugin on Windows.
***********************************************************************/
#if defined __WIN__ && defined MYSQL_DYNAMIC_PLUGIN
/*******************************************************************//**
This is a list of externals that can not be resolved by delay loading.
They have to be resolved indirectly via their addresses in the .map file.
All of them are external variables. */
extern CHARSET_INFO* wdl_my_charset_bin;
extern CHARSET_INFO* wdl_my_charset_latin1;
extern CHARSET_INFO* wdl_my_charset_filename;
extern CHARSET_INFO** wdl_system_charset_info;
extern CHARSET_INFO** wdl_default_charset_info;
extern CHARSET_INFO** wdl_all_charsets;
extern system_variables* wdl_global_system_variables;
extern char* wdl_mysql_real_data_home;
extern char** wdl_mysql_data_home;
extern char** wdl_tx_isolation_names;
extern char** wdl_binlog_format_names;
extern char* wdl_reg_ext;
extern pthread_mutex_t* wdl_LOCK_thread_count;
extern key_map* wdl_key_map_full;
extern MY_TMPDIR* wdl_mysql_tmpdir_list;
extern bool* wdl_mysqld_embedded;
extern uint* wdl_lower_case_table_names;
extern ulong* wdl_specialflag;
extern int* wdl_my_umask;
#define my_charset_bin (*wdl_my_charset_bin)
#define my_charset_latin1 (*wdl_my_charset_latin1)
#define my_charset_filename (*wdl_my_charset_filename)
#define system_charset_info (*wdl_system_charset_info)
#define default_charset_info (*wdl_default_charset_info)
#define all_charsets (wdl_all_charsets)
#define global_system_variables (*wdl_global_system_variables)
#define mysql_real_data_home (wdl_mysql_real_data_home)
#define mysql_data_home (*wdl_mysql_data_home)
#define tx_isolation_names (wdl_tx_isolation_names)
#define binlog_format_names (wdl_binlog_format_names)
#define reg_ext (wdl_reg_ext)
#define LOCK_thread_count (*wdl_LOCK_thread_count)
#define key_map_full (*wdl_key_map_full)
#define mysql_tmpdir_list (*wdl_mysql_tmpdir_list)
#define mysqld_embedded (*wdl_mysqld_embedded)
#define lower_case_table_names (*wdl_lower_case_table_names)
#define specialflag (*wdl_specialflag)
#define my_umask (*wdl_my_umask)
#endif
......@@ -69,14 +69,16 @@ do { \
#define STRUCT_FLD(name, value) value
#endif
static const ST_FIELD_INFO END_OF_ST_FIELD_INFO =
{STRUCT_FLD(field_name, NULL),
STRUCT_FLD(field_length, 0),
STRUCT_FLD(field_type, MYSQL_TYPE_NULL),
STRUCT_FLD(value, 0),
STRUCT_FLD(field_flags, 0),
STRUCT_FLD(old_name, ""),
STRUCT_FLD(open_method, SKIP_OPEN_TABLE)};
/* Don't use a static const variable here, as some C++ compilers (notably
HPUX aCC: HP ANSI C++ B3910B A.03.65) can't handle it. */
#define END_OF_ST_FIELD_INFO \
{STRUCT_FLD(field_name, NULL), \
STRUCT_FLD(field_length, 0), \
STRUCT_FLD(field_type, MYSQL_TYPE_NULL), \
STRUCT_FLD(value, 0), \
STRUCT_FLD(field_flags, 0), \
STRUCT_FLD(old_name, ""), \
STRUCT_FLD(open_method, SKIP_OPEN_TABLE)}
/*
Use the following types mapping:
......
This diff is collapsed.
......@@ -285,7 +285,7 @@ os_fast_mutex_free(
/**********************************************************//**
Atomic compare-and-swap and increment for InnoDB. */
#ifdef HAVE_IB_GCC_ATOMIC_BUILTINS
#if defined(HAVE_IB_GCC_ATOMIC_BUILTINS)
#define HAVE_ATOMIC_BUILTINS
......@@ -306,6 +306,11 @@ compare to, new_val is the value to swap in. */
# define os_compare_and_swap_thread_id(ptr, old_val, new_val) \
os_compare_and_swap(ptr, old_val, new_val)
# define INNODB_RW_LOCKS_USE_ATOMICS
# define IB_ATOMICS_STARTUP_MSG \
"Mutexes and rw_locks use GCC atomic builtins"
# else /* HAVE_IB_ATOMIC_PTHREAD_T_GCC */
# define IB_ATOMICS_STARTUP_MSG \
"Mutexes use GCC atomic builtins, rw_locks do not"
# endif /* HAVE_IB_ATOMIC_PTHREAD_T_GCC */
/**********************************************************//**
......@@ -356,7 +361,12 @@ compare to, new_val is the value to swap in. */
# else
# error "SIZEOF_PTHREAD_T != 4 or 8"
# endif /* SIZEOF_PTHREAD_T CHECK */
# define INNODB_RW_LOCKS_USE_ATOMICS
# define INNODB_RW_LOCKS_USE_ATOMICS
# define IB_ATOMICS_STARTUP_MSG \
"Mutexes and rw_locks use Solaris atomic functions"
# else /* HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS */
# define IB_ATOMICS_STARTUP_MSG \
"Mutexes use Solaris atomic functions, rw_locks do not"
# endif /* HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS */
/**********************************************************//**
......@@ -401,6 +411,9 @@ compare to, new_val is the value to swap in. */
/* windows thread objects can always be passed to windows atomic functions */
# define os_compare_and_swap_thread_id(ptr, old_val, new_val) \
(InterlockedCompareExchange(ptr, new_val, old_val) == old_val)
# define INNODB_RW_LOCKS_USE_ATOMICS
# define IB_ATOMICS_STARTUP_MSG \
"Mutexes and rw_locks use Windows interlocked functions"
/**********************************************************//**
Returns the resulting value, ptr is pointer to target, amount is the
......@@ -420,6 +433,9 @@ clobbered */
# define os_atomic_test_and_set_byte(ptr, new_val) \
((byte) InterlockedExchange(ptr, new_val))
#else
# define IB_ATOMICS_STARTUP_MSG \
"Mutexes and rw_locks use InnoDB's own implementation"
#endif
#ifndef UNIV_NONINL
......
......@@ -395,7 +395,8 @@ it is read. */
it is read or written. */
# define UNIV_PREFETCH_RW(addr) __builtin_prefetch(addr, 1, 3)
/* Sun Studio includes sun_prefetch.h as of version 5.9 */
#elif (defined(__SUNPRO_C) && __SUNPRO_C >= 0x590) || (defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x590)
#elif (defined(__SUNPRO_C) && __SUNPRO_C >= 0x590) \
|| (defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x590)
# include <sun_prefetch.h>
#if __SUNPRO_C >= 0x550
# undef UNIV_INTERN
......
......@@ -35,7 +35,9 @@ Created 1/20/1994 Heikki Tuuri
#include "univ.i"
#include "os0sync.h" /* for HAVE_ATOMIC_BUILTINS */
#ifndef UNIV_HOTBACKUP
# include "os0sync.h" /* for HAVE_ATOMIC_BUILTINS */
#endif /* UNIV_HOTBACKUP */
#include <time.h>
#ifndef MYSQL_SERVER
......@@ -50,6 +52,7 @@ Created 1/20/1994 Heikki Tuuri
/** Time stamp */
typedef time_t ib_time_t;
#ifndef UNIV_HOTBACKUP
#if defined(HAVE_IB_PAUSE_INSTRUCTION)
# ifdef WIN32
/* In the Win32 API, the x86 PAUSE instruction is executed by calling
......@@ -87,6 +90,7 @@ do { \
os_thread_sleep(2000 /* 2 ms */); \
} \
} while (0)
#endif /* !UNIV_HOTBACKUP */
/********************************************************//**
Gets the high 32 bits in a ulint. That is makes a shift >> 32,
......
......@@ -37,27 +37,16 @@ MYSQL_PLUGIN_ACTIONS(innodb_plugin, [
irix*|osf*|sysv5uw7*|openbsd*)
CFLAGS="$CFLAGS -DUNIV_MUST_NOT_INLINE";;
*solaris*|*SunOS*)
# Begin Solaris atomic function checks
AC_CHECK_FUNCS(atomic_cas_ulong atomic_cas_32 \
atomic_cas_64 atomic_add_long,
AC_DEFINE(
[HAVE_SOLARIS_ATOMICS],
[1],
[Define to 1 if Solaris supports \
atomic functions.]))
### End Solaris atomic function checks
CFLAGS="$CFLAGS -DUNIV_SOLARIS";;
esac
INNODB_DYNAMIC_CFLAGS="-DMYSQL_DYNAMIC_PLUGIN"
case "$target_cpu---$target_os" in
x86_64---*)
case "$target_cpu" in
x86_64)
# The AMD64 ABI forbids absolute addresses in shared libraries
;;
*---solaris*|*---SunOS*)
# Shared objects must be linked from PIC code on Solaris.
;;
*86---)
*86)
# Use absolute addresses on IA-32
INNODB_DYNAMIC_CFLAGS="$INNODB_DYNAMIC_CFLAGS -prefer-non-pic"
;;
......@@ -65,6 +54,7 @@ MYSQL_PLUGIN_ACTIONS(innodb_plugin, [
AC_SUBST(INNODB_DYNAMIC_CFLAGS)
AC_MSG_CHECKING(whether GCC atomic builtins are available)
# either define HAVE_IB_GCC_ATOMIC_BUILTINS or not
AC_TRY_RUN(
[
int main()
......@@ -115,6 +105,7 @@ MYSQL_PLUGIN_ACTIONS(innodb_plugin, [
)
AC_MSG_CHECKING(whether pthread_t can be used by GCC atomic builtins)
# either define HAVE_IB_ATOMIC_PTHREAD_T_GCC or not
AC_TRY_RUN(
[
#include <pthread.h>
......@@ -135,7 +126,7 @@ MYSQL_PLUGIN_ACTIONS(innodb_plugin, [
}
],
[
AC_DEFINE([HAVE_ATOMIC_PTHREAD_T], [1],
AC_DEFINE([HAVE_IB_ATOMIC_PTHREAD_T_GCC], [1],
[pthread_t can be used by GCC atomic builtins])
AC_MSG_RESULT(yes)
],
......@@ -144,38 +135,64 @@ MYSQL_PLUGIN_ACTIONS(innodb_plugin, [
]
)
# Try using solaris atomics on SunOS if GCC atomics are not available
AC_CHECK_DECLS(
[HAVE_ATOMIC_PTHREAD_T],
AC_MSG_CHECKING(whether Solaris libc atomic functions are available)
# either define HAVE_IB_SOLARIS_ATOMICS or not
AC_CHECK_FUNCS(atomic_add_long \
atomic_cas_32 \
atomic_cas_64 \
atomic_cas_ulong,
AC_DEFINE([HAVE_IB_SOLARIS_ATOMICS], [1],
[Define to 1 if Solaris libc atomic functions \
are available])
)
AC_MSG_CHECKING(whether pthread_t can be used by Solaris libc atomic functions)
# either define HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS or not
AC_TRY_RUN(
[
AC_MSG_NOTICE(no need to check pthread_t size)
#include <pthread.h>
#include <string.h>
int main(int argc, char** argv) {
pthread_t x1;
pthread_t x2;
pthread_t x3;
memset(&x1, 0x0, sizeof(x1));
memset(&x2, 0x0, sizeof(x2));
memset(&x3, 0x0, sizeof(x3));
if (sizeof(pthread_t) == 4) {
atomic_cas_32(&x1, x2, x3);
} else if (sizeof(pthread_t) == 8) {
atomic_cas_64(&x1, x2, x3);
} else {
return(1);
}
return(0);
}
],
[
AC_CHECK_DECLS(
[HAVE_SOLARIS_ATOMICS],
[
AC_MSG_CHECKING(checking if pthread_t type is integral)
AC_TRY_RUN(
[
#include <pthread.h>
int main()
{
pthread_t x = 0;
return(0);
}
],
[
AC_DEFINE([HAVE_ATOMIC_PTHREAD_T], [1],
AC_DEFINE([HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS], [1],
[pthread_t can be used by solaris atomics])
AC_MSG_RESULT(yes)
# size of pthread_t is needed for typed solaris atomics
AC_CHECK_SIZEOF([pthread_t], [], [#include <pthread.h>])
],
[
AC_MSG_RESULT(no)
])
])
])
AC_MSG_RESULT(yes)
],
[
AC_MSG_RESULT(no)
]
)
# this is needed to know which one of atomic_cas_32() or atomic_cas_64()
# to use in the source
AC_CHECK_SIZEOF([pthread_t], [], [#include <pthread.h>])
# Check for x86 PAUSE instruction
AC_MSG_CHECKING(for x86 PAUSE instruction)
# We have to actually try running the test program, because of a bug
......@@ -192,7 +209,7 @@ MYSQL_PLUGIN_ACTIONS(innodb_plugin, [
}
],
[
AC_DEFINE([IB_HAVE_PAUSE_INSTRUCTION], [1], [Does x86 PAUSE instruction exist])
AC_DEFINE([HAVE_IB_PAUSE_INSTRUCTION], [1], [Does x86 PAUSE instruction exist])
AC_MSG_RESULT(yes)
],
[
......
......@@ -1111,34 +1111,7 @@ innobase_start_or_create_for_mysql(void)
"InnoDB: The InnoDB memory heap is disabled\n");
}
#ifdef HAVE_IB_GCC_ATOMIC_BUILTINS
# ifdef INNODB_RW_LOCKS_USE_ATOMICS
fprintf(stderr,
"InnoDB: Mutexes and rw_locks use GCC atomic builtins.\n");
# else /* INNODB_RW_LOCKS_USE_ATOMICS */
fprintf(stderr,
"InnoDB: Mutexes use GCC atomic builtins, rw_locks do not.\n");
# endif /* INNODB_RW_LOCKS_USE_ATOMICS */
#elif defined(HAVE_IB_SOLARIS_ATOMICS)
# ifdef INNODB_RW_LOCKS_USE_ATOMICS
fprintf(stderr,
"InnoDB: Mutexes and rw_locks use Solaris atomic functions.\n");
# else
fprintf(stderr,
"InnoDB: Mutexes use Solaris atomic functions.\n");
# endif /* INNODB_RW_LOCKS_USE_ATOMICS */
#elif HAVE_WINDOWS_ATOMICS
# ifdef INNODB_RW_LOCKS_USE_ATOMICS
fprintf(stderr,
"InnoDB: Mutexes and rw_locks use Windows interlocked functions.\n");
# else
fprintf(stderr,
"InnoDB: Mutexes use Windows interlocked functions.\n");
# endif /* INNODB_RW_LOCKS_USE_ATOMICS */
#else /* HAVE_IB_GCC_ATOMIC_BUILTINS */
fprintf(stderr,
"InnoDB: Neither mutexes nor rw_locks use GCC atomic builtins.\n");
#endif /* HAVE_IB_GCC_ATOMIC_BUILTINS */
fprintf(stderr, "InnoDB: %s\n", IB_ATOMICS_STARTUP_MSG);
/* Since InnoDB does not currently clean up all its internal data
structures in MySQL Embedded Server Library server_end(), we
......
......@@ -850,7 +850,8 @@ sync_thread_levels_g(
/*=================*/
sync_level_t* arr, /*!< in: pointer to level array for an OS
thread */
ulint limit) /*!< in: level limit */
ulint limit, /*!< in: level limit */
ulint warn) /*!< in: TRUE=display a diagnostic message */
{
sync_level_t* slot;
rw_lock_t* lock;
......@@ -864,6 +865,11 @@ sync_thread_levels_g(
if (slot->latch != NULL) {
if (slot->level <= limit) {
if (!warn) {
return(FALSE);
}
lock = slot->latch;
mutex = slot->latch;
......@@ -1101,7 +1107,7 @@ sync_thread_add_level(
case SYNC_DICT_HEADER:
case SYNC_TRX_I_S_RWLOCK:
case SYNC_TRX_I_S_LAST_READ:
if (!sync_thread_levels_g(array, level)) {
if (!sync_thread_levels_g(array, level, TRUE)) {
fprintf(stderr,
"InnoDB: sync_thread_levels_g(array, %lu)"
" does not hold!\n", level);
......@@ -1112,36 +1118,44 @@ sync_thread_add_level(
/* Either the thread must own the buffer pool mutex
(buf_pool_mutex), or it is allowed to latch only ONE
buffer block (block->mutex or buf_pool_zip_mutex). */
if (!sync_thread_levels_g(array, level)) {
ut_a(sync_thread_levels_g(array, level - 1));
if (!sync_thread_levels_g(array, level, FALSE)) {
ut_a(sync_thread_levels_g(array, level - 1, TRUE));
ut_a(sync_thread_levels_contain(array, SYNC_BUF_POOL));
}
break;
case SYNC_REC_LOCK:
ut_a((sync_thread_levels_contain(array, SYNC_KERNEL)
&& sync_thread_levels_g(array, SYNC_REC_LOCK - 1))
|| sync_thread_levels_g(array, SYNC_REC_LOCK));
if (sync_thread_levels_contain(array, SYNC_KERNEL)) {
ut_a(sync_thread_levels_g(array, SYNC_REC_LOCK - 1,
TRUE));
} else {
ut_a(sync_thread_levels_g(array, SYNC_REC_LOCK, TRUE));
}
break;
case SYNC_IBUF_BITMAP:
/* Either the thread must own the master mutex to all
the bitmap pages, or it is allowed to latch only ONE
bitmap page. */
ut_a((sync_thread_levels_contain(array, SYNC_IBUF_BITMAP_MUTEX)
&& sync_thread_levels_g(array, SYNC_IBUF_BITMAP - 1))
|| sync_thread_levels_g(array, SYNC_IBUF_BITMAP));
if (sync_thread_levels_contain(array,
SYNC_IBUF_BITMAP_MUTEX)) {
ut_a(sync_thread_levels_g(array, SYNC_IBUF_BITMAP - 1,
TRUE));
} else {
ut_a(sync_thread_levels_g(array, SYNC_IBUF_BITMAP,
TRUE));
}
break;
case SYNC_FSP_PAGE:
ut_a(sync_thread_levels_contain(array, SYNC_FSP));
break;
case SYNC_FSP:
ut_a(sync_thread_levels_contain(array, SYNC_FSP)
|| sync_thread_levels_g(array, SYNC_FSP));
|| sync_thread_levels_g(array, SYNC_FSP, TRUE));
break;
case SYNC_TRX_UNDO_PAGE:
ut_a(sync_thread_levels_contain(array, SYNC_TRX_UNDO)
|| sync_thread_levels_contain(array, SYNC_RSEG)
|| sync_thread_levels_contain(array, SYNC_PURGE_SYS)
|| sync_thread_levels_g(array, SYNC_TRX_UNDO_PAGE));
|| sync_thread_levels_g(array, SYNC_TRX_UNDO_PAGE, TRUE));
break;
case SYNC_RSEG_HEADER:
ut_a(sync_thread_levels_contain(array, SYNC_RSEG));
......@@ -1153,37 +1167,41 @@ sync_thread_add_level(
case SYNC_TREE_NODE:
ut_a(sync_thread_levels_contain(array, SYNC_INDEX_TREE)
|| sync_thread_levels_contain(array, SYNC_DICT_OPERATION)
|| sync_thread_levels_g(array, SYNC_TREE_NODE - 1));
|| sync_thread_levels_g(array, SYNC_TREE_NODE - 1, TRUE));
break;
case SYNC_TREE_NODE_NEW:
ut_a(sync_thread_levels_contain(array, SYNC_FSP_PAGE)
|| sync_thread_levels_contain(array, SYNC_IBUF_MUTEX));
break;
case SYNC_INDEX_TREE:
ut_a((sync_thread_levels_contain(array, SYNC_IBUF_MUTEX)
&& sync_thread_levels_contain(array, SYNC_FSP)
&& sync_thread_levels_g(array, SYNC_FSP_PAGE - 1))
|| sync_thread_levels_g(array, SYNC_TREE_NODE - 1));
if (sync_thread_levels_contain(array, SYNC_IBUF_MUTEX)
&& sync_thread_levels_contain(array, SYNC_FSP)) {
ut_a(sync_thread_levels_g(array, SYNC_FSP_PAGE - 1,
TRUE));
} else {
ut_a(sync_thread_levels_g(array, SYNC_TREE_NODE - 1,
TRUE));
}
break;
case SYNC_IBUF_MUTEX:
ut_a(sync_thread_levels_g(array, SYNC_FSP_PAGE - 1));
ut_a(sync_thread_levels_g(array, SYNC_FSP_PAGE - 1, TRUE));
break;
case SYNC_IBUF_PESS_INSERT_MUTEX:
ut_a(sync_thread_levels_g(array, SYNC_FSP - 1)
&& !sync_thread_levels_contain(array, SYNC_IBUF_MUTEX));
ut_a(sync_thread_levels_g(array, SYNC_FSP - 1, TRUE));
ut_a(!sync_thread_levels_contain(array, SYNC_IBUF_MUTEX));
break;
case SYNC_IBUF_HEADER:
ut_a(sync_thread_levels_g(array, SYNC_FSP - 1)
&& !sync_thread_levels_contain(array, SYNC_IBUF_MUTEX)
&& !sync_thread_levels_contain(
array, SYNC_IBUF_PESS_INSERT_MUTEX));
ut_a(sync_thread_levels_g(array, SYNC_FSP - 1, TRUE));
ut_a(!sync_thread_levels_contain(array, SYNC_IBUF_MUTEX));
ut_a(!sync_thread_levels_contain(array,
SYNC_IBUF_PESS_INSERT_MUTEX));
break;
case SYNC_DICT:
#ifdef UNIV_DEBUG
ut_a(buf_debug_prints
|| sync_thread_levels_g(array, SYNC_DICT));
|| sync_thread_levels_g(array, SYNC_DICT, TRUE));
#else /* UNIV_DEBUG */
ut_a(sync_thread_levels_g(array, SYNC_DICT));
ut_a(sync_thread_levels_g(array, SYNC_DICT, TRUE));
#endif /* UNIV_DEBUG */
break;
default:
......
......@@ -59,64 +59,3 @@ main(int argc, char** argv)
return(0);
}
/*****************************************************************************
Copyright (c) 2009, Innobase Oy. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
*****************************************************************************/
/*****************************************************************************
If this program compiles and returns 0, then GCC atomic funcions are available.
Created September 12, 2009 Vasil Dimov
*****************************************************************************/
int
main(int argc, char** argv)
{
long x;
long y;
long res;
char c;
x = 10;
y = 123;
res = __sync_bool_compare_and_swap(&x, x, y);
if (!res || x != y) {
return(1);
}
x = 10;
y = 123;
res = __sync_bool_compare_and_swap(&x, x + 1, y);
if (res || x != 10) {
return(1);
}
x = 10;
y = 123;
res = __sync_add_and_fetch(&x, y);
if (res != 123 + 10 || x != 123 + 10) {
return(1);
}
c = 10;
res = __sync_lock_test_and_set(&c, 123);
if (res != 10 || c != 123) {
return(1);
}
return(0);
}
......@@ -30,35 +30,3 @@ main(int argc, char** argv)
return(0);
}
/*****************************************************************************
Copyright (c) 2009, Innobase Oy. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
*****************************************************************************/
/*****************************************************************************
If this program compiles and can be run and returns 0, then the pause
instruction is available.
Created Jul 21, 2009 Vasil Dimov
*****************************************************************************/
int
main(int argc, char** argv)
{
__asm__ __volatile__ ("pause");
return(0);
}
This directory contains patches that need to be applied to the MySQL
source tree in order to build the dynamic plugin on Windows --
HA_INNODB.DLL. Please note the followings when adding the patches:
* The patch must be applied from the mysql top-level source directory.
patch -p0 < win-plugin.diff
* The patch filenames end in ".diff".
* All patches here are expected to apply cleanly to the latest MySQL 5.1
tree when storage/innobase is replaced with this InnoDB branch.
When applying the patch, the following files will be modified:
* CMakeLists.txt
* sql/CMakeLists.txt
* win/configure.js
Also, two new files will be added:
* sql/mysqld.def
* sql/mysqld_x64.def
You can get "patch" utility for Windows from http://unxutils.sourceforge.net/
diff -Nur CMakeLists.txt.orig CMakeLists.txt
--- CMakeLists.txt.orig 2008-10-03 12:25:41 -05:00
+++ CMakeLists.txt 2008-09-26 17:32:51 -05:00
@@ -254,9 +254,9 @@
IF(WITH_FEDERATED_STORAGE_ENGINE)
ADD_SUBDIRECTORY(storage/federated)
ENDIF(WITH_FEDERATED_STORAGE_ENGINE)
-IF(WITH_INNOBASE_STORAGE_ENGINE)
+IF(WITH_INNOBASE_STORAGE_ENGINE OR INNODB_DYNAMIC_PLUGIN)
ADD_SUBDIRECTORY(storage/innobase)
-ENDIF(WITH_INNOBASE_STORAGE_ENGINE)
+ENDIF(WITH_INNOBASE_STORAGE_ENGINE OR INNODB_DYNAMIC_PLUGIN)
ADD_SUBDIRECTORY(sql)
ADD_SUBDIRECTORY(server-tools/instance-manager)
ADD_SUBDIRECTORY(libmysql)
diff -Nur sql/CMakeLists.txt.orig sql/CMakeLists.txt
--- sql/CMakeLists.txt.orig 2008-10-03 12:25:41 -05:00
+++ sql/CMakeLists.txt 2008-09-24 03:58:19 -05:00
@@ -98,6 +98,15 @@
LINK_FLAGS "/PDB:${CMAKE_CFG_INTDIR}/mysqld${MYSQLD_EXE_SUFFIX}.pdb")
ENDIF(cmake_version EQUAL 20406)
+# Checks for 64-bit version
+IF(CMAKE_SIZEOF_VOID_P MATCHES 8)
+SET_TARGET_PROPERTIES(mysqld PROPERTIES
+ LINK_FLAGS "/def:\"${PROJECT_SOURCE_DIR}/sql/mysqld_x64.def\"")
+ELSE(CMAKE_SIZEOF_VOID_P MATCHES 8)
+SET_TARGET_PROPERTIES(mysqld PROPERTIES
+ LINK_FLAGS "/def:\"${PROJECT_SOURCE_DIR}/sql/mysqld.def\"")
+ENDIF(CMAKE_SIZEOF_VOID_P MATCHES 8)
+
IF(EMBED_MANIFESTS)
MYSQL_EMBED_MANIFEST("mysqld" "asInvoker")
ENDIF(EMBED_MANIFESTS)
diff -Nur sql/mysqld.def.orig sql/mysqld.def
--- sql/mysqld.def.orig 1969-12-31 18:00:00 -06:00
+++ sql/mysqld.def 2009-04-09 02:20:32 -05:00
@@ -0,0 +1,111 @@
+EXPORTS
+ ?use_hidden_primary_key@handler@@UAEXXZ
+ ?get_dynamic_partition_info@handler@@UAEXPAUPARTITION_INFO@@I@Z
+ ?read_first_row@handler@@UAEHPAEI@Z
+ ?read_range_next@handler@@UAEHXZ
+ ?read_range_first@handler@@UAEHPBUst_key_range@@0_N1@Z
+ ?read_multi_range_first@handler@@UAEHPAPAUst_key_multi_range@@PAU2@I_NPAUst_handler_buffer@@@Z
+ ?read_multi_range_next@handler@@UAEHPAPAUst_key_multi_range@@@Z
+ ?index_read_idx_map@handler@@UAEHPAEIPBEKW4ha_rkey_function@@@Z
+ ?print_error@handler@@UAEXHH@Z
+ ?clone@handler@@UAEPAV1@PAUst_mem_root@@@Z
+ ?get_auto_increment@handler@@UAEX_K00PA_K1@Z
+ ?index_next_same@handler@@UAEHPAEPBEI@Z
+ ?get_error_message@handler@@UAE_NHPAVString@@@Z
+ ?ha_thd@handler@@IBEPAVTHD@@XZ
+ ?update_auto_increment@handler@@QAEHXZ
+ ?ha_statistic_increment@handler@@IBEXPQsystem_status_var@@K@Z
+ ?trans_register_ha@@YAXPAVTHD@@_NPAUhandlerton@@@Z
+ ?cmp@Field_blob@@QAEHPBEI0I@Z
+ ?set_time@Field_timestamp@@QAEXXZ
+ ?sql_print_error@@YAXPBDZZ
+ ?sql_print_warning@@YAXPBDZZ
+ ?check_global_access@@YA_NPAVTHD@@K@Z
+ ?schema_table_store_record@@YA_NPAVTHD@@PAUst_table@@@Z
+ ?get_quote_char_for_identifier@@YAHPAVTHD@@PBDI@Z
+ ?copy@String@@QAE_NXZ
+ ?copy@String@@QAE_NABV1@@Z
+ ?copy@String@@QAE_NPBDIPAUcharset_info_st@@@Z
+ ?copy_and_convert@@YAIPADIPAUcharset_info_st@@PBDI1PAI@Z
+ ?filename_to_tablename@@YAIPBDPADI@Z
+ ?strconvert@@YAIPAUcharset_info_st@@PBD0PADIPAI@Z
+ ?calculate_key_len@@YAIPAUst_table@@IPBEK@Z
+ ?sql_alloc@@YAPAXI@Z
+ ?localtime_to_TIME@@YAXPAUst_mysql_time@@PAUtm@@@Z
+ ?push_warning@@YAPAVMYSQL_ERROR@@PAVTHD@@W4enum_warning_level@1@IPBD@Z
+ ?push_warning_printf@@YAXPAVTHD@@W4enum_warning_level@MYSQL_ERROR@@IPBDZZ
+ ?drop_table@handler@@EAEXPBD@Z
+ ?column_bitmaps_signal@handler@@UAEXXZ
+ ?delete_table@handler@@MAEHPBD@Z
+ ?rename_table@handler@@MAEHPBD0@Z
+ ?key_map_empty@@3V?$Bitmap@$0EA@@@B
+ ?THR_THD@@3PAVTHD@@A
+ ?end_of_list@@3Ulist_node@@A
+ ?mysql_tmpdir_list@@3Ust_my_tmpdir@@A
+ mysql_query_cache_invalidate4
+ thd_query
+ thd_sql_command
+ thd_get_thread_id
+ thd_get_xid
+ thd_slave_thread
+ thd_non_transactional_update
+ thd_mark_transaction_to_rollback
+ thd_security_context
+ thd_charset
+ thd_test_options
+ thd_ha_data
+ thd_killed
+ thd_tx_isolation
+ thd_tablespace_op
+ thd_sql_command
+ thd_memdup
+ thd_make_lex_string
+ thd_in_lock_tables
+ thd_binlog_format
+ _my_hash_init
+ my_hash_free
+ my_tmpdir
+ check_if_legal_filename
+ my_filename
+ my_sync_dir_by_file
+ alloc_root
+ thr_lock_data_init
+ thr_lock_init
+ thr_lock_delete
+ my_multi_malloc
+ get_charset
+ unpack_filename
+ my_hash_insert
+ my_hash_search
+ my_hash_delete
+ mysql_bin_log_file_pos
+ mysql_bin_log_file_name
+ mysqld_embedded
+ my_thread_name
+ my_malloc
+ my_no_flags_free
+ _sanity
+ _mymalloc
+ _myfree
+ _my_strdup
+ _my_thread_var
+ my_error
+ pthread_cond_init
+ pthread_cond_signal
+ pthread_cond_wait
+ pthread_cond_destroy
+ localtime_r
+ my_strdup
+ deflate
+ deflateEnd
+ deflateReset
+ deflateInit2_
+ inflateEnd
+ inflateInit_
+ inflate
+ compressBound
+ inflateInit2_
+ adler32
+ longlong2str
+ strend
+ my_snprintf
diff -Nur sql/mysqld_x64.def.orig sql/mysqld_x64.def
--- sql/mysqld_x64.def.orig 1969-12-31 18:00:00 -06:00
+++ sql/mysqld_x64.def 2009-04-09 02:22:04 -05:00
@@ -0,0 +1,111 @@
+EXPORTS
+ ?use_hidden_primary_key@handler@@UEAAXXZ
+ ?get_dynamic_partition_info@handler@@UEAAXPEAUPARTITION_INFO@@I@Z
+ ?read_first_row@handler@@UEAAHPEAEI@Z
+ ?read_range_next@handler@@UEAAHXZ
+ ?read_range_first@handler@@UEAAHPEBUst_key_range@@0_N1@Z
+ ?read_multi_range_first@handler@@UEAAHPEAPEAUst_key_multi_range@@PEAU2@I_NPEAUst_handler_buffer@@@Z
+ ?read_multi_range_next@handler@@UEAAHPEAPEAUst_key_multi_range@@@Z
+ ?index_read_idx_map@handler@@UEAAHPEAEIPEBEKW4ha_rkey_function@@@Z
+ ?print_error@handler@@UEAAXHH@Z
+ ?clone@handler@@UEAAPEAV1@PEAUst_mem_root@@@Z
+ ?get_auto_increment@handler@@UEAAX_K00PEA_K1@Z
+ ?index_next_same@handler@@UEAAHPEAEPEBEI@Z
+ ?get_error_message@handler@@UEAA_NHPEAVString@@@Z
+ ?ha_thd@handler@@IEBAPEAVTHD@@XZ
+ ?update_auto_increment@handler@@QEAAHXZ
+ ?ha_statistic_increment@handler@@IEBAXPEQsystem_status_var@@K@Z
+ ?trans_register_ha@@YAXPEAVTHD@@_NPEAUhandlerton@@@Z
+ ?cmp@Field_blob@@QEAAHPEBEI0I@Z
+ ?set_time@Field_timestamp@@QEAAXXZ
+ ?sql_print_error@@YAXPEBDZZ
+ ?sql_print_warning@@YAXPEBDZZ
+ ?check_global_access@@YA_NPEAVTHD@@K@Z
+ ?schema_table_store_record@@YA_NPEAVTHD@@PEAUst_table@@@Z
+ ?get_quote_char_for_identifier@@YAHPEAVTHD@@PEBDI@Z
+ ?copy@String@@QEAA_NXZ
+ ?copy@String@@QEAA_NAEBV1@@Z
+ ?copy@String@@QEAA_NPEBDIPEAUcharset_info_st@@@Z
+ ?copy_and_convert@@YAIPEADIPEAUcharset_info_st@@PEBDI1PEAI@Z
+ ?filename_to_tablename@@YAIPEBDPEADI@Z
+ ?strconvert@@YAIPEAUcharset_info_st@@PEBD0PEADIPEAI@Z
+ ?calculate_key_len@@YAIPEAUst_table@@IPEBEK@Z
+ ?sql_alloc@@YAPEAX_K@Z
+ ?localtime_to_TIME@@YAXPEAUst_mysql_time@@PEAUtm@@@Z
+ ?push_warning@@YAPEAVMYSQL_ERROR@@PEAVTHD@@W4enum_warning_level@1@IPEBD@Z
+ ?push_warning_printf@@YAXPEAVTHD@@W4enum_warning_level@MYSQL_ERROR@@IPEBDZZ
+ ?drop_table@handler@@EEAAXPEBD@Z
+ ?column_bitmaps_signal@handler@@UEAAXXZ
+ ?delete_table@handler@@MEAAHPEBD@Z
+ ?rename_table@handler@@MEAAHPEBD0@Z
+ ?key_map_empty@@3V?$Bitmap@$0EA@@@B
+ ?THR_THD@@3PEAVTHD@@EA
+ ?end_of_list@@3Ulist_node@@A
+ ?mysql_tmpdir_list@@3Ust_my_tmpdir@@A
+ mysql_query_cache_invalidate4
+ thd_query
+ thd_sql_command
+ thd_get_thread_id
+ thd_get_xid
+ thd_slave_thread
+ thd_non_transactional_update
+ thd_mark_transaction_to_rollback
+ thd_security_context
+ thd_charset
+ thd_test_options
+ thd_ha_data
+ thd_killed
+ thd_tx_isolation
+ thd_tablespace_op
+ thd_sql_command
+ thd_memdup
+ thd_make_lex_string
+ thd_in_lock_tables
+ thd_binlog_format
+ _my_hash_init
+ my_hash_free
+ my_tmpdir
+ check_if_legal_filename
+ my_filename
+ my_sync_dir_by_file
+ alloc_root
+ thr_lock_data_init
+ thr_lock_init
+ thr_lock_delete
+ my_multi_malloc
+ get_charset
+ unpack_filename
+ my_hash_insert
+ my_hash_search
+ my_hash_delete
+ mysql_bin_log_file_pos
+ mysql_bin_log_file_name
+ mysqld_embedded
+ my_thread_name
+ my_malloc
+ my_no_flags_free
+ _sanity
+ _mymalloc
+ _myfree
+ _my_strdup
+ _my_thread_var
+ my_error
+ pthread_cond_init
+ pthread_cond_signal
+ pthread_cond_wait
+ pthread_cond_destroy
+ localtime_r
+ my_strdup
+ deflate
+ deflateEnd
+ deflateReset
+ deflateInit2_
+ inflateEnd
+ inflateInit_
+ inflate
+ compressBound
+ inflateInit2_
+ adler32
+ longlong2str
+ strend
+ my_snprintf
diff -Nur win/configure.js.orig win/configure.js
--- win/configure.js.orig 2008-09-26 21:18:37 -05:00
+++ win/configure.js 2008-10-01 11:21:27 -05:00
@@ -50,6 +50,7 @@
case "EMBED_MANIFESTS":
case "EXTRA_DEBUG":
case "WITH_EMBEDDED_SERVER":
+ case "INNODB_DYNAMIC_PLUGIN":
configfile.WriteLine("SET (" + args.Item(i) + " TRUE)");
break;
case "MYSQL_SERVER_SUFFIX":
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment