Backport WL#3653 to 5.1 to enable bundled innodb plugin.
Remove custom DLL loader code from innodb plugin code, use symbols exported from mysqld.
This commit is contained in:
parent
518e249853
commit
31b79618e3
162
CMakeLists.txt
162
CMakeLists.txt
@ -13,7 +13,7 @@
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
CMAKE_MINIMUM_REQUIRED(VERSION 2.4.7 FATAL_ERROR)
|
||||
CMAKE_MINIMUM_REQUIRED(VERSION 2.6.0 FATAL_ERROR)
|
||||
|
||||
PROJECT(MySql)
|
||||
|
||||
@ -32,56 +32,6 @@ ADD_DEFINITIONS(-DHAVE_YASSL)
|
||||
# Set debug options
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DFORCE_INIT_OF_VARS")
|
||||
|
||||
# Note that some engines are always compiled in, MyISAM, MyISAMMRG and HEAP,
|
||||
# these three plugin defintions are dummys for symmetry
|
||||
|
||||
SET(WITH_HEAP_STORAGE_ENGINE TRUE)
|
||||
ADD_DEFINITIONS(-DWITH_HEAP_STORAGE_ENGINE)
|
||||
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_heap_plugin")
|
||||
|
||||
SET(WITH_MYISAM_STORAGE_ENGINE TRUE)
|
||||
ADD_DEFINITIONS(-DWITH_MYISAM_STORAGE_ENGINE)
|
||||
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_myisam_plugin")
|
||||
|
||||
SET(WITH_MYISAMMRG_STORAGE_ENGINE TRUE)
|
||||
ADD_DEFINITIONS(-DWITH_MYISAMMRG_STORAGE_ENGINE)
|
||||
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_myisammrg_plugin")
|
||||
|
||||
IF(WITH_COMMUNITY_FEATURES)
|
||||
ADD_DEFINITIONS(-DENABLED_PROFILING -DCOMMUNITY_SERVER)
|
||||
ENDIF(WITH_COMMUNITY_FEATURES)
|
||||
|
||||
IF(WITH_ARCHIVE_STORAGE_ENGINE)
|
||||
ADD_DEFINITIONS(-DWITH_ARCHIVE_STORAGE_ENGINE)
|
||||
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_archive_plugin")
|
||||
ENDIF(WITH_ARCHIVE_STORAGE_ENGINE)
|
||||
IF(WITH_BLACKHOLE_STORAGE_ENGINE)
|
||||
ADD_DEFINITIONS(-DWITH_BLACKHOLE_STORAGE_ENGINE)
|
||||
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_blackhole_plugin")
|
||||
ENDIF(WITH_BLACKHOLE_STORAGE_ENGINE)
|
||||
IF(WITH_CSV_STORAGE_ENGINE)
|
||||
ADD_DEFINITIONS(-DWITH_CSV_STORAGE_ENGINE)
|
||||
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_csv_plugin")
|
||||
ENDIF(WITH_CSV_STORAGE_ENGINE)
|
||||
IF(WITH_EXAMPLE_STORAGE_ENGINE)
|
||||
ADD_DEFINITIONS(-DWITH_EXAMPLE_STORAGE_ENGINE)
|
||||
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_example_plugin")
|
||||
ENDIF(WITH_EXAMPLE_STORAGE_ENGINE)
|
||||
IF(WITH_INNOBASE_STORAGE_ENGINE)
|
||||
ADD_DEFINITIONS(-DWITH_INNOBASE_STORAGE_ENGINE)
|
||||
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_innobase_plugin")
|
||||
ENDIF(WITH_INNOBASE_STORAGE_ENGINE)
|
||||
IF(WITH_PARTITION_STORAGE_ENGINE)
|
||||
ADD_DEFINITIONS(-DWITH_PARTITION_STORAGE_ENGINE)
|
||||
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_partition_plugin")
|
||||
ENDIF(WITH_PARTITION_STORAGE_ENGINE)
|
||||
IF(WITH_FEDERATED_STORAGE_ENGINE)
|
||||
ADD_DEFINITIONS(-DWITH_FEDERATED_STORAGE_ENGINE)
|
||||
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_federated_plugin")
|
||||
ENDIF(WITH_FEDERATED_STORAGE_ENGINE)
|
||||
|
||||
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/sql/sql_builtin.cc.in
|
||||
${CMAKE_SOURCE_DIR}/sql/sql_builtin.cc @ONLY)
|
||||
|
||||
SET(localstatedir "C:\\mysql\\data")
|
||||
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/support-files/my-huge.cnf.sh
|
||||
@ -126,6 +76,16 @@ IF(MSVC AND NOT CMAKE_GENERATOR MATCHES "Visual Studio 7")
|
||||
SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} /wd4996")
|
||||
ENDIF(MSVC AND NOT CMAKE_GENERATOR MATCHES "Visual Studio 7")
|
||||
|
||||
IF(CMAKE_GENERATOR MATCHES "Visual Studio 7")
|
||||
# VS2003 has a bug that prevents linking mysqld with module definition file
|
||||
# (/DEF option for linker). Linker would incorrectly complain about multiply
|
||||
# defined symbols. Workaround is to disable dynamic plugins, so /DEF is not
|
||||
# used.
|
||||
MESSAGE("Warning: Building MySQL with Visual Studio 2003.NET is no more supported.")
|
||||
MESSAGE("Please use a newer version of Visual Studio.")
|
||||
SET(WITHOUT_DYNAMIC_PLUGINS TRUE)
|
||||
ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 7")
|
||||
|
||||
# Settings for Visual Studio 7 and above.
|
||||
IF(MSVC)
|
||||
# replace /MDd with /MTd
|
||||
@ -169,12 +129,16 @@ IF(WIN32)
|
||||
ADD_DEFINITIONS("-D_WINDOWS -D__WIN__ -D_CRT_SECURE_NO_DEPRECATE")
|
||||
ENDIF(WIN32)
|
||||
|
||||
# default to x86 platform. We'll check for X64 in a bit
|
||||
SET (PLATFORM X86)
|
||||
|
||||
# This definition is necessary to work around a bug with Intellisense described
|
||||
# here: http://tinyurl.com/2cb428. Syntax highlighting is important for proper
|
||||
# debugger functionality.
|
||||
IF(CMAKE_SIZEOF_VOID_P MATCHES 8)
|
||||
MESSAGE(STATUS "Detected 64-bit platform.")
|
||||
ADD_DEFINITIONS("-D_WIN64")
|
||||
SET (PLATFORM X64)
|
||||
ENDIF(CMAKE_SIZEOF_VOID_P MATCHES 8)
|
||||
|
||||
IF(EMBED_MANIFESTS)
|
||||
@ -227,6 +191,81 @@ IF(EMBED_MANIFESTS)
|
||||
ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64")
|
||||
ENDIF(EMBED_MANIFESTS)
|
||||
|
||||
# Figure out what engines to build and how (statically or dynamically),
|
||||
# add preprocessor defines for storage engines.
|
||||
IF(WITHOUT_DYNAMIC_PLUGINS)
|
||||
MESSAGE("Dynamic plugins are disabled.")
|
||||
ENDIF(WITHOUT_DYNAMIC_PLUGINS)
|
||||
|
||||
FILE(GLOB STORAGE_SUBDIRS storage/*)
|
||||
FOREACH(SUBDIR ${STORAGE_SUBDIRS})
|
||||
FILE(RELATIVE_PATH DIRNAME ${PROJECT_SOURCE_DIR}/storage ${SUBDIR})
|
||||
STRING(TOUPPER ${DIRNAME} ENGINE)
|
||||
STRING(TOLOWER ${DIRNAME} ENGINE_LOWER)
|
||||
IF (EXISTS ${SUBDIR}/CMakeLists.txt)
|
||||
# Check MYSQL_STORAGE_ENGINE macro is present
|
||||
FILE(STRINGS ${SUBDIR}/CMakeLists.txt HAVE_STORAGE_ENGINE REGEX MYSQL_STORAGE_ENGINE)
|
||||
IF(HAVE_STORAGE_ENGINE)
|
||||
SET(ENGINE_BUILD_TYPE "DYNAMIC")
|
||||
# Read plug.in to find out if a plugin is mandatory and whether it supports
|
||||
# build as shared library (dynamic).
|
||||
IF(EXISTS ${SUBDIR}/plug.in)
|
||||
FILE(READ ${SUBDIR}/plug.in PLUGIN_FILE_CONTENT)
|
||||
STRING (REGEX MATCH "MYSQL_PLUGIN_DYNAMIC" MYSQL_PLUGIN_DYNAMIC ${PLUGIN_FILE_CONTENT})
|
||||
STRING (REGEX MATCH "MYSQL_PLUGIN_MANDATORY" MYSQL_PLUGIN_MANDATORY ${PLUGIN_FILE_CONTENT})
|
||||
STRING (REGEX MATCH "MYSQL_PLUGIN_STATIC" MYSQL_PLUGIN_STATIC ${PLUGIN_FILE_CONTENT})
|
||||
|
||||
IF(MYSQL_PLUGIN_MANDATORY)
|
||||
SET(WITH_${ENGINE}_STORAGE_ENGINE TRUE)
|
||||
ENDIF(MYSQL_PLUGIN_MANDATORY)
|
||||
|
||||
IF (WITH_${ENGINE}_STORAGE_ENGINE AND MYSQL_PLUGIN_STATIC)
|
||||
SET(ENGINE_BUILD_TYPE "STATIC")
|
||||
ELSEIF(NOT WITHOUT_${ENGINE}_STORAGE_ENGINE AND MYSQL_PLUGIN_DYNAMIC AND NOT WITHOUT_DYNAMIC_PLUGINS)
|
||||
SET(ENGINE_BUILD_TYPE "DYNAMIC")
|
||||
ELSE(WITH_${ENGINE}_STORAGE_ENGINE AND MYSQL_PLUGIN_STATIC)
|
||||
SET(ENGINE_BUILD_TYPE "NONE")
|
||||
ENDIF(WITH_${ENGINE}_STORAGE_ENGINE AND MYSQL_PLUGIN_STATIC)
|
||||
IF (ENGINE_BUILD_TYPE STREQUAL "STATIC")
|
||||
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_${ENGINE_LOWER}_plugin")
|
||||
SET (MYSQLD_STATIC_ENGINE_LIBS ${MYSQLD_STATIC_ENGINE_LIBS} ${ENGINE_LOWER})
|
||||
SET (STORAGE_ENGINE_DEFS "${STORAGE_ENGINE_DEFS} -DWITH_${ENGINE}_STORAGE_ENGINE")
|
||||
SET (WITH_${ENGINE}_STORAGE_ENGINE TRUE)
|
||||
ENDIF (ENGINE_BUILD_TYPE STREQUAL "STATIC")
|
||||
ENDIF(EXISTS ${SUBDIR}/plug.in)
|
||||
|
||||
IF(NOT ENGINE_BUILD_TYPE STREQUAL "NONE")
|
||||
LIST(APPEND ${ENGINE_BUILD_TYPE}_ENGINE_DIRECTORIES ${SUBDIR})
|
||||
ENDIF(NOT ENGINE_BUILD_TYPE STREQUAL "NONE")
|
||||
|
||||
ENDIF(HAVE_STORAGE_ENGINE)
|
||||
ENDIF(EXISTS ${SUBDIR}/CMakeLists.txt)
|
||||
ENDFOREACH(SUBDIR ${STORAGE_SUBDIRS})
|
||||
|
||||
# Special handling for partition(not really pluggable)
|
||||
IF(NOT WITHOUT_PARTITION_STORAGE_ENGINE)
|
||||
SET (STORAGE_ENGINE_DEFS "${STORAGE_ENGINE_DEFS} -DWITH_PARTITION_STORAGE_ENGINE")
|
||||
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_partition_plugin")
|
||||
ENDIF(NOT WITHOUT_PARTITION_STORAGE_ENGINE)
|
||||
|
||||
ADD_DEFINITIONS(${STORAGE_ENGINE_DEFS})
|
||||
|
||||
# Now write out our mysql_plugin_defs struct
|
||||
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/sql/sql_builtin.cc.in
|
||||
${CMAKE_SOURCE_DIR}/sql/sql_builtin.cc @ONLY)
|
||||
|
||||
# Add subdirectories for storage engines
|
||||
SET (ENGINE_BUILD_TYPE "STATIC")
|
||||
FOREACH(DIR ${STATIC_ENGINE_DIRECTORIES})
|
||||
ADD_SUBDIRECTORY(${DIR})
|
||||
ENDFOREACH(DIR ${STATIC_ENGINE_DIRECTORIES})
|
||||
|
||||
SET (ENGINE_BUILD_TYPE "DYNAMIC")
|
||||
FOREACH(DIR ${DYNAMIC_ENGINE_DIRECTORIES})
|
||||
ADD_SUBDIRECTORY(${DIR})
|
||||
ENDFOREACH(DIR ${DYNAMIC_ENGINE_DIRECTORIES})
|
||||
|
||||
|
||||
# FIXME "debug" only needed if build type is "Debug", but
|
||||
# CMAKE_BUILD_TYPE is not set during configure time.
|
||||
ADD_SUBDIRECTORY(vio)
|
||||
@ -239,28 +278,7 @@ ADD_SUBDIRECTORY(zlib)
|
||||
ADD_SUBDIRECTORY(extra/yassl)
|
||||
ADD_SUBDIRECTORY(extra/yassl/taocrypt)
|
||||
ADD_SUBDIRECTORY(extra)
|
||||
ADD_SUBDIRECTORY(storage/heap)
|
||||
ADD_SUBDIRECTORY(storage/myisam)
|
||||
ADD_SUBDIRECTORY(storage/myisammrg)
|
||||
ADD_SUBDIRECTORY(client)
|
||||
IF(WITH_ARCHIVE_STORAGE_ENGINE)
|
||||
ADD_SUBDIRECTORY(storage/archive)
|
||||
ENDIF(WITH_ARCHIVE_STORAGE_ENGINE)
|
||||
IF(WITH_BLACKHOLE_STORAGE_ENGINE)
|
||||
ADD_SUBDIRECTORY(storage/blackhole)
|
||||
ENDIF(WITH_BLACKHOLE_STORAGE_ENGINE)
|
||||
IF(WITH_CSV_STORAGE_ENGINE)
|
||||
ADD_SUBDIRECTORY(storage/csv)
|
||||
ENDIF(WITH_CSV_STORAGE_ENGINE)
|
||||
IF(WITH_EXAMPLE_STORAGE_ENGINE)
|
||||
ADD_SUBDIRECTORY(storage/example)
|
||||
ENDIF(WITH_EXAMPLE_STORAGE_ENGINE)
|
||||
IF(WITH_FEDERATED_STORAGE_ENGINE)
|
||||
ADD_SUBDIRECTORY(storage/federated)
|
||||
ENDIF(WITH_FEDERATED_STORAGE_ENGINE)
|
||||
IF(WITH_INNOBASE_STORAGE_ENGINE)
|
||||
ADD_SUBDIRECTORY(storage/innobase)
|
||||
ENDIF(WITH_INNOBASE_STORAGE_ENGINE)
|
||||
ADD_SUBDIRECTORY(sql)
|
||||
ADD_SUBDIRECTORY(server-tools/instance-manager)
|
||||
ADD_SUBDIRECTORY(libmysql)
|
||||
|
@ -285,7 +285,7 @@ typedef struct charset_info_st
|
||||
#define ILLEGAL_CHARSET_INFO_NUMBER (~0U)
|
||||
|
||||
|
||||
extern CHARSET_INFO my_charset_bin;
|
||||
extern MYSQL_PLUGIN_IMPORT CHARSET_INFO my_charset_bin;
|
||||
extern CHARSET_INFO my_charset_big5_chinese_ci;
|
||||
extern CHARSET_INFO my_charset_big5_bin;
|
||||
extern CHARSET_INFO my_charset_cp932_japanese_ci;
|
||||
@ -298,7 +298,7 @@ extern CHARSET_INFO my_charset_gb2312_chinese_ci;
|
||||
extern CHARSET_INFO my_charset_gb2312_bin;
|
||||
extern CHARSET_INFO my_charset_gbk_chinese_ci;
|
||||
extern CHARSET_INFO my_charset_gbk_bin;
|
||||
extern CHARSET_INFO my_charset_latin1;
|
||||
extern MYSQL_PLUGIN_IMPORT CHARSET_INFO my_charset_latin1;
|
||||
extern CHARSET_INFO my_charset_latin1_german2_ci;
|
||||
extern CHARSET_INFO my_charset_latin1_bin;
|
||||
extern CHARSET_INFO my_charset_latin2_czech_ci;
|
||||
@ -315,7 +315,7 @@ extern CHARSET_INFO my_charset_utf8_general_ci;
|
||||
extern CHARSET_INFO my_charset_utf8_unicode_ci;
|
||||
extern CHARSET_INFO my_charset_utf8_bin;
|
||||
extern CHARSET_INFO my_charset_cp1250_czech_ci;
|
||||
extern CHARSET_INFO my_charset_filename;
|
||||
extern MYSQL_PLUGIN_IMPORT CHARSET_INFO my_charset_filename;
|
||||
|
||||
/* declarations for simple charsets */
|
||||
extern size_t my_strnxfrm_simple(CHARSET_INFO *, uchar *, size_t,
|
||||
|
@ -1573,4 +1573,17 @@ static inline double rint(double x)
|
||||
}
|
||||
#endif /* HAVE_RINT */
|
||||
|
||||
/*
|
||||
MYSQL_PLUGIN_IMPORT macro is used to export mysqld data
|
||||
(i.e variables) for usage in storage engine loadable plugins.
|
||||
Outside of Windows, it is dummy.
|
||||
*/
|
||||
#ifndef MYSQL_PLUGIN_IMPORT
|
||||
#if (defined(_WIN32) && defined(MYSQL_DYNAMIC_PLUGIN))
|
||||
#define MYSQL_PLUGIN_IMPORT __declspec(dllimport)
|
||||
#else
|
||||
#define MYSQL_PLUGIN_IMPORT
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif /* my_global_h */
|
||||
|
@ -221,8 +221,8 @@ extern uint my_large_page_size;
|
||||
#endif
|
||||
|
||||
/* charsets */
|
||||
extern CHARSET_INFO *default_charset_info;
|
||||
extern CHARSET_INFO *all_charsets[256];
|
||||
extern MYSQL_PLUGIN_IMPORT CHARSET_INFO *default_charset_info;
|
||||
extern MYSQL_PLUGIN_IMPORT CHARSET_INFO *all_charsets[256];
|
||||
extern CHARSET_INFO compiled_charsets[];
|
||||
|
||||
/* statistics */
|
||||
@ -237,8 +237,8 @@ extern void (*my_sigtstp_cleanup)(void),
|
||||
(*my_sigtstp_restart)(void),
|
||||
(*my_abort_hook)(int);
|
||||
/* Executed when comming from shell */
|
||||
extern int NEAR my_umask, /* Default creation mask */
|
||||
NEAR my_umask_dir,
|
||||
extern MYSQL_PLUGIN_IMPORT int NEAR my_umask; /* Default creation mask */
|
||||
extern int NEAR my_umask_dir,
|
||||
NEAR my_recived_signals, /* Signals we have got */
|
||||
NEAR my_safe_to_handle_signal, /* Set when allowed to SIGTSTP */
|
||||
NEAR my_dont_interrupt; /* call remember_intr when set */
|
||||
|
@ -16,6 +16,16 @@
|
||||
#ifndef _my_plugin_h
|
||||
#define _my_plugin_h
|
||||
|
||||
|
||||
/*
|
||||
On Windows, exports from DLL need to be declared
|
||||
*/
|
||||
#if (defined(_WIN32) && defined(MYSQL_DYNAMIC_PLUGIN))
|
||||
#define MYSQL_PLUGIN_EXPORT extern "C" __declspec(dllexport)
|
||||
#else
|
||||
#define MYSQL_PLUGIN_EXPORT
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
class THD;
|
||||
class Item;
|
||||
@ -90,9 +100,9 @@ int PSIZE= sizeof(struct st_mysql_plugin); \
|
||||
struct st_mysql_plugin DECLS[]= {
|
||||
#else
|
||||
#define __MYSQL_DECLARE_PLUGIN(NAME, VERSION, PSIZE, DECLS) \
|
||||
int _mysql_plugin_interface_version_= MYSQL_PLUGIN_INTERFACE_VERSION; \
|
||||
int _mysql_sizeof_struct_st_plugin_= sizeof(struct st_mysql_plugin); \
|
||||
struct st_mysql_plugin _mysql_plugin_declarations_[]= {
|
||||
MYSQL_PLUGIN_EXPORT int _mysql_plugin_interface_version_= MYSQL_PLUGIN_INTERFACE_VERSION; \
|
||||
MYSQL_PLUGIN_EXPORT int _mysql_sizeof_struct_st_plugin_= sizeof(struct st_mysql_plugin); \
|
||||
MYSQL_PLUGIN_EXPORT struct st_mysql_plugin _mysql_plugin_declarations_[]= {
|
||||
#endif
|
||||
|
||||
#define mysql_declare_plugin(NAME) \
|
||||
|
@ -87,63 +87,16 @@ FOREACH(rpath ${VIO_SOURCES})
|
||||
SET(LIB_SOURCES ${LIB_SOURCES} ../vio/${rpath})
|
||||
ENDFOREACH(rpath)
|
||||
|
||||
# Engines
|
||||
INCLUDE(${CMAKE_SOURCE_DIR}/storage/heap/CMakeLists.txt)
|
||||
FOREACH(rpath ${HEAP_SOURCES})
|
||||
SET(LIB_SOURCES ${LIB_SOURCES} ../storage/heap/${rpath})
|
||||
ENDFOREACH(rpath)
|
||||
|
||||
INCLUDE(${CMAKE_SOURCE_DIR}/storage/myisam/CMakeLists.txt)
|
||||
FOREACH(rpath ${MYISAM_SOURCES})
|
||||
SET(LIB_SOURCES ${LIB_SOURCES} ../storage/myisam/${rpath})
|
||||
ENDFOREACH(rpath)
|
||||
|
||||
INCLUDE(${CMAKE_SOURCE_DIR}/storage/myisammrg/CMakeLists.txt)
|
||||
FOREACH(rpath ${MYISAMMRG_SOURCES})
|
||||
SET(LIB_SOURCES ${LIB_SOURCES} ../storage/myisammrg/${rpath})
|
||||
ENDFOREACH(rpath)
|
||||
|
||||
IF(WITH_ARCHIVE_STORAGE_ENGINE)
|
||||
INCLUDE(${CMAKE_SOURCE_DIR}/storage/archive/CMakeLists.txt)
|
||||
FOREACH(rpath ${ARCHIVE_SOURCES})
|
||||
SET(LIB_SOURCES ${LIB_SOURCES} ../storage/archive/${rpath})
|
||||
FOREACH (ENGINE_LIB ${MYSQLD_STATIC_ENGINE_LIBS})
|
||||
INCLUDE(${CMAKE_SOURCE_DIR}/storage/${ENGINE_LIB}/CMakeLists.txt)
|
||||
STRING(TOUPPER ${ENGINE_LIB} ENGINE_LIB_UPPER)
|
||||
FOREACH(rpath ${${ENGINE_LIB_UPPER}_SOURCES})
|
||||
SET(LIB_SOURCES ${LIB_SOURCES} ${CMAKE_SOURCE_DIR}/storage/${ENGINE_LIB}/${rpath})
|
||||
ENDFOREACH(rpath)
|
||||
ENDIF(WITH_ARCHIVE_STORAGE_ENGINE)
|
||||
ENDFOREACH(ENGINE_LIB)
|
||||
|
||||
IF(WITH_BLACKHOLE_STORAGE_ENGINE)
|
||||
INCLUDE(${CMAKE_SOURCE_DIR}/storage/blackhole/CMakeLists.txt)
|
||||
FOREACH(rpath ${BLACKHOLE_SOURCES})
|
||||
SET(LIB_SOURCES ${LIB_SOURCES} ../storage/blackhole/${rpath})
|
||||
ENDFOREACH(rpath)
|
||||
ENDIF(WITH_BLACKHOLE_STORAGE_ENGINE)
|
||||
|
||||
IF(WITH_EXAMPLE_STORAGE_ENGINE)
|
||||
INCLUDE(${CMAKE_SOURCE_DIR}/storage/example/CMakeLists.txt)
|
||||
FOREACH(rpath ${EXAMPLE_SOURCES})
|
||||
SET(LIB_SOURCES ${LIB_SOURCES} ../storage/example/${rpath})
|
||||
ENDFOREACH(rpath)
|
||||
ENDIF(WITH_EXAMPLE_STORAGE_ENGINE)
|
||||
|
||||
IF(WITH_FEDERATED_STORAGE_ENGINE)
|
||||
INCLUDE(${CMAKE_SOURCE_DIR}/storage/federated/CMakeLists.txt)
|
||||
FOREACH(rpath ${FEDERATED_SOURCES})
|
||||
SET(LIB_SOURCES ${LIB_SOURCES} ../storage/federated/${rpath})
|
||||
ENDFOREACH(rpath)
|
||||
ENDIF(WITH_FEDERATED_STORAGE_ENGINE)
|
||||
|
||||
IF(WITH_INNOBASE_STORAGE_ENGINE)
|
||||
INCLUDE(${CMAKE_SOURCE_DIR}/storage/innobase/CMakeLists.txt)
|
||||
FOREACH(rpath ${INNOBASE_SOURCES})
|
||||
SET(LIB_SOURCES ${LIB_SOURCES} ../storage/innobase/${rpath})
|
||||
ENDFOREACH(rpath)
|
||||
ENDIF(WITH_INNOBASE_STORAGE_ENGINE)
|
||||
|
||||
IF(WITH_CSV_STORAGE_ENGINE)
|
||||
INCLUDE(${CMAKE_SOURCE_DIR}/storage/csv/CMakeLists.txt)
|
||||
FOREACH(rpath ${CSV_SOURCES})
|
||||
SET(LIB_SOURCES ${LIB_SOURCES} ../storage/csv/${rpath})
|
||||
ENDFOREACH(rpath)
|
||||
ENDIF(WITH_CSV_STORAGE_ENGINE)
|
||||
|
||||
SET(SOURCE_SUBLIBS FALSE)
|
||||
|
||||
|
@ -1760,15 +1760,26 @@ sub environment_setup {
|
||||
# --------------------------------------------------------------------------
|
||||
# Add the path where mysqld will find ha_example.so
|
||||
# --------------------------------------------------------------------------
|
||||
if ($mysql_version_id >= 50100) {
|
||||
if ($mysql_version_id >= 50100 && !(IS_WINDOWS && $opt_embedded_server)) {
|
||||
my $plugin_filename;
|
||||
if (IS_WINDOWS)
|
||||
{
|
||||
$plugin_filename = "ha_example.dll";
|
||||
}
|
||||
else
|
||||
{
|
||||
$plugin_filename = "ha_example.so";
|
||||
}
|
||||
my $lib_example_plugin=
|
||||
mtr_file_exists(vs_config_dirs('storage/example', 'ha_example.dll'),
|
||||
"$basedir/storage/example/.libs/ha_example.so",);
|
||||
mtr_file_exists(vs_config_dirs('storage/example',$plugin_filename),
|
||||
"$basedir/storage/example/.libs/".$plugin_filename);
|
||||
$ENV{'EXAMPLE_PLUGIN'}=
|
||||
($lib_example_plugin ? basename($lib_example_plugin) : "");
|
||||
$ENV{'EXAMPLE_PLUGIN_OPT'}= "--plugin-dir=".
|
||||
($lib_example_plugin ? dirname($lib_example_plugin) : "");
|
||||
|
||||
$ENV{'HA_EXAMPLE_SO'}="'".$plugin_filename."'";
|
||||
$ENV{'EXAMPLE_PLUGIN_LOAD'}="--plugin_load=;EXAMPLE=".$plugin_filename.";";
|
||||
}
|
||||
|
||||
# ----------------------------------------------------
|
||||
|
@ -3,13 +3,16 @@
|
||||
CREATE TABLE t1(a int) ENGINE=EXAMPLE;
|
||||
DROP TABLE t1;
|
||||
|
||||
INSTALL PLUGIN example SONAME 'ha_example.so';
|
||||
--replace_regex /\.dll/.so/
|
||||
eval INSTALL PLUGIN example SONAME $HA_EXAMPLE_SO;
|
||||
--replace_regex /\.dll/.so/
|
||||
--error 1125
|
||||
INSTALL PLUGIN EXAMPLE SONAME 'ha_example.so';
|
||||
eval INSTALL PLUGIN EXAMPLE SONAME $HA_EXAMPLE_SO;
|
||||
|
||||
UNINSTALL PLUGIN example;
|
||||
|
||||
INSTALL PLUGIN example SONAME 'ha_example.so';
|
||||
--replace_regex /\.dll/.so/
|
||||
eval INSTALL PLUGIN example SONAME $HA_EXAMPLE_SO;
|
||||
|
||||
CREATE TABLE t1(a int) ENGINE=EXAMPLE;
|
||||
|
||||
@ -30,8 +33,8 @@ UNINSTALL PLUGIN non_exist;
|
||||
--echo # Bug#32034: check_func_enum() does not check correct values but set it
|
||||
--echo # to impossible int val
|
||||
--echo #
|
||||
|
||||
INSTALL PLUGIN example SONAME 'ha_example.so';
|
||||
--replace_regex /\.dll/.so/
|
||||
eval INSTALL PLUGIN example SONAME $HA_EXAMPLE_SO;
|
||||
|
||||
SET GLOBAL example_enum_var= e1;
|
||||
SET GLOBAL example_enum_var= e2;
|
||||
@ -45,7 +48,8 @@ UNINSTALL PLUGIN example;
|
||||
#
|
||||
# Bug #32757 hang with sql_mode set when setting some global variables
|
||||
#
|
||||
INSTALL PLUGIN example SONAME 'ha_example.so';
|
||||
--replace_regex /\.dll/.so/
|
||||
eval INSTALL PLUGIN example SONAME $HA_EXAMPLE_SO;
|
||||
|
||||
select @@session.sql_mode into @old_sql_mode;
|
||||
|
||||
|
@ -1,3 +1,3 @@
|
||||
$EXAMPLE_PLUGIN_OPT
|
||||
"--plugin-load=;EXAMPLE=ha_example.so;"
|
||||
$EXAMPLE_PLUGIN_LOAD
|
||||
--loose-plugin-example-enum-var=e2
|
||||
|
@ -384,7 +384,7 @@ char *get_charsets_dir(char *buf)
|
||||
DBUG_RETURN(res);
|
||||
}
|
||||
|
||||
CHARSET_INFO *all_charsets[256];
|
||||
CHARSET_INFO *all_charsets[256]={NULL};
|
||||
CHARSET_INFO *default_charset_info = &my_charset_latin1;
|
||||
|
||||
void add_compiled_collation(CHARSET_INFO *cs)
|
||||
|
@ -39,7 +39,8 @@ SET_SOURCE_FILES_PROPERTIES(${CMAKE_SOURCE_DIR}/sql/sql_yacc.h
|
||||
|
||||
ADD_DEFINITIONS(-DMYSQL_SERVER -D_CONSOLE -DHAVE_DLOPEN -DHAVE_EVENT_SCHEDULER)
|
||||
|
||||
ADD_EXECUTABLE(mysqld
|
||||
|
||||
SET (SQL_SOURCE
|
||||
../sql-common/client.c derror.cc des_key_file.cc
|
||||
discover.cc ../libmysql/errmsg.c field.cc field_conv.cc
|
||||
filesort.cc gstream.cc
|
||||
@ -82,54 +83,45 @@ ADD_EXECUTABLE(mysqld
|
||||
${PROJECT_SOURCE_DIR}/include/mysql_version.h
|
||||
${PROJECT_SOURCE_DIR}/sql/sql_builtin.cc
|
||||
${PROJECT_SOURCE_DIR}/sql/lex_hash.h)
|
||||
ADD_LIBRARY(sql ${SQL_SOURCE})
|
||||
|
||||
TARGET_LINK_LIBRARIES(mysqld
|
||||
heap myisam myisammrg mysys yassl zlib debug dbug yassl
|
||||
taocrypt strings vio regex wsock32 ws2_32)
|
||||
IF (NOT EXISTS cmake_dummy.cc)
|
||||
FILE (WRITE cmake_dummy.cc "")
|
||||
ENDIF (NOT EXISTS cmake_dummy.cc)
|
||||
ADD_EXECUTABLE(mysqld cmake_dummy.cc)
|
||||
|
||||
SET_TARGET_PROPERTIES(mysqld PROPERTIES OUTPUT_NAME mysqld${MYSQLD_EXE_SUFFIX})
|
||||
SET_TARGET_PROPERTIES(mysqld PROPERTIES ENABLE_EXPORTS TRUE)
|
||||
|
||||
IF(cmake_version EQUAL 20406)
|
||||
# Work around for 2.4.6 bug, OUTPUT_NAME will not set the right .PDB
|
||||
# file name. Note that COMPILE_FLAGS set some temporary pdb during build,
|
||||
# LINK_FLAGS sets the real one.
|
||||
SET_TARGET_PROPERTIES(mysqld PROPERTIES
|
||||
COMPILE_FLAGS "/Fd${CMAKE_CFG_INTDIR}/mysqld${MYSQLD_EXE_SUFFIX}.pdb"
|
||||
LINK_FLAGS "/PDB:${CMAKE_CFG_INTDIR}/mysqld${MYSQLD_EXE_SUFFIX}.pdb")
|
||||
ENDIF(cmake_version EQUAL 20406)
|
||||
SET (MYSQLD_CORE_LIBS mysys zlib dbug strings yassl taocrypt vio regex sql)
|
||||
TARGET_LINK_LIBRARIES(mysqld ${MYSQLD_CORE_LIBS} ${MYSQLD_STATIC_ENGINE_LIBS})
|
||||
TARGET_LINK_LIBRARIES(mysqld ws2_32.lib)
|
||||
|
||||
IF(EMBED_MANIFESTS)
|
||||
MYSQL_EMBED_MANIFEST("mysqld" "asInvoker")
|
||||
ENDIF(EMBED_MANIFESTS)
|
||||
IF(WITH_ARCHIVE_STORAGE_ENGINE)
|
||||
TARGET_LINK_LIBRARIES(mysqld archive)
|
||||
ENDIF(WITH_ARCHIVE_STORAGE_ENGINE)
|
||||
IF(WITH_BLACKHOLE_STORAGE_ENGINE)
|
||||
TARGET_LINK_LIBRARIES(mysqld blackhole)
|
||||
ENDIF(WITH_BLACKHOLE_STORAGE_ENGINE)
|
||||
IF(WITH_CSV_STORAGE_ENGINE)
|
||||
TARGET_LINK_LIBRARIES(mysqld csv)
|
||||
ENDIF(WITH_CSV_STORAGE_ENGINE)
|
||||
IF(WITH_EXAMPLE_STORAGE_ENGINE)
|
||||
TARGET_LINK_LIBRARIES(mysqld example)
|
||||
ENDIF(WITH_EXAMPLE_STORAGE_ENGINE)
|
||||
IF(WITH_FEDERATED_STORAGE_ENGINE)
|
||||
TARGET_LINK_LIBRARIES(mysqld federated)
|
||||
ENDIF(WITH_FEDERATED_STORAGE_ENGINE)
|
||||
IF(WITH_INNOBASE_STORAGE_ENGINE)
|
||||
TARGET_LINK_LIBRARIES(mysqld innobase)
|
||||
ENDIF(WITH_INNOBASE_STORAGE_ENGINE)
|
||||
|
||||
ADD_DEPENDENCIES(mysqld GenError)
|
||||
IF(MSVC AND NOT WITHOUT_DYNAMIC_PLUGINS)
|
||||
# Set module definition file. Also use non-incremental linker,
|
||||
# incremental appears to crash from time to time,if used with /DEF option
|
||||
SET_TARGET_PROPERTIES(mysqld PROPERTIES LINK_FLAGS "/DEF:mysqld.def /INCREMENTAL:NO")
|
||||
|
||||
# NOTE CMake 2.4.6 creates strange dependencies between files in OUTPUT,
|
||||
# so for now we only list one if more than one
|
||||
FOREACH (CORELIB ${MYSQLD_CORE_LIBS})
|
||||
GET_TARGET_PROPERTY(LOC ${CORELIB} LOCATION)
|
||||
FILE(TO_NATIVE_PATH ${LOC} LOC)
|
||||
SET (LIB_LOCATIONS ${LIB_LOCATIONS} ${LOC})
|
||||
ENDFOREACH (CORELIB ${MYSQLD_CORE_LIBS})
|
||||
|
||||
ADD_CUSTOM_COMMAND(TARGET mysqld PRE_LINK
|
||||
COMMAND cscript ARGS //nologo ${PROJECT_SOURCE_DIR}/win/create_def_file.js
|
||||
${PLATFORM} ${LIB_LOCATIONS} > mysqld.def
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/sql)
|
||||
ENDIF(MSVC AND NOT WITHOUT_DYNAMIC_PLUGINS)
|
||||
|
||||
ADD_DEPENDENCIES(sql GenError)
|
||||
|
||||
# Sql Parser custom command
|
||||
ADD_CUSTOM_COMMAND(
|
||||
OUTPUT ${PROJECT_SOURCE_DIR}/sql/sql_yacc.h
|
||||
# ${PROJECT_SOURCE_DIR}/sql/sql_yacc.cc
|
||||
COMMAND bison.exe ARGS -y -p MYSQL --defines=sql_yacc.h
|
||||
${PROJECT_SOURCE_DIR}/sql/sql_yacc.cc
|
||||
COMMAND bison ARGS -y -p MYSQL --defines=sql_yacc.h
|
||||
--output=sql_yacc.cc sql_yacc.yy
|
||||
DEPENDS ${PROJECT_SOURCE_DIR}/sql/sql_yacc.yy)
|
||||
|
||||
@ -146,16 +138,16 @@ ADD_CUSTOM_COMMAND(
|
||||
ADD_CUSTOM_TARGET(
|
||||
GenServerSource ALL
|
||||
DEPENDS ${PROJECT_SOURCE_DIR}/sql/sql_yacc.h
|
||||
# ${PROJECT_SOURCE_DIR}/sql/sql_yacc.cc
|
||||
${PROJECT_SOURCE_DIR}/sql/sql_yacc.cc
|
||||
${PROJECT_SOURCE_DIR}/sql/message.h
|
||||
# ${PROJECT_SOURCE_DIR}/sql/message.rc
|
||||
${PROJECT_SOURCE_DIR}/sql/message.rc
|
||||
${PROJECT_SOURCE_DIR}/sql/lex_hash.h)
|
||||
|
||||
ADD_DEPENDENCIES(mysqld GenServerSource)
|
||||
|
||||
# Remove the auto-generated files as part of 'Clean Solution'
|
||||
SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES
|
||||
"lex_hash.h;sql_yacc.h;sql_yacc.cc")
|
||||
"lex_hash.h;sql_yacc.h;sql_yacc.cc;mysqld.def")
|
||||
|
||||
ADD_LIBRARY(udf_example MODULE udf_example.c udf_example.def)
|
||||
ADD_DEPENDENCIES(udf_example strings GenError)
|
||||
|
@ -1932,8 +1932,8 @@ private:
|
||||
/* Some extern variables used with handlers */
|
||||
|
||||
extern const char *ha_row_type[];
|
||||
extern const char *tx_isolation_names[];
|
||||
extern const char *binlog_format_names[];
|
||||
extern MYSQL_PLUGIN_IMPORT const char *tx_isolation_names[];
|
||||
extern MYSQL_PLUGIN_IMPORT const char *binlog_format_names[];
|
||||
extern TYPELIB tx_isolation_typelib;
|
||||
extern TYPELIB myisam_stats_method_typelib;
|
||||
extern ulong total_ha, total_ha_2pc;
|
||||
|
@ -82,9 +82,9 @@ extern query_id_t global_query_id;
|
||||
inline query_id_t next_query_id() { return global_query_id++; }
|
||||
|
||||
/* useful constants */
|
||||
extern const key_map key_map_empty;
|
||||
extern key_map key_map_full; /* Should be threaded as const */
|
||||
extern const char *primary_key_name;
|
||||
extern MYSQL_PLUGIN_IMPORT const key_map key_map_empty;
|
||||
extern MYSQL_PLUGIN_IMPORT key_map key_map_full; /* Should be threaded as const */
|
||||
extern MYSQL_PLUGIN_IMPORT const char *primary_key_name;
|
||||
|
||||
#include "mysql_com.h"
|
||||
#include <violite.h>
|
||||
@ -123,8 +123,10 @@ char* query_table_status(THD *thd,const char *db,const char *table_name);
|
||||
"in MySQL %s. Please use %s instead.", (Old), (Ver), (New)); \
|
||||
} while(0)
|
||||
|
||||
extern CHARSET_INFO *system_charset_info, *files_charset_info ;
|
||||
extern CHARSET_INFO *national_charset_info, *table_alias_charset;
|
||||
extern MYSQL_PLUGIN_IMPORT CHARSET_INFO *system_charset_info;
|
||||
extern MYSQL_PLUGIN_IMPORT CHARSET_INFO *files_charset_info ;
|
||||
extern MYSQL_PLUGIN_IMPORT CHARSET_INFO *national_charset_info;
|
||||
extern MYSQL_PLUGIN_IMPORT CHARSET_INFO *table_alias_charset;
|
||||
|
||||
|
||||
enum Derivation
|
||||
@ -690,14 +692,19 @@ typedef struct st_sql_list {
|
||||
}
|
||||
} SQL_LIST;
|
||||
|
||||
|
||||
#if defined(MYSQL_DYNAMIC_PLUGIN) && defined(_WIN32)
|
||||
extern "C" THD *_current_thd_noinline();
|
||||
#define _current_thd() _current_thd_noinline()
|
||||
#else
|
||||
extern pthread_key(THD*, THR_THD);
|
||||
inline THD *_current_thd(void)
|
||||
{
|
||||
return my_pthread_getspecific_ptr(THD*,THR_THD);
|
||||
}
|
||||
#endif
|
||||
#define current_thd _current_thd()
|
||||
|
||||
|
||||
/**
|
||||
The meat of thd_proc_info(THD*, char*), a macro that packs the last
|
||||
three calling-info parameters.
|
||||
@ -1882,8 +1889,12 @@ extern time_t server_start_time, flush_status_time;
|
||||
#endif /* MYSQL_SERVER */
|
||||
#if defined MYSQL_SERVER || defined INNODB_COMPATIBILITY_HOOKS
|
||||
extern uint mysql_data_home_len;
|
||||
extern char *mysql_data_home,server_version[SERVER_VERSION_LENGTH],
|
||||
mysql_real_data_home[], mysql_unpacked_real_data_home[];
|
||||
|
||||
extern MYSQL_PLUGIN_IMPORT char *mysql_data_home;
|
||||
extern char server_version[SERVER_VERSION_LENGTH];
|
||||
extern MYSQL_PLUGIN_IMPORT char mysql_real_data_home[];
|
||||
extern char mysql_unpacked_real_data_home[];
|
||||
|
||||
extern CHARSET_INFO *character_set_filesystem;
|
||||
#endif /* MYSQL_SERVER || INNODB_COMPATIBILITY_HOOKS */
|
||||
#ifdef MYSQL_SERVER
|
||||
@ -1891,10 +1902,13 @@ extern char *opt_mysql_tmpdir, mysql_charsets_dir[],
|
||||
def_ft_boolean_syntax[sizeof(ft_boolean_syntax)];
|
||||
extern int mysql_unpacked_real_data_home_len;
|
||||
#define mysql_tmpdir (my_tmpdir(&mysql_tmpdir_list))
|
||||
extern MY_TMPDIR mysql_tmpdir_list;
|
||||
extern MYSQL_PLUGIN_IMPORT MY_TMPDIR mysql_tmpdir_list;
|
||||
extern const LEX_STRING command_name[];
|
||||
extern const char *first_keyword, *my_localhost, *delayed_user, *binary_keyword;
|
||||
extern const char **errmesg; /* Error messages */
|
||||
|
||||
extern const char *first_keyword, *delayed_user, *binary_keyword;
|
||||
extern MYSQL_PLUGIN_IMPORT const char *my_localhost;
|
||||
extern MYSQL_PLUGIN_IMPORT const char **errmesg; /* Error messages */
|
||||
|
||||
extern const char *myisam_recover_options_str;
|
||||
extern const char *in_left_expr_name, *in_additional_cond, *in_having_cond;
|
||||
extern const char * const TRG_EXT;
|
||||
@ -1908,8 +1922,8 @@ extern Le_creator le_creator;
|
||||
extern char language[FN_REFLEN];
|
||||
#endif /* MYSQL_SERVER */
|
||||
#if defined MYSQL_SERVER || defined INNODB_COMPATIBILITY_HOOKS
|
||||
extern char reg_ext[FN_EXTLEN];
|
||||
extern uint reg_ext_length;
|
||||
extern MYSQL_PLUGIN_IMPORT char reg_ext[FN_EXTLEN];
|
||||
extern MYSQL_PLUGIN_IMPORT uint reg_ext_length;
|
||||
#endif /* MYSQL_SERVER || INNODB_COMPATIBILITY_HOOKS */
|
||||
#ifdef MYSQL_SERVER
|
||||
extern char glob_hostname[FN_REFLEN], mysql_home[FN_REFLEN];
|
||||
@ -1929,7 +1943,8 @@ extern ulong slave_open_temp_tables;
|
||||
extern ulong query_cache_size, query_cache_min_res_unit;
|
||||
extern ulong slow_launch_threads, slow_launch_time;
|
||||
extern ulong table_cache_size, table_def_size;
|
||||
extern ulong max_connections,max_connect_errors, connect_timeout;
|
||||
extern MYSQL_PLUGIN_IMPORT ulong max_connections;
|
||||
extern ulong max_connect_errors, connect_timeout;
|
||||
extern ulong slave_net_timeout, slave_trans_retries;
|
||||
extern uint max_user_connections;
|
||||
extern ulong what_to_log,flush_time;
|
||||
@ -1942,7 +1957,7 @@ extern ulong rpl_recovery_rank, thread_cache_size, thread_pool_size;
|
||||
extern ulong back_log;
|
||||
#endif /* MYSQL_SERVER */
|
||||
#if defined MYSQL_SERVER || defined INNODB_COMPATIBILITY_HOOKS
|
||||
extern ulong specialflag;
|
||||
extern ulong MYSQL_PLUGIN_IMPORT specialflag;
|
||||
#endif /* MYSQL_SERVER || INNODB_COMPATIBILITY_HOOKS */
|
||||
#ifdef MYSQL_SERVER
|
||||
extern ulong current_pid;
|
||||
@ -1955,7 +1970,7 @@ extern uint protocol_version, mysqld_port, dropping_tables;
|
||||
extern uint delay_key_write_options;
|
||||
#endif /* MYSQL_SERVER */
|
||||
#if defined MYSQL_SERVER || defined INNODB_COMPATIBILITY_HOOKS
|
||||
extern uint lower_case_table_names;
|
||||
extern MYSQL_PLUGIN_IMPORT uint lower_case_table_names;
|
||||
#endif /* MYSQL_SERVER || INNODB_COMPATIBILITY_HOOKS */
|
||||
#ifdef MYSQL_SERVER
|
||||
extern bool opt_endinfo, using_udf_functions;
|
||||
@ -1963,7 +1978,7 @@ extern my_bool locked_in_memory;
|
||||
extern bool opt_using_transactions;
|
||||
#endif /* MYSQL_SERVER */
|
||||
#if defined MYSQL_SERVER || defined INNODB_COMPATIBILITY_HOOKS
|
||||
extern bool mysqld_embedded;
|
||||
extern MYSQL_PLUGIN_IMPORT bool mysqld_embedded;
|
||||
#endif /* MYSQL_SERVER || INNODB_COMPATIBILITY_HOOKS */
|
||||
#ifdef MYSQL_SERVER
|
||||
extern bool opt_large_files, server_id_supplied;
|
||||
@ -2001,7 +2016,7 @@ extern uint opt_large_page_size;
|
||||
extern char *opt_logname, *opt_slow_logname;
|
||||
extern const char *log_output_str;
|
||||
|
||||
extern MYSQL_BIN_LOG mysql_bin_log;
|
||||
extern MYSQL_PLUGIN_IMPORT MYSQL_BIN_LOG mysql_bin_log;
|
||||
extern LOGGER logger;
|
||||
extern TABLE_LIST general_log, slow_log;
|
||||
extern FILE *bootstrap_file;
|
||||
@ -2009,13 +2024,14 @@ extern int bootstrap_error;
|
||||
extern FILE *stderror_file;
|
||||
extern pthread_key(MEM_ROOT**,THR_MALLOC);
|
||||
extern pthread_mutex_t LOCK_mysql_create_db,LOCK_Acl,LOCK_open, LOCK_lock_db,
|
||||
LOCK_thread_count,LOCK_mapped_file,LOCK_user_locks, LOCK_status,
|
||||
LOCK_mapped_file,LOCK_user_locks, LOCK_status,
|
||||
LOCK_error_log, LOCK_delayed_insert, LOCK_uuid_generator,
|
||||
LOCK_delayed_status, LOCK_delayed_create, LOCK_crypt, LOCK_timezone,
|
||||
LOCK_slave_list, LOCK_active_mi, LOCK_manager, LOCK_global_read_lock,
|
||||
LOCK_global_system_variables, LOCK_user_conn,
|
||||
LOCK_prepared_stmt_count,
|
||||
LOCK_bytes_sent, LOCK_bytes_received, LOCK_connection_count;
|
||||
extern MYSQL_PLUGIN_IMPORT pthread_mutex_t LOCK_thread_count;
|
||||
#ifdef HAVE_OPENSSL
|
||||
extern pthread_mutex_t LOCK_des_key_file;
|
||||
#endif
|
||||
@ -2035,7 +2051,7 @@ extern const String my_null_string;
|
||||
extern SHOW_VAR status_vars[];
|
||||
#endif /* MYSQL_SERVER */
|
||||
#if defined MYSQL_SERVER || defined INNODB_COMPATIBILITY_HOOKS
|
||||
extern struct system_variables global_system_variables;
|
||||
extern MYSQL_PLUGIN_IMPORT struct system_variables global_system_variables;
|
||||
#endif /* MYSQL_SERVER || INNODB_COMPATIBILITY_HOOKS */
|
||||
#ifdef MYSQL_SERVER
|
||||
extern struct system_variables max_system_variables;
|
||||
|
@ -6765,7 +6765,7 @@ The minimum value for this variable is 4096.",
|
||||
(uchar**) &opt_plugin_dir_ptr, (uchar**) &opt_plugin_dir_ptr, 0,
|
||||
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"plugin-load", OPT_PLUGIN_LOAD,
|
||||
"Optional colon-separated list of plugins to load, where each plugin is "
|
||||
"Optional semicolon-separated list of plugins to load, where each plugin is "
|
||||
"identified as name=library, where name is the plugin name and library "
|
||||
"is the plugin library in plugin_dir.",
|
||||
(uchar**) &opt_plugin_load, (uchar**) &opt_plugin_load, 0,
|
||||
|
@ -746,6 +746,12 @@ void thd_get_xid(const MYSQL_THD thd, MYSQL_XID *xid)
|
||||
*xid = *(MYSQL_XID *) &thd->transaction.xid_state.xid;
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
extern "C" THD *_current_thd_noinline(void)
|
||||
{
|
||||
return my_pthread_getspecific_ptr(THD*,THR_THD);
|
||||
}
|
||||
#endif
|
||||
/*
|
||||
Init common variables that has to be reset on start and on change_user
|
||||
*/
|
||||
|
@ -91,7 +91,7 @@ enum enum_mark_columns
|
||||
|
||||
extern char internal_table_name[2];
|
||||
extern char empty_c_string[1];
|
||||
extern const char **errmesg;
|
||||
extern MYSQL_PLUGIN_IMPORT const char **errmesg;
|
||||
|
||||
#define TC_LOG_PAGE_SIZE 8192
|
||||
#define TC_LOG_MIN_SIZE (3*TC_LOG_PAGE_SIZE)
|
||||
|
@ -86,7 +86,7 @@ struct list_node :public Sql_alloc
|
||||
};
|
||||
|
||||
|
||||
extern list_node end_of_list;
|
||||
extern MYSQL_PLUGIN_IMPORT list_node end_of_list;
|
||||
|
||||
class base_list :public Sql_alloc
|
||||
{
|
||||
|
@ -16,25 +16,12 @@
|
||||
#ifndef _SQL_PROFILE_H
|
||||
#define _SQL_PROFILE_H
|
||||
|
||||
#if __STDC_VERSION__ < 199901L
|
||||
# if __GNUC__ >= 2
|
||||
# define __func__ __FUNCTION__
|
||||
# else
|
||||
# define __func__ _unknown_func_
|
||||
extern const char * const _unknown_func_;
|
||||
# endif
|
||||
#elif defined(_MSC_VER)
|
||||
# if _MSC_VER < 1300
|
||||
# define __func__ _unknown_func_
|
||||
extern const char * const _unknown_func_;
|
||||
# else
|
||||
# define __func__ __FUNCTION__
|
||||
# endif
|
||||
#elif defined(__BORLANDC__)
|
||||
# define __func__ __FUNC__
|
||||
#ifndef __func__
|
||||
#ifdef __FUNCTION__
|
||||
#define __func__ __FUNCTION__
|
||||
#else
|
||||
# define __func__ _unknown_func_
|
||||
extern const char * const _unknown_func_;
|
||||
#define __func__ "unknown function"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
extern ST_FIELD_INFO query_profile_statistics_info[];
|
||||
|
@ -18,7 +18,7 @@
|
||||
AUTOMAKE_OPTIONS = foreign
|
||||
|
||||
# These are built from source in the Docs directory
|
||||
EXTRA_DIST =
|
||||
EXTRA_DIST = mysql_storage_engine.cmake
|
||||
SUBDIRS = @mysql_se_dirs@
|
||||
DIST_SUBDIRS = @mysql_se_distdirs@
|
||||
|
||||
|
@ -13,17 +13,6 @@
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/zlib
|
||||
${CMAKE_SOURCE_DIR}/sql
|
||||
${CMAKE_SOURCE_DIR}/regex
|
||||
${CMAKE_SOURCE_DIR}/extra/yassl/include)
|
||||
|
||||
INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
|
||||
SET(ARCHIVE_SOURCES azio.c ha_archive.cc ha_archive.h)
|
||||
|
||||
IF(NOT SOURCE_SUBLIBS)
|
||||
ADD_LIBRARY(archive ${ARCHIVE_SOURCES})
|
||||
ADD_DEPENDENCIES(archive GenError)
|
||||
ENDIF(NOT SOURCE_SUBLIBS)
|
||||
MYSQL_STORAGE_ENGINE(ARCHIVE)
|
||||
|
@ -16,13 +16,7 @@
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/sql
|
||||
${CMAKE_SOURCE_DIR}/regex
|
||||
${CMAKE_SOURCE_DIR}/extra/yassl/include)
|
||||
|
||||
INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
|
||||
SET(BLACKHOLE_SOURCES ha_blackhole.cc ha_blackhole.h)
|
||||
|
||||
IF(NOT SOURCE_SUBLIBS)
|
||||
ADD_LIBRARY(blackhole ${BLACKHOLE_SOURCES})
|
||||
ADD_DEPENDENCIES(blackhole GenError)
|
||||
ENDIF(NOT SOURCE_SUBLIBS)
|
||||
MYSQL_STORAGE_ENGINE(BLACKHOLE)
|
||||
|
@ -16,13 +16,6 @@
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/sql
|
||||
${CMAKE_SOURCE_DIR}/regex
|
||||
${CMAKE_SOURCE_DIR}/extra/yassl/include)
|
||||
|
||||
INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
|
||||
SET(CSV_SOURCES ha_tina.cc ha_tina.h transparent_file.cc transparent_file.h)
|
||||
|
||||
IF(NOT SOURCE_SUBLIBS)
|
||||
ADD_LIBRARY(csv ${CSV_SOURCES})
|
||||
ADD_DEPENDENCIES(csv GenError)
|
||||
ENDIF(NOT SOURCE_SUBLIBS)
|
||||
MYSQL_STORAGE_ENGINE(CSV)
|
@ -15,14 +15,6 @@
|
||||
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/sql
|
||||
${CMAKE_SOURCE_DIR}/regex
|
||||
${CMAKE_SOURCE_DIR}/extra/yassl/include)
|
||||
|
||||
INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
|
||||
SET(EXAMPLE_SOURCES ha_example.cc)
|
||||
|
||||
IF(NOT SOURCE_SUBLIBS)
|
||||
ADD_LIBRARY(example ${EXAMPLE_SOURCES})
|
||||
ADD_DEPENDENCIES(example GenError)
|
||||
ENDIF(NOT SOURCE_SUBLIBS)
|
||||
MYSQL_STORAGE_ENGINE(EXAMPLE)
|
||||
|
@ -13,16 +13,6 @@
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/sql
|
||||
${CMAKE_SOURCE_DIR}/regex
|
||||
${CMAKE_SOURCE_DIR}/extra/yassl/include)
|
||||
|
||||
INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
|
||||
SET(FEDERATED_SOURCES ha_federated.cc)
|
||||
|
||||
IF(NOT SOURCE_SUBLIBS)
|
||||
ADD_LIBRARY(federated ${FEDERATED_SOURCES})
|
||||
ADD_DEPENDENCIES(federated GenError)
|
||||
ENDIF(NOT SOURCE_SUBLIBS)
|
||||
MYSQL_STORAGE_ENGINE(FEDERATED)
|
||||
|
@ -16,18 +16,10 @@
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/zlib
|
||||
${CMAKE_SOURCE_DIR}/sql
|
||||
${CMAKE_SOURCE_DIR}/regex
|
||||
${CMAKE_SOURCE_DIR}/extra/yassl/include)
|
||||
|
||||
INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
|
||||
SET(HEAP_SOURCES _check.c _rectest.c hp_block.c hp_clear.c hp_close.c hp_create.c
|
||||
ha_heap.cc
|
||||
hp_delete.c hp_extra.c hp_hash.c hp_info.c hp_open.c hp_panic.c
|
||||
hp_rename.c hp_rfirst.c hp_rkey.c hp_rlast.c hp_rnext.c hp_rprev.c
|
||||
hp_rrnd.c hp_rsame.c hp_scan.c hp_static.c hp_update.c hp_write.c)
|
||||
|
||||
IF(NOT SOURCE_SUBLIBS)
|
||||
ADD_LIBRARY(heap ${HEAP_SOURCES})
|
||||
ADD_DEPENDENCIES(heap GenError)
|
||||
ENDIF(NOT SOURCE_SUBLIBS)
|
||||
MYSQL_STORAGE_ENGINE(HEAP)
|
||||
|
@ -15,6 +15,7 @@
|
||||
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
|
||||
ADD_DEFINITIONS(-DMYSQL_SERVER -D_WIN32 -D_LIB)
|
||||
|
||||
# Bug 19424 - InnoDB: Possibly a memory overrun of the buffer being freed (64-bit Visual C)
|
||||
@ -25,12 +26,10 @@ IF(CMAKE_GENERATOR MATCHES "Visual Studio" AND CMAKE_SIZEOF_VOID_P MATCHES 8)
|
||||
PROPERTIES COMPILE_FLAGS -Od)
|
||||
ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio" AND CMAKE_SIZEOF_VOID_P MATCHES 8)
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/zlib
|
||||
${CMAKE_SOURCE_DIR}/storage/innobase/include
|
||||
${CMAKE_SOURCE_DIR}/storage/innobase/handler
|
||||
${CMAKE_SOURCE_DIR}/sql
|
||||
${CMAKE_SOURCE_DIR}/regex
|
||||
${CMAKE_SOURCE_DIR}/extra/yassl/include)
|
||||
INCLUDE_DIRECTORIES(
|
||||
${CMAKE_SOURCE_DIR}/storage/innobase/include
|
||||
${CMAKE_SOURCE_DIR}/storage/innobase/handler
|
||||
)
|
||||
|
||||
SET(INNOBASE_SOURCES btr/btr0btr.c btr/btr0cur.c btr/btr0pcur.c btr/btr0sea.c
|
||||
buf/buf0buf.c buf/buf0flu.c buf/buf0lru.c buf/buf0rea.c
|
||||
@ -64,7 +63,5 @@ SET(INNOBASE_SOURCES btr/btr0btr.c btr/btr0cur.c btr/btr0pcur.c btr/btr0sea.c
|
||||
usr/usr0sess.c
|
||||
ut/ut0byte.c ut/ut0dbg.c ut/ut0mem.c ut/ut0rnd.c ut/ut0ut.c ut/ut0vec.c ut/ut0list.c ut/ut0wqueue.c)
|
||||
|
||||
IF(NOT SOURCE_SUBLIBS)
|
||||
ADD_LIBRARY(innobase ${INNOBASE_SOURCES})
|
||||
ADD_DEPENDENCIES(innobase GenError)
|
||||
ENDIF(NOT SOURCE_SUBLIBS)
|
||||
MYSQL_STORAGE_ENGINE(INNOBASE)
|
||||
|
||||
|
@ -902,6 +902,100 @@ innobase_get_charset(
|
||||
return(thd_charset((THD*) mysql_thd));
|
||||
}
|
||||
|
||||
#if defined (__WIN__) && defined (MYSQL_DYNAMIC_PLUGIN)
|
||||
extern MYSQL_PLUGIN_IMPORT MY_TMPDIR mysql_tmpdir_list;
|
||||
/*******************************************************************//**
|
||||
Map an OS error to an errno value. The OS error number is stored in
|
||||
_doserrno and the mapped value is stored in errno) */
|
||||
extern "C"
|
||||
void __cdecl
|
||||
_dosmaperr(
|
||||
unsigned long); /*!< in: OS error value */
|
||||
|
||||
/*********************************************************************//**
|
||||
Creates a temporary file.
|
||||
@return temporary file descriptor, or < 0 on error */
|
||||
extern "C"
|
||||
int
|
||||
innobase_mysql_tmpfile(void)
|
||||
/*========================*/
|
||||
{
|
||||
int fd; /* handle of opened file */
|
||||
HANDLE osfh; /* OS handle of opened file */
|
||||
char* tmpdir; /* point to the directory
|
||||
where to create file */
|
||||
TCHAR path_buf[MAX_PATH - 14]; /* buffer for tmp file path.
|
||||
The length cannot be longer
|
||||
than MAX_PATH - 14, or
|
||||
GetTempFileName will fail. */
|
||||
char filename[MAX_PATH]; /* name of the tmpfile */
|
||||
DWORD fileaccess = GENERIC_READ /* OS file access */
|
||||
| GENERIC_WRITE
|
||||
| DELETE;
|
||||
DWORD fileshare = FILE_SHARE_READ /* OS file sharing mode */
|
||||
| FILE_SHARE_WRITE
|
||||
| FILE_SHARE_DELETE;
|
||||
DWORD filecreate = CREATE_ALWAYS; /* OS method of open/create */
|
||||
DWORD fileattrib = /* OS file attribute flags */
|
||||
FILE_ATTRIBUTE_NORMAL
|
||||
| FILE_FLAG_DELETE_ON_CLOSE
|
||||
| FILE_ATTRIBUTE_TEMPORARY
|
||||
| FILE_FLAG_SEQUENTIAL_SCAN;
|
||||
|
||||
DBUG_ENTER("innobase_mysql_tmpfile");
|
||||
|
||||
tmpdir = my_tmpdir(&mysql_tmpdir_list);
|
||||
|
||||
/* The tmpdir parameter can not be NULL for GetTempFileName. */
|
||||
if (!tmpdir) {
|
||||
uint ret;
|
||||
|
||||
/* Use GetTempPath to determine path for temporary files. */
|
||||
ret = GetTempPath(sizeof(path_buf), path_buf);
|
||||
if (ret > sizeof(path_buf) || (ret == 0)) {
|
||||
|
||||
_dosmaperr(GetLastError()); /* map error */
|
||||
DBUG_RETURN(-1);
|
||||
}
|
||||
|
||||
tmpdir = path_buf;
|
||||
}
|
||||
|
||||
/* Use GetTempFileName to generate a unique filename. */
|
||||
if (!GetTempFileName(tmpdir, "ib", 0, filename)) {
|
||||
|
||||
_dosmaperr(GetLastError()); /* map error */
|
||||
DBUG_RETURN(-1);
|
||||
}
|
||||
|
||||
DBUG_PRINT("info", ("filename: %s", filename));
|
||||
|
||||
/* Open/Create the file. */
|
||||
osfh = CreateFile(filename, fileaccess, fileshare, NULL,
|
||||
filecreate, fileattrib, NULL);
|
||||
if (osfh == INVALID_HANDLE_VALUE) {
|
||||
|
||||
/* open/create file failed! */
|
||||
_dosmaperr(GetLastError()); /* map error */
|
||||
DBUG_RETURN(-1);
|
||||
}
|
||||
|
||||
do {
|
||||
/* Associates a CRT file descriptor with the OS file handle. */
|
||||
fd = _open_osfhandle((intptr_t) osfh, 0);
|
||||
} while (fd == -1 && errno == EINTR);
|
||||
|
||||
if (fd == -1) {
|
||||
/* Open failed, close the file handle. */
|
||||
|
||||
_dosmaperr(GetLastError()); /* map error */
|
||||
CloseHandle(osfh); /* no need to check if
|
||||
CloseHandle fails */
|
||||
}
|
||||
|
||||
DBUG_RETURN(fd);
|
||||
}
|
||||
#else
|
||||
/*************************************************************************
|
||||
Creates a temporary file. */
|
||||
extern "C"
|
||||
@ -933,6 +1027,7 @@ innobase_mysql_tmpfile(void)
|
||||
}
|
||||
return(fd2);
|
||||
}
|
||||
#endif
|
||||
|
||||
/*************************************************************************
|
||||
Wrapper around MySQL's copy_and_convert function, see it for
|
||||
|
@ -15,44 +15,17 @@
|
||||
|
||||
# This is the CMakeLists for InnoDB Plugin
|
||||
|
||||
# The dynamic plugin requires CMake 2.6.0 or later. Otherwise, the /DELAYLOAD
|
||||
# property will not be set
|
||||
CMAKE_MINIMUM_REQUIRED(VERSION 2.6 FATAL_ERROR)
|
||||
|
||||
# When PROJECT is defined, a separate .sln file will be generated.
|
||||
# PROJECT (INNODB_PLUGIN)
|
||||
|
||||
MESSAGE(STATUS "Enter InnoDB ...")
|
||||
MESSAGE(STATUS "INNODB_DYNAMIC_PLUGIN: " ${INNODB_DYNAMIC_PLUGIN})
|
||||
|
||||
# Print out CMake info
|
||||
MESSAGE(STATUS "CMAKE_GENERATOR: " ${CMAKE_GENERATOR})
|
||||
MESSAGE(STATUS "CMAKE_SOURCE_DIR: " ${CMAKE_SOURCE_DIR})
|
||||
|
||||
# Print out system information
|
||||
MESSAGE(STATUS "CMAKE_SYSTEM: " ${CMAKE_SYSTEM})
|
||||
MESSAGE(STATUS "CMAKE_SYSTEM_PROCESSOR: " ${CMAKE_SYSTEM_PROCESSOR})
|
||||
MESSAGE(STATUS "UNIX: " ${UNIX})
|
||||
MESSAGE(STATUS "WIN32: " ${WIN32})
|
||||
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
|
||||
IF (CMAKE_SIZEOF_VOID_P MATCHES 8)
|
||||
SET(WIN64 TRUE)
|
||||
ENDIF (CMAKE_SIZEOF_VOID_P MATCHES 8)
|
||||
|
||||
MESSAGE(STATUS "WIN64: " ${WIN64})
|
||||
MESSAGE(STATUS "MSVC: " ${MSVC})
|
||||
|
||||
# Check type sizes
|
||||
include(CheckTypeSize)
|
||||
|
||||
# Currently, the checked results are not used.
|
||||
CHECK_TYPE_SIZE(int SIZEOF_INT)
|
||||
CHECK_TYPE_SIZE(long SIZEOF_LONG)
|
||||
CHECK_TYPE_SIZE(void* SIZEOF_VOID_P)
|
||||
|
||||
# Include directories under innobase
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/storage/innobase/include
|
||||
${CMAKE_SOURCE_DIR}/storage/innobase/handler)
|
||||
# Include directories under innodb_plugin
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/storage/innodb_plugin/include
|
||||
${CMAKE_SOURCE_DIR}/storage/innodfb_plugin/handler)
|
||||
|
||||
# Include directories under mysql
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
|
||||
@ -68,7 +41,7 @@ IF(MSVC AND $(WIN64))
|
||||
PROPERTIES COMPILE_FLAGS -Od)
|
||||
ENDIF(MSVC AND $(WIN64))
|
||||
|
||||
SET(INNODB_SOURCES btr/btr0btr.c btr/btr0cur.c btr/btr0pcur.c btr/btr0sea.c
|
||||
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
|
||||
data/data0data.c data/data0type.c
|
||||
dict/dict0boot.c dict/dict0crea.c dict/dict0dict.c dict/dict0load.c dict/dict0mem.c
|
||||
@ -101,31 +74,5 @@ SET(INNODB_SOURCES btr/btr0btr.c btr/btr0cur.c btr/btr0pcur.c btr/btr0sea.c
|
||||
usr/usr0sess.c
|
||||
ut/ut0byte.c ut/ut0dbg.c ut/ut0mem.c ut/ut0rnd.c ut/ut0ut.c ut/ut0vec.c
|
||||
ut/ut0list.c ut/ut0wqueue.c)
|
||||
|
||||
IF(NOT SOURCE_SUBLIBS)
|
||||
# INNODB_RW_LOCKS_USE_ATOMICS may be defined only if HAVE_WINDOWS_ATOMICS is defined.
|
||||
# Windows Interlocked functions require Windows 2000 or newer operating system
|
||||
ADD_DEFINITIONS(-D_WIN32 -DHAVE_WINDOWS_ATOMICS -DINNODB_RW_LOCKS_USE_ATOMICS)
|
||||
ADD_LIBRARY(innobase STATIC ${INNODB_SOURCES})
|
||||
# Require mysqld_error.h, which is built as part of the GenError
|
||||
ADD_DEPENDENCIES(innobase GenError)
|
||||
# only set MYSQL_SERVER for the builtin engine, not the plugin
|
||||
SET_TARGET_PROPERTIES(innobase PROPERTIES COMPILE_FLAGS "-DMYSQL_SERVER")
|
||||
|
||||
# Dynamic plugin ha_innodb.dll
|
||||
IF(INNODB_DYNAMIC_PLUGIN)
|
||||
ADD_LIBRARY(ha_innodb SHARED ${INNODB_SOURCES} ha_innodb.def handler/win_delay_loader.cc)
|
||||
# Require mysqld_error.h, which is built as part of the GenError
|
||||
# Also require mysqld.lib, which is built as part of the mysqld
|
||||
ADD_DEPENDENCIES(ha_innodb GenError mysqld)
|
||||
|
||||
TARGET_LINK_LIBRARIES(ha_innodb ${CMAKE_SOURCE_DIR}/sql/\$\(OutDir\)/mysqld.lib)
|
||||
SET_TARGET_PROPERTIES(ha_innodb PROPERTIES OUTPUT_NAME ha_innodb)
|
||||
SET_TARGET_PROPERTIES(ha_innodb PROPERTIES LINK_FLAGS "/MAP /MAPINFO:EXPORTS")
|
||||
SET_TARGET_PROPERTIES(ha_innodb PROPERTIES LINK_FLAGS "/ENTRY:\"_DllMainCRTStartup@12\"")
|
||||
SET_TARGET_PROPERTIES(ha_innodb PROPERTIES COMPILE_FLAGS "-DMYSQL_DYNAMIC_PLUGIN")
|
||||
SET_TARGET_PROPERTIES(ha_innodb PROPERTIES LINK_FLAGS "/DELAYLOAD:mysqld.exe")
|
||||
ENDIF(INNODB_DYNAMIC_PLUGIN)
|
||||
ENDIF(NOT SOURCE_SUBLIBS)
|
||||
|
||||
MESSAGE(STATUS "Exit InnoDB ...")
|
||||
ADD_DEFINITIONS(-DHAVE_WINDOWS_ATOMICS -DINNODB_RW_LOCKS_USE_ATOMICS)
|
||||
MYSQL_STORAGE_ENGINE(INNODB_PLUGIN)
|
@ -76,12 +76,11 @@ extern "C" {
|
||||
|
||||
#include "ha_innodb.h"
|
||||
#include "i_s.h"
|
||||
#include "handler0vars.h"
|
||||
|
||||
#ifndef MYSQL_SERVER
|
||||
/* This is needed because of Bug #3596. Let us hope that pthread_mutex_t
|
||||
is defined the same in both builds: the MySQL server and the InnoDB plugin. */
|
||||
extern pthread_mutex_t LOCK_thread_count;
|
||||
extern MYSQL_PLUGIN_IMPORT pthread_mutex_t LOCK_thread_count;
|
||||
|
||||
#if MYSQL_VERSION_ID < 50124
|
||||
/* this is defined in mysql_priv.h inside #ifdef MYSQL_SERVER
|
||||
@ -104,13 +103,9 @@ static bool innodb_inited = 0;
|
||||
|
||||
/* In the Windows plugin, the return value of current_thd is
|
||||
undefined. Map it to NULL. */
|
||||
#if defined MYSQL_DYNAMIC_PLUGIN && defined __WIN__
|
||||
# undef current_thd
|
||||
# define current_thd NULL
|
||||
# define EQ_CURRENT_THD(thd) TRUE
|
||||
#else /* MYSQL_DYNAMIC_PLUGIN && __WIN__ */
|
||||
# define EQ_CURRENT_THD(thd) ((thd) == current_thd)
|
||||
#endif /* MYSQL_DYNAMIC_PLUGIN && __WIN__ */
|
||||
|
||||
#define EQ_CURRENT_THD(thd) ((thd) == current_thd)
|
||||
|
||||
|
||||
static struct handlerton* innodb_hton_ptr;
|
||||
|
||||
@ -985,6 +980,7 @@ innobase_get_charset(
|
||||
}
|
||||
|
||||
#if defined (__WIN__) && defined (MYSQL_DYNAMIC_PLUGIN)
|
||||
extern MYSQL_PLUGIN_IMPORT MY_TMPDIR mysql_tmpdir_list;
|
||||
/*******************************************************************//**
|
||||
Map an OS error to an errno value. The OS error number is stored in
|
||||
_doserrno and the mapped value is stored in errno) */
|
||||
|
@ -35,7 +35,6 @@ extern "C" {
|
||||
}
|
||||
|
||||
#include "ha_innodb.h"
|
||||
#include "handler0vars.h"
|
||||
|
||||
/*************************************************************//**
|
||||
Copies an InnoDB column to a MySQL field. This function is
|
||||
|
@ -1,69 +0,0 @@
|
||||
/*****************************************************************************
|
||||
|
||||
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
|
@ -42,7 +42,6 @@ extern "C" {
|
||||
#include "ha_prototypes.h" /* for innobase_convert_name() */
|
||||
#include "srv0start.h" /* for srv_was_started */
|
||||
}
|
||||
#include "handler0vars.h"
|
||||
|
||||
static const char plugin_author[] = "Innobase Oy";
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -17,7 +17,6 @@
|
||||
MYSQL_STORAGE_ENGINE(innodb_plugin, innodb, [InnoDB Storage Engine],
|
||||
[Transactional Tables using InnoDB], [max,max-no-ndb])
|
||||
MYSQL_PLUGIN_DIRECTORY(innodb_plugin, [storage/innodb_plugin])
|
||||
#MYSQL_PLUGIN_STATIC(innobase, [libinnobase.a])
|
||||
MYSQL_PLUGIN_DYNAMIC(innodb_plugin, [ha_innodb_plugin.la])
|
||||
MYSQL_PLUGIN_ACTIONS(innodb_plugin, [
|
||||
AC_CHECK_HEADERS(sched.h)
|
||||
|
@ -12,16 +12,12 @@
|
||||
# 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
|
||||
INCLUDE("${PROJECT_SOURCE_DIR}/win/mysql_manifest.cmake")
|
||||
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/zlib
|
||||
${CMAKE_SOURCE_DIR}/sql
|
||||
${CMAKE_SOURCE_DIR}/regex
|
||||
${CMAKE_SOURCE_DIR}/extra/yassl/include)
|
||||
|
||||
SET(MYISAM_SOURCES ft_boolean_search.c ft_nlq_search.c ft_parser.c ft_static.c ft_stem.c
|
||||
ha_myisam.cc
|
||||
ft_stopwords.c ft_update.c mi_cache.c mi_changed.c mi_check.c
|
||||
@ -34,11 +30,9 @@ SET(MYISAM_SOURCES ft_boolean_search.c ft_nlq_search.c ft_parser.c ft_static.c
|
||||
mi_unique.c mi_update.c mi_write.c rt_index.c rt_key.c rt_mbr.c
|
||||
rt_split.c sort.c sp_key.c ft_eval.h myisamdef.h rt_index.h mi_rkey.c)
|
||||
|
||||
MYSQL_STORAGE_ENGINE(MYISAM)
|
||||
|
||||
IF(NOT SOURCE_SUBLIBS)
|
||||
|
||||
ADD_LIBRARY(myisam ${MYISAM_SOURCES})
|
||||
ADD_DEPENDENCIES(myisam GenError)
|
||||
|
||||
ADD_EXECUTABLE(myisam_ftdump myisam_ftdump.c)
|
||||
TARGET_LINK_LIBRARIES(myisam_ftdump myisam mysys debug dbug strings zlib wsock32)
|
||||
|
||||
|
@ -12,14 +12,10 @@
|
||||
# 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/zlib
|
||||
${CMAKE_SOURCE_DIR}/sql
|
||||
${CMAKE_SOURCE_DIR}/regex
|
||||
${CMAKE_SOURCE_DIR}/extra/yassl/include)
|
||||
INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
|
||||
|
||||
SET(MYISAMMRG_SOURCES myrg_close.c myrg_create.c myrg_delete.c myrg_extra.c myrg_info.c
|
||||
ha_myisammrg.cc
|
||||
@ -28,7 +24,4 @@ SET(MYISAMMRG_SOURCES myrg_close.c myrg_create.c myrg_delete.c myrg_extra.c myr
|
||||
myrg_rprev.c myrg_rrnd.c myrg_rsame.c myrg_static.c myrg_update.c
|
||||
myrg_write.c myrg_records.c)
|
||||
|
||||
IF(NOT SOURCE_SUBLIBS)
|
||||
ADD_LIBRARY(myisammrg ${MYISAMMRG_SOURCES})
|
||||
ADD_DEPENDENCIES(myisammrg GenError)
|
||||
ENDIF(NOT SOURCE_SUBLIBS)
|
||||
MYSQL_STORAGE_ENGINE(MYISAMMRG)
|
||||
|
36
storage/mysql_storage_engine.cmake
Normal file
36
storage/mysql_storage_engine.cmake
Normal file
@ -0,0 +1,36 @@
|
||||
# MYSQL_STORAGE_ENGINE Macro creates a project to build storage engine
|
||||
# library.
|
||||
#
|
||||
# Parameters:
|
||||
# engine - storage engine name.
|
||||
# variable ENGINE_BUILD_TYPE should be set to "STATIC" or "DYNAMIC"
|
||||
# Remarks:
|
||||
# ${engine}_SOURCES variable containing source files to produce the library must set before
|
||||
# calling this macro
|
||||
|
||||
MACRO(MYSQL_STORAGE_ENGINE engine)
|
||||
IF(NOT SOURCE_SUBLIBS)
|
||||
# Add common include directories
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/zlib
|
||||
${CMAKE_SOURCE_DIR}/sql
|
||||
${CMAKE_SOURCE_DIR}/regex
|
||||
${CMAKE_SOURCE_DIR}/extra/yassl/include)
|
||||
STRING(TOUPPER ${engine} engine)
|
||||
STRING(TOLOWER ${engine} libname)
|
||||
IF(${ENGINE_BUILD_TYPE} STREQUAL "STATIC")
|
||||
ADD_DEFINITIONS(-DWITH_${engine}_STORAGE_ENGINE -DMYSQL_SERVER)
|
||||
#Create static library. The name of the library is <storage_engine>.lib
|
||||
ADD_LIBRARY(${libname} ${${engine}_SOURCES})
|
||||
ADD_DEPENDENCIES(${libname} GenError)
|
||||
MESSAGE("build ${engine} as static library")
|
||||
ELSEIF(${ENGINE_BUILD_TYPE} STREQUAL "DYNAMIC")
|
||||
ADD_DEFINITIONS(-DMYSQL_DYNAMIC_PLUGIN)
|
||||
#Create a DLL.The name of the dll is ha_<storage_engine>.dll
|
||||
#The dll is linked to the mysqld executable
|
||||
SET(dyn_libname ha_${libname})
|
||||
ADD_LIBRARY(${dyn_libname} SHARED ${${engine}_SOURCES})
|
||||
TARGET_LINK_LIBRARIES (${dyn_libname} mysqld)
|
||||
MESSAGE("build ${engine} as DLL")
|
||||
ENDIF(${ENGINE_BUILD_TYPE} STREQUAL "STATIC")
|
||||
ENDIF(NOT SOURCE_SUBLIBS)
|
||||
ENDMACRO(MYSQL_STORAGE_ENGINE)
|
@ -20,3 +20,4 @@ EXTRA_DIST = build-vs71.bat build-vs8.bat build-vs8_x64.bat build-vs9.bat \
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
mysql_manifest.cmake create_manifest.js create_def_file.js
|
||||
|
151
win/configure.js
151
win/configure.js
@ -39,17 +39,11 @@ try
|
||||
var parts = args.Item(i).split('=');
|
||||
switch (parts[0])
|
||||
{
|
||||
case "WITH_ARCHIVE_STORAGE_ENGINE":
|
||||
case "WITH_BLACKHOLE_STORAGE_ENGINE":
|
||||
case "WITH_EXAMPLE_STORAGE_ENGINE":
|
||||
case "WITH_FEDERATED_STORAGE_ENGINE":
|
||||
case "WITH_INNOBASE_STORAGE_ENGINE":
|
||||
case "WITH_PARTITION_STORAGE_ENGINE":
|
||||
case "__NT__":
|
||||
case "CYBOZU":
|
||||
case "EMBED_MANIFESTS":
|
||||
case "EXTRA_DEBUG":
|
||||
case "WITH_EMBEDDED_SERVER":
|
||||
case "WITHOUT_MARIA_TEMP_TABLES":
|
||||
configfile.WriteLine("SET (" + args.Item(i) + " TRUE)");
|
||||
break;
|
||||
case "MYSQL_SERVER_SUFFIX":
|
||||
@ -65,6 +59,7 @@ try
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (actual_port == 0)
|
||||
{
|
||||
// if we actually defaulted (as opposed to the pathological case of
|
||||
@ -114,7 +109,11 @@ try
|
||||
GetBaseVersion(version) + "\")");
|
||||
configfile.WriteLine("SET (MYSQL_VERSION_ID \"" +
|
||||
GetVersionId(version) + "\")");
|
||||
|
||||
var engineOptions = ParsePlugins();
|
||||
for (option in engineOptions)
|
||||
{
|
||||
configfile.WriteLine("SET(" + engineOptions[option] + " TRUE)");
|
||||
}
|
||||
configfile.Close();
|
||||
|
||||
fso = null;
|
||||
@ -184,3 +183,139 @@ function GetVersionId(version)
|
||||
id += build;
|
||||
return id;
|
||||
}
|
||||
|
||||
function PluginConfig(isGroup, include)
|
||||
{
|
||||
this.isGroup = isGroup;
|
||||
this.include = include;
|
||||
}
|
||||
|
||||
|
||||
// Parse command line arguments specific to plugins (aka storage engines).
|
||||
//
|
||||
// --with-plugin-PLUGIN, --with-plugins=group, --with-plugins=PLUGIN[,PLUGIN...]
|
||||
// --without-plugin-PLUGIN is supported.
|
||||
//
|
||||
// Legacy option WITH_<PLUGIN>_STORAGE_ENGINE is supported as well.
|
||||
// The function returns string array with elements like WITH_SOME_STORAGE_ENGINE
|
||||
// or WITHOUT_SOME_STORAGE_ENGINE.
|
||||
//
|
||||
// This function handles groups, for example effect of specifying --with-plugins=max
|
||||
// is the same as --with-plugins==archive,federated,falcon,innobase...
|
||||
|
||||
function ParsePlugins()
|
||||
{
|
||||
|
||||
var config = new Array();
|
||||
|
||||
config["DEFAULT"] = new PluginConfig(true,true);
|
||||
|
||||
// Parse command line parameters
|
||||
for (i=0; i< WScript.Arguments.length;i++)
|
||||
{
|
||||
var option = WScript.Arguments.Item(i);
|
||||
var match = /WITH_(\w+)_STORAGE_ENGINE/.exec(option);
|
||||
if (match == null)
|
||||
match = /--with-plugin-(\w+)/.exec(option);
|
||||
if (match != null)
|
||||
{
|
||||
config[match[1].toUpperCase()] = new PluginConfig(false,true);
|
||||
continue;
|
||||
}
|
||||
|
||||
match = /WITHOUT_(\w+)_STORAGE_ENGINE/.exec(option);
|
||||
if (match == null)
|
||||
match = /--without-plugin-(\w+)/.exec(option);
|
||||
|
||||
if (match != null)
|
||||
{
|
||||
config[match[1].toUpperCase()] =
|
||||
new PluginConfig(false,false);
|
||||
continue;
|
||||
}
|
||||
|
||||
match = /--with-plugins=([\w,\-_]+)/.exec(option);
|
||||
if(match != null)
|
||||
{
|
||||
|
||||
var plugins = match[1].split(",");
|
||||
for(var key in plugins)
|
||||
{
|
||||
config[plugins[key].toUpperCase()] =
|
||||
new PluginConfig(null,true);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
match = /--without-plugins=([\w,\-_]+)/.exec(option);
|
||||
if(match != null)
|
||||
{
|
||||
var plugins = match[1].split(",");
|
||||
for(var key in plugins)
|
||||
config[plugins[key].toUpperCase()] =
|
||||
new PluginConfig(null, false);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
// Read plugin definitions, find out groups plugins belong to.
|
||||
var fc = new Enumerator(fso.GetFolder("storage").SubFolders);
|
||||
for (;!fc.atEnd(); fc.moveNext())
|
||||
{
|
||||
var subfolder = fc.item();
|
||||
var name = subfolder.name.toUpperCase();
|
||||
|
||||
// Handle case where storage engine was already specified by name in
|
||||
// --with-plugins or --without-plugins.
|
||||
if (config[name] != undefined)
|
||||
{
|
||||
config[name].isGroup = false;
|
||||
continue;
|
||||
}
|
||||
config[name] = new PluginConfig(false,null);
|
||||
|
||||
// Handle groups. For each plugin, find out which group it belongs to
|
||||
// If this group was specified on command line for inclusion/exclusion,
|
||||
// then include/exclude the plugin.
|
||||
filename = subfolder +"\\plug.in";
|
||||
if (fso.FileExists(filename))
|
||||
{
|
||||
var content = fso.OpenTextFile(filename, ForReading).ReadAll();
|
||||
var match =
|
||||
/MYSQL_STORAGE_ENGINE([ ]*)[\(]([^\)]+)[\)]/.exec(content);
|
||||
if (match== null)
|
||||
continue;
|
||||
match = /\[[\w,\-_]+\][\s]?\)/.exec(match[0]);
|
||||
if (match == null)
|
||||
continue;
|
||||
groups = match[0].split(/[\,\(\)\[\] ]/);
|
||||
for (var key in groups)
|
||||
{
|
||||
var group = groups[key].toUpperCase();
|
||||
if (config[group] != undefined)
|
||||
{
|
||||
config[group].isGroup = true;
|
||||
if (config[group].include != null)
|
||||
{
|
||||
config[name].include = config[group].include;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var arr = new Array();
|
||||
for(key in config)
|
||||
{
|
||||
var eng = config[key];
|
||||
if(eng.isGroup != undefined && !eng.isGroup && eng.include != undefined)
|
||||
{
|
||||
if (fso.FolderExists("storage\\"+key) || key=="PARTITION")
|
||||
{
|
||||
arr[arr.length] = eng.include?
|
||||
"WITH_"+key+"_STORAGE_ENGINE":"WITHOUT_"+key+"_STORAGE_ENGINE";
|
||||
}
|
||||
}
|
||||
}
|
||||
return arr;
|
||||
}
|
||||
|
220
win/create_def_file.js
Normal file
220
win/create_def_file.js
Normal file
@ -0,0 +1,220 @@
|
||||
// create_def_file.js
|
||||
//
|
||||
// Copyright (C) 2009 Sun Microsystems
|
||||
//
|
||||
// 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
/*
|
||||
This script extracts names and types of globally defined symbols from
|
||||
COFF object files, and writes this information to stdout using .DEF
|
||||
file format (module definition file used by Microsoft linker)
|
||||
|
||||
In MySQL this script is used to export symbols from mysqld.exe for use by
|
||||
storage engine DLLs.
|
||||
|
||||
Usage:
|
||||
cscript create_def_file.js [x86|x64] [object|static_lib|directory ...]
|
||||
|
||||
If directory is passed as a parameter, script will process all object files
|
||||
and static libraries in this directory and recursively in all subdrectories.
|
||||
|
||||
Note :The script does not work properly if /GL (global optimization)
|
||||
compiler option was used to produce object files or libraries. This is a
|
||||
limitation of the dumpbin tool that is used by the script.
|
||||
*/
|
||||
|
||||
ForReading = 1;
|
||||
ForWriting = 2;
|
||||
ForAppending = 8;
|
||||
|
||||
|
||||
var args = WScript.Arguments;
|
||||
|
||||
// check that we got proper arguments
|
||||
if (args.length < 2)
|
||||
{
|
||||
echo("Usage: create_def_file <X86|X64> [static_library|objectfile|objectdirectory ...] ");
|
||||
WScript.Quit(1);
|
||||
}
|
||||
|
||||
|
||||
var is64 = args.Item(0).toLowerCase() == "x64";
|
||||
var shell = new ActiveXObject("WScript.Shell");
|
||||
var fso = new ActiveXObject("Scripting.FileSystemObject");
|
||||
|
||||
OutputSymbols(CollectSymbols());
|
||||
|
||||
|
||||
// takes the array that has been built up and writes out mysqld.def
|
||||
function OutputSymbols(symbols)
|
||||
{
|
||||
var out = WScript.StdOut;
|
||||
out.WriteLine("EXPORTS");
|
||||
for (var sym in symbols)
|
||||
out.WriteLine(sym);
|
||||
}
|
||||
|
||||
function echo(message)
|
||||
{
|
||||
WScript.StdErr.WriteLine(message);
|
||||
}
|
||||
|
||||
// Extract global symbol names and type from objects
|
||||
function CollectSymbols()
|
||||
{
|
||||
var uniqueSymbols = new Array();
|
||||
|
||||
try
|
||||
{
|
||||
/*
|
||||
Compiler tools use VS_UNICODE_OUTPUT env. variable as indicator
|
||||
that they run within IDE, so they can communicate with IDE via
|
||||
pipes instead of usual stdout/stderr. Refer to
|
||||
http://blogs.msdn.com/freik/archive/2006/04/05/569025.aspx
|
||||
for more info.
|
||||
Unset this environment variable.
|
||||
*/
|
||||
shell.Environment("PROCESS").Remove("VS_UNICODE_OUTPUT");
|
||||
}
|
||||
catch(e){}
|
||||
|
||||
var rspfilename = "dumpsymbols.rsp";
|
||||
CreateResponseFile(rspfilename);
|
||||
var commandline="dumpbin @"+rspfilename;
|
||||
|
||||
echo("Executing "+commandline);
|
||||
var oExec = shell.Exec(commandline);
|
||||
|
||||
while(!oExec.StdOut.AtEndOfStream)
|
||||
{
|
||||
var line = oExec.StdOut.ReadLine();
|
||||
if (line.indexOf("External") == -1) continue;
|
||||
var columns = line.split(" ");
|
||||
var index = 0;
|
||||
if (columns.length < 3)
|
||||
continue;
|
||||
|
||||
/*
|
||||
If the third column of dumpbin output contains SECTx,
|
||||
the symbol is defined in that section of the object file.
|
||||
If UNDEF appears, it is not defined in that object and must
|
||||
be resolved elsewhere. BSS symbols (like uninitialized arrays)
|
||||
appear to have non-zero second column.
|
||||
*/
|
||||
if (columns[2].substring(0,4)!="SECT")
|
||||
{
|
||||
if (columns[2] == "UNDEF" && parseInt(columns[1])==0 )
|
||||
continue;
|
||||
}
|
||||
|
||||
/*
|
||||
Extract undecorated symbol names
|
||||
between "|" and next whitespace after it.
|
||||
*/
|
||||
for (; index < columns.length; index++)
|
||||
if (columns[index] == "|")
|
||||
break;
|
||||
|
||||
var symbol = columns[index + 1];
|
||||
var firstSpace = symbol.indexOf(" ");
|
||||
if (firstSpace != -1)
|
||||
symbol = symbol.substring(0, firstSpace-1);
|
||||
|
||||
// Don't export compiler defined stuff
|
||||
if (IsCompilerDefinedSymbol(symbol))
|
||||
continue;
|
||||
|
||||
// Correct symbol name for cdecl calling convention on x86
|
||||
symbol = ScrubSymbol(symbol);
|
||||
|
||||
// Check if we have function or data
|
||||
if (line.indexOf("notype () ") == -1)
|
||||
symbol = symbol + " DATA";
|
||||
|
||||
uniqueSymbols[symbol] = 1;
|
||||
}
|
||||
fso.DeleteFile(rspfilename);
|
||||
return uniqueSymbols;
|
||||
}
|
||||
|
||||
// performs necessary cleanup on the symbol name
|
||||
function ScrubSymbol(symbol)
|
||||
{
|
||||
if (is64) return symbol;
|
||||
if (symbol.charAt(0) != "_")
|
||||
return symbol;
|
||||
|
||||
var atSign = symbol.indexOf("@");
|
||||
if (atSign != -1)
|
||||
{
|
||||
var paramSize = symbol.substring(atSign+1, symbol.Length);
|
||||
if (paramSize.match("[0-9]+$")) return symbol;
|
||||
}
|
||||
return symbol.substring(1, symbol.length);
|
||||
}
|
||||
|
||||
// returns true if the symbol is compiler defined
|
||||
function IsCompilerDefinedSymbol(symbol)
|
||||
{
|
||||
return ((symbol.indexOf("__real@") != -1) ||
|
||||
(symbol.indexOf("_RTC_") != -1) ||
|
||||
(symbol.indexOf("??_C@_") != -1) ||
|
||||
(symbol.indexOf("??_R") != -1) ||
|
||||
(symbol.indexOf("??_7") != -1) ||
|
||||
(symbol.indexOf("?_G") != -1) || // scalar deleting destructor
|
||||
(symbol.indexOf("?_E") != -1)); // vector deleting destructor
|
||||
}
|
||||
|
||||
// Creates response file for dumpbin
|
||||
function CreateResponseFile(filename)
|
||||
{
|
||||
var responseFile = fso.CreateTextFile(filename,true);
|
||||
responseFile.WriteLine("/SYMBOLS");
|
||||
|
||||
var index = 1;
|
||||
for (; index < args.length; index++)
|
||||
{
|
||||
addToResponseFile(args.Item(index),responseFile);
|
||||
}
|
||||
responseFile.Close();
|
||||
}
|
||||
|
||||
// Add object file/library to the dumpbin response file.
|
||||
// If filename parameter is directory, all objects and libs under
|
||||
// this directory or subdirectories are added.
|
||||
function addToResponseFile(filename, responseFile)
|
||||
{
|
||||
if (fso.FolderExists(filename))
|
||||
{
|
||||
var folder = fso.getFolder(filename);
|
||||
var enumerator = new Enumerator(folder.files);
|
||||
for (; !enumerator.atEnd(); enumerator.moveNext())
|
||||
{
|
||||
addToResponseFile(enumerator.item().Path, responseFile);
|
||||
}
|
||||
enumerator = new Enumerator(folder.subFolders);
|
||||
for (; !enumerator.atEnd(); enumerator.moveNext())
|
||||
{
|
||||
addToResponseFile(enumerator.item().Path, responseFile);
|
||||
}
|
||||
}
|
||||
else if (fso.FileExists(filename))
|
||||
{
|
||||
var extension = filename.substr(filename.length -3).toLowerCase();
|
||||
if(extension == "lib" || extension == "obj")
|
||||
{
|
||||
responseFile.WriteLine("\""+fso.GetFile(filename).Path+"\"");
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user