mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 04:53:01 +01:00
Auto-merge from mysql-trunk-bugfixing.
This commit is contained in:
commit
13495faeb7
290 changed files with 7532 additions and 2873 deletions
|
@ -996,6 +996,8 @@ libmysqld/.deps/sql_crypt.Po
|
|||
libmysqld/.deps/sql_cursor.Po
|
||||
libmysqld/.deps/sql_db.Po
|
||||
libmysqld/.deps/sql_delete.Po
|
||||
libmysqld/.deps/sql_truncate.Po
|
||||
libmysqld/.deps/datadict.Po
|
||||
libmysqld/.deps/sql_derived.Po
|
||||
libmysqld/.deps/sql_do.Po
|
||||
libmysqld/.deps/sql_error.Po
|
||||
|
@ -1172,6 +1174,8 @@ libmysqld/sql_cursor.cc
|
|||
libmysqld/sql_cursor.h
|
||||
libmysqld/sql_db.cc
|
||||
libmysqld/sql_delete.cc
|
||||
libmysqld/sql_truncate.cc
|
||||
libmysqld/datadict.cc
|
||||
libmysqld/sql_derived.cc
|
||||
libmysqld/sql_do.cc
|
||||
libmysqld/sql_error.cc
|
||||
|
@ -2062,6 +2066,8 @@ sql/.deps/sql_crypt.Po
|
|||
sql/.deps/sql_cursor.Po
|
||||
sql/.deps/sql_db.Po
|
||||
sql/.deps/sql_delete.Po
|
||||
sql/.deps/sql_truncate.Po
|
||||
sql/.deps/datadict.Po
|
||||
sql/.deps/sql_derived.Po
|
||||
sql/.deps/sql_do.Po
|
||||
sql/.deps/sql_error.Po
|
||||
|
|
|
@ -122,7 +122,7 @@ fi
|
|||
# Override -DFORCE_INIT_OF_VARS from debug_cflags. It enables the macro
|
||||
# LINT_INIT(), which is only useful for silencing spurious warnings
|
||||
# of static analysis tools. We want LINT_INIT() to be a no-op in Valgrind.
|
||||
valgrind_flags="-UFORCE_INIT_OF_VARS -DHAVE_purify "
|
||||
valgrind_flags="-USAFEMALLOC -UFORCE_INIT_OF_VARS -DHAVE_purify "
|
||||
valgrind_flags="$valgrind_flags -DMYSQL_SERVER_SUFFIX=-valgrind-max"
|
||||
valgrind_configs="--with-valgrind"
|
||||
#
|
||||
|
|
|
@ -1010,7 +1010,7 @@ set_ccache_usage()
|
|||
set_valgrind_flags()
|
||||
{
|
||||
if test "x$valgrind_flag" = "xyes" ; then
|
||||
loc_valgrind_flags="-UFORCE_INIT_OF_VARS -DHAVE_purify "
|
||||
loc_valgrind_flags="-USAFEMALLOC -UFORCE_INIT_OF_VARS -DHAVE_purify "
|
||||
loc_valgrind_flags="$loc_valgrind_flags -DMYSQL_SERVER_SUFFIX=-valgrind-max"
|
||||
compiler_flags="$compiler_flags $loc_valgrind_flags"
|
||||
with_flags="$with_flags --with-valgrind"
|
||||
|
|
|
@ -36,6 +36,18 @@ SET(CUSTOM_C_FLAGS $ENV{CFLAGS})
|
|||
OPTION(WITH_DEBUG "Use dbug/safemutex" OFF)
|
||||
OPTION(WITH_DEBUG_FULL "Use dbug and safemalloc/safemutex. Slow" OFF)
|
||||
|
||||
# Distinguish between community and non-community builds, with the
|
||||
# default being a community build. This does not impact the feature
|
||||
# set that will be compiled in; it's merely provided as a hint to
|
||||
# custom packaging steps.
|
||||
OPTION(COMMUNITY_BUILD "Set to true if this is a community build" ON)
|
||||
|
||||
# Use a default manufacturer if no manufacturer was identified.
|
||||
SET(MANUFACTURER_DOCSTRING
|
||||
"Set the entity that appears as the manufacturer of packages that support a manufacturer field.")
|
||||
IF(NOT DEFINED MANUFACTURER)
|
||||
SET(MANUFACTURER "Built from Source" CACHE BOOL ${MANUFACTURER_DOCSTRING})
|
||||
ENDIF()
|
||||
|
||||
# We choose to provide WITH_DEBUG as alias to standard CMAKE_BUILD_TYPE=Debug
|
||||
# which turns out to be not trivial, as this involves synchronization
|
||||
|
@ -277,6 +289,7 @@ IF(WIN32)
|
|||
ELSE()
|
||||
SET(CPACK_GENERATOR "TGZ")
|
||||
ENDIF()
|
||||
ADD_SUBDIRECTORY(packaging/WiX)
|
||||
INCLUDE(CPack)
|
||||
IF(UNIX)
|
||||
INSTALL(FILES Docs/mysql.info DESTINATION ${INSTALL_INFODIR} OPTIONAL)
|
||||
|
|
|
@ -33,7 +33,7 @@ IF(UNIX)
|
|||
TARGET_LINK_LIBRARIES(mysql ${READLINE_LIBRARY})
|
||||
ENDIF(UNIX)
|
||||
|
||||
MYSQL_ADD_EXECUTABLE(mysqltest mysqltest.cc)
|
||||
MYSQL_ADD_EXECUTABLE(mysqltest mysqltest.cc COMPONENT Test)
|
||||
SET_SOURCE_FILES_PROPERTIES(mysqltest.cc PROPERTIES COMPILE_FLAGS "-DTHREADS")
|
||||
TARGET_LINK_LIBRARIES(mysqltest mysqlclient regex)
|
||||
|
||||
|
|
|
@ -31,8 +31,7 @@ ENDIF()
|
|||
|
||||
# Create bootstrapper SQL script
|
||||
FILE(WRITE bootstrap.sql "use mysql;\n" )
|
||||
FOREACH(FILENAME mysql_system_tables.sql mysql_system_tables_data.sql
|
||||
fill_help_tables.sql)
|
||||
FOREACH(FILENAME mysql_system_tables.sql mysql_system_tables_data.sql)
|
||||
FILE(STRINGS ${CMAKE_SOURCE_DIR}/scripts/${FILENAME} CONTENTS)
|
||||
FOREACH(STR ${CONTENTS})
|
||||
IF(NOT STR MATCHES "@current_hostname")
|
||||
|
@ -40,6 +39,8 @@ FOREACH(FILENAME mysql_system_tables.sql mysql_system_tables_data.sql
|
|||
ENDIF()
|
||||
ENDFOREACH()
|
||||
ENDFOREACH()
|
||||
FILE(READ ${CMAKE_SOURCE_DIR}/scripts/fill_help_tables.sql CONTENTS)
|
||||
FILE(APPEND bootstrap.sql ${CONTENTS})
|
||||
|
||||
|
||||
FILE(REMOVE_RECURSE mysql)
|
||||
|
@ -56,6 +57,7 @@ SET(BOOTSTRAP_COMMAND
|
|||
--lc-messages-dir=${CMAKE_CURRENT_BINARY_DIR}/share
|
||||
--basedir=.
|
||||
--datadir=.
|
||||
--default-storage-engine=MyISAM
|
||||
--loose-skip-innodb
|
||||
--loose-skip-ndbcluster
|
||||
--max_allowed_packet=8M
|
||||
|
@ -78,4 +80,4 @@ EXECUTE_PROCESS (
|
|||
IF(NOT RESULT EQUAL 0)
|
||||
MESSAGE(FATAL_ERROR "Could not create initial database \n ${OUT} \n ${ERR}")
|
||||
ENDIF()
|
||||
|
||||
|
||||
|
|
|
@ -35,15 +35,84 @@ MACRO (INSTALL_DEBUG_SYMBOLS targets)
|
|||
IF(CMAKE_GENERATOR MATCHES "Visual Studio")
|
||||
STRING(REPLACE "${CMAKE_CFG_INTDIR}" "\${CMAKE_INSTALL_CONFIG_NAME}" pdb_location ${pdb_location})
|
||||
ENDIF()
|
||||
INSTALL(FILES ${pdb_location} DESTINATION ${INSTALL_LOCATION})
|
||||
IF(target STREQUAL "mysqld")
|
||||
SET(comp Server)
|
||||
ELSE()
|
||||
SET(comp Debuginfo)
|
||||
ENDIF()
|
||||
INSTALL(FILES ${pdb_location} DESTINATION ${INSTALL_LOCATION} COMPONENT ${comp})
|
||||
ENDFOREACH()
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
|
||||
# Installs manpage for given file (either script or executable)
|
||||
#
|
||||
FUNCTION(INSTALL_MANPAGE file)
|
||||
IF(NOT UNIX)
|
||||
RETURN()
|
||||
ENDIF()
|
||||
GET_FILENAME_COMPONENT(file_name "${file}" NAME)
|
||||
SET(GLOB_EXPR
|
||||
${CMAKE_SOURCE_DIR}/man/*${file}man.1*
|
||||
${CMAKE_SOURCE_DIR}/man/*${file}man.8*
|
||||
${CMAKE_BINARY_DIR}/man/*${file}man.1*
|
||||
${CMAKE_BINARY_DIR}/man/*${file}man.8*
|
||||
)
|
||||
IF(MYSQL_DOC_DIR)
|
||||
SET(GLOB_EXPR
|
||||
${MYSQL_DOC_DIR}/man/*${file}man.1*
|
||||
${MYSQL_DOC_DIR}/man/*${file}man.8*
|
||||
${MYSQL_DOC_DIR}/man/*${file}.1*
|
||||
${MYSQL_DOC_DIR}/man/*${file}.8*
|
||||
${GLOB_EXPR}
|
||||
)
|
||||
ENDIF()
|
||||
|
||||
FILE(GLOB_RECURSE MANPAGES ${GLOB_EXPR})
|
||||
IF(MANPAGES)
|
||||
LIST(GET MANPAGES 0 MANPAGE)
|
||||
STRING(REPLACE "${file}man.1" "${file}.1" MANPAGE "${MANPAGE}")
|
||||
STRING(REPLACE "${file}man.8" "${file}.8" MANPAGE "${MANPAGE}")
|
||||
IF(MANPAGE MATCHES "${file}.1")
|
||||
SET(SECTION man1)
|
||||
ELSE()
|
||||
SET(SECTION man8)
|
||||
ENDIF()
|
||||
INSTALL(FILES "${MANPAGE}" DESTINATION "${INSTALL_MANDIR}/${SECTION}")
|
||||
ENDIF()
|
||||
ENDFUNCTION()
|
||||
|
||||
FUNCTION(INSTALL_SCRIPT)
|
||||
CMAKE_PARSE_ARGUMENTS(ARG
|
||||
"DESTINATION;COMPONENT"
|
||||
""
|
||||
${ARGN}
|
||||
)
|
||||
|
||||
SET(script ${ARG_DEFAULT_ARGS})
|
||||
IF(NOT ARG_DESTINATION)
|
||||
SET(ARG_DESTINATION ${INSTALL_BINDIR})
|
||||
ENDIF()
|
||||
IF(ARG_COMPONENT)
|
||||
SET(COMP COMPONENT ${ARG_COMPONENT})
|
||||
ELSE()
|
||||
SET(COMP)
|
||||
ENDIF()
|
||||
|
||||
INSTALL(FILES
|
||||
${script}
|
||||
DESTINATION ${ARG_DESTINATION}
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE
|
||||
OWNER_EXECUTE GROUP_READ GROUP_EXECUTE
|
||||
WORLD_READ WORLD_EXECUTE ${COMP}
|
||||
)
|
||||
INSTALL_MANPAGE(${script})
|
||||
ENDFUNCTION()
|
||||
|
||||
# Install symbolic link to CMake target.
|
||||
# the link is created in the same directory as target
|
||||
# and extension will be the same as for target file.
|
||||
MACRO(INSTALL_SYMLINK linkname target destination)
|
||||
MACRO(INSTALL_SYMLINK linkname target destination component)
|
||||
IF(UNIX)
|
||||
GET_TARGET_PROPERTY(location ${target} LOCATION)
|
||||
GET_FILENAME_COMPONENT(path ${location} PATH)
|
||||
|
@ -68,7 +137,12 @@ IF(UNIX)
|
|||
STRING(REPLACE "${CMAKE_CFG_INTDIR}"
|
||||
"\${CMAKE_INSTALL_CONFIG_NAME}" output ${output})
|
||||
ENDIF()
|
||||
INSTALL(FILES ${output} DESTINATION ${destination})
|
||||
IF(component)
|
||||
SET(COMP COMPONENT ${component})
|
||||
ELSE()
|
||||
SET(COMP)
|
||||
ENDIF()
|
||||
INSTALL(FILES ${output} DESTINATION ${destination} ${COMP})
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
|
||||
|
@ -128,13 +202,11 @@ ENDMACRO()
|
|||
|
||||
# Installs targets, also installs pdbs on Windows.
|
||||
#
|
||||
# More stuff can be added later, e.g signing
|
||||
# or pre-link custom targets (one example is creating
|
||||
# version resource for windows executables)
|
||||
#
|
||||
|
||||
FUNCTION(MYSQL_INSTALL_TARGETS)
|
||||
CMAKE_PARSE_ARGUMENTS(ARG
|
||||
"DESTINATION"
|
||||
"DESTINATION;COMPONENT"
|
||||
""
|
||||
${ARGN}
|
||||
)
|
||||
|
@ -146,15 +218,24 @@ FUNCTION(MYSQL_INSTALL_TARGETS)
|
|||
MESSAGE(FATAL_ERROR "Need DESTINATION parameter for MYSQL_INSTALL_TARGETS")
|
||||
ENDIF()
|
||||
|
||||
# If signing is required, sign executables before installing
|
||||
|
||||
FOREACH(target ${TARGETS})
|
||||
IF(SIGNCODE AND SIGNCODE_ENABLED)
|
||||
# If signing is required, sign executables before installing
|
||||
IF(SIGNCODE AND SIGNCODE_ENABLED)
|
||||
SIGN_TARGET(${target})
|
||||
ENDIF()
|
||||
# For Windows, add version info to executables
|
||||
ADD_VERSION_INFO(${target})
|
||||
# Install man pages on Unix
|
||||
IF(UNIX)
|
||||
GET_TARGET_PROPERTY(target_location ${target} LOCATION)
|
||||
INSTALL_MANPAGE(${target_location})
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
|
||||
INSTALL(TARGETS ${TARGETS} DESTINATION ${ARG_DESTINATION})
|
||||
IF(ARG_COMPONENT)
|
||||
SET(COMP COMPONENT ${ARG_COMPONENT})
|
||||
ENDIF()
|
||||
INSTALL(TARGETS ${TARGETS} DESTINATION ${ARG_DESTINATION} ${COMP})
|
||||
SET(INSTALL_LOCATION ${ARG_DESTINATION} )
|
||||
INSTALL_DEBUG_SYMBOLS("${TARGETS}")
|
||||
SET(INSTALL_LOCATION)
|
||||
|
|
|
@ -214,7 +214,7 @@ ENDMACRO()
|
|||
#)
|
||||
MACRO(MERGE_LIBRARIES)
|
||||
CMAKE_PARSE_ARGUMENTS(ARG
|
||||
"EXPORTS;OUTPUT_NAME"
|
||||
"EXPORTS;OUTPUT_NAME;COMPONENT"
|
||||
"STATIC;SHARED;MODULE;NOINSTALL"
|
||||
${ARGN}
|
||||
)
|
||||
|
@ -259,7 +259,10 @@ MACRO(MERGE_LIBRARIES)
|
|||
MESSAGE(FATAL_ERROR "Unknown library type")
|
||||
ENDIF()
|
||||
IF(NOT ARG_NOINSTALL)
|
||||
MYSQL_INSTALL_TARGETS(${TARGET} DESTINATION "${INSTALL_LIBDIR}")
|
||||
IF(ARG_COMPONENT)
|
||||
SET(COMP COMPONENT ${ARG_COMPONENT})
|
||||
ENDIF()
|
||||
MYSQL_INSTALL_TARGETS(${TARGET} DESTINATION "${INSTALL_LIBDIR}" ${COMP})
|
||||
ENDIF()
|
||||
SET_TARGET_PROPERTIES(${TARGET} PROPERTIES LINK_INTERFACE_LIBRARIES "")
|
||||
ENDMACRO()
|
||||
|
|
|
@ -29,7 +29,7 @@ INCLUDE(cmake_parse_arguments)
|
|||
FUNCTION (MYSQL_ADD_EXECUTABLE)
|
||||
# Pass-through arguments for ADD_EXECUTABLE
|
||||
CMAKE_PARSE_ARGUMENTS(ARG
|
||||
"WIN32;MACOSX_BUNDLE;EXCLUDE_FROM_ALL;DESTINATION"
|
||||
"WIN32;MACOSX_BUNDLE;EXCLUDE_FROM_ALL;DESTINATION;COMPONENT"
|
||||
""
|
||||
${ARGN}
|
||||
)
|
||||
|
@ -43,7 +43,14 @@ FUNCTION (MYSQL_ADD_EXECUTABLE)
|
|||
IF(NOT ARG_EXCLUDE_FROM_ALL)
|
||||
IF(NOT ARG_DESTINATION)
|
||||
SET(ARG_DESTINATION ${INSTALL_BINDIR})
|
||||
ENDIF()
|
||||
IF(ARG_COMPONENT)
|
||||
SET(COMP COMPONENT ${ARG_COMPONENT})
|
||||
ELSEIF(MYSQL_INSTALL_COMPONENT)
|
||||
SET(COMP COMPONENT ${MYSQL_INSTALL_COMPONENT})
|
||||
ELSE()
|
||||
SET(COMP COMPONENT Client)
|
||||
ENDIF()
|
||||
MYSQL_INSTALL_TARGETS(${target} DESTINATION ${ARG_DESTINATION})
|
||||
MYSQL_INSTALL_TARGETS(${target} DESTINATION ${ARG_DESTINATION} ${COMP})
|
||||
ENDIF()
|
||||
ENDFUNCTION()
|
||||
ENDFUNCTION()
|
||||
|
|
|
@ -15,6 +15,8 @@
|
|||
|
||||
# Produce meaningful package name for the binary package
|
||||
# The logic is rather involved with special cases for different OSes
|
||||
INCLUDE(CheckTypeSize)
|
||||
CHECK_TYPE_SIZE("void *" SIZEOF_VOIDP)
|
||||
MACRO(GET_PACKAGE_FILE_NAME Var)
|
||||
IF(NOT VERSION)
|
||||
MESSAGE(FATAL_ERROR
|
||||
|
@ -24,7 +26,8 @@ IF(NOT VERSION)
|
|||
SET(NEED_DASH_BETWEEN_PLATFORM_AND_MACHINE 1)
|
||||
SET(DEFAULT_PLATFORM ${CMAKE_SYSTEM_NAME})
|
||||
SET(DEFAULT_MACHINE ${CMAKE_SYSTEM_PROCESSOR})
|
||||
IF(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
MESSAGE("SIZEOF_VOIDP=${SIZEOF_VOIDP}")
|
||||
IF(SIZEOF_VOIDP EQUAL 8)
|
||||
SET(64BIT 1)
|
||||
ENDIF()
|
||||
|
||||
|
|
|
@ -173,7 +173,7 @@ MACRO(MYSQL_ADD_PLUGIN)
|
|||
SET_TARGET_PROPERTIES(${target} PROPERTIES
|
||||
OUTPUT_NAME "${ARG_MODULE_OUTPUT_NAME}")
|
||||
# Install dynamic library
|
||||
MYSQL_INSTALL_TARGETS(${target} DESTINATION ${INSTALL_PLUGINDIR})
|
||||
MYSQL_INSTALL_TARGETS(${target} DESTINATION ${INSTALL_PLUGINDIR} COMPONENT Server)
|
||||
INSTALL_DEBUG_TARGET(${target} DESTINATION ${INSTALL_PLUGINDIR}/debug)
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
|
|
138
config.h.cmake
138
config.h.cmake
|
@ -81,6 +81,8 @@
|
|||
#cmakedefine HAVE_SYS_STREAM_H 1
|
||||
#cmakedefine HAVE_SYS_TERMCAP_H 1
|
||||
#cmakedefine HAVE_SYS_TIMEB_H 1
|
||||
#cmakedefine HAVE_SYS_TIMES_H 1
|
||||
#cmakedefine HAVE_SYS_TIME_H 1
|
||||
#cmakedefine HAVE_SYS_TYPES_H 1
|
||||
#cmakedefine HAVE_SYS_UN_H 1
|
||||
#cmakedefine HAVE_SYS_VADVISE_H 1
|
||||
|
@ -88,6 +90,7 @@
|
|||
#cmakedefine HAVE_TERMIOS_H 1
|
||||
#cmakedefine HAVE_TERMIO_H 1
|
||||
#cmakedefine HAVE_TERMCAP_H 1
|
||||
#cmakedefine HAVE_TIME_H 1
|
||||
#cmakedefine HAVE_UNISTD_H 1
|
||||
#cmakedefine HAVE_UTIME_H 1
|
||||
#cmakedefine HAVE_VARARGS_H 1
|
||||
|
@ -261,6 +264,8 @@
|
|||
#cmakedefine HAVE_TEMPNAM 1
|
||||
#cmakedefine HAVE_THR_SETCONCURRENCY 1
|
||||
#cmakedefine HAVE_THR_YIELD 1
|
||||
#cmakedefine HAVE_TIME 1
|
||||
#cmakedefine HAVE_TIMES 1
|
||||
#cmakedefine HAVE_VALLOC 1
|
||||
#define HAVE_VIO_READ_BUFF 1
|
||||
#cmakedefine HAVE_VASPRINTF 1
|
||||
|
@ -295,11 +300,6 @@
|
|||
|
||||
|
||||
/* Types we may use */
|
||||
#cmakedefine SIZEOF_CHAR @SIZEOF_CHAR@
|
||||
#if SIZEOF_CHAR
|
||||
# define HAVE_CHAR 1
|
||||
#endif
|
||||
|
||||
#ifdef __APPLE__
|
||||
/*
|
||||
Special handling required for OSX to support universal binaries that
|
||||
|
@ -310,127 +310,71 @@
|
|||
#else
|
||||
#define SIZEOF_LONG 4
|
||||
#endif
|
||||
#define SIZEOF_VOIDP SIZEOF_LONG
|
||||
#define SIZEOF_CHARP SIZEOF_LONG
|
||||
#define SIZEOF_SIZE_T SIZEOF_LONG
|
||||
#else
|
||||
#cmakedefine SIZEOF_LONG @SIZEOF_LONG@
|
||||
#cmakedefine SIZEOF_CHARP @SIZEOF_CHARP@
|
||||
#cmakedefine SIZEOF_SIZE_T @SIZEOF_CHARP@
|
||||
#endif
|
||||
|
||||
#if SIZEOF_LONG
|
||||
# define HAVE_LONG 1
|
||||
#endif
|
||||
|
||||
|
||||
#if SIZEOF_CHARP
|
||||
#define HAVE_CHARP 1
|
||||
#define SIZEOF_VOIDP SIZEOF_CHARP
|
||||
/* No indentation, to fetch the lines from verification scripts */
|
||||
#cmakedefine SIZEOF_LONG @SIZEOF_LONG@
|
||||
#cmakedefine SIZEOF_VOIDP @SIZEOF_VOIDP@
|
||||
#cmakedefine SIZEOF_CHARP @SIZEOF_CHARP@
|
||||
#cmakedefine SIZEOF_SIZE_T @SIZEOF_CHARP@
|
||||
#endif
|
||||
|
||||
#cmakedefine SIZEOF_CHAR @SIZEOF_CHAR@
|
||||
#cmakedefine HAVE_CHAR 1
|
||||
#cmakedefine HAVE_LONG 1
|
||||
#cmakedefine HAVE_CHARP 1
|
||||
#cmakedefine SIZEOF_SHORT @SIZEOF_SHORT@
|
||||
#if SIZEOF_SHORT
|
||||
# define HAVE_SHORT 1
|
||||
#endif
|
||||
|
||||
#cmakedefine HAVE_SHORT 1
|
||||
#cmakedefine SIZEOF_INT @SIZEOF_INT@
|
||||
#if SIZEOF_INT
|
||||
# define HAVE_INT 1
|
||||
#endif
|
||||
|
||||
|
||||
#cmakedefine HAVE_INT 1
|
||||
#cmakedefine SIZEOF_LONG_LONG @SIZEOF_LONG_LONG@
|
||||
#if SIZEOF_LONG_LONG
|
||||
# define HAVE_LONG_LONG 1
|
||||
#endif
|
||||
|
||||
#cmakedefine HAVE_LONG_LONG 1
|
||||
#cmakedefine SIZEOF_OFF_T @SIZEOF_OFF_T@
|
||||
#if SIZEOF_OFF_T
|
||||
#define HAVE_OFF_T 1
|
||||
#endif
|
||||
|
||||
#cmakedefine HAVE_OFF_T 1
|
||||
#cmakedefine SIZEOF_SIGSET_T @SIZEOF_SIGSET_T@
|
||||
#if SIZEOF_SIGSET_T
|
||||
#define HAVE_SIGSET_T 1
|
||||
#endif
|
||||
|
||||
#if SIZEOF_SIZE_T
|
||||
#define HAVE_SIZE_T 1
|
||||
#endif
|
||||
|
||||
#cmakedefine HAVE_SIGSET_T 1
|
||||
#cmakedefine HAVE_SIZE_T 1
|
||||
#cmakedefine SIZEOF_UCHAR @SIZEOF_UCHAR@
|
||||
#if SIZEOF_UCHAR
|
||||
#define HAVE_UCHAR 1
|
||||
#endif
|
||||
|
||||
#cmakedefine HAVE_UCHAR 1
|
||||
#cmakedefine SIZEOF_UINT @SIZEOF_UINT@
|
||||
#if SIZEOF_UINT
|
||||
#define HAVE_UINT 1
|
||||
#endif
|
||||
|
||||
#cmakedefine HAVE_UINT 1
|
||||
#cmakedefine SIZEOF_ULONG @SIZEOF_ULONG@
|
||||
#if SIZEOF_ULONG
|
||||
#define HAVE_ULONG 1
|
||||
#endif
|
||||
|
||||
#cmakedefine HAVE_ULONG 1
|
||||
#cmakedefine SIZEOF_INT8 @SIZEOF_INT8@
|
||||
#if SIZEOF_INT8
|
||||
#define HAVE_INT8 1
|
||||
#endif
|
||||
#cmakedefine HAVE_INT8 1
|
||||
#cmakedefine SIZEOF_UINT8 @SIZEOF_UINT8@
|
||||
#if SIZEOF_UINT8
|
||||
#define HAVE_UINT8 1
|
||||
#endif
|
||||
|
||||
#cmakedefine HAVE_UINT8 1
|
||||
#cmakedefine SIZEOF_INT16 @SIZEOF_INT16@
|
||||
#if SIZEOF_INT16
|
||||
# define HAVE_INT16 1
|
||||
#endif
|
||||
#cmakedefine HAVE_INT16 1
|
||||
#cmakedefine SIZEOF_UINT16 @SIZEOF_UINT16@
|
||||
#if SIZEOF_UINT16
|
||||
#define HAVE_UINT16 1
|
||||
#endif
|
||||
|
||||
#cmakedefine HAVE_UINT16 1
|
||||
#cmakedefine SIZEOF_INT32 @SIZEOF_INT32@
|
||||
#if SIZEOF_INT32
|
||||
#define HAVE_INT32 1
|
||||
#endif
|
||||
#cmakedefine HAVE_INT32 1
|
||||
#cmakedefine SIZEOF_UINT32 @SIZEOF_UINT32@
|
||||
#if SIZEOF_UINT32
|
||||
#define HAVE_UINT32 1
|
||||
#endif
|
||||
#cmakedefine HAVE_UINT32 1
|
||||
#cmakedefine SIZEOF_U_INT32_T @SIZEOF_U_INT32_T@
|
||||
#if SIZEOF_U_INT32_T
|
||||
#define HAVE_U_INT32_T 1
|
||||
#endif
|
||||
|
||||
#cmakedefine HAVE_U_INT32_T 1
|
||||
#cmakedefine SIZEOF_INT64 @SIZEOF_INT64@
|
||||
#if SIZEOF_INT64
|
||||
#define HAVE_INT64 1
|
||||
#endif
|
||||
#cmakedefine HAVE_INT64 1
|
||||
#cmakedefine SIZEOF_UINT64 @SIZEOF_UINT64@
|
||||
#if SIZEOF_UINT64
|
||||
#define HAVE_UINT64 1
|
||||
#endif
|
||||
#cmakedefine HAVE_UINT64 1
|
||||
#cmakedefine SIZEOF_BOOL @SIZEOF_BOOL@
|
||||
#cmakedefine HAVE_BOOL 1
|
||||
|
||||
#cmakedefine SOCKET_SIZE_TYPE @SOCKET_SIZE_TYPE@
|
||||
|
||||
#cmakedefine SIZEOF_BOOL @SIZEOF_BOOL@
|
||||
#if SIZEOF_BOOL
|
||||
#define HAVE_BOOL 1
|
||||
#endif
|
||||
#cmakedefine HAVE_MBSTATE_T
|
||||
|
||||
#define MAX_INDEXES 64
|
||||
|
||||
#cmakedefine QSORT_TYPE_IS_VOID 1
|
||||
#define RETQSORTTYPE void
|
||||
#cmakedefine RETQSORTTYPE @RETQSORTTYPE@
|
||||
|
||||
#cmakedefine SIGNAL_RETURN_TYPE_IS_VOID 1
|
||||
#define RETSIGTYPE void
|
||||
#if SIGNAL_RETURN_TYPE_IS_VOID
|
||||
#define VOID_SIGHANDLER 1
|
||||
#endif
|
||||
#cmakedefine RETSIGTYPE @RETSIGTYPE@
|
||||
#cmakedefine VOID_SIGHANDLER 1
|
||||
#define STRUCT_RLIMIT struct rlimit
|
||||
|
||||
#ifdef __APPLE__
|
||||
|
@ -547,7 +491,7 @@
|
|||
#cmakedefine strtoull @strtoull@
|
||||
#cmakedefine vsnprintf @vsnprintf@
|
||||
#if (_MSC_VER > 1310)
|
||||
#define HAVE_SETENV
|
||||
# define HAVE_SETENV
|
||||
#define setenv(a,b,c) _putenv_s(a,b)
|
||||
#endif
|
||||
|
||||
|
@ -575,7 +519,7 @@
|
|||
#cmakedefine FN_NO_CASE_SENSE 1
|
||||
|
||||
#cmakedefine HAVE_CHARSET_armscii8 1
|
||||
#cmakedefine HAVE_CHARSET_ascii
|
||||
#cmakedefine HAVE_CHARSET_ascii 1
|
||||
#cmakedefine HAVE_CHARSET_big5 1
|
||||
#cmakedefine HAVE_CHARSET_cp1250 1
|
||||
#cmakedefine HAVE_CHARSET_cp1251 1
|
||||
|
@ -637,7 +581,7 @@
|
|||
#cmakedefine WITH_PERFSCHEMA_STORAGE_ENGINE 1
|
||||
#cmakedefine WITH_NDBCLUSTER_STORAGE_ENGINE 1
|
||||
#if (WITH_NDBCLUSTER_STORAGE_ENGINE) && !defined(EMBEDDED_LIBRARY)
|
||||
#define HAVE_NDB_BINLOG 1
|
||||
# define HAVE_NDB_BINLOG 1
|
||||
#endif
|
||||
|
||||
#cmakedefine DEFAULT_MYSQL_HOME "@DEFAULT_MYSQL_HOME@"
|
||||
|
|
|
@ -90,6 +90,21 @@ ENDIF(WITHOUT_DYNAMIC_PLUGINS)
|
|||
# Large files, common flag
|
||||
SET(_LARGEFILE_SOURCE 1)
|
||||
|
||||
# If finds the size of a type, set SIZEOF_<type> and HAVE_<type>
|
||||
FUNCTION(MY_CHECK_TYPE_SIZE type defbase)
|
||||
CHECK_TYPE_SIZE("${type}" SIZEOF_${defbase})
|
||||
IF(SIZEOF_${defbase})
|
||||
SET(HAVE_${defbase} 1 PARENT_SCOPE)
|
||||
ENDIF()
|
||||
ENDFUNCTION()
|
||||
|
||||
# Same for structs, setting HAVE_STRUCT_<name> instead
|
||||
FUNCTION(MY_CHECK_STRUCT_SIZE type defbase)
|
||||
CHECK_TYPE_SIZE("struct ${type}" SIZEOF_${defbase})
|
||||
IF(SIZEOF_${defbase})
|
||||
SET(HAVE_STRUCT_${defbase} 1 PARENT_SCOPE)
|
||||
ENDIF()
|
||||
ENDFUNCTION()
|
||||
|
||||
# Searches function in libraries
|
||||
# if function is found, sets output parameter result to the name of the library
|
||||
|
@ -108,6 +123,7 @@ FUNCTION(MY_SEARCH_LIBS func libs result)
|
|||
CHECK_LIBRARY_EXISTS(${lib} ${func} "" HAVE_${func}_IN_${lib})
|
||||
IF(HAVE_${func}_IN_${lib})
|
||||
SET(${result} ${lib} PARENT_SCOPE)
|
||||
SET(HAVE_${result} 1 PARENT_SCOPE)
|
||||
RETURN()
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
|
@ -169,6 +185,7 @@ CHECK_INCLUDE_FILES (alloca.h HAVE_ALLOCA_H)
|
|||
CHECK_INCLUDE_FILES (aio.h HAVE_AIO_H)
|
||||
CHECK_INCLUDE_FILES (arpa/inet.h HAVE_ARPA_INET_H)
|
||||
CHECK_INCLUDE_FILES (crypt.h HAVE_CRYPT_H)
|
||||
CHECK_INCLUDE_FILES (cxxabi.h HAVE_CXXABI_H)
|
||||
CHECK_INCLUDE_FILES (dirent.h HAVE_DIRENT_H)
|
||||
CHECK_INCLUDE_FILES (dlfcn.h HAVE_DLFCN_H)
|
||||
CHECK_INCLUDE_FILES (execinfo.h HAVE_EXECINFO_H)
|
||||
|
@ -195,7 +212,6 @@ CHECK_INCLUDE_FILES (select.h HAVE_SELECT_H)
|
|||
CHECK_INCLUDE_FILES (semaphore.h HAVE_SEMAPHORE_H)
|
||||
CHECK_INCLUDE_FILES (sys/dir.h HAVE_SYS_DIR_H)
|
||||
CHECK_INCLUDE_FILES (sys/pte.h HAVE_SYS_PTE_H)
|
||||
CHECK_INCLUDE_FILES (sys/ptem.h HAVE_SYS_PTEM_H)
|
||||
CHECK_INCLUDE_FILES (stddef.h HAVE_STDDEF_H)
|
||||
CHECK_INCLUDE_FILES (stdint.h HAVE_STDINT_H)
|
||||
CHECK_INCLUDE_FILES (stdlib.h HAVE_STDLIB_H)
|
||||
|
@ -235,6 +251,13 @@ CHECK_INCLUDE_FILES (fnmatch.h HAVE_FNMATCH_H)
|
|||
CHECK_INCLUDE_FILES (stdarg.h HAVE_STDARG_H)
|
||||
CHECK_INCLUDE_FILES("stdlib.h;sys/un.h" HAVE_SYS_UN_H)
|
||||
|
||||
IF(HAVE_SYS_STREAM_H)
|
||||
# Needs sys/stream.h on Solaris
|
||||
CHECK_INCLUDE_FILES (sys/stream.h sys/ptem.h HAVE_SYS_PTEM_H)
|
||||
ELSE()
|
||||
CHECK_INCLUDE_FILES (sys/ptem.h HAVE_SYS_PTEM_H)
|
||||
ENDIF()
|
||||
|
||||
# Figure out threading library
|
||||
#
|
||||
FIND_PACKAGE (Threads)
|
||||
|
@ -458,14 +481,11 @@ set(CMAKE_REQUIRED_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
|
|||
-D_LARGEFILE_SOURCE -D_LARGE_FILES -D_FILE_OFFSET_BITS=64
|
||||
-D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS)
|
||||
SET(CMAKE_EXTRA_INCLUDE_FILES signal.h)
|
||||
CHECK_TYPE_SIZE(sigset_t SIZEOF_SIGSET_T)
|
||||
IF(SIZEOF_SIGSET_T)
|
||||
SET(HAVE_SIGSET_T 1)
|
||||
ENDIF()
|
||||
MY_CHECK_TYPE_SIZE(sigset_t SIGSET_T)
|
||||
IF(NOT SIZEOF_SIGSET_T)
|
||||
SET(sigset_t int)
|
||||
ENDIF()
|
||||
CHECK_TYPE_SIZE(mode_t SIZEOF_MODE_T)
|
||||
MY_CHECK_TYPE_SIZE(mode_t MODE_T)
|
||||
IF(NOT SIZEOF_MODE_T)
|
||||
SET(mode_t int)
|
||||
ENDIF()
|
||||
|
@ -478,43 +498,41 @@ ENDIF(HAVE_STDINT_H)
|
|||
IF(NOT APPLE)
|
||||
# Prevent some checks on OSX, they return ambigious results
|
||||
# on universal 32/64 bit binariess
|
||||
CHECK_TYPE_SIZE("char *" SIZEOF_CHARP)
|
||||
CHECK_TYPE_SIZE(long SIZEOF_LONG)
|
||||
CHECK_TYPE_SIZE(size_t SIZEOF_SIZE_T)
|
||||
MY_CHECK_TYPE_SIZE("void *" VOIDP)
|
||||
MY_CHECK_TYPE_SIZE("char *" CHARP)
|
||||
MY_CHECK_TYPE_SIZE(long LONG)
|
||||
MY_CHECK_TYPE_SIZE(size_t SIZE_T)
|
||||
ENDIF()
|
||||
CHECK_TYPE_SIZE(char SIZEOF_CHAR)
|
||||
CHECK_TYPE_SIZE(short SIZEOF_SHORT)
|
||||
CHECK_TYPE_SIZE(int SIZEOF_INT)
|
||||
CHECK_TYPE_SIZE("long long" SIZEOF_LONG_LONG)
|
||||
MY_CHECK_TYPE_SIZE(char CHAR)
|
||||
MY_CHECK_TYPE_SIZE(short SHORT)
|
||||
MY_CHECK_TYPE_SIZE(int INT)
|
||||
MY_CHECK_TYPE_SIZE("long long" LONG_LONG)
|
||||
SET(CMAKE_EXTRA_INCLUDE_FILES stdio.h sys/types.h)
|
||||
CHECK_TYPE_SIZE(off_t SIZEOF_OFF_T)
|
||||
CHECK_TYPE_SIZE(uchar SIZEOF_UCHAR)
|
||||
CHECK_TYPE_SIZE(uint SIZEOF_UINT)
|
||||
CHECK_TYPE_SIZE(ulong SIZEOF_ULONG)
|
||||
CHECK_TYPE_SIZE(int8 SIZEOF_INT8)
|
||||
CHECK_TYPE_SIZE(uint8 SIZEOF_UINT8)
|
||||
CHECK_TYPE_SIZE(int16 SIZEOF_INT16)
|
||||
CHECK_TYPE_SIZE(uint16 SIZEOF_UINT16)
|
||||
CHECK_TYPE_SIZE(int32 SIZEOF_INT32)
|
||||
CHECK_TYPE_SIZE(uint32 SIZEOF_UINT32)
|
||||
CHECK_TYPE_SIZE(u_int32_t SIZEOF_U_INT32_T)
|
||||
CHECK_TYPE_SIZE(int64 SIZEOF_INT64)
|
||||
CHECK_TYPE_SIZE(uint64 SIZEOF_UINT64)
|
||||
MY_CHECK_TYPE_SIZE(off_t OFF_T)
|
||||
MY_CHECK_TYPE_SIZE(uchar UCHAR)
|
||||
MY_CHECK_TYPE_SIZE(uint UINT)
|
||||
MY_CHECK_TYPE_SIZE(ulong ULONG)
|
||||
MY_CHECK_TYPE_SIZE(int8 INT8)
|
||||
MY_CHECK_TYPE_SIZE(uint8 UINT8)
|
||||
MY_CHECK_TYPE_SIZE(int16 INT16)
|
||||
MY_CHECK_TYPE_SIZE(uint16 UINT16)
|
||||
MY_CHECK_TYPE_SIZE(int32 INT32)
|
||||
MY_CHECK_TYPE_SIZE(uint32 UINT32)
|
||||
MY_CHECK_TYPE_SIZE(u_int32_t U_INT32_T)
|
||||
MY_CHECK_TYPE_SIZE(int64 INT64)
|
||||
MY_CHECK_TYPE_SIZE(uint64 UINT64)
|
||||
SET (CMAKE_EXTRA_INCLUDE_FILES sys/types.h)
|
||||
CHECK_TYPE_SIZE(bool SIZEOF_BOOL)
|
||||
MY_CHECK_TYPE_SIZE(bool BOOL)
|
||||
SET(CMAKE_EXTRA_INCLUDE_FILES)
|
||||
IF(HAVE_SYS_SOCKET_H)
|
||||
SET(CMAKE_EXTRA_INCLUDE_FILES sys/socket.h)
|
||||
ENDIF(HAVE_SYS_SOCKET_H)
|
||||
CHECK_TYPE_SIZE(socklen_t SIZEOF_SOCKLEN_T)
|
||||
MY_CHECK_TYPE_SIZE(socklen_t SOCKLEN_T)
|
||||
SET(CMAKE_EXTRA_INCLUDE_FILES)
|
||||
|
||||
IF(HAVE_IEEEFP_H)
|
||||
SET(CMAKE_EXTRA_INCLUDE_FILES ieeefp.h)
|
||||
CHECK_TYPE_SIZE(fp_except SIZEOF_FP_EXCEPT)
|
||||
IF(SIZEOF_FP_EXCEPT)
|
||||
SET(HAVE_FP_EXCEPT TRUE)
|
||||
ENDIF()
|
||||
MY_CHECK_TYPE_SIZE(fp_except FP_EXCEPT)
|
||||
ENDIF()
|
||||
|
||||
|
||||
|
@ -678,6 +696,7 @@ int main(int ac, char **av) {}
|
|||
" SIGNAL_RETURN_TYPE_IS_VOID)
|
||||
IF(SIGNAL_RETURN_TYPE_IS_VOID)
|
||||
SET(RETSIGTYPE void)
|
||||
SET(VOID_SIGHANDLER 1)
|
||||
ELSE(SIGNAL_RETURN_TYPE_IS_VOID)
|
||||
SET(RETSIGTYPE int)
|
||||
ENDIF(SIGNAL_RETURN_TYPE_IS_VOID)
|
||||
|
@ -777,7 +796,7 @@ ENDIF(NOT HAVE_POSIX_SIGNALS)
|
|||
# Assume regular sprintf
|
||||
SET(SPRINTFS_RETURNS_INT 1)
|
||||
|
||||
IF(CMAKE_COMPILER_IS_GNUXX)
|
||||
IF(CMAKE_COMPILER_IS_GNUXX AND HAVE_CXXABI_H)
|
||||
CHECK_CXX_SOURCE_COMPILES("
|
||||
#include <cxxabi.h>
|
||||
int main(int argc, char **argv)
|
||||
|
@ -787,9 +806,6 @@ CHECK_CXX_SOURCE_COMPILES("
|
|||
return 0;
|
||||
}"
|
||||
HAVE_ABI_CXA_DEMANGLE)
|
||||
IF(HAVE_ABI_CXA_DEMANGLE)
|
||||
SET(HAVE_CXXABI_H 1)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
CHECK_C_SOURCE_COMPILES("
|
||||
|
@ -983,14 +999,8 @@ ELSEIF(WIN32)
|
|||
SET(CMAKE_EXTRA_INCLUDE_FILES ${CMAKE_EXTRA_INCLUDE_FILES} winsock2.h ws2ipdef.h)
|
||||
ENDIF()
|
||||
|
||||
CHECK_TYPE_SIZE("struct sockaddr_in6" SIZEOF_SOCKADDR_IN6)
|
||||
CHECK_TYPE_SIZE("struct in6_addr" SIZEOF_IN6_ADDR)
|
||||
IF(SIZEOF_SOCKADDR_IN6)
|
||||
SET(HAVE_STRUCT_SOCKADDR_IN6 1)
|
||||
ENDIF()
|
||||
IF(SIZEOF_IN6_ADDR)
|
||||
SET(HAVE_STRUCT_IN6_ADDR 1)
|
||||
ENDIF()
|
||||
MY_CHECK_STRUCT_SIZE("sockaddr_in6" SOCKADDR_IN6)
|
||||
MY_CHECK_STRUCT_SIZE("in6_addr" IN6_ADDR)
|
||||
|
||||
IF(HAVE_STRUCT_SOCKADDR_IN6 OR HAVE_STRUCT_IN6_ADDR)
|
||||
SET(HAVE_IPV6 TRUE CACHE INTERNAL "")
|
||||
|
|
|
@ -24,6 +24,8 @@ ${CMAKE_SOURCE_DIR}/storage/ndb/include/ndbapi
|
|||
${CMAKE_SOURCE_DIR}/storage/ndb/include/portlib
|
||||
${CMAKE_SOURCE_DIR}/storage/ndb/include/mgmapi)
|
||||
|
||||
# Default install component for the files is Server here
|
||||
SET(MYSQL_INSTALL_COMPONENT Server)
|
||||
|
||||
IF(NOT CMAKE_CROSSCOMPILING)
|
||||
ADD_EXECUTABLE(comp_err comp_err.c)
|
||||
|
|
|
@ -57,7 +57,7 @@ SET(HEADERS
|
|||
${HEADERS_GEN_CONFIGURE}
|
||||
)
|
||||
|
||||
INSTALL(FILES ${HEADERS} DESTINATION ${INSTALL_INCLUDEDIR})
|
||||
INSTALL(DIRECTORY mysql/ DESTINATION ${INSTALL_INCLUDEDIR} FILES_MATCHING PATTERN "*.h")
|
||||
INSTALL(FILES ${HEADERS} DESTINATION ${INSTALL_INCLUDEDIR} COMPONENT Development)
|
||||
INSTALL(DIRECTORY mysql/ DESTINATION ${INSTALL_INCLUDEDIR} COMPONENT Development FILES_MATCHING PATTERN "*.h" )
|
||||
|
||||
|
||||
|
|
|
@ -184,12 +184,22 @@ typedef struct st_heap_info
|
|||
|
||||
typedef struct st_heap_create_info
|
||||
{
|
||||
HP_KEYDEF *keydef;
|
||||
ulong max_records;
|
||||
ulong min_records;
|
||||
uint auto_key; /* keynr [1 - maxkey] for auto key */
|
||||
uint auto_key_type;
|
||||
uint keys;
|
||||
uint reclength;
|
||||
ulonglong max_table_size;
|
||||
ulonglong auto_increment;
|
||||
my_bool with_auto_increment;
|
||||
my_bool internal_table;
|
||||
/*
|
||||
TRUE if heap_create should 'pin' the created share by setting
|
||||
open_count to 1. Is only looked at if not internal_table.
|
||||
*/
|
||||
my_bool pin_share;
|
||||
} HP_CREATE_INFO;
|
||||
|
||||
/* Prototypes for heap-functions */
|
||||
|
@ -197,6 +207,7 @@ typedef struct st_heap_create_info
|
|||
extern HP_INFO *heap_open(const char *name, int mode);
|
||||
extern HP_INFO *heap_open_from_share(HP_SHARE *share, int mode);
|
||||
extern HP_INFO *heap_open_from_share_and_register(HP_SHARE *share, int mode);
|
||||
extern void heap_release_share(HP_SHARE *share, my_bool internal_table);
|
||||
extern int heap_close(HP_INFO *info);
|
||||
extern int heap_write(HP_INFO *info,const uchar *buff);
|
||||
extern int heap_update(HP_INFO *info,const uchar *old,const uchar *newdata);
|
||||
|
@ -205,9 +216,9 @@ extern int heap_scan_init(HP_INFO *info);
|
|||
extern int heap_scan(register HP_INFO *info, uchar *record);
|
||||
extern int heap_delete(HP_INFO *info,const uchar *buff);
|
||||
extern int heap_info(HP_INFO *info,HEAPINFO *x,int flag);
|
||||
extern int heap_create(const char *name, uint keys, HP_KEYDEF *keydef,
|
||||
uint reclength, ulong max_records, ulong min_records,
|
||||
HP_CREATE_INFO *create_info, HP_SHARE **share);
|
||||
extern int heap_create(const char *name,
|
||||
HP_CREATE_INFO *create_info, HP_SHARE **share,
|
||||
my_bool *created_new_share);
|
||||
extern int heap_delete_table(const char *name);
|
||||
extern void heap_drop_table(HP_INFO *info);
|
||||
extern int heap_extra(HP_INFO *info,enum ha_extra_function function);
|
||||
|
|
|
@ -53,12 +53,6 @@ enum thr_lock_type { TL_IGNORE=-1,
|
|||
reading/writing to the table.
|
||||
*/
|
||||
TL_WRITE_ALLOW_WRITE,
|
||||
/*
|
||||
Write lock, but allow other threads to read.
|
||||
Used by ALTER TABLE in MySQL to allow readers
|
||||
to use the table until ALTER TABLE is finished.
|
||||
*/
|
||||
TL_WRITE_ALLOW_READ,
|
||||
/*
|
||||
WRITE lock used by concurrent insert. Will allow
|
||||
READ, if one could use concurrent insert on table.
|
||||
|
|
|
@ -152,7 +152,7 @@ SET(LIBS clientlib dbug strings vio mysys ${ZLIB_LIBRARY} ${SSL_LIBRARIES})
|
|||
|
||||
# Merge several convenience libraries into one big mysqlclient
|
||||
# and link them together into shared library.
|
||||
MERGE_LIBRARIES(mysqlclient STATIC ${LIBS})
|
||||
MERGE_LIBRARIES(mysqlclient STATIC ${LIBS} COMPONENT Development)
|
||||
|
||||
# Visual Studio users need debug static library for debug projects
|
||||
IF(MSVC)
|
||||
|
@ -171,11 +171,11 @@ IF(UNIX)
|
|||
SET(${OUTNAME} ${LIBNAME}${EXTENSION}${DOT_VERSION})
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
INSTALL_SYMLINK(${CMAKE_STATIC_LIBRARY_PREFIX}mysqlclient_r.a mysqlclient ${INSTALL_LIBDIR})
|
||||
INSTALL_SYMLINK(${CMAKE_STATIC_LIBRARY_PREFIX}mysqlclient_r.a mysqlclient ${INSTALL_LIBDIR} COMPONENT SharedLibraries)
|
||||
ENDIF()
|
||||
|
||||
IF(NOT DISABLE_SHARED)
|
||||
MERGE_LIBRARIES(libmysql SHARED ${LIBS} EXPORTS ${CLIENT_API_FUNCTIONS})
|
||||
MERGE_LIBRARIES(libmysql SHARED ${LIBS} EXPORTS ${CLIENT_API_FUNCTIONS} COMPONENT SharedLibraries)
|
||||
IF(UNIX)
|
||||
# libtool compatability
|
||||
IF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD" OR APPLE)
|
||||
|
@ -209,7 +209,7 @@ IF(NOT DISABLE_SHARED)
|
|||
"${CMAKE_SHARED_LIBRARY_SUFFIX}"
|
||||
""
|
||||
linkname)
|
||||
INSTALL_SYMLINK(${linkname} libmysql ${INSTALL_LIBDIR})
|
||||
INSTALL_SYMLINK(${linkname} libmysql ${INSTALL_LIBDIR} COMPONENT SharedLibraries)
|
||||
SET(OS_SHARED_LIB_SYMLINKS "${SHARED_LIB_MAJOR_VERSION}" "${OS_SHARED_LIB_VERSION}")
|
||||
LIST(REMOVE_DUPLICATES OS_SHARED_LIB_SYMLINKS)
|
||||
FOREACH(ver ${OS_SHARED_LIB_SYMLINKS})
|
||||
|
@ -218,7 +218,7 @@ IF(NOT DISABLE_SHARED)
|
|||
"${CMAKE_SHARED_LIBRARY_SUFFIX}"
|
||||
"${ver}"
|
||||
linkname)
|
||||
INSTALL_SYMLINK(${linkname} libmysql ${INSTALL_LIBDIR})
|
||||
INSTALL_SYMLINK(${linkname} libmysql ${INSTALL_LIBDIR} COMPONENT SharedLibraries)
|
||||
ENDFOREACH()
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
|
|
@ -63,7 +63,8 @@ SET(SQL_EMBEDDED_SOURCES emb_qcache.cc libmysqld.c lib_sql.cc
|
|||
../sql/sql_class.cc ../sql/sql_crypt.cc ../sql/sql_cursor.cc
|
||||
../sql/sql_db.cc ../sql/sql_delete.cc ../sql/sql_derived.cc
|
||||
../sql/sql_do.cc ../sql/sql_error.cc ../sql/sql_handler.cc
|
||||
../sql/sql_help.cc ../sql/sql_insert.cc
|
||||
../sql/sql_help.cc ../sql/sql_insert.cc ../sql/datadict.cc
|
||||
../sql/sql_truncate.cc
|
||||
../sql/sql_lex.cc ../sql/keycaches.cc
|
||||
../sql/sql_list.cc ../sql/sql_load.cc ../sql/sql_locale.cc
|
||||
../sql/sql_binlog.cc ../sql/sql_manager.cc ../sql/sql_map.cc
|
||||
|
@ -124,7 +125,7 @@ FOREACH(LIB ${LIBS})
|
|||
ENDFOREACH()
|
||||
|
||||
MERGE_LIBRARIES(mysqlserver STATIC ${EMBEDDED_LIBS}
|
||||
OUTPUT_NAME ${MYSQLSERVER_OUTPUT_NAME})
|
||||
OUTPUT_NAME ${MYSQLSERVER_OUTPUT_NAME} COMPONENT Embedded)
|
||||
|
||||
# Visual Studio users need debug static library
|
||||
IF(MSVC)
|
||||
|
@ -137,5 +138,6 @@ IF(UNIX)
|
|||
ENDIF()
|
||||
|
||||
IF(MSVC AND NOT DISABLE_SHARED)
|
||||
MERGE_LIBRARIES(libmysqld SHARED ${LIBS} EXPORTS ${CLIENT_API_FUNCTIONS})
|
||||
MERGE_LIBRARIES(libmysqld SHARED ${LIBS} EXPORTS ${CLIENT_API_FUNCTIONS}
|
||||
COMPONENT Embedded)
|
||||
ENDIF()
|
||||
|
|
|
@ -63,7 +63,7 @@ sqlsources = derror.cc field.cc field_conv.cc strfunc.cc filesort.cc \
|
|||
protocol.cc net_serv.cc opt_range.cc \
|
||||
opt_sum.cc procedure.cc records.cc sql_acl.cc \
|
||||
sql_load.cc discover.cc sql_locale.cc \
|
||||
sql_profile.cc \
|
||||
sql_profile.cc sql_truncate.cc datadict.cc \
|
||||
sql_analyse.cc sql_base.cc sql_cache.cc sql_class.cc \
|
||||
sql_crypt.cc sql_db.cc sql_delete.cc sql_error.cc sql_insert.cc \
|
||||
sql_lex.cc sql_list.cc sql_manager.cc sql_map.cc \
|
||||
|
|
|
@ -634,7 +634,6 @@ void *create_embedded_thd(int client_flag)
|
|||
thd->variables.option_bits |= OPTION_BIG_SELECTS;
|
||||
thd->proc_info=0; // Remove 'login'
|
||||
thd->command=COM_SLEEP;
|
||||
thd->version=refresh_version;
|
||||
thd->set_time();
|
||||
thd->init_for_queries();
|
||||
thd->client_capabilities= client_flag;
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
INSTALL(
|
||||
DIRECTORY .
|
||||
DESTINATION ${INSTALL_MYSQLTESTDIR}
|
||||
COMPONENT Test
|
||||
PATTERN "var/" EXCLUDE
|
||||
PATTERN "lib/My/SafeProcess" EXCLUDE
|
||||
PATTERN "lib/t*" EXCLUDE
|
||||
|
|
|
@ -25,3 +25,44 @@ TRUNCATE TABLE t2;
|
|||
source include/show_binlog_events.inc;
|
||||
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#42643: InnoDB does not support replication of TRUNCATE TABLE
|
||||
--echo #
|
||||
|
||||
eval CREATE TABLE t1 (a INT) ENGINE=$engine;
|
||||
eval CREATE TABLE t2 (a INT) ENGINE=$engine;
|
||||
INSERT INTO t1 VALUES (1),(2);
|
||||
|
||||
let $binlog_start = query_get_value("SHOW MASTER STATUS", Position, 1);
|
||||
if (`select length('$before_truncate') > 0`) {
|
||||
eval $before_truncate;
|
||||
}
|
||||
|
||||
--echo # Connection: default
|
||||
BEGIN;
|
||||
INSERT INTO t2 SELECT * FROM t1;
|
||||
|
||||
connect (truncate,localhost,root,,);
|
||||
--echo # Connection: truncate
|
||||
send TRUNCATE TABLE t1;
|
||||
|
||||
connection default;
|
||||
--echo # Connection: default
|
||||
INSERT INTO t2 SELECT * FROM t1;
|
||||
SELECT COUNT(*) FROM t2;
|
||||
COMMIT;
|
||||
|
||||
connection truncate;
|
||||
--echo # Connection: truncate
|
||||
--echo # Reaping TRUNCATE TABLE
|
||||
--reap
|
||||
SELECT COUNT(*) FROM t1;
|
||||
SELECT COUNT(*) FROM t2;
|
||||
|
||||
connection default;
|
||||
--echo # Connection: default
|
||||
|
||||
source include/show_binlog_events.inc;
|
||||
disconnect truncate;
|
||||
DROP TABLE t1,t2;
|
||||
|
|
|
@ -10,9 +10,9 @@
|
|||
# $con_aux2 Name of the second auxiliary connection to be used by this
|
||||
# script.
|
||||
# $statement Statement to be checked.
|
||||
# $restore_table Table which might be modified affected by statement to be
|
||||
# checked and thus needs backing up before its execution
|
||||
# and restoring after it (can be empty).
|
||||
# $restore_table Table which might be modified by statement to be checked
|
||||
# and thus needs backing up before its execution and
|
||||
# restoring after it (can be empty).
|
||||
#
|
||||
# EXAMPLE
|
||||
# lock_sync.test
|
||||
|
@ -25,7 +25,7 @@ set debug_sync= "RESET";
|
|||
|
||||
if (`SELECT '$restore_table' <> ''`)
|
||||
{
|
||||
--eval create table t_backup select * from $restore_table;
|
||||
--eval create temporary table t_backup select * from $restore_table;
|
||||
}
|
||||
|
||||
connection $con_aux1;
|
||||
|
@ -34,19 +34,19 @@ set debug_sync='after_lock_tables_takes_lock SIGNAL parked WAIT_FOR go';
|
|||
|
||||
connection $con_aux2;
|
||||
set debug_sync='now WAIT_FOR parked';
|
||||
--send_eval insert into $table values (0);
|
||||
--send_eval insert into $table (i) values (0);
|
||||
|
||||
--enable_result_log
|
||||
--enable_query_log
|
||||
connection default;
|
||||
# Wait until concurrent insert is successfully executed while
|
||||
# statement being checked has its tables locked.
|
||||
# We use wait_condition.inc instead of simply executing
|
||||
# We use wait_condition.inc instead of simply reaping
|
||||
# concurrent insert here in order to avoid deadlocks if test
|
||||
# fails and timing out instead.
|
||||
# fails and to time out gracefully instead.
|
||||
let $wait_condition=
|
||||
select count(*) = 0 from information_schema.processlist
|
||||
where info = "insert into $table values (0)";
|
||||
where info = "insert into $table (i) values (0)";
|
||||
--source include/wait_condition.inc
|
||||
|
||||
--disable_result_log
|
||||
|
@ -86,7 +86,7 @@ if (`SELECT '$restore_table' <> ''`)
|
|||
{
|
||||
--eval truncate table $restore_table;
|
||||
--eval insert into $restore_table select * from t_backup;
|
||||
drop table t_backup;
|
||||
drop temporary table t_backup;
|
||||
}
|
||||
|
||||
# Clean-up. Reset DEBUG_SYNC facility after use.
|
||||
|
|
|
@ -10,9 +10,9 @@
|
|||
# $con_aux2 Name of the second auxiliary connection to be used by this
|
||||
# script.
|
||||
# $statement Statement to be checked.
|
||||
# $restore_table Table which might be modified affected by statement to be
|
||||
# checked and thus needs backing up before its execution
|
||||
# and restoring after it (can be empty).
|
||||
# $restore_table Table which might be modified by statement to be checked
|
||||
# and thus needs backing up before its execution and
|
||||
# restoring after it (can be empty).
|
||||
#
|
||||
# EXAMPLE
|
||||
# lock_sync.test
|
||||
|
@ -25,7 +25,7 @@ set debug_sync= "RESET";
|
|||
|
||||
if (`SELECT '$restore_table' <> ''`)
|
||||
{
|
||||
--eval create table t_backup select * from $restore_table;
|
||||
--eval create temporary table t_backup select * from $restore_table;
|
||||
}
|
||||
|
||||
connection $con_aux1;
|
||||
|
@ -34,7 +34,7 @@ set debug_sync='after_lock_tables_takes_lock SIGNAL parked WAIT_FOR go';
|
|||
|
||||
connection $con_aux2;
|
||||
set debug_sync='now WAIT_FOR parked';
|
||||
--send_eval insert into $table values (0);
|
||||
--send_eval insert into $table (i) values (0);
|
||||
|
||||
--enable_result_log
|
||||
--enable_query_log
|
||||
|
@ -43,7 +43,7 @@ connection default;
|
|||
# of our statement.
|
||||
let $wait_condition=
|
||||
select count(*) = 1 from information_schema.processlist
|
||||
where state = "Table lock" and info = "insert into $table values (0)";
|
||||
where state = "Table lock" and info = "insert into $table (i) values (0)";
|
||||
--source include/wait_condition.inc
|
||||
|
||||
--disable_result_log
|
||||
|
@ -71,7 +71,7 @@ if (`SELECT '$restore_table' <> ''`)
|
|||
{
|
||||
--eval truncate table $restore_table;
|
||||
--eval insert into $restore_table select * from t_backup;
|
||||
drop table t_backup;
|
||||
drop temporary table t_backup;
|
||||
}
|
||||
|
||||
# Clean-up. Reset DEBUG_SYNC facility after use.
|
||||
|
|
|
@ -29,9 +29,9 @@ connection default;
|
|||
# Wait until statement is successfully executed while
|
||||
# all rows in table are X-locked. This means that it
|
||||
# does not acquire any row locks.
|
||||
# We use wait_condition.inc instead of simply executing
|
||||
# We use wait_condition.inc instead of simply reaping
|
||||
# statement here in order to avoid deadlocks if test
|
||||
# fails and timing out instead.
|
||||
# fails and to time out gracefully instead.
|
||||
let $wait_condition=
|
||||
select count(*) = 0 from information_schema.processlist
|
||||
where info = "$statement";
|
||||
|
|
|
@ -1351,6 +1351,13 @@ connection con1;
|
|||
SELECT * FROM t1;
|
||||
ROLLBACK;
|
||||
|
||||
--echo # Switch to connection con2
|
||||
connection con2;
|
||||
ROLLBACK;
|
||||
|
||||
--echo # Switch to connection con1
|
||||
connection con1;
|
||||
|
||||
--echo # 2. test for serialized update:
|
||||
|
||||
CREATE TABLE t2 (a INT);
|
||||
|
@ -1435,6 +1442,7 @@ connection con2;
|
|||
--reap
|
||||
SELECT * FROM t1;
|
||||
|
||||
--enable_abort_on_error
|
||||
connection default;
|
||||
disconnect con1;
|
||||
disconnect con2;
|
||||
|
@ -1556,3 +1564,36 @@ SELECT 1 FROM (SELECT COUNT(DISTINCT c1)
|
|||
DROP TABLE t1;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
||||
--echo #
|
||||
--echo # Bug#42643: InnoDB does not support replication of TRUNCATE TABLE
|
||||
--echo #
|
||||
--echo # Check that a TRUNCATE TABLE statement, needing an exclusive meta
|
||||
--echo # data lock, waits for a shared metadata lock owned by a concurrent
|
||||
--echo # transaction.
|
||||
--echo #
|
||||
|
||||
eval CREATE TABLE t1 (a INT) ENGINE=$engine_type;
|
||||
INSERT INTO t1 VALUES (1),(2),(3);
|
||||
BEGIN;
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
--echo # Connection con1
|
||||
connect (con1, localhost, root,,);
|
||||
--send TRUNCATE TABLE t1;
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
let $wait_condition= SELECT COUNT(*)=1 FROM information_schema.processlist
|
||||
WHERE state='Waiting for table' AND info='TRUNCATE TABLE t1';
|
||||
--source include/wait_condition.inc
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
ROLLBACK;
|
||||
--echo # Connection con1
|
||||
connection con1;
|
||||
--echo # Reaping TRUNCATE TABLE
|
||||
--reap
|
||||
SELECT * FROM t1;
|
||||
--echo # Disconnect con1
|
||||
disconnect con1;
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
DROP TABLE t1;
|
||||
|
|
3
mysql-test/include/not_parallel.inc
Normal file
3
mysql-test/include/not_parallel.inc
Normal file
|
@ -0,0 +1,3 @@
|
|||
if (`SELECT '$MTR_PARALLEL' > 1`) {
|
||||
--skip test requires --parallel=1
|
||||
}
|
|
@ -13,15 +13,20 @@
|
|||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
SET(INSTALL_ARGS
|
||||
DESTINATION "${INSTALL_MYSQLTESTDIR}/lib/My/SafeProcess"
|
||||
COMPONENT Test
|
||||
)
|
||||
|
||||
IF (WIN32)
|
||||
ADD_EXECUTABLE(my_safe_process safe_process_win.cc)
|
||||
ADD_EXECUTABLE(my_safe_kill safe_kill_win.cc)
|
||||
MYSQL_ADD_EXECUTABLE(my_safe_process safe_process_win.cc ${INSTALL_ARGS})
|
||||
MYSQL_ADD_EXECUTABLE(my_safe_kill safe_kill_win.cc ${INSTALL_ARGS})
|
||||
ELSE()
|
||||
ADD_EXECUTABLE(my_safe_process safe_process.cc)
|
||||
MYSQL_ADD_EXECUTABLE(my_safe_process safe_process.cc ${INSTALL_ARGS})
|
||||
ENDIF()
|
||||
|
||||
INSTALL(TARGETS my_safe_process DESTINATION "${INSTALL_MYSQLTESTDIR}/lib/My/SafeProcess")
|
||||
INSTALL(TARGETS my_safe_process DESTINATION "${INSTALL_MYSQLTESTDIR}/lib/My/SafeProcess" COMPONENT Test)
|
||||
IF(WIN32)
|
||||
INSTALL(TARGETS my_safe_kill DESTINATION "${INSTALL_MYSQLTESTDIR}/lib/My/SafeProcess")
|
||||
INSTALL(TARGETS my_safe_kill DESTINATION "${INSTALL_MYSQLTESTDIR}/lib/My/SafeProcess" COMPONENT Test)
|
||||
ENDIF()
|
||||
INSTALL(FILES safe_process.pl Base.pm DESTINATION "${INSTALL_MYSQLTESTDIR}/lib/My/SafeProcess")
|
||||
INSTALL(FILES safe_process.pl Base.pm DESTINATION "${INSTALL_MYSQLTESTDIR}/lib/My/SafeProcess" COMPONENT Test)
|
||||
|
|
|
@ -41,6 +41,12 @@ our $opt_with_ndbcluster_only;
|
|||
our $defaults_file;
|
||||
our $defaults_extra_file;
|
||||
our $quick_collect;
|
||||
# Set to 1 if you want the tests to override
|
||||
# default storage engine settings, and use MyISAM
|
||||
# as default. (temporary option used in connection
|
||||
# with the change of default storage engine to InnoDB)
|
||||
our $default_myisam= 1;
|
||||
|
||||
|
||||
sub collect_option {
|
||||
my ($opt, $value)= @_;
|
||||
|
@ -591,6 +597,9 @@ sub optimize_cases {
|
|||
my $default_engine=
|
||||
mtr_match_prefix($opt, "--default-storage-engine=");
|
||||
|
||||
# Allow use of uppercase, convert to all lower case
|
||||
$default_engine =~ tr/A-Z/a-z/;
|
||||
|
||||
if (defined $default_engine){
|
||||
|
||||
#print " $tinfo->{name}\n";
|
||||
|
@ -948,10 +957,12 @@ sub collect_one_test_case {
|
|||
return $tinfo unless $do_innodb_plugin;
|
||||
}
|
||||
}
|
||||
else
|
||||
elsif ($default_myisam)
|
||||
{
|
||||
push(@{$tinfo->{'master_opt'}}, "--loose-skip-innodb");
|
||||
push(@{$tinfo->{'slave_opt'}}, "--loose-skip-innodb");
|
||||
# This is a temporary fix to allow non-innodb tests to run even if
|
||||
# the default storage engine is innodb.
|
||||
push(@{$tinfo->{'master_opt'}}, "--default-storage-engine=MyISAM");
|
||||
push(@{$tinfo->{'slave_opt'}}, "--default-storage-engine=MyISAM");
|
||||
}
|
||||
|
||||
if ( $tinfo->{'need_binlog'} )
|
||||
|
|
|
@ -362,6 +362,7 @@ sub main {
|
|||
$opt_parallel= 1 if ($opt_parallel < 1);
|
||||
mtr_report("Using parallel: $opt_parallel");
|
||||
}
|
||||
$ENV{MTR_PARALLEL} = $opt_parallel;
|
||||
|
||||
# Create server socket on any free port
|
||||
my $server = new IO::Socket::INET
|
||||
|
@ -943,6 +944,7 @@ sub command_line_setup {
|
|||
'timestamp' => \&report_option,
|
||||
'timediff' => \&report_option,
|
||||
'max-connections=i' => \$opt_max_connections,
|
||||
'default-myisam!' => \&collect_option,
|
||||
|
||||
'help|h' => \$opt_usage,
|
||||
'list-options' => \$opt_list_options,
|
||||
|
@ -1826,7 +1828,7 @@ sub find_plugin($$)
|
|||
mtr_file_exists(vs_config_dirs($location,$plugin_filename),
|
||||
"$basedir/lib/plugin/".$plugin_filename,
|
||||
"$basedir/$location/.libs/".$plugin_filename,
|
||||
"$basedir/lib/mysql/plugin/".$plugin_filename,
|
||||
"$basedir/lib/mysql/plugin/".$plugin_filename,
|
||||
);
|
||||
return $lib_example_plugin;
|
||||
}
|
||||
|
@ -1943,6 +1945,16 @@ sub environment_setup {
|
|||
}
|
||||
}
|
||||
|
||||
# ----------------------------------------------------
|
||||
# Add the paths where mysqld will find archive/blackhole/federated plugins.
|
||||
# ----------------------------------------------------
|
||||
$ENV{'ARCHIVE_PLUGIN_DIR'} =
|
||||
dirname(find_plugin("ha_archive", "storage/archive"));
|
||||
$ENV{'BLACKHOLE_PLUGIN_DIR'} =
|
||||
dirname(find_plugin("ha_blackhole", "storage/blackhole"));
|
||||
$ENV{'FEDERATED_PLUGIN_DIR'} =
|
||||
dirname(find_plugin("ha_federated", "storage/federated"));
|
||||
|
||||
# ----------------------------------------------------
|
||||
# Add the path where mysqld will find mypluglib.so
|
||||
# ----------------------------------------------------
|
||||
|
@ -2832,7 +2844,6 @@ sub mysql_install_db {
|
|||
mtr_add_arg($args, "--bootstrap");
|
||||
mtr_add_arg($args, "--basedir=%s", $install_basedir);
|
||||
mtr_add_arg($args, "--datadir=%s", $install_datadir);
|
||||
mtr_add_arg($args, "--loose-innodb=OFF");
|
||||
mtr_add_arg($args, "--loose-skip-falcon");
|
||||
mtr_add_arg($args, "--loose-skip-ndbcluster");
|
||||
mtr_add_arg($args, "--tmpdir=%s", "$opt_vardir/tmp/");
|
||||
|
@ -5549,7 +5560,9 @@ Misc options
|
|||
timediff With --timestamp, also print time passed since
|
||||
*previous* test started
|
||||
max-connections=N Max number of open connection to server in mysqltest
|
||||
|
||||
default-myisam Set default storage engine to MyISAM for non-innodb
|
||||
tests. This is needed after switching default storage
|
||||
engine to InnoDB.
|
||||
HERE
|
||||
exit(1);
|
||||
|
||||
|
|
|
@ -12749,6 +12749,14 @@ ERROR HY000: Can't find file: 't1' (errno: 2)
|
|||
DROP TABLE t1;
|
||||
ERROR 42S02: Unknown table 't1'
|
||||
#
|
||||
# Ensure that TRUNCATE fails for non-empty archive tables.
|
||||
#
|
||||
CREATE TABLE t1 (a INT) ENGINE=ARCHIVE;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
TRUNCATE TABLE t1;
|
||||
ERROR HY000: Table storage engine for 't1' doesn't have this option
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# BUG#46565 - repair of partition fail for archive engine
|
||||
#
|
||||
# Installing corrupted table files for t1.
|
||||
|
|
|
@ -25,7 +25,7 @@ DROP TABLE t1;
|
|||
# MySQL Bug#39200: optimize table does not recognize
|
||||
# ROW_FORMAT=COMPRESSED
|
||||
#
|
||||
CREATE TABLE t1 (a INT) ROW_FORMAT=compressed;
|
||||
CREATE TABLE t1 (a INT) ROW_FORMAT=compressed, ENGINE=MyISAM;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
|
|
272
mysql-test/r/commit.result
Normal file
272
mysql-test/r/commit.result
Normal file
|
@ -0,0 +1,272 @@
|
|||
#
|
||||
# Bug#20837 Apparent change of isolation level
|
||||
# during transaction
|
||||
#
|
||||
# Bug#53343 completion_type=1, COMMIT/ROLLBACK
|
||||
# AND CHAIN don't preserve the isolation
|
||||
# level
|
||||
connection default;
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
||||
CREATE TABLE t1 (s1 INT) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES (1),(2);
|
||||
COMMIT;
|
||||
START TRANSACTION;
|
||||
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
||||
ERROR 25001: Transaction isolation level can't be changed while a transaction is in progress
|
||||
COMMIT;
|
||||
SET @@autocommit=0;
|
||||
COMMIT;
|
||||
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
|
||||
START TRANSACTION;
|
||||
SELECT @@tx_isolation;
|
||||
@@tx_isolation
|
||||
REPEATABLE-READ
|
||||
Should be REPEATABLE READ
|
||||
SELECT * FROM t1;
|
||||
s1
|
||||
1
|
||||
2
|
||||
SELECT @@tx_isolation;
|
||||
@@tx_isolation
|
||||
REPEATABLE-READ
|
||||
Should be REPEATABLE READ
|
||||
INSERT INTO t1 VALUES (-1);
|
||||
SELECT @@tx_isolation;
|
||||
@@tx_isolation
|
||||
REPEATABLE-READ
|
||||
Should be REPEATABLE READ
|
||||
COMMIT;
|
||||
START TRANSACTION;
|
||||
SELECT * FROM t1;
|
||||
s1
|
||||
1
|
||||
2
|
||||
-1
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
||||
connection con1
|
||||
START TRANSACTION;
|
||||
INSERT INTO t1 VALUES (1000);
|
||||
COMMIT;
|
||||
connection default
|
||||
We should not be able to read the '1000'
|
||||
SELECT * FROM t1;
|
||||
s1
|
||||
1
|
||||
2
|
||||
-1
|
||||
COMMIT;
|
||||
Now, the '1000' should appear.
|
||||
START TRANSACTION;
|
||||
SELECT * FROM t1;
|
||||
s1
|
||||
1
|
||||
2
|
||||
-1
|
||||
1000
|
||||
COMMIT;
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
||||
connection default
|
||||
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
||||
START TRANSACTION;
|
||||
connection con1
|
||||
START TRANSACTION;
|
||||
INSERT INTO t1 VALUES (1001);
|
||||
COMMIT;
|
||||
connection default
|
||||
SELECT COUNT(*) FROM t1 WHERE s1 = 1001;
|
||||
COUNT(*)
|
||||
1
|
||||
Should be 1
|
||||
COMMIT AND CHAIN;
|
||||
connection con1
|
||||
INSERT INTO t1 VALUES (1002);
|
||||
COMMIT;
|
||||
connection default
|
||||
SELECT COUNT(*) FROM t1 WHERE s1 = 1002;
|
||||
COUNT(*)
|
||||
1
|
||||
Should be 1
|
||||
COMMIT;
|
||||
SELECT * FROM t1;
|
||||
s1
|
||||
1
|
||||
2
|
||||
-1
|
||||
1000
|
||||
1001
|
||||
1002
|
||||
DELETE FROM t1 WHERE s1 >= 1000;
|
||||
COMMIT;
|
||||
connection default
|
||||
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
||||
START TRANSACTION;
|
||||
connection con1
|
||||
START TRANSACTION;
|
||||
INSERT INTO t1 VALUES (1001);
|
||||
COMMIT;
|
||||
connection default
|
||||
SELECT COUNT(*) FROM t1 WHERE s1 = 1001;
|
||||
COUNT(*)
|
||||
1
|
||||
Should be 1
|
||||
ROLLBACK AND CHAIN;
|
||||
connection con1
|
||||
INSERT INTO t1 VALUES (1002);
|
||||
COMMIT;
|
||||
connection default
|
||||
SELECT COUNT(*) FROM t1 WHERE s1 = 1002;
|
||||
COUNT(*)
|
||||
1
|
||||
Should be 1
|
||||
COMMIT;
|
||||
SELECT * FROM t1;
|
||||
s1
|
||||
1
|
||||
2
|
||||
-1
|
||||
1001
|
||||
1002
|
||||
DELETE FROM t1 WHERE s1 >= 1000;
|
||||
COMMIT;
|
||||
SET @@completion_type=1;
|
||||
connection default
|
||||
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
||||
START TRANSACTION;
|
||||
connection con1
|
||||
START TRANSACTION;
|
||||
INSERT INTO t1 VALUES (1001);
|
||||
COMMIT;
|
||||
connection default
|
||||
SELECT * FROM t1 WHERE s1 >= 1000;
|
||||
s1
|
||||
1001
|
||||
Should see 1001
|
||||
COMMIT AND NO CHAIN;
|
||||
default transaction is now in REPEATABLE READ
|
||||
connection con1
|
||||
INSERT INTO t1 VALUES (1002);
|
||||
COMMIT;
|
||||
connection default
|
||||
SELECT * FROM t1 WHERE s1 >= 1000;
|
||||
s1
|
||||
1001
|
||||
1002
|
||||
Should see 1001 and 1002
|
||||
connection con1
|
||||
INSERT INTO t1 VALUES (1003);
|
||||
COMMIT;
|
||||
connection default
|
||||
SELECT * FROM t1 WHERE s1 >= 1000;
|
||||
s1
|
||||
1001
|
||||
1002
|
||||
Should see 1001 and 1002, but NOT 1003
|
||||
COMMIT;
|
||||
SELECT * FROM t1;
|
||||
s1
|
||||
1
|
||||
2
|
||||
-1
|
||||
1001
|
||||
1002
|
||||
1003
|
||||
DELETE FROM t1 WHERE s1 >= 1000;
|
||||
COMMIT AND NO CHAIN;
|
||||
SET @@completion_type=0;
|
||||
COMMIT;
|
||||
connection default
|
||||
SET @@completion_type=1;
|
||||
COMMIT AND NO CHAIN;
|
||||
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
||||
START TRANSACTION;
|
||||
connection con1
|
||||
START TRANSACTION;
|
||||
INSERT INTO t1 VALUES (1001);
|
||||
COMMIT;
|
||||
connection default
|
||||
SELECT * FROM t1 WHERE s1 >= 1000;
|
||||
s1
|
||||
1001
|
||||
Should see 1001
|
||||
ROLLBACK AND NO CHAIN;
|
||||
default transaction is now in REPEATABLE READ
|
||||
connection con1
|
||||
INSERT INTO t1 VALUES (1002);
|
||||
COMMIT;
|
||||
connection default
|
||||
SELECT * FROM t1 WHERE s1 >= 1000;
|
||||
s1
|
||||
1001
|
||||
1002
|
||||
Should see 1001 and 1002
|
||||
connection con1
|
||||
INSERT INTO t1 VALUES (1003);
|
||||
COMMIT;
|
||||
connection default
|
||||
SELECT * FROM t1 WHERE s1 >= 1000;
|
||||
s1
|
||||
1001
|
||||
1002
|
||||
Should see 1001 and 1002, but NOT 1003
|
||||
COMMIT;
|
||||
SELECT * FROM t1;
|
||||
s1
|
||||
1
|
||||
2
|
||||
-1
|
||||
1001
|
||||
1002
|
||||
1003
|
||||
DELETE FROM t1 WHERE s1 >= 1000;
|
||||
COMMIT AND NO CHAIN;
|
||||
SET @@completion_type=0;
|
||||
COMMIT;
|
||||
connection default
|
||||
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
||||
START TRANSACTION;
|
||||
SELECT * FROM t1;
|
||||
s1
|
||||
1
|
||||
2
|
||||
-1
|
||||
connection con1
|
||||
INSERT INTO t1 VALUES (1000);
|
||||
COMMIT;
|
||||
connection default
|
||||
SELECT * FROM t1;
|
||||
s1
|
||||
1
|
||||
2
|
||||
-1
|
||||
Should get same result as above (i.e should not read '1000')
|
||||
COMMIT;
|
||||
DELETE FROM t1 WHERE s1 >= 1000;
|
||||
COMMIT;
|
||||
SET @@completion_type=1;
|
||||
COMMIT AND NO CHAIN;
|
||||
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
||||
START TRANSACTION;
|
||||
TRUNCATE TABLE t1;
|
||||
INSERT INTO t1 VALUES (1000);
|
||||
SELECT * FROM t1;
|
||||
s1
|
||||
1000
|
||||
Should read '1000'
|
||||
connection con1
|
||||
INSERT INTO t1 VALUES (1001);
|
||||
COMMIT;
|
||||
connection default
|
||||
SELECT * FROM t1;
|
||||
s1
|
||||
1000
|
||||
Should only read the '1000' as this transaction is now in REP READ
|
||||
COMMIT AND NO CHAIN;
|
||||
SET @@completion_type=0;
|
||||
COMMIT AND NO CHAIN;
|
||||
SET @autocommit=1;
|
||||
COMMIT;
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of test cases for Bug#20837
|
||||
#
|
|
@ -99,6 +99,14 @@ create table t1 (`` int);
|
|||
ERROR 42000: Incorrect column name ''
|
||||
create table t1 (i int, index `` (i));
|
||||
ERROR 42000: Incorrect index name ''
|
||||
create table t1 (i int);
|
||||
lock tables t1 read;
|
||||
create table t2 (j int);
|
||||
ERROR HY000: Table 't2' was not locked with LOCK TABLES
|
||||
create temporary table t2 (j int);
|
||||
drop temporary table t2;
|
||||
unlock tables;
|
||||
drop table t1;
|
||||
create table t1 (a int auto_increment not null primary key, B CHAR(20));
|
||||
insert into t1 (b) values ("hello"),("my"),("world");
|
||||
create table t2 (key (b)) select * from t1;
|
||||
|
@ -377,6 +385,17 @@ ERROR 42S01: Table 't3' already exists
|
|||
drop table t1, t2, t3;
|
||||
drop table t3;
|
||||
drop database mysqltest;
|
||||
create table t1 (i int);
|
||||
create table t2 (j int);
|
||||
lock tables t1 read;
|
||||
create table t3 like t1;
|
||||
ERROR HY000: Table 't3' was not locked with LOCK TABLES
|
||||
create temporary table t3 like t1;
|
||||
drop temporary table t3;
|
||||
create temporary table t3 like t2;
|
||||
ERROR HY000: Table 't2' was not locked with LOCK TABLES
|
||||
unlock tables;
|
||||
drop tables t1, t2;
|
||||
SET SESSION storage_engine="heap";
|
||||
SELECT @@storage_engine;
|
||||
@@storage_engine
|
||||
|
@ -2033,3 +2052,39 @@ ID
|
|||
3
|
||||
DROP TABLE t1;
|
||||
DROP TEMPORARY TABLE t2;
|
||||
#
|
||||
# Bug #22909 "Using CREATE ... LIKE is possible to create field
|
||||
# with invalid default value"
|
||||
#
|
||||
# Altough original bug report suggests to use older version of MySQL
|
||||
# for producing .FRM with invalid defaults we use sql_mode to achieve
|
||||
# the same effect.
|
||||
drop tables if exists t1, t2;
|
||||
# Attempt to create table with invalid default should fail in normal mode
|
||||
create table t1 (dt datetime default '2008-02-31 00:00:00');
|
||||
ERROR 42000: Invalid default value for 'dt'
|
||||
set @old_mode= @@sql_mode;
|
||||
set @@sql_mode='ALLOW_INVALID_DATES';
|
||||
# The same should be possible in relaxed mode
|
||||
create table t1 (dt datetime default '2008-02-31 00:00:00');
|
||||
set @@sql_mode= @old_mode;
|
||||
# In normal mode attempt to create copy of table with invalid
|
||||
# default should fail
|
||||
create table t2 like t1;
|
||||
ERROR 42000: Invalid default value for 'dt'
|
||||
set @@sql_mode='ALLOW_INVALID_DATES';
|
||||
# But should work in relaxed mode
|
||||
create table t2 like t1;
|
||||
# Check that table definitions match
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`dt` datetime DEFAULT '2008-02-31 00:00:00'
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
show create table t2;
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`dt` datetime DEFAULT '2008-02-31 00:00:00'
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
set @@sql_mode= @old_mode;
|
||||
drop tables t1, t2;
|
||||
|
|
|
@ -157,3 +157,13 @@ Error 1051 Unknown table 't1'
|
|||
# --
|
||||
# -- End of Bug#37431.
|
||||
# --
|
||||
#
|
||||
# Bug#54282 Crash in MDL_context::upgrade_shared_lock_to_exclusive
|
||||
#
|
||||
DROP TABLE IF EXISTS t1;
|
||||
CREATE TABLE t1 (a INT);
|
||||
LOCK TABLE t1 WRITE;
|
||||
DROP TABLE t1, t1;
|
||||
ERROR 42000: Not unique table/alias: 't1'
|
||||
UNLOCK TABLES;
|
||||
DROP TABLE t1;
|
||||
|
|
|
@ -178,8 +178,7 @@ end|
|
|||
# 1.1 Simple SELECT statement.
|
||||
#
|
||||
# No locks are necessary as this statement won't be written
|
||||
# to the binary log and thanks to how MyISAM works SELECT
|
||||
# will see version of the table prior to concurrent insert.
|
||||
# to the binary log and InnoDB supports snapshots.
|
||||
Success: 'select * from t1' doesn't take row locks on 't1'.
|
||||
#
|
||||
# 1.2 Multi-UPDATE statement.
|
||||
|
@ -484,7 +483,7 @@ Success: 'insert into t2 values (f13((select i+10 from t1 where i=1)))' takes sh
|
|||
# row locks on the data it reads.
|
||||
Success: 'call p2(@a)' doesn't take row locks on 't1'.
|
||||
#
|
||||
# 5.2 Function that modifes data and uses CALL,
|
||||
# 5.2 Function that modifies data and uses CALL,
|
||||
# which reads a table through SELECT.
|
||||
#
|
||||
# Since a call to such function is written to the binary
|
||||
|
@ -562,3 +561,68 @@ drop view v1, v2;
|
|||
drop procedure p1;
|
||||
drop procedure p2;
|
||||
drop table t1, t2, t3, t4, t5;
|
||||
#
|
||||
# Test for bug#51263 "Deadlock between transactional SELECT
|
||||
# and ALTER TABLE ... REBUILD PARTITION".
|
||||
#
|
||||
drop table if exists t1, t2;
|
||||
create table t1 (i int auto_increment not null primary key) engine=innodb;
|
||||
create table t2 (i int) engine=innodb;
|
||||
insert into t1 values (1), (2), (3), (4), (5);
|
||||
begin;
|
||||
# Acquire SR metadata lock on t1 and LOCK_S row-locks on its rows.
|
||||
insert into t2 select count(*) from t1;
|
||||
# Switching to connection 'con1'.
|
||||
# Sending:
|
||||
alter table t1 add column j int;
|
||||
# Switching to connection 'default'.
|
||||
# Wait until ALTER is blocked because it tries to upgrade SNW
|
||||
# metadata lock to X lock.
|
||||
# It should not be blocked during copying data to new version of
|
||||
# table as it acquires LOCK_S locks on rows of old version, which
|
||||
# are compatible with locks acquired by connection 'con1'.
|
||||
# The below statement will deadlock because it will try to acquire
|
||||
# SW lock on t1, which will conflict with ALTER's SNW lock. And
|
||||
# ALTER will be waiting for this connection to release its SR lock.
|
||||
# This deadlock should be detected by an MDL subsystem and this
|
||||
# statement should be aborted with an appropriate error.
|
||||
insert into t1 values (6);
|
||||
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
||||
# Unblock ALTER TABLE.
|
||||
commit;
|
||||
# Switching to connection 'con1'.
|
||||
# Reaping ALTER TABLE.
|
||||
# Switching to connection 'default'.
|
||||
#
|
||||
# Now test for scenario in which bug was reported originally.
|
||||
#
|
||||
drop tables t1, t2;
|
||||
create table t1 (i int auto_increment not null primary key) engine=innodb
|
||||
partition by hash (i) partitions 4;
|
||||
create table t2 (i int) engine=innodb;
|
||||
insert into t1 values (1), (2), (3), (4), (5);
|
||||
begin;
|
||||
# Acquire SR metadata lock on t1.
|
||||
select * from t1;
|
||||
i
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
# Switching to connection 'con1'.
|
||||
# Sending:
|
||||
alter table t1 rebuild partition p0;
|
||||
# Switching to connection 'default'.
|
||||
# Wait until ALTER is blocked because of active SR lock.
|
||||
# The below statement should succeed as transaction
|
||||
# has SR metadata lock on t1 and only going to read
|
||||
# rows from it.
|
||||
insert into t2 select count(*) from t1;
|
||||
# Unblock ALTER TABLE.
|
||||
commit;
|
||||
# Switching to connection 'con1'.
|
||||
# Reaping ALTER TABLE.
|
||||
# Switching to connection 'default'.
|
||||
# Clean-up.
|
||||
drop tables t1, t2;
|
||||
|
|
|
@ -511,7 +511,7 @@ Success: 'insert into t2 values (f13((select i+10 from t1 where i=1)))' doesn't
|
|||
# strong locks on the data it reads.
|
||||
Success: 'call p2(@a)' allows concurrent inserts into 't1'.
|
||||
#
|
||||
# 5.2 Function that modifes data and uses CALL,
|
||||
# 5.2 Function that modifies data and uses CALL,
|
||||
# which reads a table through SELECT.
|
||||
#
|
||||
# Since a call to such function is written to the binary
|
||||
|
|
|
@ -330,9 +330,9 @@ select column_name from information_schema.columns where
|
|||
table_schema='test' and table_name='t1';
|
||||
column_name
|
||||
c1
|
||||
select count(*) from t1;
|
||||
count(*)
|
||||
4
|
||||
# Disable result log to make test robust against
|
||||
# effects of concurrent insert.
|
||||
select * from t1;
|
||||
insert into t1 values (1);
|
||||
# Check that SNW lock is not compatible with SW lock.
|
||||
# Again we use ALTER TABLE which fails after opening
|
||||
|
@ -1765,6 +1765,7 @@ drop tables t1, t2;
|
|||
# locking subsystem.
|
||||
#
|
||||
drop tables if exists t0, t1, t2, t3, t4, t5;
|
||||
set debug_sync= 'RESET';
|
||||
create table t1 (i int);
|
||||
create table t2 (j int);
|
||||
create table t3 (k int);
|
||||
|
@ -1943,6 +1944,98 @@ commit;
|
|||
# Reap ALTER TABLE ... RENAME.
|
||||
drop table t2;
|
||||
#
|
||||
# Test that in situation when MDL subsystem detects a deadlock
|
||||
# but it turns out that it can be resolved by backing-off locks
|
||||
# acquired by one of participating transactions (which is
|
||||
# possible when one of transactions consists only of currently
|
||||
# executed statement, e.g. in autocommit mode) no error is
|
||||
# reported.
|
||||
#
|
||||
create table t1 (i int);
|
||||
create table t2 (j int);
|
||||
# Ensure that the below SELECT stops once it has acquired metadata
|
||||
# lock on table 't2'.
|
||||
set debug_sync= 'after_open_table_mdl_shared SIGNAL locked WAIT_FOR finish';
|
||||
# Sending:
|
||||
select * from t2, t1;
|
||||
#
|
||||
# Switching to connection 'deadlock_con1'.
|
||||
# Wait till SELECT acquires MDL on 't2' and starts waiting for signal.
|
||||
set debug_sync= 'now WAIT_FOR locked';
|
||||
# Sending:
|
||||
lock tables t1 write, t2 write;
|
||||
#
|
||||
# Switching to connection 'deadlock_con2'.
|
||||
# Wait until LOCK TABLES acquires SNRW lock on 't1' and is blocked
|
||||
# while trying to acquire SNRW lock on 't1'.
|
||||
# Resume SELECT execution, this should eventually unblock LOCK TABLES.
|
||||
set debug_sync= 'now SIGNAL finish';
|
||||
#
|
||||
# Switching to connection 'deadlock_con1'.
|
||||
# Reaping LOCK TABLES.
|
||||
unlock tables;
|
||||
#
|
||||
# Switching to connection 'default'.
|
||||
# Reaping SELECT. It succeed and not report ER_LOCK_DEADLOCK error.
|
||||
j i
|
||||
drop tables t1, t2;
|
||||
#
|
||||
# Test coverage for situation in which a race has happened
|
||||
# during deadlock detection process which led to unwarranted
|
||||
# ER_LOCK_DEADLOCK error.
|
||||
#
|
||||
create table t1 (i int);
|
||||
# Ensure that ALTER waits once it has acquired SNW lock.
|
||||
set debug_sync='after_open_table_mdl_shared SIGNAL parked1 WAIT_FOR go1';
|
||||
# Sending:
|
||||
alter table t1 add column j int;
|
||||
#
|
||||
# Switching to connection 'deadlock_con1'.
|
||||
# Wait till ALTER acquires SNW lock and stops.
|
||||
set debug_sync='now WAIT_FOR parked1';
|
||||
# Ensure that INSERT is paused once it detects that there is
|
||||
# a conflicting metadata lock so it has to wait, but before
|
||||
# deadlock detection is run.
|
||||
set debug_sync='mdl_acquire_lock_wait SIGNAL parked2 WAIT_FOR go2';
|
||||
# Sending:
|
||||
insert into t1 values ();
|
||||
#
|
||||
# Switching to connection 'deadlock_con2'.
|
||||
# Wait till INSERT is paused.
|
||||
set debug_sync='now WAIT_FOR parked2';
|
||||
# Resume ALTER execution. Eventually it will release its
|
||||
# metadata lock and INSERT's request for SW lock will be
|
||||
# satisified.
|
||||
set debug_sync='now SIGNAL go1';
|
||||
#
|
||||
# Switching to connection 'default'.
|
||||
# Reaping ALTER TABLE.
|
||||
# Add a new request for SNW lock to waiting graph.
|
||||
# Sending:
|
||||
alter table t1 drop column j;
|
||||
#
|
||||
# Switching to connection 'deadlock_con2'.
|
||||
# Wait until ALTER is blocked.
|
||||
# Resume INSERT so it can start deadlock detection.
|
||||
#
|
||||
# At this point there is a discrepancy between the fact that INSERT's
|
||||
# SW lock is already satisfied, but INSERT's connection is still
|
||||
# marked as waiting for it. Looking for a loop in waiters graph
|
||||
# without additional checks has detected a deadlock (INSERT waits
|
||||
# for SW lock; which is not granted because of pending SNW lock from
|
||||
# ALTER; which waits for active SW lock from INSERT). Since requests
|
||||
# for SW and SNW locks have same weight ALTER was selected as a victim
|
||||
# and ended with ER_LOCK_DEADLOCK error.
|
||||
set debug_sync='now SIGNAL go2';
|
||||
#
|
||||
# Switching to connection 'deadlock_con1'.
|
||||
# Reaping INSERT.
|
||||
#
|
||||
# Switching to connection 'default'.
|
||||
# Reaping ALTER. It should succeed and not produce ER_LOCK_DEADLOCK.
|
||||
drop table t1;
|
||||
set debug_sync= 'RESET';
|
||||
#
|
||||
# Test for bug #46748 "Assertion in MDL_context::wait_for_locks()
|
||||
# on INSERT + CREATE TRIGGER".
|
||||
#
|
||||
|
@ -2175,7 +2268,7 @@ alter table t1 add column e int, rename to t2;;
|
|||
#
|
||||
# Switching to connection 'default'.
|
||||
set debug_sync='now WAIT_FOR alter_table_locked';
|
||||
set debug_sync='before_open_table_wait_refresh SIGNAL alter_go';
|
||||
set debug_sync='mdl_acquire_lock_wait SIGNAL alter_go';
|
||||
# The below statement should get ER_LOCK_DEADLOCK error
|
||||
# (i.e. it should not allow ALTER to proceed, and then
|
||||
# fail due to 't1' changing its name to 't2').
|
||||
|
@ -2382,6 +2475,45 @@ commit;
|
|||
set debug_sync= 'RESET';
|
||||
drop table t1;
|
||||
#
|
||||
# Bug#42643: InnoDB does not support replication of TRUNCATE TABLE
|
||||
#
|
||||
# Ensure that a acquired lock is not given up due to a conflict.
|
||||
#
|
||||
DROP TABLE IF EXISTS t1;
|
||||
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES (1),(2),(3);
|
||||
# Connection: con1
|
||||
SET debug_sync='lock_table_for_truncate SIGNAL parked_truncate WAIT_FOR go_truncate';
|
||||
TRUNCATE TABLE t1;
|
||||
# Connection: default
|
||||
SET debug_sync='now WAIT_FOR parked_truncate';
|
||||
# Connection: con2
|
||||
SET debug_sync='after_open_table_ignore_flush SIGNAL parked_show WAIT_FOR go_show';
|
||||
SHOW FIELDS FROM t1;
|
||||
# Connection: default
|
||||
SET debug_sync='now WAIT_FOR parked_show';
|
||||
# Connection: con3
|
||||
SET debug_sync='after_flush_unlock SIGNAL parked_flush WAIT_FOR go_flush';
|
||||
FLUSH TABLES t1;
|
||||
# Connection: default
|
||||
SET debug_sync='now WAIT_FOR parked_flush';
|
||||
SET debug_sync='now SIGNAL go_truncate';
|
||||
# Connection: con1
|
||||
# Reaping...
|
||||
# Connection: default
|
||||
SET debug_sync= 'now SIGNAL go_show';
|
||||
# Connection: con2 (SHOW FIELDS FROM t1)
|
||||
# Reaping...
|
||||
Field Type Null Key Default Extra
|
||||
a int(11) YES NULL
|
||||
# Connection: default
|
||||
SET debug_sync= 'now SIGNAL go_flush';
|
||||
# Connection: con3 (FLUSH TABLES t1)
|
||||
# Reaping...
|
||||
# Connection: default
|
||||
SET debug_sync= 'RESET';
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug#52856 concurrent show columns or show full columns causes a crash!!!
|
||||
#
|
||||
CREATE TABLE t1(a CHAR(255));
|
||||
|
|
|
@ -2699,4 +2699,23 @@ LOCK TABLE m1 WRITE;
|
|||
ALTER TABLE m1 ADD INDEX (c1);
|
||||
UNLOCK TABLES;
|
||||
DROP TABLE m1, t1;
|
||||
#
|
||||
# Test for bug #37371 "CREATE TABLE LIKE merge loses UNION parameter"
|
||||
#
|
||||
drop tables if exists t1, m1, m2;
|
||||
create table t1 (i int) engine=myisam;
|
||||
create table m1 (i int) engine=mrg_myisam union=(t1) insert_method=first;
|
||||
create table m2 like m1;
|
||||
# Table definitions should match
|
||||
show create table m1;
|
||||
Table Create Table
|
||||
m1 CREATE TABLE `m1` (
|
||||
`i` int(11) DEFAULT NULL
|
||||
) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1 INSERT_METHOD=FIRST UNION=(`t1`)
|
||||
show create table m2;
|
||||
Table Create Table
|
||||
m2 CREATE TABLE `m2` (
|
||||
`i` int(11) DEFAULT NULL
|
||||
) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1 INSERT_METHOD=FIRST UNION=(`t1`)
|
||||
drop tables m1, m2, t1;
|
||||
End of 6.0 tests
|
||||
|
|
|
@ -746,7 +746,7 @@ connect-timeout 10
|
|||
console FALSE
|
||||
date-format %Y-%m-%d
|
||||
datetime-format %Y-%m-%d %H:%i:%s
|
||||
default-storage-engine MyISAM
|
||||
default-storage-engine InnoDB
|
||||
default-time-zone (No default value)
|
||||
default-week-format 0
|
||||
delay-key-write ON
|
||||
|
|
|
@ -750,7 +750,7 @@ connect-timeout 10
|
|||
console FALSE
|
||||
date-format %Y-%m-%d
|
||||
datetime-format %Y-%m-%d %H:%i:%s
|
||||
default-storage-engine MyISAM
|
||||
default-storage-engine InnoDB
|
||||
default-time-zone (No default value)
|
||||
default-week-format 0
|
||||
delay-key-write ON
|
||||
|
|
|
@ -47,3 +47,48 @@
|
|||
+----------+--------+
|
||||
| 4 | 4 |
|
||||
+----------+--------+
|
||||
# Bug#46527 "COMMIT AND CHAIN RELEASE does not make sense"
|
||||
#
|
||||
COMMIT AND CHAIN RELEASE;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'RELEASE' at line 1
|
||||
COMMIT AND NO CHAIN RELEASE;
|
||||
COMMIT RELEASE;
|
||||
COMMIT CHAIN RELEASE;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CHAIN RELEASE' at line 1
|
||||
COMMIT NO CHAIN RELEASE;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CHAIN RELEASE' at line 1
|
||||
COMMIT AND NO RELEASE;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'RELEASE' at line 1
|
||||
COMMIT AND RELEASE;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'RELEASE' at line 1
|
||||
COMMIT NO RELEASE;
|
||||
COMMIT CHAIN NO RELEASE;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CHAIN NO RELEASE' at line 1
|
||||
COMMIT NO CHAIN NO RELEASE;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CHAIN NO RELEASE' at line 1
|
||||
COMMIT AND RELEASE CHAIN;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'RELEASE CHAIN' at line 1
|
||||
COMMIT AND NO CHAIN NO RELEASE;
|
||||
ROLLBACK AND CHAIN RELEASE;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'RELEASE' at line 1
|
||||
ROLLBACK AND NO CHAIN RELEASE;
|
||||
ROLLBACK RELEASE;
|
||||
ROLLBACK CHAIN RELEASE;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CHAIN RELEASE' at line 1
|
||||
ROLLBACK NO CHAIN RELEASE;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CHAIN RELEASE' at line 1
|
||||
ROLLBACK AND NO RELEASE;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'RELEASE' at line 1
|
||||
ROLLBACK AND RELEASE;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'RELEASE' at line 1
|
||||
ROLLBACK NO RELEASE;
|
||||
ROLLBACK CHAIN NO RELEASE;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CHAIN NO RELEASE' at line 1
|
||||
ROLLBACK NO CHAIN NO RELEASE;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CHAIN NO RELEASE' at line 1
|
||||
ROLLBACK AND RELEASE CHAIN;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'RELEASE CHAIN' at line 1
|
||||
ROLLBACK AND NO CHAIN NO RELEASE;
|
||||
#
|
||||
# End of 5.5 tests
|
||||
#
|
||||
|
|
|
@ -266,12 +266,12 @@ engine = x
|
|||
partition by key (a);
|
||||
Warnings:
|
||||
Warning 1286 Unknown storage engine 'x'
|
||||
Warning 1266 Using storage engine MyISAM for table 't1'
|
||||
Warning 1266 Using storage engine InnoDB for table 't1'
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
/*!50100 PARTITION BY KEY (a) */
|
||||
drop table t1;
|
||||
create table t1 (a int)
|
||||
|
|
|
@ -18,6 +18,7 @@ set autocommit=0;
|
|||
update t1 set a=10 where a=5;
|
||||
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
||||
commit;
|
||||
commit;
|
||||
set session transaction isolation level read committed;
|
||||
update t1 set a=10 where a=5;
|
||||
select * from t1 where a=2 for update;
|
||||
|
@ -64,6 +65,7 @@ a b
|
|||
# Switch to connection con2
|
||||
UPDATE t1 SET b = 21 WHERE a = 1;
|
||||
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
||||
ROLLBACK;
|
||||
# Switch to connection con1
|
||||
SELECT * FROM t1;
|
||||
a b
|
||||
|
@ -99,6 +101,7 @@ a b
|
|||
SELECT * FROM t1;
|
||||
a b
|
||||
1 init+con1+con2
|
||||
COMMIT;
|
||||
# Switch to connection con1
|
||||
# 3. test for updated key column:
|
||||
TRUNCATE t1;
|
||||
|
|
|
@ -695,11 +695,11 @@ REPEATABLE-READ
|
|||
set transaction isolation level read committed;
|
||||
execute stmt;
|
||||
@@tx_isolation
|
||||
READ-COMMITTED
|
||||
REPEATABLE-READ
|
||||
set transaction isolation level serializable;
|
||||
execute stmt;
|
||||
@@tx_isolation
|
||||
SERIALIZABLE
|
||||
REPEATABLE-READ
|
||||
set @@tx_isolation=default;
|
||||
execute stmt;
|
||||
@@tx_isolation
|
||||
|
|
|
@ -55,14 +55,15 @@ t2
|
|||
t4
|
||||
drop table t2, t4;
|
||||
End of 4.1 tests
|
||||
#
|
||||
# Bug#14959: "ALTER TABLE isn't able to rename a view"
|
||||
# Bug#53976: "ALTER TABLE RENAME is allowed on views
|
||||
# (not documented, broken)"
|
||||
#
|
||||
create table t1(f1 int);
|
||||
create view v1 as select * from t1;
|
||||
alter table v1 rename to v2;
|
||||
alter table v1 rename to v2;
|
||||
ERROR 42S02: Table 'test.v1' doesn't exist
|
||||
rename table v2 to v1;
|
||||
rename table v2 to v1;
|
||||
ERROR 42S01: Table 'v1' already exists
|
||||
ERROR HY000: 'test.v1' is not BASE TABLE
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
End of 5.0 tests
|
||||
|
|
|
@ -59,30 +59,31 @@ SET DEBUG_SYNC= 'RESET';
|
|||
#
|
||||
# Bug #48246 assert in close_thread_table
|
||||
#
|
||||
CREATE TABLE t0 (b INTEGER);
|
||||
CREATE TABLE t1 (a INTEGER);
|
||||
CREATE FUNCTION f1(b INTEGER) RETURNS INTEGER RETURN 1;
|
||||
CREATE PROCEDURE p1() SELECT COUNT(f1(a)) FROM t1;
|
||||
CREATE PROCEDURE p1() SELECT COUNT(f1(a)) FROM t1, t0;
|
||||
INSERT INTO t0 VALUES(1);
|
||||
INSERT INTO t1 VALUES(1), (2);
|
||||
# Connection 2
|
||||
CALL p1();
|
||||
COUNT(f1(a))
|
||||
2
|
||||
# Connection default
|
||||
SET DEBUG_SYNC= 'after_open_table_mdl_shared SIGNAL locked WAIT_FOR called';
|
||||
# Sending:
|
||||
CREATE TABLE t1 (a INTEGER);
|
||||
# Connection 2
|
||||
SET DEBUG_SYNC= 'now WAIT_FOR locked';
|
||||
SET DEBUG_SYNC= 'before_open_table_wait_refresh SIGNAL called WAIT_FOR created';
|
||||
# This call used to cause an assertion. MDL locking conflict will
|
||||
# cause back-off and retry. A variable indicating if a prelocking list
|
||||
# exists, used to be not reset properly causing an eventual assert.
|
||||
SET DEBUG_SYNC= 'after_open_table_mdl_shared SIGNAL locked_t1 WAIT_FOR go_for_t0';
|
||||
# This call used to cause an assertion. MDL deadlock with upcoming
|
||||
# LOCK TABLES statement will cause back-off and retry.
|
||||
# A variable indicating if a prelocking list exists, used to be not
|
||||
# reset properly causing an eventual assert.
|
||||
# Sending:
|
||||
CALL p1();
|
||||
# Connection default
|
||||
# Reaping: CREATE TABLE t1 (a INTEGER)
|
||||
ERROR 42S01: Table 't1' already exists
|
||||
SET DEBUG_SYNC= 'now SIGNAL created';
|
||||
SET DEBUG_SYNC= 'now WAIT_FOR locked_t1';
|
||||
# Issue LOCK TABLES statement which will enter in MDL deadlock
|
||||
# with CALL statement and as result will cause it to perform
|
||||
# back-off and retry.
|
||||
SET DEBUG_SYNC= 'mdl_acquire_lock_wait SIGNAL go_for_t0';
|
||||
LOCK TABLES t0 WRITE, t1 WRITE;
|
||||
UNLOCK TABLES;
|
||||
# Connection 2
|
||||
# Reaping: CALL p1()
|
||||
COUNT(f1(a))
|
||||
|
@ -90,5 +91,5 @@ COUNT(f1(a))
|
|||
# Connection default
|
||||
DROP PROCEDURE p1;
|
||||
DROP FUNCTION f1;
|
||||
DROP TABLE t1;
|
||||
DROP TABLES t0, t1;
|
||||
SET DEBUG_SYNC= 'RESET';
|
||||
|
|
|
@ -99,7 +99,7 @@ LOCK TABLE t1 WRITE;
|
|||
SELECT * FROM v1;
|
||||
ERROR HY000: Table 'v1' was not locked with LOCK TABLES
|
||||
TRUNCATE v1;
|
||||
ERROR 42S02: Table 'test.v1' doesn't exist
|
||||
ERROR HY000: Table 'v1' was not locked with LOCK TABLES
|
||||
SELECT * FROM v1;
|
||||
ERROR HY000: Table 'v1' was not locked with LOCK TABLES
|
||||
UNLOCK TABLES;
|
||||
|
@ -107,7 +107,7 @@ LOCK TABLE t1 WRITE, t2 WRITE;
|
|||
SELECT * FROM v1;
|
||||
ERROR HY000: Table 'v1' was not locked with LOCK TABLES
|
||||
TRUNCATE v1;
|
||||
ERROR 42S02: Table 'test.v1' doesn't exist
|
||||
ERROR HY000: Table 'v1' was not locked with LOCK TABLES
|
||||
SELECT * FROM v1;
|
||||
ERROR HY000: Table 'v1' was not locked with LOCK TABLES
|
||||
UNLOCK TABLES;
|
||||
|
@ -117,7 +117,7 @@ c1
|
|||
1
|
||||
3
|
||||
TRUNCATE v1;
|
||||
ERROR 42S02: Table 'test.v1' doesn't exist
|
||||
ERROR HY000: Table 'v1' was not locked with LOCK TABLES
|
||||
SELECT * FROM v1;
|
||||
c1
|
||||
1
|
||||
|
@ -129,7 +129,7 @@ c1
|
|||
1
|
||||
3
|
||||
TRUNCATE v1;
|
||||
ERROR 42S02: Table 'test.v1' doesn't exist
|
||||
ERROR HY000: Table 'v1' was not locked with LOCK TABLES
|
||||
SELECT * FROM v1;
|
||||
c1
|
||||
1
|
||||
|
|
|
@ -18,13 +18,15 @@ TRUNCATE TABLE t1;
|
|||
SET DEBUG_SYNC='now WAIT_FOR waiting';
|
||||
KILL QUERY @id;
|
||||
#
|
||||
# connection default
|
||||
ERROR 70100: Query execution was interrupted
|
||||
UNLOCK TABLES;
|
||||
#
|
||||
# connection con1
|
||||
# Release shared metadata lock by closing HANDLER.
|
||||
HANDLER t1 CLOSE;
|
||||
#
|
||||
# connection default
|
||||
ERROR 70100: Query execution was interrupted
|
||||
UNLOCK TABLES;
|
||||
DROP TABLE t1;
|
||||
SET DEBUG_SYNC='RESET';
|
||||
CREATE TABLE t1 (c1 INT);
|
||||
|
@ -64,10 +66,15 @@ TRUNCATE TABLE t1;
|
|||
# connection con1
|
||||
SET DEBUG_SYNC='now WAIT_FOR waiting';
|
||||
KILL QUERY @id;
|
||||
COMMIT;
|
||||
#
|
||||
# connection default
|
||||
ERROR 70100: Query execution was interrupted
|
||||
#
|
||||
# connection con1
|
||||
# Release SW lock by committing transaction.
|
||||
COMMIT;
|
||||
#
|
||||
# connection default
|
||||
UNLOCK TABLES;
|
||||
DROP TABLE t1;
|
||||
SET DEBUG_SYNC='RESET';
|
||||
|
|
|
@ -3954,6 +3954,7 @@ drop procedure p;
|
|||
CREATE TABLE t1 (a INT);
|
||||
CREATE VIEW v1 AS SELECT a FROM t1;
|
||||
ALTER TABLE v1;
|
||||
ERROR HY000: 'test.v1' is not BASE TABLE
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1;
|
||||
#
|
||||
|
|
|
@ -2,65 +2,65 @@ SET BINLOG_FORMAT=MIXED;
|
|||
RESET MASTER;
|
||||
CREATE TABLE t1 (a INT PRIMARY KEY, b INT) ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6);
|
||||
BEGIN;
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
||||
BEGIN;
|
||||
UPDATE t1 SET b = 2*a WHERE a > 1;
|
||||
COMMIT;
|
||||
BEGIN;
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
||||
BEGIN;
|
||||
UPDATE t1 SET b = a * a WHERE a > 3;
|
||||
COMMIT;
|
||||
SET BINLOG_FORMAT=STATEMENT;
|
||||
BEGIN;
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
|
||||
BEGIN;
|
||||
UPDATE t1 SET b = 1*a WHERE a > 1;
|
||||
ERROR HY000: Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED.
|
||||
COMMIT;
|
||||
BEGIN;
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
||||
BEGIN;
|
||||
UPDATE t1 SET b = 2*a WHERE a > 2;
|
||||
ERROR HY000: Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED.
|
||||
COMMIT;
|
||||
BEGIN;
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
||||
BEGIN;
|
||||
UPDATE t1 SET b = 3*a WHERE a > 3;
|
||||
COMMIT;
|
||||
BEGIN;
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
||||
BEGIN;
|
||||
UPDATE t1 SET b = 4*a WHERE a > 4;
|
||||
COMMIT;
|
||||
SET BINLOG_FORMAT=MIXED;
|
||||
BEGIN;
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
|
||||
BEGIN;
|
||||
UPDATE t1 SET b = 1*a WHERE a > 1;
|
||||
COMMIT;
|
||||
BEGIN;
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
||||
BEGIN;
|
||||
UPDATE t1 SET b = 2*a WHERE a > 2;
|
||||
COMMIT;
|
||||
BEGIN;
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
||||
BEGIN;
|
||||
UPDATE t1 SET b = 3*a WHERE a > 3;
|
||||
COMMIT;
|
||||
BEGIN;
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
||||
BEGIN;
|
||||
UPDATE t1 SET b = 4*a WHERE a > 4;
|
||||
COMMIT;
|
||||
SET BINLOG_FORMAT=ROW;
|
||||
BEGIN;
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
|
||||
BEGIN;
|
||||
UPDATE t1 SET b = 1*a WHERE a > 1;
|
||||
COMMIT;
|
||||
BEGIN;
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
||||
BEGIN;
|
||||
UPDATE t1 SET b = 2*a WHERE a > 2;
|
||||
COMMIT;
|
||||
BEGIN;
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
||||
BEGIN;
|
||||
UPDATE t1 SET b = 3*a WHERE a > 3;
|
||||
COMMIT;
|
||||
BEGIN;
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
||||
BEGIN;
|
||||
UPDATE t1 SET b = 4*a WHERE a > 4;
|
||||
COMMIT;
|
||||
show binlog events from <binlog_start>;
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
SET @old_binlog_format=@@binlog_format;
|
||||
SET BINLOG_FORMAT=ROW;
|
||||
RESET MASTER;
|
||||
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
||||
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
||||
INSERT INTO t2 VALUES (1),(2),(3);
|
||||
|
@ -9,6 +12,45 @@ Log_name Pos Event_type Server_id End_log_pos Info
|
|||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t2
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# Bug#42643: InnoDB does not support replication of TRUNCATE TABLE
|
||||
#
|
||||
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
||||
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES (1),(2);
|
||||
# Connection: default
|
||||
BEGIN;
|
||||
INSERT INTO t2 SELECT * FROM t1;
|
||||
# Connection: truncate
|
||||
TRUNCATE TABLE t1;
|
||||
# Connection: default
|
||||
INSERT INTO t2 SELECT * FROM t1;
|
||||
SELECT COUNT(*) FROM t2;
|
||||
COUNT(*)
|
||||
4
|
||||
COMMIT;
|
||||
# Connection: truncate
|
||||
# Reaping TRUNCATE TABLE
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
0
|
||||
SELECT COUNT(*) FROM t2;
|
||||
COUNT(*)
|
||||
4
|
||||
# Connection: default
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
||||
DROP TABLE t1,t2;
|
||||
# Even though the isolation level might be permissive, truncate
|
||||
# table follows a stricter isolation as its locking is based on
|
||||
# (exclusive) metadata locks.
|
||||
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
||||
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
||||
INSERT INTO t2 VALUES (1),(2),(3);
|
||||
|
@ -22,6 +64,43 @@ Log_name Pos Event_type Server_id End_log_pos Info
|
|||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t2
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# Bug#42643: InnoDB does not support replication of TRUNCATE TABLE
|
||||
#
|
||||
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
||||
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES (1),(2);
|
||||
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
|
||||
# Connection: default
|
||||
BEGIN;
|
||||
INSERT INTO t2 SELECT * FROM t1;
|
||||
# Connection: truncate
|
||||
TRUNCATE TABLE t1;
|
||||
# Connection: default
|
||||
INSERT INTO t2 SELECT * FROM t1;
|
||||
SELECT COUNT(*) FROM t2;
|
||||
COUNT(*)
|
||||
4
|
||||
COMMIT;
|
||||
# Connection: truncate
|
||||
# Reaping TRUNCATE TABLE
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
0
|
||||
SELECT COUNT(*) FROM t2;
|
||||
COUNT(*)
|
||||
4
|
||||
# Connection: default
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
||||
DROP TABLE t1,t2;
|
||||
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
||||
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
||||
INSERT INTO t2 VALUES (1),(2),(3);
|
||||
|
@ -35,6 +114,43 @@ Log_name Pos Event_type Server_id End_log_pos Info
|
|||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t2
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# Bug#42643: InnoDB does not support replication of TRUNCATE TABLE
|
||||
#
|
||||
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
||||
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES (1),(2);
|
||||
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
||||
# Connection: default
|
||||
BEGIN;
|
||||
INSERT INTO t2 SELECT * FROM t1;
|
||||
# Connection: truncate
|
||||
TRUNCATE TABLE t1;
|
||||
# Connection: default
|
||||
INSERT INTO t2 SELECT * FROM t1;
|
||||
SELECT COUNT(*) FROM t2;
|
||||
COUNT(*)
|
||||
4
|
||||
COMMIT;
|
||||
# Connection: truncate
|
||||
# Reaping TRUNCATE TABLE
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
0
|
||||
SELECT COUNT(*) FROM t2;
|
||||
COUNT(*)
|
||||
4
|
||||
# Connection: default
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
||||
DROP TABLE t1,t2;
|
||||
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
||||
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
||||
INSERT INTO t2 VALUES (1),(2),(3);
|
||||
|
@ -48,6 +164,43 @@ Log_name Pos Event_type Server_id End_log_pos Info
|
|||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t2
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# Bug#42643: InnoDB does not support replication of TRUNCATE TABLE
|
||||
#
|
||||
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
||||
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES (1),(2);
|
||||
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
||||
# Connection: default
|
||||
BEGIN;
|
||||
INSERT INTO t2 SELECT * FROM t1;
|
||||
# Connection: truncate
|
||||
TRUNCATE TABLE t1;
|
||||
# Connection: default
|
||||
INSERT INTO t2 SELECT * FROM t1;
|
||||
SELECT COUNT(*) FROM t2;
|
||||
COUNT(*)
|
||||
4
|
||||
COMMIT;
|
||||
# Connection: truncate
|
||||
# Reaping TRUNCATE TABLE
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
0
|
||||
SELECT COUNT(*) FROM t2;
|
||||
COUNT(*)
|
||||
4
|
||||
# Connection: default
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
||||
DROP TABLE t1,t2;
|
||||
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
||||
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
||||
INSERT INTO t2 VALUES (1),(2),(3);
|
||||
|
@ -61,3 +214,190 @@ Log_name Pos Event_type Server_id End_log_pos Info
|
|||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t2
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# Bug#42643: InnoDB does not support replication of TRUNCATE TABLE
|
||||
#
|
||||
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
||||
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES (1),(2);
|
||||
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
||||
# Connection: default
|
||||
BEGIN;
|
||||
INSERT INTO t2 SELECT * FROM t1;
|
||||
# Connection: truncate
|
||||
TRUNCATE TABLE t1;
|
||||
# Connection: default
|
||||
INSERT INTO t2 SELECT * FROM t1;
|
||||
SELECT COUNT(*) FROM t2;
|
||||
COUNT(*)
|
||||
4
|
||||
COMMIT;
|
||||
# Connection: truncate
|
||||
# Reaping TRUNCATE TABLE
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
0
|
||||
SELECT COUNT(*) FROM t2;
|
||||
COUNT(*)
|
||||
4
|
||||
# Connection: default
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
||||
DROP TABLE t1,t2;
|
||||
SET BINLOG_FORMAT=STATEMENT;
|
||||
RESET MASTER;
|
||||
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
||||
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
||||
INSERT INTO t2 VALUES (1),(2),(3);
|
||||
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
||||
**** Truncate of empty table shall be logged
|
||||
TRUNCATE TABLE t1;
|
||||
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
||||
TRUNCATE TABLE t2;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t2
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# Bug#42643: InnoDB does not support replication of TRUNCATE TABLE
|
||||
#
|
||||
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
||||
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES (1),(2);
|
||||
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
||||
# Connection: default
|
||||
BEGIN;
|
||||
INSERT INTO t2 SELECT * FROM t1;
|
||||
# Connection: truncate
|
||||
TRUNCATE TABLE t1;
|
||||
# Connection: default
|
||||
INSERT INTO t2 SELECT * FROM t1;
|
||||
SELECT COUNT(*) FROM t2;
|
||||
COUNT(*)
|
||||
4
|
||||
COMMIT;
|
||||
# Connection: truncate
|
||||
# Reaping TRUNCATE TABLE
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
0
|
||||
SELECT COUNT(*) FROM t2;
|
||||
COUNT(*)
|
||||
4
|
||||
# Connection: default
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO t2 SELECT * FROM t1
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO t2 SELECT * FROM t1
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
||||
DROP TABLE t1,t2;
|
||||
# Truncate is not supported for SBR if the isolation level is
|
||||
# READ UNCOMMITTED or READ COMMITTED. These specific isolation
|
||||
# levels are tested elsewhere.
|
||||
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
||||
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
||||
INSERT INTO t2 VALUES (1),(2),(3);
|
||||
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
||||
**** Truncate of empty table shall be logged
|
||||
TRUNCATE TABLE t1;
|
||||
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
||||
TRUNCATE TABLE t2;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t2
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# Bug#42643: InnoDB does not support replication of TRUNCATE TABLE
|
||||
#
|
||||
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
||||
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES (1),(2);
|
||||
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
||||
# Connection: default
|
||||
BEGIN;
|
||||
INSERT INTO t2 SELECT * FROM t1;
|
||||
# Connection: truncate
|
||||
TRUNCATE TABLE t1;
|
||||
# Connection: default
|
||||
INSERT INTO t2 SELECT * FROM t1;
|
||||
SELECT COUNT(*) FROM t2;
|
||||
COUNT(*)
|
||||
4
|
||||
COMMIT;
|
||||
# Connection: truncate
|
||||
# Reaping TRUNCATE TABLE
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
0
|
||||
SELECT COUNT(*) FROM t2;
|
||||
COUNT(*)
|
||||
4
|
||||
# Connection: default
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO t2 SELECT * FROM t1
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO t2 SELECT * FROM t1
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
||||
DROP TABLE t1,t2;
|
||||
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
||||
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
||||
INSERT INTO t2 VALUES (1),(2),(3);
|
||||
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
||||
**** Truncate of empty table shall be logged
|
||||
TRUNCATE TABLE t1;
|
||||
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
||||
TRUNCATE TABLE t2;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t2
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# Bug#42643: InnoDB does not support replication of TRUNCATE TABLE
|
||||
#
|
||||
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
||||
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES (1),(2);
|
||||
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
||||
# Connection: default
|
||||
BEGIN;
|
||||
INSERT INTO t2 SELECT * FROM t1;
|
||||
# Connection: truncate
|
||||
TRUNCATE TABLE t1;
|
||||
# Connection: default
|
||||
INSERT INTO t2 SELECT * FROM t1;
|
||||
SELECT COUNT(*) FROM t2;
|
||||
COUNT(*)
|
||||
4
|
||||
COMMIT;
|
||||
# Connection: truncate
|
||||
# Reaping TRUNCATE TABLE
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
0
|
||||
SELECT COUNT(*) FROM t2;
|
||||
COUNT(*)
|
||||
4
|
||||
# Connection: default
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO t2 SELECT * FROM t1
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO t2 SELECT * FROM t1
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
||||
DROP TABLE t1,t2;
|
||||
SET BINLOG_FORMAT=@old_binlog_format;
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
SET @old_binlog_format=@@binlog_format;
|
||||
SET BINLOG_FORMAT=ROW;
|
||||
RESET MASTER;
|
||||
CREATE TABLE t1 (a INT) ENGINE=MyISAM;
|
||||
CREATE TABLE t2 (a INT) ENGINE=MyISAM;
|
||||
|
@ -10,3 +12,91 @@ Log_name Pos Event_type Server_id End_log_pos Info
|
|||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t2
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# Bug#42643: InnoDB does not support replication of TRUNCATE TABLE
|
||||
#
|
||||
CREATE TABLE t1 (a INT) ENGINE=MyISAM;
|
||||
CREATE TABLE t2 (a INT) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES (1),(2);
|
||||
# Connection: default
|
||||
BEGIN;
|
||||
INSERT INTO t2 SELECT * FROM t1;
|
||||
# Connection: truncate
|
||||
TRUNCATE TABLE t1;
|
||||
# Connection: default
|
||||
INSERT INTO t2 SELECT * FROM t1;
|
||||
SELECT COUNT(*) FROM t2;
|
||||
COUNT(*)
|
||||
4
|
||||
COMMIT;
|
||||
# Connection: truncate
|
||||
# Reaping TRUNCATE TABLE
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
0
|
||||
SELECT COUNT(*) FROM t2;
|
||||
COUNT(*)
|
||||
4
|
||||
# Connection: default
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
||||
DROP TABLE t1,t2;
|
||||
SET BINLOG_FORMAT=STATEMENT;
|
||||
RESET MASTER;
|
||||
CREATE TABLE t1 (a INT) ENGINE=MyISAM;
|
||||
CREATE TABLE t2 (a INT) ENGINE=MyISAM;
|
||||
INSERT INTO t2 VALUES (1),(2),(3);
|
||||
**** Truncate of empty table shall be logged
|
||||
TRUNCATE TABLE t1;
|
||||
TRUNCATE TABLE t2;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t2
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# Bug#42643: InnoDB does not support replication of TRUNCATE TABLE
|
||||
#
|
||||
CREATE TABLE t1 (a INT) ENGINE=MyISAM;
|
||||
CREATE TABLE t2 (a INT) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES (1),(2);
|
||||
# Connection: default
|
||||
BEGIN;
|
||||
INSERT INTO t2 SELECT * FROM t1;
|
||||
# Connection: truncate
|
||||
TRUNCATE TABLE t1;
|
||||
# Connection: default
|
||||
INSERT INTO t2 SELECT * FROM t1;
|
||||
SELECT COUNT(*) FROM t2;
|
||||
COUNT(*)
|
||||
4
|
||||
COMMIT;
|
||||
# Connection: truncate
|
||||
# Reaping TRUNCATE TABLE
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
0
|
||||
SELECT COUNT(*) FROM t2;
|
||||
COUNT(*)
|
||||
4
|
||||
# Connection: default
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO t2 SELECT * FROM t1
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO t2 SELECT * FROM t1
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
||||
DROP TABLE t1,t2;
|
||||
SET BINLOG_FORMAT=@old_binlog_format;
|
||||
|
|
|
@ -8,14 +8,14 @@ RESET MASTER;
|
|||
CREATE TABLE t1 (a INT PRIMARY KEY, b INT) ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6);
|
||||
|
||||
BEGIN;
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
||||
BEGIN;
|
||||
# Should be logged as statement
|
||||
UPDATE t1 SET b = 2*a WHERE a > 1;
|
||||
COMMIT;
|
||||
|
||||
BEGIN;
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
||||
BEGIN;
|
||||
# Should be logged as rows
|
||||
UPDATE t1 SET b = a * a WHERE a > 3;
|
||||
COMMIT;
|
||||
|
@ -25,69 +25,69 @@ COMMIT;
|
|||
|
||||
SET BINLOG_FORMAT=STATEMENT;
|
||||
|
||||
BEGIN;
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
|
||||
BEGIN;
|
||||
error ER_BINLOG_STMT_MODE_AND_ROW_ENGINE;
|
||||
UPDATE t1 SET b = 1*a WHERE a > 1;
|
||||
COMMIT;
|
||||
|
||||
BEGIN;
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
||||
BEGIN;
|
||||
error ER_BINLOG_STMT_MODE_AND_ROW_ENGINE;
|
||||
UPDATE t1 SET b = 2*a WHERE a > 2;
|
||||
COMMIT;
|
||||
|
||||
BEGIN;
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
||||
BEGIN;
|
||||
UPDATE t1 SET b = 3*a WHERE a > 3;
|
||||
COMMIT;
|
||||
|
||||
BEGIN;
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
||||
BEGIN;
|
||||
UPDATE t1 SET b = 4*a WHERE a > 4;
|
||||
COMMIT;
|
||||
|
||||
SET BINLOG_FORMAT=MIXED;
|
||||
|
||||
BEGIN;
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
|
||||
BEGIN;
|
||||
UPDATE t1 SET b = 1*a WHERE a > 1;
|
||||
COMMIT;
|
||||
|
||||
BEGIN;
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
||||
BEGIN;
|
||||
UPDATE t1 SET b = 2*a WHERE a > 2;
|
||||
COMMIT;
|
||||
|
||||
BEGIN;
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
||||
BEGIN;
|
||||
UPDATE t1 SET b = 3*a WHERE a > 3;
|
||||
COMMIT;
|
||||
|
||||
BEGIN;
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
||||
BEGIN;
|
||||
UPDATE t1 SET b = 4*a WHERE a > 4;
|
||||
COMMIT;
|
||||
|
||||
SET BINLOG_FORMAT=ROW;
|
||||
|
||||
BEGIN;
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
|
||||
BEGIN;
|
||||
UPDATE t1 SET b = 1*a WHERE a > 1;
|
||||
COMMIT;
|
||||
|
||||
BEGIN;
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
||||
BEGIN;
|
||||
UPDATE t1 SET b = 2*a WHERE a > 2;
|
||||
COMMIT;
|
||||
|
||||
BEGIN;
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
||||
BEGIN;
|
||||
UPDATE t1 SET b = 3*a WHERE a > 3;
|
||||
COMMIT;
|
||||
|
||||
BEGIN;
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
||||
BEGIN;
|
||||
UPDATE t1 SET b = 4*a WHERE a > 4;
|
||||
COMMIT;
|
||||
|
||||
|
|
|
@ -1 +1 @@
|
|||
--max_binlog_size=4096
|
||||
--max_binlog_size=4096 --default-storage-engine=MyISAM
|
||||
|
|
|
@ -1 +1 @@
|
|||
--innodb_lock_wait_timeout=2
|
||||
--innodb_lock_wait_timeout=2 --default-storage-engine=MyISAM
|
||||
|
|
|
@ -1 +1 @@
|
|||
--max_binlog_size=4096
|
||||
--max_binlog_size=4096 --default-storage-engine=MyISAM
|
||||
|
|
|
@ -1 +1 @@
|
|||
--innodb_lock_wait_timeout=2 --binlog-direct-non-transactional-updates=FALSE
|
||||
--innodb_lock_wait_timeout=2 --binlog-direct-non-transactional-updates=FALSE --default-storage-engine=MyISAM
|
||||
|
|
|
@ -1,20 +1,18 @@
|
|||
source include/have_log_bin.inc;
|
||||
source include/have_innodb.inc;
|
||||
|
||||
# It is necessary to reset the master since otherwise the binlog test
|
||||
# might show the wrong binary log. The default for SHOW BINLOG EVENTS
|
||||
# is to show the first binary log, not the current one (which is
|
||||
# actually a better idea).
|
||||
let $engine = InnoDB;
|
||||
|
||||
SET @old_binlog_format=@@binlog_format;
|
||||
|
||||
SET BINLOG_FORMAT=ROW;
|
||||
RESET MASTER;
|
||||
|
||||
let $engine = InnoDB;
|
||||
source extra/binlog_tests/binlog_truncate.test;
|
||||
|
||||
# Under transaction isolation level READ UNCOMMITTED and READ
|
||||
# COMMITTED, InnoDB does not permit statement-based replication of
|
||||
# row-deleting statement. In these cases, TRUNCATE TABLE should still
|
||||
# be replicated as a statement.
|
||||
--echo # Even though the isolation level might be permissive, truncate
|
||||
--echo # table follows a stricter isolation as its locking is based on
|
||||
--echo # (exclusive) metadata locks.
|
||||
|
||||
let $before_truncate = SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
|
||||
source extra/binlog_tests/binlog_truncate.test;
|
||||
|
@ -27,3 +25,20 @@ source extra/binlog_tests/binlog_truncate.test;
|
|||
|
||||
let $before_truncate = SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
||||
source extra/binlog_tests/binlog_truncate.test;
|
||||
|
||||
SET BINLOG_FORMAT=STATEMENT;
|
||||
RESET MASTER;
|
||||
|
||||
source extra/binlog_tests/binlog_truncate.test;
|
||||
|
||||
--echo # Truncate is not supported for SBR if the isolation level is
|
||||
--echo # READ UNCOMMITTED or READ COMMITTED. These specific isolation
|
||||
--echo # levels are tested elsewhere.
|
||||
|
||||
let $before_truncate = SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
||||
source extra/binlog_tests/binlog_truncate.test;
|
||||
|
||||
let $before_truncate = SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
||||
source extra/binlog_tests/binlog_truncate.test;
|
||||
|
||||
SET BINLOG_FORMAT=@old_binlog_format;
|
||||
|
|
|
@ -1,11 +1,17 @@
|
|||
source include/have_log_bin.inc;
|
||||
|
||||
# It is necessary to reset the master since otherwise the binlog test
|
||||
# might show the wrong binary log. The default for SHOW BINLOG EVENTS
|
||||
# is to show the first binary log, not the current one (which is
|
||||
# actually a better idea).
|
||||
|
||||
RESET MASTER;
|
||||
SET @old_binlog_format=@@binlog_format;
|
||||
|
||||
let $engine = MyISAM;
|
||||
|
||||
SET BINLOG_FORMAT=ROW;
|
||||
RESET MASTER;
|
||||
|
||||
source extra/binlog_tests/binlog_truncate.test;
|
||||
|
||||
SET BINLOG_FORMAT=STATEMENT;
|
||||
RESET MASTER;
|
||||
|
||||
source extra/binlog_tests/binlog_truncate.test;
|
||||
|
||||
SET BINLOG_FORMAT=@old_binlog_format;
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
# Do not use any TAB characters for whitespace.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
binlog_truncate_innodb : BUG#42643 2009-02-06 mats Changes to InnoDB requires to complete fix for BUG#36763
|
||||
binlog_unsafe : BUG#50312 2010-01-13 lsoares Warnings for unsafe sub-statement not returned to client
|
||||
binlog_spurious_ddl_errors : BUG#54195 2010-06-03 alik binlog_spurious_ddl_errors.test fails, thus disabled
|
||||
|
|
|
@ -1,2 +1 @@
|
|||
--plugin_dir=../storage/federated/.libs
|
||||
|
||||
--plugin_dir=$FEDERATED_PLUGIN_DIR
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
--source include/not_windows.inc
|
||||
--source include/have_federated_plugin.inc
|
||||
|
||||
--skip federated plugin is disabled
|
||||
|
||||
CREATE TABLE t1(a int) ENGINE=FEDERATED;
|
||||
DROP TABLE t1;
|
||||
|
||||
|
|
|
@ -3521,6 +3521,7 @@ RENAME TABLE v1 TO v2;
|
|||
RENAME VIEW v2 TO v1;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VIEW v2 TO v1' at line 1
|
||||
ALTER TABLE v2 RENAME AS v1;
|
||||
ERROR HY000: 'test.v2' is not BASE TABLE
|
||||
ALTER VIEW v1 RENAME AS v2;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'RENAME AS v2' at line 1
|
||||
DROP TABLE IF EXISTS t1, t2 ;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
SELECT * FROM information_schema.engines
|
||||
WHERE ENGINE = 'InnoDB';
|
||||
ENGINE InnoDB
|
||||
SUPPORT YES
|
||||
SUPPORT DEFAULT
|
||||
COMMENT Supports transactions, row-level locking, and foreign keys
|
||||
TRANSACTIONS YES
|
||||
XA YES
|
||||
|
|
|
@ -3522,6 +3522,7 @@ RENAME TABLE v1 TO v2;
|
|||
RENAME VIEW v2 TO v1;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VIEW v2 TO v1' at line 1
|
||||
ALTER TABLE v2 RENAME AS v1;
|
||||
ERROR HY000: 'test.v2' is not BASE TABLE
|
||||
ALTER VIEW v1 RENAME AS v2;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'RENAME AS v2' at line 1
|
||||
DROP TABLE IF EXISTS t1, t2 ;
|
||||
|
|
|
@ -4024,6 +4024,7 @@ RENAME TABLE v1 TO v2;
|
|||
RENAME VIEW v2 TO v1;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VIEW v2 TO v1' at line 1
|
||||
ALTER TABLE v2 RENAME AS v1;
|
||||
ERROR HY000: 'test.v2' is not BASE TABLE
|
||||
ALTER VIEW v1 RENAME AS v2;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'RENAME AS v2' at line 1
|
||||
DROP TABLE IF EXISTS t1, t2 ;
|
||||
|
|
|
@ -3521,6 +3521,7 @@ RENAME TABLE v1 TO v2;
|
|||
RENAME VIEW v2 TO v1;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VIEW v2 TO v1' at line 1
|
||||
ALTER TABLE v2 RENAME AS v1;
|
||||
ERROR HY000: 'test.v2' is not BASE TABLE
|
||||
ALTER VIEW v1 RENAME AS v2;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'RENAME AS v2' at line 1
|
||||
DROP TABLE IF EXISTS t1, t2 ;
|
||||
|
|
|
@ -171,7 +171,7 @@ CREATE TABLE t1_selects
|
|||
disable_result ENUM('Yes','No') NOT NULL default 'No',
|
||||
PRIMARY KEY(id),
|
||||
UNIQUE (my_select)
|
||||
);
|
||||
) ENGINE=MyISAM;
|
||||
|
||||
# MODES to be checked
|
||||
CREATE TABLE t1_modes
|
||||
|
@ -180,7 +180,7 @@ CREATE TABLE t1_modes
|
|||
my_mode VARCHAR(200) NOT NULL,
|
||||
PRIMARY KEY(id),
|
||||
UNIQUE (my_mode)
|
||||
);
|
||||
) ENGINE=MyISAM;
|
||||
--enable_query_log
|
||||
|
||||
# The table to be used in the FROM parts of the SELECTs
|
||||
|
|
|
@ -298,7 +298,7 @@ RENAME TABLE v1 TO v2;
|
|||
# RENAME VIEW is not available even when we try it via rename table.
|
||||
--error ER_PARSE_ERROR
|
||||
RENAME VIEW v2 TO v1;
|
||||
#--error ER_WRONG_OBJECT
|
||||
--error ER_WRONG_OBJECT
|
||||
ALTER TABLE v2 RENAME AS v1;
|
||||
--error ER_PARSE_ERROR
|
||||
ALTER VIEW v1 RENAME AS v2;
|
||||
|
|
|
@ -918,9 +918,9 @@ ERROR HY000: Too big row
|
|||
alter table t1 row_format=compact;
|
||||
create index t1u on t1 (u(1));
|
||||
drop table t1;
|
||||
set global innodb_file_per_table=0;
|
||||
set global innodb_file_format=Antelope;
|
||||
set global innodb_file_format_check=Antelope;
|
||||
set global innodb_file_per_table=1;
|
||||
set global innodb_file_format=Barracuda;
|
||||
set global innodb_file_format_max=Barracuda;
|
||||
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
|
||||
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
|
||||
CREATE TABLE t1(
|
||||
|
|
|
@ -13,6 +13,7 @@ set autocommit=0;
|
|||
update t1 set a=10 where a=5;
|
||||
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
||||
commit;
|
||||
commit;
|
||||
set session transaction isolation level read committed;
|
||||
update t1 set a=10 where a=5;
|
||||
select * from t1 where a=2 for update;
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
set session innodb_strict_mode=0;
|
||||
set global innodb_file_per_table=off;
|
||||
set global innodb_file_format=`0`;
|
||||
create table t0(a int primary key) engine=innodb row_format=compressed;
|
||||
|
@ -393,29 +394,29 @@ table_schema table_name row_format
|
|||
test t8 Compact
|
||||
test t9 Redundant
|
||||
drop table t8, t9;
|
||||
set global innodb_file_per_table=0;
|
||||
set global innodb_file_format=Antelope;
|
||||
set global innodb_file_per_table=1;
|
||||
set global innodb_file_format=Barracuda;
|
||||
set global innodb_file_per_table=on;
|
||||
set global innodb_file_format=`Barracuda`;
|
||||
set global innodb_file_format_check=`Antelope`;
|
||||
set global innodb_file_format_max=`Antelope`;
|
||||
create table normal_table (
|
||||
c1 int
|
||||
) engine = innodb;
|
||||
select @@innodb_file_format_check;
|
||||
@@innodb_file_format_check
|
||||
select @@innodb_file_format_max;
|
||||
@@innodb_file_format_max
|
||||
Antelope
|
||||
create table zip_table (
|
||||
c1 int
|
||||
) engine = innodb key_block_size = 8;
|
||||
select @@innodb_file_format_check;
|
||||
@@innodb_file_format_check
|
||||
select @@innodb_file_format_max;
|
||||
@@innodb_file_format_max
|
||||
Barracuda
|
||||
set global innodb_file_format_check=`Antelope`;
|
||||
select @@innodb_file_format_check;
|
||||
@@innodb_file_format_check
|
||||
set global innodb_file_format_max=`Antelope`;
|
||||
select @@innodb_file_format_max;
|
||||
@@innodb_file_format_max
|
||||
Antelope
|
||||
show table status;
|
||||
select @@innodb_file_format_check;
|
||||
@@innodb_file_format_check
|
||||
select @@innodb_file_format_max;
|
||||
@@innodb_file_format_max
|
||||
Barracuda
|
||||
drop table normal_table, zip_table;
|
||||
|
|
|
@ -1,11 +1 @@
|
|||
SET storage_engine=InnoDB;
|
||||
INSERT INTO bug38231_2 VALUES (1), (10), (300);
|
||||
SET autocommit=0;
|
||||
SELECT * FROM bug38231_2 FOR UPDATE;
|
||||
a
|
||||
1
|
||||
10
|
||||
300
|
||||
TRUNCATE TABLE bug38231_2;
|
||||
COMMIT;
|
||||
DROP TABLE bug38231_2;
|
||||
|
|
|
@ -1,24 +1,24 @@
|
|||
set @old_innodb_file_format_check=@@innodb_file_format_check;
|
||||
select @old_innodb_file_format_check;
|
||||
@old_innodb_file_format_check
|
||||
set @old_innodb_file_format_max=@@innodb_file_format_max;
|
||||
select @old_innodb_file_format_max;
|
||||
@old_innodb_file_format_max
|
||||
Antelope
|
||||
set global innodb_file_format_check = Barracuda;
|
||||
select @@innodb_file_format_check;
|
||||
@@innodb_file_format_check
|
||||
set global innodb_file_format_max = Barracuda;
|
||||
select @@innodb_file_format_max;
|
||||
@@innodb_file_format_max
|
||||
Barracuda
|
||||
set global innodb_file_format_check = DEFAULT;
|
||||
select @@innodb_file_format_check;
|
||||
@@innodb_file_format_check
|
||||
Barracuda
|
||||
set global innodb_file_format_check = @old_innodb_file_format_check;
|
||||
select @@innodb_file_format_check;
|
||||
@@innodb_file_format_check
|
||||
set global innodb_file_format_max = DEFAULT;
|
||||
select @@innodb_file_format_max;
|
||||
@@innodb_file_format_max
|
||||
Antelope
|
||||
set global innodb_file_format_check = cheetah;
|
||||
ERROR 42000: Variable 'innodb_file_format_check' can't be set to the value of 'cheetah'
|
||||
set global innodb_file_format_check = Bear;
|
||||
ERROR 42000: Variable 'innodb_file_format_check' can't be set to the value of 'Bear'
|
||||
set global innodb_file_format_check = on;
|
||||
ERROR 42000: Variable 'innodb_file_format_check' can't be set to the value of 'ON'
|
||||
set global innodb_file_format_check = off;
|
||||
ERROR 42000: Variable 'innodb_file_format_check' can't be set to the value of 'off'
|
||||
set global innodb_file_format_max = @old_innodb_file_format_max;
|
||||
select @@innodb_file_format_max;
|
||||
@@innodb_file_format_max
|
||||
Antelope
|
||||
set global innodb_file_format_max = cheetah;
|
||||
ERROR 42000: Variable 'innodb_file_format_max' can't be set to the value of 'cheetah'
|
||||
set global innodb_file_format_max = Bear;
|
||||
ERROR 42000: Variable 'innodb_file_format_max' can't be set to the value of 'Bear'
|
||||
set global innodb_file_format_max = on;
|
||||
ERROR 42000: Variable 'innodb_file_format_max' can't be set to the value of 'ON'
|
||||
set global innodb_file_format_max = off;
|
||||
ERROR 42000: Variable 'innodb_file_format_max' can't be set to the value of 'off'
|
||||
|
|
|
@ -125,6 +125,6 @@ Warning 1264 Out of range value for column 'col78' at row 1
|
|||
Warning 1265 Data truncated for column 'col79' at row 1
|
||||
Warning 1264 Out of range value for column 'col84' at row 1
|
||||
DROP TABLE bug52745;
|
||||
SET GLOBAL innodb_file_format=Antelope;
|
||||
SET GLOBAL innodb_file_format_check=Antelope;
|
||||
SET GLOBAL innodb_file_per_table=0;
|
||||
SET GLOBAL innodb_file_format=Barracuda;
|
||||
SET GLOBAL innodb_file_format_max=Antelope;
|
||||
SET GLOBAL innodb_file_per_table=1;
|
||||
|
|
|
@ -11,6 +11,6 @@ Error 139 Too big row
|
|||
Error 1118 Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. You have to change some columns to TEXT or BLOBs
|
||||
Error 1030 Got error 139 from storage engine
|
||||
DROP TABLE bug53591;
|
||||
SET GLOBAL innodb_file_format=Antelope;
|
||||
SET GLOBAL innodb_file_format_check=Antelope;
|
||||
SET GLOBAL innodb_file_per_table=0;
|
||||
SET GLOBAL innodb_file_format=Barracuda;
|
||||
SET GLOBAL innodb_file_format_max=Antelope;
|
||||
SET GLOBAL innodb_file_per_table=1;
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
select @@innodb_file_format;
|
||||
@@innodb_file_format
|
||||
Antelope
|
||||
Barracuda
|
||||
select @@innodb_file_format_check;
|
||||
@@innodb_file_format_check
|
||||
1
|
||||
select @@innodb_file_format_max;
|
||||
@@innodb_file_format_max
|
||||
Antelope
|
||||
set global innodb_file_format=antelope;
|
||||
set global innodb_file_format=barracuda;
|
||||
|
@ -14,30 +17,34 @@ Barracuda
|
|||
set global innodb_file_format=default;
|
||||
select @@innodb_file_format;
|
||||
@@innodb_file_format
|
||||
Antelope
|
||||
Barracuda
|
||||
set global innodb_file_format=on;
|
||||
ERROR 42000: Variable 'innodb_file_format' can't be set to the value of 'ON'
|
||||
set global innodb_file_format=off;
|
||||
ERROR 42000: Variable 'innodb_file_format' can't be set to the value of 'off'
|
||||
select @@innodb_file_format;
|
||||
@@innodb_file_format
|
||||
Barracuda
|
||||
set global innodb_file_format_max=antelope;
|
||||
set global innodb_file_format_max=barracuda;
|
||||
set global innodb_file_format_max=cheetah;
|
||||
ERROR 42000: Variable 'innodb_file_format_max' can't be set to the value of 'cheetah'
|
||||
select @@innodb_file_format_max;
|
||||
@@innodb_file_format_max
|
||||
Barracuda
|
||||
set global innodb_file_format_max=default;
|
||||
select @@innodb_file_format_max;
|
||||
@@innodb_file_format_max
|
||||
Antelope
|
||||
set global innodb_file_format_check=antelope;
|
||||
set global innodb_file_format_check=barracuda;
|
||||
set global innodb_file_format_check=cheetah;
|
||||
ERROR 42000: Variable 'innodb_file_format_check' can't be set to the value of 'cheetah'
|
||||
select @@innodb_file_format_check;
|
||||
@@innodb_file_format_check
|
||||
Barracuda
|
||||
set global innodb_file_format_check=default;
|
||||
select @@innodb_file_format_check;
|
||||
@@innodb_file_format_check
|
||||
Barracuda
|
||||
set global innodb_file_format=on;
|
||||
ERROR 42000: Variable 'innodb_file_format' can't be set to the value of 'ON'
|
||||
set global innodb_file_format=off;
|
||||
ERROR 42000: Variable 'innodb_file_format' can't be set to the value of 'off'
|
||||
select @@innodb_file_format_check;
|
||||
@@innodb_file_format_check
|
||||
Barracuda
|
||||
set global innodb_file_format_check=antelope;
|
||||
select @@innodb_file_format_max;
|
||||
@@innodb_file_format_max
|
||||
Antelope
|
||||
set global innodb_file_format_max=antelope;
|
||||
set global innodb_file_format_check=off;
|
||||
ERROR HY000: Variable 'innodb_file_format_check' is a read only variable
|
||||
SET GLOBAL innodb_file_format=Barracuda;
|
||||
SET GLOBAL innodb_file_format_max=Antelope;
|
||||
|
|
|
@ -63,4 +63,4 @@ RUNNING 4 0 0 7 1 0 REPEATABLE READ 1 1
|
|||
trx_isolation_level trx_unique_checks trx_foreign_key_checks
|
||||
SERIALIZABLE 0 0
|
||||
trx_state trx_isolation_level trx_last_foreign_key_error
|
||||
RUNNING SERIALIZABLE `test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`c02`) REFERENCES `t1` (`c01`)
|
||||
RUNNING REPEATABLE READ `test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`c02`) REFERENCES `t1` (`c01`)
|
||||
|
|
|
@ -1590,6 +1590,9 @@ SELECT * FROM t1;
|
|||
a b
|
||||
1 12
|
||||
ROLLBACK;
|
||||
# Switch to connection con2
|
||||
ROLLBACK;
|
||||
# Switch to connection con1
|
||||
# 2. test for serialized update:
|
||||
CREATE TABLE t2 (a INT);
|
||||
TRUNCATE t1;
|
||||
|
@ -1764,6 +1767,37 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
2 DERIVED t1 index c3,c2 c2 14 NULL 5
|
||||
DROP TABLE t1;
|
||||
End of 5.1 tests
|
||||
#
|
||||
# Bug#42643: InnoDB does not support replication of TRUNCATE TABLE
|
||||
#
|
||||
# Check that a TRUNCATE TABLE statement, needing an exclusive meta
|
||||
# data lock, waits for a shared metadata lock owned by a concurrent
|
||||
# transaction.
|
||||
#
|
||||
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES (1),(2),(3);
|
||||
BEGIN;
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
# Connection con1
|
||||
TRUNCATE TABLE t1;;
|
||||
# Connection default
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
ROLLBACK;
|
||||
# Connection con1
|
||||
# Reaping TRUNCATE TABLE
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
# Disconnect con1
|
||||
# Connection default
|
||||
DROP TABLE t1;
|
||||
drop table if exists t1, t2, t3;
|
||||
create table t1(a int);
|
||||
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||
|
@ -2414,6 +2448,18 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# Bug#38999 valgrind warnings for update statement in function compare_record()
|
||||
#
|
||||
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;
|
||||
CREATE TABLE t2 (a INT PRIMARY KEY) ENGINE=InnoDB;
|
||||
INSERT INTO t1 values (1),(2),(3),(4),(5);
|
||||
INSERT INTO t2 values (1);
|
||||
SELECT * FROM t1 WHERE a = 2;
|
||||
a
|
||||
2
|
||||
UPDATE t1,t2 SET t1.a = t1.a + 100 WHERE t1.a = 1;
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# Bug #53830: !table || (!table->read_set || bitmap_is_set(table->read_set, field_index))
|
||||
#
|
||||
CREATE TABLE t1 (a INT, b INT, c INT, d INT,
|
|
@ -9,4 +9,3 @@
|
|||
# Do not use any TAB characters for whitespace.
|
||||
#
|
||||
##############################################################################
|
||||
innodb_multi_update: Bug #38999 2010-05-05 mmakela Valgrind warnings
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
--default-storage-engine=MyISAM
|
||||
--innodb-strict-mode=0
|
||||
--innodb-file-per-table=0
|
|
@ -2,7 +2,7 @@
|
|||
# embedded server ignores 'delayed', so skip this
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
let $innodb_file_format_check_orig=`select @@innodb_file_format_check`;
|
||||
let $innodb_file_format_max_orig=`select @@innodb_file_format_max`;
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
|
@ -40,4 +40,4 @@ DROP TABLE t1;
|
|||
#
|
||||
|
||||
-- disable_query_log
|
||||
eval SET GLOBAL innodb_file_format_check=$innodb_file_format_check_orig;
|
||||
eval SET GLOBAL innodb_file_format_max=$innodb_file_format_max_orig;
|
||||
|
|
3
mysql-test/suite/innodb/t/innodb-autoinc-master.opt
Normal file
3
mysql-test/suite/innodb/t/innodb-autoinc-master.opt
Normal file
|
@ -0,0 +1,3 @@
|
|||
--default-storage-engine=MyISAM
|
||||
--innodb-strict-mode=0
|
||||
--innodb-file-per-table=0
|
|
@ -2,7 +2,7 @@
|
|||
# embedded server ignores 'delayed', so skip this
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
let $innodb_file_format_check_orig=`select @@innodb_file_format_check`;
|
||||
let $innodb_file_format_max_orig=`select @@innodb_file_format_max`;
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
|
@ -671,4 +671,4 @@ DROP TABLE t1;
|
|||
#
|
||||
|
||||
-- disable_query_log
|
||||
eval SET GLOBAL innodb_file_format_check=$innodb_file_format_check_orig;
|
||||
eval SET GLOBAL innodb_file_format_max=$innodb_file_format_max_orig;
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
let $MYSQLD_DATADIR= `select @@datadir`;
|
||||
|
||||
let $innodb_file_format_check_orig=`select @@innodb_file_format_check`;
|
||||
let $innodb_file_format_max_orig=`select @@innodb_file_format_max`;
|
||||
|
||||
create table t1(a int not null, b int, c char(10) not null, d varchar(20)) engine = innodb;
|
||||
insert into t1 values (5,5,'oo','oo'),(4,4,'tr','tr'),(3,4,'ad','ad'),(2,3,'ak','ak');
|
||||
|
@ -403,7 +403,7 @@ create index t1u on t1 (u(1));
|
|||
drop table t1;
|
||||
eval set global innodb_file_per_table=$per_table;
|
||||
eval set global innodb_file_format=$format;
|
||||
eval set global innodb_file_format_check=$format;
|
||||
eval set global innodb_file_format_max=$format;
|
||||
|
||||
#
|
||||
# Test to check whether CREATE INDEX handles implicit foreign key
|
||||
|
@ -550,4 +550,4 @@ DROP TABLE t1;
|
|||
#
|
||||
|
||||
-- disable_query_log
|
||||
eval SET GLOBAL innodb_file_format_check=$innodb_file_format_check_orig;
|
||||
eval SET GLOBAL innodb_file_format_max=$innodb_file_format_max_orig;
|
||||
|
|
|
@ -1 +1,4 @@
|
|||
--binlog_cache_size=32768 --innodb_lock_wait_timeout=1
|
||||
--default-storage-engine=MyISAM
|
||||
--innodb-strict-mode=0
|
||||
--innodb-file-per-table=0
|
||||
|
|
|
@ -23,6 +23,7 @@ set session transaction isolation level repeatable read;
|
|||
set autocommit=0;
|
||||
-- error ER_LOCK_WAIT_TIMEOUT
|
||||
update t1 set a=10 where a=5;
|
||||
commit;
|
||||
connection a;
|
||||
commit;
|
||||
connection b;
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue