mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Merge mysql.com:/nfsdisk1/lars/bkroot/mysql-5.1-new-rpl
into mysql.com:/nfsdisk1/lars/MERGE/mysql-5.1-merge mysql-test/suite/rpl/r/rpl_extraCol_innodb.result: Auto merged mysql-test/suite/rpl/r/rpl_extraCol_myisam.result: Auto merged mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result: Auto merged sql/field.cc: Auto merged sql/log_event.cc: Auto merged sql/field.h: Manual merge
This commit is contained in:
@ -1099,6 +1099,7 @@ libmysqld/item_sum.cc
|
|||||||
libmysqld/item_timefunc.cc
|
libmysqld/item_timefunc.cc
|
||||||
libmysqld/item_uniq.cc
|
libmysqld/item_uniq.cc
|
||||||
libmysqld/key.cc
|
libmysqld/key.cc
|
||||||
|
libmysqld/lex_hash.h
|
||||||
libmysqld/lib_sql.cpp
|
libmysqld/lib_sql.cpp
|
||||||
libmysqld/libmysql.c
|
libmysqld/libmysql.c
|
||||||
libmysqld/link_sources
|
libmysqld/link_sources
|
||||||
@ -1107,6 +1108,8 @@ libmysqld/log.cc
|
|||||||
libmysqld/log_event.cc
|
libmysqld/log_event.cc
|
||||||
libmysqld/log_event_old.cc
|
libmysqld/log_event_old.cc
|
||||||
libmysqld/md5.c
|
libmysqld/md5.c
|
||||||
|
libmysqld/message.h
|
||||||
|
libmysqld/message.rc
|
||||||
libmysqld/mf_iocache.cc
|
libmysqld/mf_iocache.cc
|
||||||
libmysqld/mini_client.cc
|
libmysqld/mini_client.cc
|
||||||
libmysqld/my_decimal.cc
|
libmysqld/my_decimal.cc
|
||||||
@ -2882,6 +2885,7 @@ support-files/mysql-3.23.29-gamma.spec
|
|||||||
support-files/mysql-log-rotate
|
support-files/mysql-log-rotate
|
||||||
support-files/mysql.server
|
support-files/mysql.server
|
||||||
support-files/mysql.spec
|
support-files/mysql.spec
|
||||||
|
support-files/mysqld_multi.server
|
||||||
support-files/ndb-config-2-node.ini
|
support-files/ndb-config-2-node.ini
|
||||||
tags
|
tags
|
||||||
test/ndbapi/bank/bankCreator
|
test/ndbapi/bank/bankCreator
|
||||||
@ -2947,6 +2951,7 @@ tests/.deps/thread_test.Po
|
|||||||
tests/.libs -prune
|
tests/.libs -prune
|
||||||
tests/.libs/lt-mysql_client_test
|
tests/.libs/lt-mysql_client_test
|
||||||
tests/.libs/mysql_client_test
|
tests/.libs/mysql_client_test
|
||||||
|
tests/bug25714
|
||||||
tests/client_test
|
tests/client_test
|
||||||
tests/connect_test
|
tests/connect_test
|
||||||
tests/mysql_client_test
|
tests/mysql_client_test
|
||||||
|
@ -6,6 +6,6 @@ make -k clean || true
|
|||||||
path=`dirname $0`
|
path=`dirname $0`
|
||||||
. "$path/autorun.sh"
|
. "$path/autorun.sh"
|
||||||
|
|
||||||
CFLAGS="-g -Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wparentheses -Wsign-compare -Wwrite-strings -Wunused -O3 -fno-omit-frame-pointer -mcpu=v8 -Wa,-xarch=v8plusa" CXX=gcc CXXFLAGS="-Wimplicit -Wreturn-type -Wid-clash-51 -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wparentheses -Wsign-compare -Wwrite-strings -Woverloaded-virtual -Wsign-promo -Wreorder -Wctor-dtor-privacy -Wnon-virtual-dtor -felide-constructors -fno-exceptions -fno-rtti -O3 -fno-omit-frame-pointer -mcpu=v8 -Wa,-xarch=v8plusa -g" ./configure --prefix=/usr/local/mysql --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --with-debug
|
CFLAGS="-g -Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wparentheses -Wsign-compare -Wwrite-strings -Wunused -O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-g -Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wparentheses -Wsign-compare -Wwrite-strings -Woverloaded-virtual -Wsign-promo -Wreorder -Wctor-dtor-privacy -Wnon-virtual-dtor -felide-constructors -fno-exceptions -fno-rtti -O3 -fno-omit-frame-pointer" ./configure --prefix=/usr/local/mysql --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --with-debug
|
||||||
|
|
||||||
make -j 4
|
make -j 4
|
||||||
|
98
CMakeLists.txt
Normal file → Executable file
98
CMakeLists.txt
Normal file → Executable file
@ -18,26 +18,37 @@ PROJECT(MySql)
|
|||||||
# This reads user configuration, generated by configure.js.
|
# This reads user configuration, generated by configure.js.
|
||||||
INCLUDE(win/configure.data)
|
INCLUDE(win/configure.data)
|
||||||
|
|
||||||
# By default, CMake will create Release, Debug, RelWithDebInfo and MinSizeRel
|
# Hardcode support for CSV storage engine
|
||||||
# configurations. The EMBEDDED_ONLY build parameter is necessary because CMake
|
SET(WITH_CSV_STORAGE_ENGINE TRUE)
|
||||||
# doesn't support custom build configurations for VS2005. Since the Debug
|
|
||||||
# configuration does not work properly with USE_TLS defined
|
# CMAKE will not allow custom VS7+ configurations. mysqld and libmysqld
|
||||||
# (see mysys/CMakeLists.txt) the easiest way to debug the Embedded Server is to
|
# cannot be built at the same time as they require different configurations
|
||||||
# use the RelWithDebInfo configuration without optimizations.
|
IF(EMBEDDED_ONLY)
|
||||||
#
|
ADD_DEFINITIONS(-DEMBEDDED_LIBRARY)
|
||||||
# Debug default CXX_FLAGS "/D_DEBUG /MDd /Zi /Ob0 /Od /RTC1"
|
# By default, CMake will create Release, Debug, RelWithDebInfo and MinSizeRel
|
||||||
# RelWithDebInfo default CXX_FLAGS "/MD /Zi /O2 /Ob1 /D NDEBUG"
|
# configurations. The EMBEDDED_ONLY build parameter is necessary because CMake
|
||||||
#
|
# doesn't support custom build configurations for VS2005. Since the Debug
|
||||||
IF(NOT EMBEDDED_ONLY)
|
# configuration does not work properly with USE_TLS defined
|
||||||
# Hardcode support for CSV storage engine
|
# (see mysys/CMakeLists.txt) the easiest way to debug the Embedded Server is to
|
||||||
SET(WITH_CSV_STORAGE_ENGINE TRUE)
|
# use the RelWithDebInfo configuration without optimizations.
|
||||||
ELSE(NOT EMBEDDED_ONLY)
|
#
|
||||||
|
# Debug default CXX_FLAGS "/D_DEBUG /MDd /Zi /Ob0 /Od /RTC1"
|
||||||
|
# RelWithDebInfo default CXX_FLAGS "/MD /Zi /O2 /Ob1 /D NDEBUG"
|
||||||
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MD /Zi /Od /Ob0 /D NDEBUG" CACHE STRING "No Optimization" FORCE)
|
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MD /Zi /Od /Ob0 /D NDEBUG" CACHE STRING "No Optimization" FORCE)
|
||||||
ENDIF(NOT EMBEDDED_ONLY)
|
ENDIF(EMBEDDED_ONLY)
|
||||||
|
|
||||||
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/include/mysql_version.h.in
|
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/include/mysql_version.h.in
|
||||||
${CMAKE_SOURCE_DIR}/include/mysql_version.h @ONLY)
|
${CMAKE_SOURCE_DIR}/include/mysql_version.h @ONLY)
|
||||||
|
|
||||||
|
# Set standard options
|
||||||
|
ADD_DEFINITIONS(-DHAVE_YASSL)
|
||||||
|
|
||||||
|
# Set debug options
|
||||||
|
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DFORCE_INIT_OF_VARS")
|
||||||
|
|
||||||
|
# Note that some engines are always compiled in, MyISAM, MyISAMMRG and HEAP,
|
||||||
|
# these three plugin defintions are dummys for symmetry
|
||||||
|
|
||||||
SET(WITH_HEAP_STORAGE_ENGINE TRUE)
|
SET(WITH_HEAP_STORAGE_ENGINE TRUE)
|
||||||
ADD_DEFINITIONS(-DWITH_HEAP_STORAGE_ENGINE)
|
ADD_DEFINITIONS(-DWITH_HEAP_STORAGE_ENGINE)
|
||||||
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_heap_plugin")
|
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_heap_plugin")
|
||||||
@ -103,49 +114,43 @@ ENDIF(CYBOZU)
|
|||||||
|
|
||||||
# in some places we use DBUG_OFF
|
# in some places we use DBUG_OFF
|
||||||
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DDBUG_OFF")
|
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DDBUG_OFF")
|
||||||
|
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DDBUG_OFF")
|
||||||
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DDBUG_OFF")
|
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DDBUG_OFF")
|
||||||
|
SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -DDBUG_OFF")
|
||||||
|
|
||||||
IF(CMAKE_GENERATOR MATCHES "Visual Studio 8")
|
IF(CMAKE_GENERATOR MATCHES "Visual Studio 8")
|
||||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /wd4996")
|
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /wd4996")
|
||||||
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /wd4996")
|
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /wd4996")
|
||||||
|
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /wd4996")
|
||||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /wd4996")
|
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /wd4996")
|
||||||
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /wd4996")
|
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /wd4996")
|
||||||
|
SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} /wd4996")
|
||||||
ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 8")
|
ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 8")
|
||||||
|
|
||||||
IF(CMAKE_GENERATOR MATCHES "Visual Studio 7" OR
|
IF(CMAKE_GENERATOR MATCHES "Visual Studio 7" OR
|
||||||
CMAKE_GENERATOR MATCHES "Visual Studio 8")
|
CMAKE_GENERATOR MATCHES "Visual Studio 8")
|
||||||
# replace /MDd with /MTd
|
|
||||||
STRING(REPLACE "/MDd" "/MTd" CMAKE_CXX_FLAGS_DEBUG_INIT
|
|
||||||
${CMAKE_CXX_FLAGS_DEBUG_INIT})
|
|
||||||
STRING(REPLACE "/MDd" "/MTd" CMAKE_C_FLAGS_DEBUG_INIT
|
|
||||||
${CMAKE_C_FLAGS_DEBUG_INIT})
|
|
||||||
STRING(REPLACE "/MD" "/MT" CMAKE_C_FLAGS_RELEASE
|
|
||||||
${CMAKE_C_FLAGS_RELEASE})
|
|
||||||
STRING(REPLACE "/MDd" "/MTd" CMAKE_C_FLAGS_DEBUG
|
|
||||||
${CMAKE_C_FLAGS_DEBUG})
|
|
||||||
STRING(REPLACE "/MD" "/MT" CMAKE_CXX_FLAGS_RELEASE
|
|
||||||
${CMAKE_CXX_FLAGS_RELEASE})
|
|
||||||
STRING(REPLACE "/MDd" "/MTd" CMAKE_CXX_FLAGS_DEBUG
|
|
||||||
${CMAKE_CXX_FLAGS_DEBUG})
|
|
||||||
|
|
||||||
STRING(REPLACE "/MD" "/MT" CMAKE_CXX_FLAGS_RELWITHDEBINFO
|
# replace /MDd with /MTd
|
||||||
${CMAKE_CXX_FLAGS_RELWITHDEBINFO})
|
STRING(REPLACE "/MD" "/MT" CMAKE_C_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE})
|
||||||
STRING(REPLACE "/MD" "/MT" CMAKE_C_FLAGS_RELWITHDEBINFO
|
STRING(REPLACE "/MD" "/MT" CMAKE_C_FLAGS_RELWITHDEBINFO ${CMAKE_C_FLAGS_RELWITHDEBINFO})
|
||||||
${CMAKE_C_FLAGS_RELWITHDEBINFO})
|
STRING(REPLACE "/MDd" "/MTd" CMAKE_C_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG})
|
||||||
|
STRING(REPLACE "/MDd" "/MTd" CMAKE_C_FLAGS_DEBUG_INIT ${CMAKE_C_FLAGS_DEBUG_INIT})
|
||||||
|
|
||||||
# generate .map files
|
STRING(REPLACE "/MD" "/MT" CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE})
|
||||||
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MAP /MAPINFO:EXPORTS")
|
STRING(REPLACE "/MD" "/MT" CMAKE_CXX_FLAGS_RELWITHDEBINFO ${CMAKE_CXX_FLAGS_RELWITHDEBINFO})
|
||||||
|
STRING(REPLACE "/MDd" "/MTd" CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG})
|
||||||
|
STRING(REPLACE "/MDd" "/MTd" CMAKE_CXX_FLAGS_DEBUG_INIT ${CMAKE_CXX_FLAGS_DEBUG_INIT})
|
||||||
|
|
||||||
# set stack size (see bug#20815)
|
# generate map files, set stack size (see bug#20815)
|
||||||
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:1048576")
|
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MAP /MAPINFO:EXPORTS")
|
||||||
|
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:1048576")
|
||||||
|
|
||||||
|
# remove support for Exception handling
|
||||||
|
STRING(REPLACE "/GX" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
|
||||||
|
STRING(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
|
||||||
|
STRING(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS_INIT ${CMAKE_CXX_FLAGS_INIT})
|
||||||
|
STRING(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS_DEBUG_INIT ${CMAKE_CXX_FLAGS_DEBUG_INIT})
|
||||||
|
|
||||||
# remove support for Exception handling
|
|
||||||
STRING(REPLACE "/GX" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
|
|
||||||
STRING(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
|
|
||||||
STRING(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS_INIT
|
|
||||||
${CMAKE_CXX_FLAGS_INIT})
|
|
||||||
STRING(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS_DEBUG_INIT
|
|
||||||
${CMAKE_CXX_FLAGS_DEBUG_INIT})
|
|
||||||
ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 7" OR
|
ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 7" OR
|
||||||
CMAKE_GENERATOR MATCHES "Visual Studio 8")
|
CMAKE_GENERATOR MATCHES "Visual Studio 8")
|
||||||
|
|
||||||
@ -209,6 +214,8 @@ IF(EMBED_MANIFESTS)
|
|||||||
ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64")
|
ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64")
|
||||||
ENDIF(EMBED_MANIFESTS)
|
ENDIF(EMBED_MANIFESTS)
|
||||||
|
|
||||||
|
# FIXME "debug" only needed if build type is "Debug", but
|
||||||
|
# CMAKE_BUILD_TYPE is not set during configure time.
|
||||||
ADD_SUBDIRECTORY(vio)
|
ADD_SUBDIRECTORY(vio)
|
||||||
ADD_SUBDIRECTORY(dbug)
|
ADD_SUBDIRECTORY(dbug)
|
||||||
ADD_SUBDIRECTORY(strings)
|
ADD_SUBDIRECTORY(strings)
|
||||||
@ -241,16 +248,13 @@ ENDIF(WITH_FEDERATED_STORAGE_ENGINE)
|
|||||||
IF(WITH_INNOBASE_STORAGE_ENGINE)
|
IF(WITH_INNOBASE_STORAGE_ENGINE)
|
||||||
ADD_SUBDIRECTORY(storage/innobase)
|
ADD_SUBDIRECTORY(storage/innobase)
|
||||||
ENDIF(WITH_INNOBASE_STORAGE_ENGINE)
|
ENDIF(WITH_INNOBASE_STORAGE_ENGINE)
|
||||||
# CMAKE will not allow custom VS7+ configurations. mysqld and libmysqld
|
ADD_SUBDIRECTORY(libmysql)
|
||||||
# cannot be built at the same time as they require different configurations
|
|
||||||
IF(EMBEDDED_ONLY)
|
IF(EMBEDDED_ONLY)
|
||||||
ADD_DEFINITIONS(-DEMBEDDED_LIBRARY)
|
|
||||||
ADD_SUBDIRECTORY(libmysqld)
|
ADD_SUBDIRECTORY(libmysqld)
|
||||||
ADD_SUBDIRECTORY(libmysqld/examples)
|
ADD_SUBDIRECTORY(libmysqld/examples)
|
||||||
ELSE(EMBEDDED_ONLY)
|
ELSE(EMBEDDED_ONLY)
|
||||||
ADD_SUBDIRECTORY(client)
|
ADD_SUBDIRECTORY(client)
|
||||||
ADD_SUBDIRECTORY(sql)
|
ADD_SUBDIRECTORY(sql)
|
||||||
ADD_SUBDIRECTORY(server-tools/instance-manager)
|
ADD_SUBDIRECTORY(server-tools/instance-manager)
|
||||||
ADD_SUBDIRECTORY(libmysql)
|
|
||||||
ADD_SUBDIRECTORY(tests)
|
ADD_SUBDIRECTORY(tests)
|
||||||
ENDIF(EMBEDDED_ONLY)
|
ENDIF(EMBEDDED_ONLY)
|
||||||
|
123
client/CMakeLists.txt
Normal file → Executable file
123
client/CMakeLists.txt
Normal file → Executable file
@ -14,126 +14,54 @@
|
|||||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
INCLUDE("${PROJECT_SOURCE_DIR}/win/mysql_manifest.cmake")
|
INCLUDE("${PROJECT_SOURCE_DIR}/win/mysql_manifest.cmake")
|
||||||
|
|
||||||
|
# We use the "mysqlclient_notls" library here just as safety, in case
|
||||||
|
# any of the clients here would go beond the client API and access the
|
||||||
|
# Thread Local Storage directly.
|
||||||
|
|
||||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||||
|
|
||||||
# The old Windows build method used renamed (.cc -> .cpp) source files, fails
|
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
|
||||||
# in #include in mysqlbinlog.cc. So disable that using the USING_CMAKE define.
|
${CMAKE_SOURCE_DIR}/zlib
|
||||||
ADD_DEFINITIONS(-DUSING_CMAKE -DYASSL_PREFIX -DUSE_TLS)
|
|
||||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
|
|
||||||
${CMAKE_SOURCE_DIR}/zlib
|
|
||||||
${CMAKE_SOURCE_DIR}/extra/yassl/include
|
${CMAKE_SOURCE_DIR}/extra/yassl/include
|
||||||
${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/include
|
|
||||||
${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/mySTL
|
|
||||||
${CMAKE_SOURCE_DIR}/libmysql
|
${CMAKE_SOURCE_DIR}/libmysql
|
||||||
${CMAKE_SOURCE_DIR}/regex
|
${CMAKE_SOURCE_DIR}/regex
|
||||||
${CMAKE_SOURCE_DIR}/sql
|
${CMAKE_SOURCE_DIR}/sql
|
||||||
${CMAKE_SOURCE_DIR}/strings)
|
${CMAKE_SOURCE_DIR}/strings)
|
||||||
|
|
||||||
SET(YASSL_SOURCES ../extra/yassl/src/buffer.cpp
|
ADD_EXECUTABLE(mysql completion_hash.cc mysql.cc readline.cc sql_string.cc ../mysys/my_conio.c)
|
||||||
../extra/yassl/src/cert_wrapper.cpp
|
TARGET_LINK_LIBRARIES(mysql mysqlclient_notls wsock32)
|
||||||
../extra/yassl/src/crypto_wrapper.cpp
|
|
||||||
../extra/yassl/src/handshake.cpp
|
|
||||||
../extra/yassl/src/lock.cpp
|
|
||||||
../extra/yassl/src/log.cpp
|
|
||||||
../extra/yassl/src/socket_wrapper.cpp
|
|
||||||
../extra/yassl/src/ssl.cpp
|
|
||||||
../extra/yassl/src/timer.cpp
|
|
||||||
../extra/yassl/src/yassl_error.cpp
|
|
||||||
../extra/yassl/src/yassl_imp.cpp
|
|
||||||
../extra/yassl/src/yassl_int.cpp)
|
|
||||||
|
|
||||||
SET(TAOCRYPT_SOURCES ../extra/yassl/taocrypt/src/aes.cpp
|
|
||||||
../extra/yassl/taocrypt/src/aestables.cpp
|
|
||||||
../extra/yassl/taocrypt/src/algebra.cpp
|
|
||||||
../extra/yassl/taocrypt/src/arc4.cpp
|
|
||||||
../extra/yassl/taocrypt/src/asn.cpp
|
|
||||||
../extra/yassl/taocrypt/src/coding.cpp
|
|
||||||
../extra/yassl/taocrypt/src/des.cpp
|
|
||||||
../extra/yassl/taocrypt/src/dh.cpp
|
|
||||||
../extra/yassl/taocrypt/src/dsa.cpp
|
|
||||||
../extra/yassl/taocrypt/src/file.cpp
|
|
||||||
../extra/yassl/taocrypt/src/hash.cpp
|
|
||||||
../extra/yassl/taocrypt/src/integer.cpp
|
|
||||||
../extra/yassl/taocrypt/src/md2.cpp
|
|
||||||
../extra/yassl/taocrypt/src/md4.cpp
|
|
||||||
../extra/yassl/taocrypt/src/md5.cpp
|
|
||||||
../extra/yassl/taocrypt/src/misc.cpp
|
|
||||||
../extra/yassl/taocrypt/src/random.cpp
|
|
||||||
../extra/yassl/taocrypt/src/ripemd.cpp
|
|
||||||
../extra/yassl/taocrypt/src/rsa.cpp
|
|
||||||
../extra/yassl/taocrypt/src/sha.cpp)
|
|
||||||
|
|
||||||
|
ADD_EXECUTABLE(mysqltest mysqltest.c ../mysys/my_getsystime.c ../mysys/my_copy.c)
|
||||||
ADD_LIBRARY(mysqlclient ../mysys/array.c ../strings/bchange.c ../strings/bmove.c
|
TARGET_LINK_LIBRARIES(mysqltest mysqlclient_notls regex wsock32)
|
||||||
../strings/bmove_upp.c ../mysys/charset-def.c ../mysys/charset.c
|
|
||||||
../sql-common/client.c ../strings/ctype-big5.c ../strings/ctype-bin.c
|
|
||||||
../strings/ctype-cp932.c ../strings/ctype-czech.c ../strings/ctype-euc_kr.c
|
|
||||||
../strings/ctype-eucjpms.c ../strings/ctype-extra.c ../strings/ctype-gb2312.c
|
|
||||||
../strings/ctype-gbk.c ../strings/ctype-latin1.c ../strings/ctype-mb.c
|
|
||||||
../strings/ctype-simple.c ../strings/ctype-sjis.c ../strings/ctype-tis620.c
|
|
||||||
../strings/ctype-uca.c ../strings/ctype-ucs2.c ../strings/ctype-ujis.c
|
|
||||||
../strings/ctype-utf8.c ../strings/ctype-win1250ch.c ../strings/ctype.c
|
|
||||||
../mysys/default.c ../libmysql/errmsg.c ../mysys/errors.c
|
|
||||||
../libmysql/get_password.c ../strings/int2str.c ../strings/is_prefix.c
|
|
||||||
../libmysql/libmysql.c ../mysys/list.c ../strings/llstr.c
|
|
||||||
../strings/longlong2str.c ../libmysql/manager.c ../mysys/mf_cache.c
|
|
||||||
../mysys/mf_dirname.c ../mysys/mf_fn_ext.c ../mysys/mf_format.c
|
|
||||||
../mysys/mf_iocache.c ../mysys/mf_iocache2.c ../mysys/mf_loadpath.c
|
|
||||||
../mysys/mf_pack.c ../mysys/mf_path.c ../mysys/mf_tempfile.c ../mysys/mf_unixpath.c
|
|
||||||
../mysys/mf_wcomp.c ../mysys/mulalloc.c ../mysys/my_access.c ../mysys/my_alloc.c
|
|
||||||
../mysys/my_chsize.c ../mysys/my_compress.c ../mysys/my_create.c
|
|
||||||
../mysys/my_delete.c ../mysys/my_div.c ../mysys/my_error.c ../mysys/my_file.c
|
|
||||||
../mysys/my_fopen.c ../mysys/my_fstream.c ../mysys/my_gethostbyname.c
|
|
||||||
../mysys/my_getopt.c ../mysys/my_getwd.c ../mysys/my_init.c ../mysys/my_lib.c
|
|
||||||
../mysys/my_malloc.c ../mysys/my_messnc.c ../mysys/my_net.c ../mysys/my_once.c
|
|
||||||
../mysys/my_open.c ../mysys/my_pread.c ../mysys/my_pthread.c ../mysys/my_read.c
|
|
||||||
../mysys/my_realloc.c ../mysys/my_rename.c ../mysys/my_seek.c
|
|
||||||
../mysys/my_static.c ../strings/my_strtoll10.c ../mysys/my_symlink.c
|
|
||||||
../mysys/my_symlink2.c ../mysys/my_thr_init.c ../sql-common/my_time.c
|
|
||||||
../strings/my_vsnprintf.c ../mysys/my_wincond.c ../mysys/my_winthread.c
|
|
||||||
../mysys/my_write.c ../sql/net_serv.cc ../sql-common/pack.c ../sql/password.c
|
|
||||||
../mysys/safemalloc.c ../mysys/sha1.c ../strings/str2int.c
|
|
||||||
../strings/str_alloc.c ../strings/strcend.c ../strings/strcont.c ../strings/strend.c
|
|
||||||
../strings/strfill.c ../mysys/string.c ../strings/strinstr.c ../strings/strmake.c
|
|
||||||
../strings/strmov.c ../strings/strnlen.c ../strings/strnmov.c ../strings/strtod.c
|
|
||||||
../strings/strtoll.c ../strings/strtoull.c ../strings/strxmov.c ../strings/strxnmov.c
|
|
||||||
../mysys/thr_mutex.c ../mysys/typelib.c ../vio/vio.c ../vio/viosocket.c
|
|
||||||
../vio/viossl.c ../vio/viosslfactories.c ../strings/xml.c
|
|
||||||
${YASSL_SOURCES} ${TAOCRYPT_SOURCES}
|
|
||||||
)
|
|
||||||
|
|
||||||
ADD_DEPENDENCIES(mysqlclient GenError)
|
|
||||||
ADD_EXECUTABLE(mysql completion_hash.cc mysql.cc readline.cc sql_string.cc)
|
|
||||||
LINK_DIRECTORIES(${MYSQL_BINARY_DIR}/mysys ${MYSQL_BINARY_DIR}/zlib)
|
|
||||||
TARGET_LINK_LIBRARIES(mysql mysqlclient mysys zlib dbug wsock32)
|
|
||||||
|
|
||||||
ADD_EXECUTABLE(mysqltest mysqltest.c)
|
|
||||||
TARGET_LINK_LIBRARIES(mysqltest mysqlclient mysys zlib dbug regex wsock32)
|
|
||||||
|
|
||||||
ADD_EXECUTABLE(mysqlcheck mysqlcheck.c)
|
ADD_EXECUTABLE(mysqlcheck mysqlcheck.c)
|
||||||
TARGET_LINK_LIBRARIES(mysqlcheck mysqlclient dbug zlib wsock32)
|
TARGET_LINK_LIBRARIES(mysqlcheck mysqlclient_notls wsock32)
|
||||||
|
|
||||||
ADD_EXECUTABLE(mysqldump mysqldump.c ../sql-common/my_user.c)
|
ADD_EXECUTABLE(mysqldump mysqldump.c ../sql-common/my_user.c ../mysys/mf_getdate.c)
|
||||||
TARGET_LINK_LIBRARIES(mysqldump mysqlclient mysys dbug zlib wsock32)
|
TARGET_LINK_LIBRARIES(mysqldump mysqlclient_notls wsock32)
|
||||||
|
|
||||||
ADD_EXECUTABLE(mysqlimport mysqlimport.c)
|
ADD_EXECUTABLE(mysqlimport mysqlimport.c)
|
||||||
TARGET_LINK_LIBRARIES(mysqlimport mysqlclient mysys dbug zlib wsock32)
|
TARGET_LINK_LIBRARIES(mysqlimport mysqlclient_notls wsock32)
|
||||||
|
|
||||||
ADD_EXECUTABLE(mysql_upgrade mysql_upgrade.c ../mysys/my_getpagesize.c)
|
ADD_EXECUTABLE(mysql_upgrade mysql_upgrade.c ../mysys/my_getpagesize.c)
|
||||||
TARGET_LINK_LIBRARIES(mysql_upgrade mysqlclient dbug zlib wsock32)
|
TARGET_LINK_LIBRARIES(mysql_upgrade mysqlclient_notls wsock32)
|
||||||
ADD_DEPENDENCIES(mysql_upgrade GenFixPrivs)
|
ADD_DEPENDENCIES(mysql_upgrade GenFixPrivs)
|
||||||
|
|
||||||
ADD_EXECUTABLE(mysqlshow mysqlshow.c)
|
ADD_EXECUTABLE(mysqlshow mysqlshow.c)
|
||||||
TARGET_LINK_LIBRARIES(mysqlshow mysqlclient mysys dbug zlib wsock32)
|
TARGET_LINK_LIBRARIES(mysqlshow mysqlclient_notls wsock32)
|
||||||
|
|
||||||
ADD_EXECUTABLE(mysqlbinlog mysqlbinlog.cc ../mysys/mf_tempdir.c ../mysys/my_new.cc
|
ADD_EXECUTABLE(mysqlbinlog mysqlbinlog.cc
|
||||||
../mysys/my_bit.c ../mysys/my_bitmap.c ../mysys/my_vle.c
|
../mysys/mf_tempdir.c
|
||||||
../mysys/base64.c)
|
../mysys/my_new.cc
|
||||||
TARGET_LINK_LIBRARIES(mysqlbinlog mysqlclient dbug zlib wsock32)
|
../mysys/my_bit.c
|
||||||
|
../mysys/my_bitmap.c
|
||||||
|
../mysys/my_vle.c
|
||||||
|
../mysys/base64.c)
|
||||||
|
TARGET_LINK_LIBRARIES(mysqlbinlog mysqlclient_notls wsock32)
|
||||||
|
|
||||||
ADD_EXECUTABLE(mysqladmin mysqladmin.cc)
|
ADD_EXECUTABLE(mysqladmin mysqladmin.cc)
|
||||||
TARGET_LINK_LIBRARIES(mysqladmin mysqlclient mysys dbug zlib wsock32)
|
TARGET_LINK_LIBRARIES(mysqladmin mysqlclient_notls wsock32)
|
||||||
|
|
||||||
ADD_EXECUTABLE(mysqlslap mysqlslap.c)
|
ADD_EXECUTABLE(mysqlslap mysqlslap.c)
|
||||||
SET_SOURCE_FILES_PROPERTIES(mysqlslap.c PROPERTIES COMPILE_FLAGS "-DTHREADS")
|
SET_SOURCE_FILES_PROPERTIES(mysqlslap.c PROPERTIES COMPILE_FLAGS "-DTHREADS")
|
||||||
@ -153,3 +81,4 @@ IF(EMBED_MANIFESTS)
|
|||||||
MYSQL_EMBED_MANIFEST("mysqladmin" "asInvoker")
|
MYSQL_EMBED_MANIFEST("mysqladmin" "asInvoker")
|
||||||
MYSQL_EMBED_MANIFEST("echo" "asInvoker")
|
MYSQL_EMBED_MANIFEST("echo" "asInvoker")
|
||||||
ENDIF(EMBED_MANIFESTS)
|
ENDIF(EMBED_MANIFESTS)
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ enum options_client
|
|||||||
OPT_PROMPT, OPT_IGN_LINES,OPT_TRANSACTION,OPT_MYSQL_PROTOCOL,
|
OPT_PROMPT, OPT_IGN_LINES,OPT_TRANSACTION,OPT_MYSQL_PROTOCOL,
|
||||||
OPT_SHARED_MEMORY_BASE_NAME, OPT_FRM, OPT_SKIP_OPTIMIZATION,
|
OPT_SHARED_MEMORY_BASE_NAME, OPT_FRM, OPT_SKIP_OPTIMIZATION,
|
||||||
OPT_COMPATIBLE, OPT_RECONNECT, OPT_DELIMITER, OPT_SECURE_AUTH,
|
OPT_COMPATIBLE, OPT_RECONNECT, OPT_DELIMITER, OPT_SECURE_AUTH,
|
||||||
OPT_OPEN_FILES_LIMIT, OPT_SET_CHARSET, OPT_CREATE_OPTIONS,
|
OPT_OPEN_FILES_LIMIT, OPT_SET_CHARSET, OPT_CREATE_OPTIONS, OPT_SERVER_ARG,
|
||||||
OPT_START_POSITION, OPT_STOP_POSITION, OPT_START_DATETIME, OPT_STOP_DATETIME,
|
OPT_START_POSITION, OPT_STOP_POSITION, OPT_START_DATETIME, OPT_STOP_DATETIME,
|
||||||
OPT_SIGINT_IGNORE, OPT_HEXBLOB, OPT_ORDER_BY_PRIMARY, OPT_COUNT,
|
OPT_SIGINT_IGNORE, OPT_HEXBLOB, OPT_ORDER_BY_PRIMARY, OPT_COUNT,
|
||||||
#ifdef HAVE_NDBCLUSTER_DB
|
#ifdef HAVE_NDBCLUSTER_DB
|
||||||
@ -79,6 +79,6 @@ enum options_client
|
|||||||
OPT_SLAP_DETACH,
|
OPT_SLAP_DETACH,
|
||||||
OPT_MYSQL_REPLACE_INTO, OPT_BASE64_OUTPUT, OPT_SERVER_ID,
|
OPT_MYSQL_REPLACE_INTO, OPT_BASE64_OUTPUT, OPT_SERVER_ID,
|
||||||
OPT_FIX_TABLE_NAMES, OPT_FIX_DB_NAMES, OPT_SSL_VERIFY_SERVER_CERT,
|
OPT_FIX_TABLE_NAMES, OPT_FIX_DB_NAMES, OPT_SSL_VERIFY_SERVER_CERT,
|
||||||
OPT_DEBUG_INFO, OPT_COLUMN_TYPES, OPT_ERROR_LOG_FILE, OPT_WRITE_BINLOG,
|
OPT_DEBUG_INFO, OPT_DEBUG_CHECK, OPT_COLUMN_TYPES, OPT_ERROR_LOG_FILE,
|
||||||
OPT_MAX_CLIENT_OPTION
|
OPT_WRITE_BINLOG, OPT_MAX_CLIENT_OPTION
|
||||||
};
|
};
|
||||||
|
@ -43,7 +43,7 @@
|
|||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *VER= "14.13";
|
const char *VER= "14.14";
|
||||||
|
|
||||||
/* Don't try to make a nice table if the data is too big */
|
/* Don't try to make a nice table if the data is too big */
|
||||||
#define MAX_COLUMN_LENGTH 1024
|
#define MAX_COLUMN_LENGTH 1024
|
||||||
@ -51,6 +51,9 @@ const char *VER= "14.13";
|
|||||||
/* Buffer to hold 'version' and 'version_comment' */
|
/* Buffer to hold 'version' and 'version_comment' */
|
||||||
#define MAX_SERVER_VERSION_LENGTH 128
|
#define MAX_SERVER_VERSION_LENGTH 128
|
||||||
|
|
||||||
|
/* Array of options to pass to libemysqld */
|
||||||
|
#define MAX_SERVER_ARGS 64
|
||||||
|
|
||||||
void* sql_alloc(unsigned size); // Don't use mysqld alloc for these
|
void* sql_alloc(unsigned size); // Don't use mysqld alloc for these
|
||||||
void sql_element_free(void *ptr);
|
void sql_element_free(void *ptr);
|
||||||
#include "sql_string.h"
|
#include "sql_string.h"
|
||||||
@ -129,7 +132,7 @@ enum enum_info_type { INFO_INFO,INFO_ERROR,INFO_RESULT};
|
|||||||
typedef enum enum_info_type INFO_TYPE;
|
typedef enum enum_info_type INFO_TYPE;
|
||||||
|
|
||||||
static MYSQL mysql; /* The connection */
|
static MYSQL mysql; /* The connection */
|
||||||
static my_bool info_flag=0,ignore_errors=0,wait_flag=0,quick=0,
|
static my_bool ignore_errors=0,wait_flag=0,quick=0,
|
||||||
connected=0,opt_raw_data=0,unbuffered=0,output_tables=0,
|
connected=0,opt_raw_data=0,unbuffered=0,output_tables=0,
|
||||||
opt_rehash=1,skip_updates=0,safe_updates=0,one_database=0,
|
opt_rehash=1,skip_updates=0,safe_updates=0,one_database=0,
|
||||||
opt_compress=0, using_opt_local_infile=0,
|
opt_compress=0, using_opt_local_infile=0,
|
||||||
@ -139,9 +142,11 @@ static my_bool info_flag=0,ignore_errors=0,wait_flag=0,quick=0,
|
|||||||
default_charset_used= 0, opt_secure_auth= 0,
|
default_charset_used= 0, opt_secure_auth= 0,
|
||||||
default_pager_set= 0, opt_sigint_ignore= 0,
|
default_pager_set= 0, opt_sigint_ignore= 0,
|
||||||
show_warnings= 0, executing_query= 0, interrupted_query= 0;
|
show_warnings= 0, executing_query= 0, interrupted_query= 0;
|
||||||
|
static my_bool debug_info_flag, debug_check_flag;
|
||||||
static my_bool column_types_flag;
|
static my_bool column_types_flag;
|
||||||
static ulong opt_max_allowed_packet, opt_net_buffer_length;
|
static ulong opt_max_allowed_packet, opt_net_buffer_length;
|
||||||
static uint verbose=0,opt_silent=0,opt_mysql_port=0, opt_local_infile=0;
|
static uint verbose=0,opt_silent=0,opt_mysql_port=0, opt_local_infile=0;
|
||||||
|
static uint my_end_arg;
|
||||||
static char * opt_mysql_unix_port=0;
|
static char * opt_mysql_unix_port=0;
|
||||||
static int connect_flag=CLIENT_INTERACTIVE;
|
static int connect_flag=CLIENT_INTERACTIVE;
|
||||||
static char *current_host,*current_db,*current_user=0,*opt_password=0,
|
static char *current_host,*current_db,*current_user=0,*opt_password=0,
|
||||||
@ -302,7 +307,10 @@ static COMMANDS commands[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const char *load_default_groups[]= { "mysql","client",0 };
|
static const char *load_default_groups[]= { "mysql","client",0 };
|
||||||
static const char *server_default_groups[]=
|
|
||||||
|
static int embedded_server_arg_count= 0;
|
||||||
|
static char *embedded_server_args[MAX_SERVER_ARGS];
|
||||||
|
static const char *embedded_server_groups[]=
|
||||||
{ "server", "embedded", "mysql_SERVER", 0 };
|
{ "server", "embedded", "mysql_SERVER", 0 };
|
||||||
|
|
||||||
#ifdef HAVE_READLINE
|
#ifdef HAVE_READLINE
|
||||||
@ -347,15 +355,6 @@ static sig_handler handle_sigint(int sig);
|
|||||||
int main(int argc,char *argv[])
|
int main(int argc,char *argv[])
|
||||||
{
|
{
|
||||||
char buff[80];
|
char buff[80];
|
||||||
char *defaults, *extra_defaults, *group_suffix;
|
|
||||||
char *emb_argv[4];
|
|
||||||
int emb_argc;
|
|
||||||
|
|
||||||
/* Get --defaults-xxx args for mysql_server_init() */
|
|
||||||
emb_argc= get_defaults_options(argc, argv, &defaults, &extra_defaults,
|
|
||||||
&group_suffix)+1;
|
|
||||||
memcpy((char*) emb_argv, (char*) argv, emb_argc * sizeof(*argv));
|
|
||||||
emb_argv[emb_argc]= 0;
|
|
||||||
|
|
||||||
MY_INIT(argv[0]);
|
MY_INIT(argv[0]);
|
||||||
DBUG_ENTER("main");
|
DBUG_ENTER("main");
|
||||||
@ -416,7 +415,8 @@ int main(int argc,char *argv[])
|
|||||||
my_end(0);
|
my_end(0);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
if (mysql_server_init(emb_argc, emb_argv, (char**) server_default_groups))
|
if (mysql_server_init(embedded_server_arg_count, embedded_server_args,
|
||||||
|
(char**) embedded_server_groups))
|
||||||
{
|
{
|
||||||
free_defaults(defaults_argv);
|
free_defaults(defaults_argv);
|
||||||
my_end(0);
|
my_end(0);
|
||||||
@ -539,9 +539,11 @@ sig_handler mysql_end(int sig)
|
|||||||
my_free(shared_memory_base_name,MYF(MY_ALLOW_ZERO_PTR));
|
my_free(shared_memory_base_name,MYF(MY_ALLOW_ZERO_PTR));
|
||||||
#endif
|
#endif
|
||||||
my_free(current_prompt,MYF(MY_ALLOW_ZERO_PTR));
|
my_free(current_prompt,MYF(MY_ALLOW_ZERO_PTR));
|
||||||
|
while (embedded_server_arg_count > 1)
|
||||||
|
my_free(embedded_server_args[--embedded_server_arg_count],MYF(0));
|
||||||
mysql_server_end();
|
mysql_server_end();
|
||||||
free_defaults(defaults_argv);
|
free_defaults(defaults_argv);
|
||||||
my_end(info_flag ? MY_CHECK_ERROR : 0);
|
my_end(my_end_arg);
|
||||||
exit(status.exit_status);
|
exit(status.exit_status);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -611,8 +613,11 @@ static struct my_option my_long_options[] =
|
|||||||
{"debug", '#', "Output debug log", (uchar**) &default_dbug_option,
|
{"debug", '#', "Output debug log", (uchar**) &default_dbug_option,
|
||||||
(uchar**) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
(uchar**) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
#endif
|
#endif
|
||||||
{"debug-info", 'T', "Print some debug info at exit.", (uchar**) &info_flag,
|
{"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit .",
|
||||||
(uchar**) &info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
(uchar**) &debug_check_flag, (uchar**) &debug_check_flag, 0,
|
||||||
|
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
|
{"debug-info", 'T', "Print some debug info at exit.", (uchar**) &debug_info_flag,
|
||||||
|
(uchar**) &debug_info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
{"database", 'D', "Database to use.", (uchar**) ¤t_db,
|
{"database", 'D', "Database to use.", (uchar**) ¤t_db,
|
||||||
(uchar**) ¤t_db, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
(uchar**) ¤t_db, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
{"default-character-set", OPT_DEFAULT_CHARSET,
|
{"default-character-set", OPT_DEFAULT_CHARSET,
|
||||||
@ -761,6 +766,8 @@ static struct my_option my_long_options[] =
|
|||||||
{"secure-auth", OPT_SECURE_AUTH, "Refuse client connecting to server if it"
|
{"secure-auth", OPT_SECURE_AUTH, "Refuse client connecting to server if it"
|
||||||
" uses old (pre-4.1.1) protocol", (uchar**) &opt_secure_auth,
|
" uses old (pre-4.1.1) protocol", (uchar**) &opt_secure_auth,
|
||||||
(uchar**) &opt_secure_auth, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
(uchar**) &opt_secure_auth, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
|
{"server-arg", OPT_SERVER_ARG, "Send embedded server this as a parameter.",
|
||||||
|
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
{"show-warnings", OPT_SHOW_WARNINGS, "Show warnings after every statement.",
|
{"show-warnings", OPT_SHOW_WARNINGS, "Show warnings after every statement.",
|
||||||
(uchar**) &show_warnings, (uchar**) &show_warnings, 0, GET_BOOL, NO_ARG,
|
(uchar**) &show_warnings, (uchar**) &show_warnings, 0, GET_BOOL, NO_ARG,
|
||||||
0, 0, 0, 0, 0, 0},
|
0, 0, 0, 0, 0, 0},
|
||||||
@ -888,7 +895,29 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
|||||||
opt_protocol= find_type_or_exit(argument, &sql_protocol_typelib,
|
opt_protocol= find_type_or_exit(argument, &sql_protocol_typelib,
|
||||||
opt->name);
|
opt->name);
|
||||||
break;
|
break;
|
||||||
break;
|
case OPT_SERVER_ARG:
|
||||||
|
#ifdef EMBEDDED_LIBRARY
|
||||||
|
/*
|
||||||
|
When the embedded server is being tested, the client needs to be
|
||||||
|
able to pass command-line arguments to the embedded server so it can
|
||||||
|
locate the language files and data directory.
|
||||||
|
*/
|
||||||
|
if (!embedded_server_arg_count)
|
||||||
|
{
|
||||||
|
embedded_server_arg_count= 1;
|
||||||
|
embedded_server_args[0]= (char*) "";
|
||||||
|
}
|
||||||
|
if (embedded_server_arg_count == MAX_SERVER_ARGS-1 ||
|
||||||
|
!(embedded_server_args[embedded_server_arg_count++]=
|
||||||
|
my_strdup(argument, MYF(MY_FAE))))
|
||||||
|
{
|
||||||
|
put_info("Can't use server argument", INFO_ERROR);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#else /*EMBEDDED_LIBRARY */
|
||||||
|
printf("WARNING: --server-arg option not supported in this configuration.\n");
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
case 'A':
|
case 'A':
|
||||||
opt_rehash= 0;
|
opt_rehash= 0;
|
||||||
break;
|
break;
|
||||||
@ -927,7 +956,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
|||||||
break;
|
break;
|
||||||
case '#':
|
case '#':
|
||||||
DBUG_PUSH(argument ? argument : default_dbug_option);
|
DBUG_PUSH(argument ? argument : default_dbug_option);
|
||||||
info_flag= 1;
|
debug_info_flag= 1;
|
||||||
break;
|
break;
|
||||||
case 's':
|
case 's':
|
||||||
if (argument == disabled_my_option)
|
if (argument == disabled_my_option)
|
||||||
@ -1021,6 +1050,10 @@ static int get_options(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
if (tty_password)
|
if (tty_password)
|
||||||
opt_password= get_tty_password(NullS);
|
opt_password= get_tty_password(NullS);
|
||||||
|
if (debug_info_flag)
|
||||||
|
my_end_arg= MY_CHECK_ERROR | MY_GIVE_INFO;
|
||||||
|
if (debug_check_flag)
|
||||||
|
my_end_arg= MY_CHECK_ERROR;
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3288,7 +3321,7 @@ sql_real_connect(char *host,char *database,char *user,char *password,
|
|||||||
}
|
}
|
||||||
connected=1;
|
connected=1;
|
||||||
#ifndef EMBEDDED_LIBRARY
|
#ifndef EMBEDDED_LIBRARY
|
||||||
mysql.reconnect=info_flag ? 1 : 0; // We want to know if this happens
|
mysql.reconnect= debug_info_flag; // We want to know if this happens
|
||||||
#else
|
#else
|
||||||
mysql.reconnect= 1;
|
mysql.reconnect= 1;
|
||||||
#endif
|
#endif
|
||||||
|
@ -17,6 +17,8 @@
|
|||||||
#include <sslopt-vars.h>
|
#include <sslopt-vars.h>
|
||||||
#include "../scripts/mysql_fix_privilege_tables_sql.c"
|
#include "../scripts/mysql_fix_privilege_tables_sql.c"
|
||||||
|
|
||||||
|
#define VER "1.1"
|
||||||
|
|
||||||
#ifdef HAVE_SYS_WAIT_H
|
#ifdef HAVE_SYS_WAIT_H
|
||||||
#include <sys/wait.h>
|
#include <sys/wait.h>
|
||||||
#endif
|
#endif
|
||||||
@ -32,7 +34,8 @@
|
|||||||
static char mysql_path[FN_REFLEN];
|
static char mysql_path[FN_REFLEN];
|
||||||
static char mysqlcheck_path[FN_REFLEN];
|
static char mysqlcheck_path[FN_REFLEN];
|
||||||
|
|
||||||
static my_bool opt_force, opt_verbose;
|
static my_bool opt_force, opt_verbose, debug_info_flag, debug_check_flag;
|
||||||
|
static uint my_end_arg= 0;
|
||||||
static char *opt_user= (char*)"root";
|
static char *opt_user= (char*)"root";
|
||||||
|
|
||||||
static DYNAMIC_STRING ds_args;
|
static DYNAMIC_STRING ds_args;
|
||||||
@ -56,6 +59,11 @@ static struct my_option my_long_options[]=
|
|||||||
NO_ARG, 0, 0, 0, 0, 0, 0},
|
NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
{"basedir", 'b', "Not used by mysql_upgrade. Only for backward compatibilty",
|
{"basedir", 'b', "Not used by mysql_upgrade. Only for backward compatibilty",
|
||||||
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
|
{"character-sets-dir", OPT_CHARSETS_DIR,
|
||||||
|
"Directory where character sets are.", 0,
|
||||||
|
0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
|
{"compress", OPT_COMPRESS, "Use compression in server/client protocol.",
|
||||||
|
(uchar**)¬_used, (uchar**)¬_used, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
{"datadir", 'd',
|
{"datadir", 'd',
|
||||||
"Not used by mysql_upgrade. Only for backward compatibilty",
|
"Not used by mysql_upgrade. Only for backward compatibilty",
|
||||||
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
@ -66,14 +74,14 @@ static struct my_option my_long_options[]=
|
|||||||
{"debug", '#', "Output debug log", (uchar* *) & default_dbug_option,
|
{"debug", '#', "Output debug log", (uchar* *) & default_dbug_option,
|
||||||
(uchar* *) & default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
(uchar* *) & default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
#endif
|
#endif
|
||||||
|
{"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit .",
|
||||||
|
(uchar**) &debug_check_flag, (uchar**) &debug_check_flag, 0,
|
||||||
|
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
|
{"debug-info", 'T', "Print some debug info at exit.", (uchar**) &debug_info_flag,
|
||||||
|
(uchar**) &debug_info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
{"default-character-set", OPT_DEFAULT_CHARSET,
|
{"default-character-set", OPT_DEFAULT_CHARSET,
|
||||||
"Set the default character set.", 0,
|
"Set the default character set.", 0,
|
||||||
0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
{"character-sets-dir", OPT_CHARSETS_DIR,
|
|
||||||
"Directory where character sets are.", 0,
|
|
||||||
0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
|
||||||
{"compress", OPT_COMPRESS, "Use compression in server/client protocol.",
|
|
||||||
(uchar**)¬_used, (uchar**)¬_used, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
|
||||||
{"force", 'f', "Force execution of mysqlcheck even if mysql_upgrade "
|
{"force", 'f', "Force execution of mysqlcheck even if mysql_upgrade "
|
||||||
"has already been executed for the current version of MySQL.",
|
"has already been executed for the current version of MySQL.",
|
||||||
(uchar**)&opt_force, (uchar**)&opt_force, 0,
|
(uchar**)&opt_force, (uchar**)&opt_force, 0,
|
||||||
@ -138,7 +146,7 @@ static void die(const char *fmt, ...)
|
|||||||
va_end(args);
|
va_end(args);
|
||||||
|
|
||||||
free_used_memory();
|
free_used_memory();
|
||||||
my_end(MY_CHECK_ERROR);
|
my_end(my_end_arg);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -200,8 +208,9 @@ get_one_option(int optid, const struct my_option *opt,
|
|||||||
switch (optid) {
|
switch (optid) {
|
||||||
|
|
||||||
case '?':
|
case '?':
|
||||||
printf("MySQL utility for upgrading database to MySQL version %s\n",
|
printf("%s Ver %s Distrib %s, for %s (%s)\n",
|
||||||
MYSQL_SERVER_VERSION);
|
my_progname, VER, MYSQL_SERVER_VERSION, SYSTEM_TYPE, MACHINE_TYPE);
|
||||||
|
puts("MySQL utility for upgrading databases to new MySQL versions\n");
|
||||||
my_print_help(my_long_options);
|
my_print_help(my_long_options);
|
||||||
exit(0);
|
exit(0);
|
||||||
break;
|
break;
|
||||||
@ -209,6 +218,7 @@ get_one_option(int optid, const struct my_option *opt,
|
|||||||
case '#':
|
case '#':
|
||||||
DBUG_PUSH(argument ? argument : default_dbug_option);
|
DBUG_PUSH(argument ? argument : default_dbug_option);
|
||||||
add_option= FALSE;
|
add_option= FALSE;
|
||||||
|
debug_check_flag= 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'p':
|
case 'p':
|
||||||
@ -732,6 +742,10 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
if (handle_options(&argc, &argv, my_long_options, get_one_option))
|
if (handle_options(&argc, &argv, my_long_options, get_one_option))
|
||||||
die(NULL);
|
die(NULL);
|
||||||
|
if (debug_info_flag)
|
||||||
|
my_end_arg= MY_CHECK_ERROR | MY_GIVE_INFO;
|
||||||
|
if (debug_check_flag)
|
||||||
|
my_end_arg= MY_CHECK_ERROR;
|
||||||
|
|
||||||
if (tty_password)
|
if (tty_password)
|
||||||
{
|
{
|
||||||
@ -780,7 +794,7 @@ int main(int argc, char **argv)
|
|||||||
create_mysql_upgrade_info_file();
|
create_mysql_upgrade_info_file();
|
||||||
|
|
||||||
free_used_memory();
|
free_used_memory();
|
||||||
my_end(MY_CHECK_ERROR);
|
my_end(my_end_arg);
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,9 +40,10 @@ ulonglong last_values[MAX_MYSQL_VAR];
|
|||||||
static int interval=0;
|
static int interval=0;
|
||||||
static my_bool option_force=0,interrupted=0,new_line=0,
|
static my_bool option_force=0,interrupted=0,new_line=0,
|
||||||
opt_compress=0, opt_relative=0, opt_verbose=0, opt_vertical=0,
|
opt_compress=0, opt_relative=0, opt_verbose=0, opt_vertical=0,
|
||||||
tty_password= 0, info_flag= 0, opt_nobeep;
|
tty_password= 0, opt_nobeep;
|
||||||
static uint tcp_port = 0, option_wait = 0, option_silent=0, nr_iterations,
|
static my_bool debug_info_flag= 0, debug_check_flag= 0;
|
||||||
opt_count_iterations= 0;
|
static uint tcp_port = 0, option_wait = 0, option_silent=0, nr_iterations;
|
||||||
|
static uint opt_count_iterations= 0, my_end_arg;
|
||||||
static ulong opt_connect_timeout, opt_shutdown_timeout;
|
static ulong opt_connect_timeout, opt_shutdown_timeout;
|
||||||
static char * unix_port=0;
|
static char * unix_port=0;
|
||||||
#ifdef LATER_HAVE_NDBCLUSTER_DB
|
#ifdef LATER_HAVE_NDBCLUSTER_DB
|
||||||
@ -134,10 +135,16 @@ static struct my_option my_long_options[] =
|
|||||||
"Number of iterations to make. This works with -i (--sleep) only.",
|
"Number of iterations to make. This works with -i (--sleep) only.",
|
||||||
(uchar**) &nr_iterations, (uchar**) &nr_iterations, 0, GET_UINT,
|
(uchar**) &nr_iterations, (uchar**) &nr_iterations, 0, GET_UINT,
|
||||||
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
|
#ifndef DBUG_OFF
|
||||||
{"debug", '#', "Output debug log. Often this is 'd:t:o,filename'.",
|
{"debug", '#', "Output debug log. Often this is 'd:t:o,filename'.",
|
||||||
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
{"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.", (uchar**) &info_flag,
|
#endif
|
||||||
(uchar**) &info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
{"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit .",
|
||||||
|
(uchar**) &debug_check_flag, (uchar**) &debug_check_flag, 0,
|
||||||
|
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
|
{"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.",
|
||||||
|
(uchar**) &debug_info_flag, (uchar**) &debug_info_flag,
|
||||||
|
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
{"force", 'f',
|
{"force", 'f',
|
||||||
"Don't ask for confirmation on drop database; with multiple commands, continue even if an error occurs.",
|
"Don't ask for confirmation on drop database; with multiple commands, continue even if an error occurs.",
|
||||||
(uchar**) &option_force, (uchar**) &option_force, 0, GET_BOOL, NO_ARG, 0, 0,
|
(uchar**) &option_force, (uchar**) &option_force, 0, GET_BOOL, NO_ARG, 0, 0,
|
||||||
@ -315,6 +322,10 @@ int main(int argc,char *argv[])
|
|||||||
free_defaults(save_argv);
|
free_defaults(save_argv);
|
||||||
exit(ho_error);
|
exit(ho_error);
|
||||||
}
|
}
|
||||||
|
if (debug_info_flag)
|
||||||
|
my_end_arg= MY_CHECK_ERROR | MY_GIVE_INFO;
|
||||||
|
if (debug_check_flag)
|
||||||
|
my_end_arg= MY_CHECK_ERROR;
|
||||||
|
|
||||||
if (argc == 0)
|
if (argc == 0)
|
||||||
{
|
{
|
||||||
@ -413,7 +424,7 @@ int main(int argc,char *argv[])
|
|||||||
my_free(shared_memory_base_name,MYF(MY_ALLOW_ZERO_PTR));
|
my_free(shared_memory_base_name,MYF(MY_ALLOW_ZERO_PTR));
|
||||||
#endif
|
#endif
|
||||||
free_defaults(save_argv);
|
free_defaults(save_argv);
|
||||||
my_end(info_flag ? MY_CHECK_ERROR : 0);
|
my_end(my_end_arg);
|
||||||
exit(error ? 1 : 0);
|
exit(error ? 1 : 0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -65,11 +65,13 @@ static bool one_database=0, to_last_remote_log= 0, disable_log_bin= 0;
|
|||||||
static bool opt_hexdump= 0;
|
static bool opt_hexdump= 0;
|
||||||
static bool opt_base64_output= 0;
|
static bool opt_base64_output= 0;
|
||||||
static const char* database= 0;
|
static const char* database= 0;
|
||||||
static my_bool force_opt= 0, short_form= 0, remote_opt= 0, info_flag;
|
static my_bool force_opt= 0, short_form= 0, remote_opt= 0;
|
||||||
|
static my_bool debug_info_flag, debug_check_flag;
|
||||||
static my_bool force_if_open_opt= 1;
|
static my_bool force_if_open_opt= 1;
|
||||||
static ulonglong offset = 0;
|
static ulonglong offset = 0;
|
||||||
static const char* host = 0;
|
static const char* host = 0;
|
||||||
static int port= 0;
|
static int port= 0;
|
||||||
|
static uint my_end_arg;
|
||||||
static const char* sock= 0;
|
static const char* sock= 0;
|
||||||
static const char* user = 0;
|
static const char* user = 0;
|
||||||
static char* pass = 0;
|
static char* pass = 0;
|
||||||
@ -727,8 +729,12 @@ static struct my_option my_long_options[] =
|
|||||||
{"debug", '#', "Output debug log.", (uchar**) &default_dbug_option,
|
{"debug", '#', "Output debug log.", (uchar**) &default_dbug_option,
|
||||||
(uchar**) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
(uchar**) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
#endif
|
#endif
|
||||||
{"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.", (uchar**) &info_flag,
|
{"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit .",
|
||||||
(uchar**) &info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
(uchar**) &debug_check_flag, (uchar**) &debug_check_flag, 0,
|
||||||
|
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
|
{"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.",
|
||||||
|
(uchar**) &debug_info_flag, (uchar**) &debug_info_flag,
|
||||||
|
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
{"disable-log-bin", 'D', "Disable binary log. This is useful, if you "
|
{"disable-log-bin", 'D', "Disable binary log. This is useful, if you "
|
||||||
"enabled --to-last-log and are sending the output to the same MySQL server. "
|
"enabled --to-last-log and are sending the output to the same MySQL server. "
|
||||||
"This way you could avoid an endless loop. You would also like to use it "
|
"This way you could avoid an endless loop. You would also like to use it "
|
||||||
@ -860,7 +866,7 @@ static void die(const char* fmt, ...)
|
|||||||
va_end(args);
|
va_end(args);
|
||||||
cleanup();
|
cleanup();
|
||||||
/* We cannot free DBUG, it is used in global destructors after exit(). */
|
/* We cannot free DBUG, it is used in global destructors after exit(). */
|
||||||
my_end((info_flag ? MY_CHECK_ERROR : 0) | MY_DONT_FREE_DBUG);
|
my_end(my_end_arg | MY_DONT_FREE_DBUG);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -868,7 +874,7 @@ static void die(const char* fmt, ...)
|
|||||||
|
|
||||||
static void print_version()
|
static void print_version()
|
||||||
{
|
{
|
||||||
printf("%s Ver 3.2 for %s at %s\n", my_progname, SYSTEM_TYPE, MACHINE_TYPE);
|
printf("%s Ver 3.3 for %s at %s\n", my_progname, SYSTEM_TYPE, MACHINE_TYPE);
|
||||||
NETWARE_SET_SCREEN_MODE(1);
|
NETWARE_SET_SCREEN_MODE(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -984,7 +990,10 @@ static int parse_args(int *argc, char*** argv)
|
|||||||
load_defaults("my",load_default_groups,argc,argv);
|
load_defaults("my",load_default_groups,argc,argv);
|
||||||
if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option)))
|
if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option)))
|
||||||
exit(ho_error);
|
exit(ho_error);
|
||||||
|
if (debug_info_flag)
|
||||||
|
my_end_arg= MY_CHECK_ERROR | MY_GIVE_INFO;
|
||||||
|
if (debug_check_flag)
|
||||||
|
my_end_arg= MY_CHECK_ERROR;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1078,6 +1087,7 @@ static int check_master_version(MYSQL *mysql_arg,
|
|||||||
break;
|
break;
|
||||||
case '4':
|
case '4':
|
||||||
*description_event= new Format_description_log_event(3);
|
*description_event= new Format_description_log_event(3);
|
||||||
|
break;
|
||||||
case '5':
|
case '5':
|
||||||
/*
|
/*
|
||||||
The server is soon going to send us its Format_description log
|
The server is soon going to send us its Format_description log
|
||||||
@ -1301,9 +1311,15 @@ static void check_header(IO_CACHE* file,
|
|||||||
pos= my_b_tell(file);
|
pos= my_b_tell(file);
|
||||||
my_b_seek(file, (my_off_t)0);
|
my_b_seek(file, (my_off_t)0);
|
||||||
if (my_b_read(file, header, sizeof(header)))
|
if (my_b_read(file, header, sizeof(header)))
|
||||||
|
{
|
||||||
|
delete *description_event;
|
||||||
die("Failed reading header; Probably an empty file");
|
die("Failed reading header; Probably an empty file");
|
||||||
|
}
|
||||||
if (memcmp(header, BINLOG_MAGIC, sizeof(header)))
|
if (memcmp(header, BINLOG_MAGIC, sizeof(header)))
|
||||||
|
{
|
||||||
|
delete *description_event;
|
||||||
die("File is not a binary log file");
|
die("File is not a binary log file");
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Imagine we are running with --start-position=1000. We still need
|
Imagine we are running with --start-position=1000. We still need
|
||||||
@ -1324,9 +1340,12 @@ static void check_header(IO_CACHE* file,
|
|||||||
if (my_b_read(file, buf, sizeof(buf)))
|
if (my_b_read(file, buf, sizeof(buf)))
|
||||||
{
|
{
|
||||||
if (file->error)
|
if (file->error)
|
||||||
|
{
|
||||||
|
delete *description_event;
|
||||||
die("\
|
die("\
|
||||||
Could not read entry at offset %lu : Error in log format or read error",
|
Could not read entry at offset %lu : Error in log format or read error",
|
||||||
tmp_pos);
|
tmp_pos);
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
Otherwise this is just EOF : this log currently contains 0-2
|
Otherwise this is just EOF : this log currently contains 0-2
|
||||||
events. Maybe it's going to be filled in the next
|
events. Maybe it's going to be filled in the next
|
||||||
@ -1362,13 +1381,19 @@ Could not read entry at offset %lu : Error in log format or read error",
|
|||||||
break;
|
break;
|
||||||
else if (buf[4] == FORMAT_DESCRIPTION_EVENT) /* This is 5.0 */
|
else if (buf[4] == FORMAT_DESCRIPTION_EVENT) /* This is 5.0 */
|
||||||
{
|
{
|
||||||
|
Format_description_log_event *new_description_event;
|
||||||
my_b_seek(file, tmp_pos); /* seek back to event's start */
|
my_b_seek(file, tmp_pos); /* seek back to event's start */
|
||||||
if (!(*description_event= (Format_description_log_event*)
|
if (!(new_description_event= (Format_description_log_event*)
|
||||||
Log_event::read_log_event(file, *description_event)))
|
Log_event::read_log_event(file, *description_event)))
|
||||||
/* EOF can't be hit here normally, so it's a real error */
|
/* EOF can't be hit here normally, so it's a real error */
|
||||||
|
{
|
||||||
|
delete *description_event;
|
||||||
die("Could not read a Format_description_log_event event \
|
die("Could not read a Format_description_log_event event \
|
||||||
at offset %lu ; this could be a log format error or read error",
|
at offset %lu ; this could be a log format error or read error",
|
||||||
tmp_pos);
|
tmp_pos);
|
||||||
|
}
|
||||||
|
delete *description_event;
|
||||||
|
*description_event= new_description_event;
|
||||||
DBUG_PRINT("info",("Setting description_event"));
|
DBUG_PRINT("info",("Setting description_event"));
|
||||||
}
|
}
|
||||||
else if (buf[4] == ROTATE_EVENT)
|
else if (buf[4] == ROTATE_EVENT)
|
||||||
@ -1377,8 +1402,11 @@ at offset %lu ; this could be a log format error or read error",
|
|||||||
my_b_seek(file, tmp_pos); /* seek back to event's start */
|
my_b_seek(file, tmp_pos); /* seek back to event's start */
|
||||||
if (!(ev= Log_event::read_log_event(file, *description_event)))
|
if (!(ev= Log_event::read_log_event(file, *description_event)))
|
||||||
/* EOF can't be hit here normally, so it's a real error */
|
/* EOF can't be hit here normally, so it's a real error */
|
||||||
|
{
|
||||||
|
delete *description_event;
|
||||||
die("Could not read a Rotate_log_event event at offset %lu ;"
|
die("Could not read a Rotate_log_event event at offset %lu ;"
|
||||||
" this could be a log format error or read error", tmp_pos);
|
" this could be a log format error or read error", tmp_pos);
|
||||||
|
}
|
||||||
delete ev;
|
delete ev;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1448,7 +1476,10 @@ static int dump_local_log_entries(PRINT_EVENT_INFO *print_event_info,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!glob_description_event || !glob_description_event->is_valid())
|
if (!glob_description_event || !glob_description_event->is_valid())
|
||||||
|
{
|
||||||
|
delete glob_description_event;
|
||||||
die("Invalid Format_description log event; could be out of memory");
|
die("Invalid Format_description log event; could be out of memory");
|
||||||
|
}
|
||||||
|
|
||||||
if (!start_position && my_b_read(file, tmp_buff, BIN_LOG_HEADER_SIZE))
|
if (!start_position && my_b_read(file, tmp_buff, BIN_LOG_HEADER_SIZE))
|
||||||
{
|
{
|
||||||
@ -1597,7 +1628,7 @@ int main(int argc, char** argv)
|
|||||||
my_free_open_file_info();
|
my_free_open_file_info();
|
||||||
load_processor.destroy();
|
load_processor.destroy();
|
||||||
/* We cannot free DBUG, it is used in global destructors after exit(). */
|
/* We cannot free DBUG, it is used in global destructors after exit(). */
|
||||||
my_end((info_flag ? MY_CHECK_ERROR : 0) | MY_DONT_FREE_DBUG);
|
my_end(my_end_arg | MY_DONT_FREE_DBUG);
|
||||||
|
|
||||||
if (file_not_closed_error)
|
if (file_not_closed_error)
|
||||||
{
|
{
|
||||||
@ -1617,17 +1648,9 @@ int main(int argc, char** argv)
|
|||||||
the server
|
the server
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if defined(__WIN__) && !defined(USING_CMAKE)
|
|
||||||
#include "my_decimal.h"
|
|
||||||
#include "decimal.c"
|
|
||||||
#include "my_decimal.cpp"
|
|
||||||
#include "log_event.cpp"
|
|
||||||
#include "log_event_old.cpp"
|
|
||||||
#else
|
|
||||||
#include "my_decimal.h"
|
#include "my_decimal.h"
|
||||||
#include "decimal.c"
|
#include "decimal.c"
|
||||||
#include "my_decimal.cc"
|
#include "my_decimal.cc"
|
||||||
#include "log_event.cc"
|
#include "log_event.cc"
|
||||||
#include "log_event_old.cc"
|
#include "log_event_old.cc"
|
||||||
#endif
|
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
/* By Jani Tolonen, 2001-04-20, MySQL Development Team */
|
/* By Jani Tolonen, 2001-04-20, MySQL Development Team */
|
||||||
|
|
||||||
#define CHECK_VERSION "2.4.5"
|
#define CHECK_VERSION "2.5.0"
|
||||||
|
|
||||||
#include "client_priv.h"
|
#include "client_priv.h"
|
||||||
#include <m_ctype.h>
|
#include <m_ctype.h>
|
||||||
@ -33,10 +33,11 @@ static my_bool opt_alldbs = 0, opt_check_only_changed = 0, opt_extended = 0,
|
|||||||
opt_compress = 0, opt_databases = 0, opt_fast = 0,
|
opt_compress = 0, opt_databases = 0, opt_fast = 0,
|
||||||
opt_medium_check = 0, opt_quick = 0, opt_all_in_1 = 0,
|
opt_medium_check = 0, opt_quick = 0, opt_all_in_1 = 0,
|
||||||
opt_silent = 0, opt_auto_repair = 0, ignore_errors = 0,
|
opt_silent = 0, opt_auto_repair = 0, ignore_errors = 0,
|
||||||
tty_password= 0, opt_frm= 0, info_flag= 0,
|
tty_password= 0, opt_frm= 0, debug_info_flag= 0, debug_check_flag= 0,
|
||||||
opt_fix_table_names= 0, opt_fix_db_names= 0, opt_upgrade= 0,
|
opt_fix_table_names= 0, opt_fix_db_names= 0, opt_upgrade= 0,
|
||||||
opt_write_binlog= 1;
|
opt_write_binlog= 1;
|
||||||
static uint verbose = 0, opt_mysql_port=0;
|
static uint verbose = 0, opt_mysql_port=0;
|
||||||
|
static int my_end_arg;
|
||||||
static char * opt_mysql_unix_port = 0;
|
static char * opt_mysql_unix_port = 0;
|
||||||
static char *opt_password = 0, *current_user = 0,
|
static char *opt_password = 0, *current_user = 0,
|
||||||
*default_charset = (char *)MYSQL_DEFAULT_CHARSET_NAME,
|
*default_charset = (char *)MYSQL_DEFAULT_CHARSET_NAME,
|
||||||
@ -96,8 +97,12 @@ static struct my_option my_long_options[] =
|
|||||||
{"debug", '#', "Output debug log. Often this is 'd:t:o,filename'.",
|
{"debug", '#', "Output debug log. Often this is 'd:t:o,filename'.",
|
||||||
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
#endif
|
#endif
|
||||||
{"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.", (uchar**) &info_flag,
|
{"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit .",
|
||||||
(uchar**) &info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
(uchar**) &debug_check_flag, (uchar**) &debug_check_flag, 0,
|
||||||
|
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
|
{"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.",
|
||||||
|
(uchar**) &debug_info_flag, (uchar**) &debug_info_flag,
|
||||||
|
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
{"default-character-set", OPT_DEFAULT_CHARSET,
|
{"default-character-set", OPT_DEFAULT_CHARSET,
|
||||||
"Set the default character set.", (uchar**) &default_charset,
|
"Set the default character set.", (uchar**) &default_charset,
|
||||||
(uchar**) &default_charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
(uchar**) &default_charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
@ -305,6 +310,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
|||||||
break;
|
break;
|
||||||
case '#':
|
case '#':
|
||||||
DBUG_PUSH(argument ? argument : "d:t:o");
|
DBUG_PUSH(argument ? argument : "d:t:o");
|
||||||
|
debug_check_flag= 1;
|
||||||
break;
|
break;
|
||||||
#include <sslopt-case.h>
|
#include <sslopt-case.h>
|
||||||
case OPT_TABLES:
|
case OPT_TABLES:
|
||||||
@ -375,6 +381,10 @@ static int get_options(int *argc, char ***argv)
|
|||||||
}
|
}
|
||||||
if (tty_password)
|
if (tty_password)
|
||||||
opt_password = get_tty_password(NullS);
|
opt_password = get_tty_password(NullS);
|
||||||
|
if (debug_info_flag)
|
||||||
|
my_end_arg= MY_CHECK_ERROR | MY_GIVE_INFO;
|
||||||
|
if (debug_check_flag)
|
||||||
|
my_end_arg= MY_CHECK_ERROR;
|
||||||
return(0);
|
return(0);
|
||||||
} /* get_options */
|
} /* get_options */
|
||||||
|
|
||||||
@ -762,7 +772,7 @@ int main(int argc, char **argv)
|
|||||||
*/
|
*/
|
||||||
if (get_options(&argc, &argv))
|
if (get_options(&argc, &argv))
|
||||||
{
|
{
|
||||||
my_end(info_flag ? MY_CHECK_ERROR : 0);
|
my_end(my_end_arg);
|
||||||
exit(EX_USAGE);
|
exit(EX_USAGE);
|
||||||
}
|
}
|
||||||
if (dbConnect(current_host, current_user, opt_password))
|
if (dbConnect(current_host, current_user, opt_password))
|
||||||
@ -804,6 +814,6 @@ int main(int argc, char **argv)
|
|||||||
#ifdef HAVE_SMEM
|
#ifdef HAVE_SMEM
|
||||||
my_free(shared_memory_base_name,MYF(MY_ALLOW_ZERO_PTR));
|
my_free(shared_memory_base_name,MYF(MY_ALLOW_ZERO_PTR));
|
||||||
#endif
|
#endif
|
||||||
my_end(info_flag ? MY_CHECK_ERROR : 0);
|
my_end(my_end_arg);
|
||||||
return(first_error!=0);
|
return(first_error!=0);
|
||||||
} /* main */
|
} /* main */
|
||||||
|
@ -36,7 +36,7 @@
|
|||||||
** 10 Jun 2003: SET NAMES and --no-set-names by Alexander Barkov
|
** 10 Jun 2003: SET NAMES and --no-set-names by Alexander Barkov
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define DUMP_VERSION "10.12"
|
#define DUMP_VERSION "10.13"
|
||||||
|
|
||||||
#include <my_global.h>
|
#include <my_global.h>
|
||||||
#include <my_sys.h>
|
#include <my_sys.h>
|
||||||
@ -100,9 +100,9 @@ static my_bool verbose= 0, opt_no_create_info= 0, opt_no_data= 0,
|
|||||||
opt_dump_triggers= 0, opt_routines=0, opt_tz_utc=1,
|
opt_dump_triggers= 0, opt_routines=0, opt_tz_utc=1,
|
||||||
opt_events= 0,
|
opt_events= 0,
|
||||||
opt_alltspcs=0, opt_notspcs= 0;
|
opt_alltspcs=0, opt_notspcs= 0;
|
||||||
|
static my_bool insert_pat_inited= 0, debug_info_flag= 0, debug_check_flag= 0;
|
||||||
static ulong opt_max_allowed_packet, opt_net_buffer_length;
|
static ulong opt_max_allowed_packet, opt_net_buffer_length;
|
||||||
static MYSQL mysql_connection,*mysql=0;
|
static MYSQL mysql_connection,*mysql=0;
|
||||||
static my_bool insert_pat_inited= 0, info_flag;
|
|
||||||
static DYNAMIC_STRING insert_pat;
|
static DYNAMIC_STRING insert_pat;
|
||||||
static char *opt_password=0,*current_user=0,
|
static char *opt_password=0,*current_user=0,
|
||||||
*current_host=0,*path=0,*fields_terminated=0,
|
*current_host=0,*path=0,*fields_terminated=0,
|
||||||
@ -116,7 +116,8 @@ static char compatible_mode_normal_str[255];
|
|||||||
static ulong opt_compatible_mode= 0;
|
static ulong opt_compatible_mode= 0;
|
||||||
#define MYSQL_OPT_MASTER_DATA_EFFECTIVE_SQL 1
|
#define MYSQL_OPT_MASTER_DATA_EFFECTIVE_SQL 1
|
||||||
#define MYSQL_OPT_MASTER_DATA_COMMENTED_SQL 2
|
#define MYSQL_OPT_MASTER_DATA_COMMENTED_SQL 2
|
||||||
static uint opt_mysql_port= 0, opt_master_data;
|
static uint opt_mysql_port= 0, opt_master_data;
|
||||||
|
static uint my_end_arg;
|
||||||
static char * opt_mysql_unix_port=0;
|
static char * opt_mysql_unix_port=0;
|
||||||
static int first_error=0;
|
static int first_error=0;
|
||||||
static DYNAMIC_STRING extended_row;
|
static DYNAMIC_STRING extended_row;
|
||||||
@ -242,8 +243,12 @@ static struct my_option my_long_options[] =
|
|||||||
{"debug", '#', "Output debug log", (uchar**) &default_dbug_option,
|
{"debug", '#', "Output debug log", (uchar**) &default_dbug_option,
|
||||||
(uchar**) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
(uchar**) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
#endif
|
#endif
|
||||||
{"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.", (uchar**) &info_flag,
|
{"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit .",
|
||||||
(uchar**) &info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
(uchar**) &debug_check_flag, (uchar**) &debug_check_flag, 0,
|
||||||
|
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
|
{"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.",
|
||||||
|
(uchar**) &debug_info_flag, (uchar**) &debug_info_flag,
|
||||||
|
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
{"default-character-set", OPT_DEFAULT_CHARSET,
|
{"default-character-set", OPT_DEFAULT_CHARSET,
|
||||||
"Set the default character set.", (uchar**) &default_charset,
|
"Set the default character set.", (uchar**) &default_charset,
|
||||||
(uchar**) &default_charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
(uchar**) &default_charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
@ -724,7 +729,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
|||||||
break;
|
break;
|
||||||
case '#':
|
case '#':
|
||||||
DBUG_PUSH(argument ? argument : default_dbug_option);
|
DBUG_PUSH(argument ? argument : default_dbug_option);
|
||||||
info_flag= 1;
|
debug_check_flag= 1;
|
||||||
break;
|
break;
|
||||||
#include <sslopt-case.h>
|
#include <sslopt-case.h>
|
||||||
case 'V': print_version(); exit(0);
|
case 'V': print_version(); exit(0);
|
||||||
@ -858,6 +863,10 @@ static int get_options(int *argc, char ***argv)
|
|||||||
|
|
||||||
*mysql_params->p_max_allowed_packet= opt_max_allowed_packet;
|
*mysql_params->p_max_allowed_packet= opt_max_allowed_packet;
|
||||||
*mysql_params->p_net_buffer_length= opt_net_buffer_length;
|
*mysql_params->p_net_buffer_length= opt_net_buffer_length;
|
||||||
|
if (debug_info_flag)
|
||||||
|
my_end_arg= MY_CHECK_ERROR | MY_GIVE_INFO;
|
||||||
|
if (debug_check_flag)
|
||||||
|
my_end_arg= MY_CHECK_ERROR;
|
||||||
|
|
||||||
if (opt_delayed)
|
if (opt_delayed)
|
||||||
opt_lock=0; /* Can't have lock with delayed */
|
opt_lock=0; /* Can't have lock with delayed */
|
||||||
@ -1227,6 +1236,125 @@ static int switch_character_set_results(MYSQL *mysql, const char *cs_name)
|
|||||||
return mysql_real_query(mysql, query_buffer, query_length);
|
return mysql_real_query(mysql, query_buffer, query_length);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Rewrite CREATE TRIGGER statement, enclosing DEFINER clause in
|
||||||
|
version-specific comment.
|
||||||
|
|
||||||
|
This function parses the CREATE TRIGGER statement and encloses
|
||||||
|
DEFINER-clause in version-specific comment:
|
||||||
|
input query: CREATE DEFINER=a@b TRIGGER ...
|
||||||
|
rewritten query: CREATE * / / *!50017 DEFINER=a@b * / / *!50003 TRIGGER ...
|
||||||
|
|
||||||
|
@note This function will go away when WL#3995 is implemented.
|
||||||
|
|
||||||
|
@param[in] trigger_def_str CREATE TRIGGER statement string.
|
||||||
|
@param[in] trigger_def_length length of the trigger_def_str.
|
||||||
|
|
||||||
|
@return pointer to the new allocated query string.
|
||||||
|
*/
|
||||||
|
|
||||||
|
static char *cover_definer_clause_in_trigger(const char *trigger_def_str,
|
||||||
|
uint trigger_def_length)
|
||||||
|
{
|
||||||
|
char *query_str= NULL;
|
||||||
|
char *definer_begin= my_case_str(trigger_def_str, trigger_def_length,
|
||||||
|
C_STRING_WITH_LEN(" DEFINER"));
|
||||||
|
char *definer_end;
|
||||||
|
|
||||||
|
if (!definer_begin)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
definer_end= my_case_str(definer_begin, strlen(definer_begin),
|
||||||
|
C_STRING_WITH_LEN(" TRIGGER"));
|
||||||
|
|
||||||
|
if (definer_end)
|
||||||
|
{
|
||||||
|
char *query_str_tail;
|
||||||
|
|
||||||
|
/*
|
||||||
|
Allocate memory for new query string: original string
|
||||||
|
from SHOW statement and version-specific comments.
|
||||||
|
*/
|
||||||
|
query_str= alloc_query_str(trigger_def_length + 23);
|
||||||
|
|
||||||
|
query_str_tail= strnmov(query_str,
|
||||||
|
trigger_def_str,
|
||||||
|
definer_begin - trigger_def_str);
|
||||||
|
|
||||||
|
query_str_tail= strmov(query_str_tail,
|
||||||
|
"*/ /*!50017");
|
||||||
|
|
||||||
|
query_str_tail= strnmov(query_str_tail,
|
||||||
|
definer_begin,
|
||||||
|
definer_end - definer_begin);
|
||||||
|
|
||||||
|
query_str_tail= strxmov(query_str_tail,
|
||||||
|
"*/ /*!50003",
|
||||||
|
definer_end,
|
||||||
|
NullS);
|
||||||
|
}
|
||||||
|
|
||||||
|
return query_str;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Rewrite CREATE FUNCTION or CREATE PROCEDURE statement, enclosing DEFINER
|
||||||
|
clause in version-specific comment.
|
||||||
|
|
||||||
|
This function parses the CREATE FUNCTION | PROCEDURE statement and
|
||||||
|
encloses DEFINER-clause in version-specific comment:
|
||||||
|
input query: CREATE DEFINER=a@b FUNCTION ...
|
||||||
|
rewritten query: CREATE * / / *!50020 DEFINER=a@b * / / *!50003 FUNCTION ...
|
||||||
|
|
||||||
|
@note This function will go away when WL#3995 is implemented.
|
||||||
|
|
||||||
|
@param[in] def_str CREATE FUNCTION|PROCEDURE statement string.
|
||||||
|
@param[in] def_length length of the def_str.
|
||||||
|
|
||||||
|
@return pointer to the new allocated query string.
|
||||||
|
*/
|
||||||
|
|
||||||
|
static char *cover_definer_clause_in_sp(const char *def_str,
|
||||||
|
uint def_str_length)
|
||||||
|
{
|
||||||
|
char *query_str= NULL;
|
||||||
|
char *definer_begin= my_case_str(def_str, def_str_length,
|
||||||
|
C_STRING_WITH_LEN(" DEFINER"));
|
||||||
|
char *definer_end;
|
||||||
|
|
||||||
|
if (!definer_begin)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
definer_end= my_case_str(definer_begin, strlen(definer_begin),
|
||||||
|
C_STRING_WITH_LEN(" PROCEDURE"));
|
||||||
|
|
||||||
|
if (!definer_end)
|
||||||
|
{
|
||||||
|
definer_end= my_case_str(definer_begin, strlen(definer_begin),
|
||||||
|
C_STRING_WITH_LEN(" FUNCTION"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (definer_end)
|
||||||
|
{
|
||||||
|
char *query_str_tail;
|
||||||
|
|
||||||
|
/*
|
||||||
|
Allocate memory for new query string: original string
|
||||||
|
from SHOW statement and version-specific comments.
|
||||||
|
*/
|
||||||
|
query_str= alloc_query_str(def_str_length + 23);
|
||||||
|
|
||||||
|
query_str_tail= strnmov(query_str, def_str, definer_begin - def_str);
|
||||||
|
query_str_tail= strmov(query_str_tail, "*/ /*!50020");
|
||||||
|
query_str_tail= strnmov(query_str_tail, definer_begin,
|
||||||
|
definer_end - definer_begin);
|
||||||
|
query_str_tail= strxmov(query_str_tail, "*/ /*!50003",
|
||||||
|
definer_end, NullS);
|
||||||
|
}
|
||||||
|
|
||||||
|
return query_str;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Open a new .sql file to dump the table or view into
|
Open a new .sql file to dump the table or view into
|
||||||
|
|
||||||
@ -1262,7 +1390,7 @@ static void free_resources()
|
|||||||
dynstr_free(&insert_pat);
|
dynstr_free(&insert_pat);
|
||||||
if (defaults_argv)
|
if (defaults_argv)
|
||||||
free_defaults(defaults_argv);
|
free_defaults(defaults_argv);
|
||||||
my_end(info_flag ? MY_CHECK_ERROR : 0);
|
my_end(my_end_arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1701,7 +1829,7 @@ static uint dump_events_for_db(char *db)
|
|||||||
MYSQL_ROW row, event_list_row;
|
MYSQL_ROW row, event_list_row;
|
||||||
|
|
||||||
char db_cl_name[MY_CS_NAME_SIZE];
|
char db_cl_name[MY_CS_NAME_SIZE];
|
||||||
int db_cl_altered;
|
int db_cl_altered= FALSE;
|
||||||
|
|
||||||
DBUG_ENTER("dump_events_for_db");
|
DBUG_ENTER("dump_events_for_db");
|
||||||
DBUG_PRINT("enter", ("db: '%s'", db));
|
DBUG_PRINT("enter", ("db: '%s'", db));
|
||||||
@ -1766,16 +1894,36 @@ static uint dump_events_for_db(char *db)
|
|||||||
|
|
||||||
fprintf(sql_file, "DELIMITER %s\n", delimiter);
|
fprintf(sql_file, "DELIMITER %s\n", delimiter);
|
||||||
|
|
||||||
if (switch_db_collation(sql_file, db_name_buff, delimiter, db_cl_name,
|
if (mysql_num_fields(event_res) >= 7)
|
||||||
row[6], &db_cl_altered))
|
|
||||||
{
|
{
|
||||||
DBUG_RETURN(1);
|
if (switch_db_collation(sql_file, db_name_buff, delimiter,
|
||||||
}
|
db_cl_name, row[6], &db_cl_altered))
|
||||||
|
{
|
||||||
|
DBUG_RETURN(1);
|
||||||
|
}
|
||||||
|
|
||||||
switch_cs_variables(sql_file, delimiter,
|
switch_cs_variables(sql_file, delimiter,
|
||||||
row[4], /* character_set_client */
|
row[4], /* character_set_client */
|
||||||
row[4], /* character_set_results */
|
row[4], /* character_set_results */
|
||||||
row[5]); /* collation_connection */
|
row[5]); /* collation_connection */
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
mysqldump is being run against the server, that does not
|
||||||
|
provide character set information in SHOW CREATE
|
||||||
|
statements.
|
||||||
|
|
||||||
|
NOTE: the dump may be incorrect, since character set
|
||||||
|
information is required in order to restore event properly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
fprintf(sql_file,
|
||||||
|
"--\n"
|
||||||
|
"-- WARNING: old server version. "
|
||||||
|
"The following dump may be incomplete.\n"
|
||||||
|
"--\n");
|
||||||
|
}
|
||||||
|
|
||||||
switch_sql_mode(sql_file, delimiter, row[1]);
|
switch_sql_mode(sql_file, delimiter, row[1]);
|
||||||
|
|
||||||
@ -1788,13 +1936,17 @@ static uint dump_events_for_db(char *db)
|
|||||||
|
|
||||||
restore_time_zone(sql_file, delimiter);
|
restore_time_zone(sql_file, delimiter);
|
||||||
restore_sql_mode(sql_file, delimiter);
|
restore_sql_mode(sql_file, delimiter);
|
||||||
restore_cs_variables(sql_file, delimiter);
|
|
||||||
|
|
||||||
if (db_cl_altered)
|
if (mysql_num_fields(event_res) >= 7)
|
||||||
{
|
{
|
||||||
if (restore_db_collation(sql_file, db_name_buff, delimiter,
|
restore_cs_variables(sql_file, delimiter);
|
||||||
db_cl_name))
|
|
||||||
DBUG_RETURN(1);
|
if (db_cl_altered)
|
||||||
|
{
|
||||||
|
if (restore_db_collation(sql_file, db_name_buff, delimiter,
|
||||||
|
db_cl_name))
|
||||||
|
DBUG_RETURN(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} /* end of event printing */
|
} /* end of event printing */
|
||||||
@ -1862,7 +2014,7 @@ static uint dump_routines_for_db(char *db)
|
|||||||
MYSQL_ROW row, routine_list_row;
|
MYSQL_ROW row, routine_list_row;
|
||||||
|
|
||||||
char db_cl_name[MY_CS_NAME_SIZE];
|
char db_cl_name[MY_CS_NAME_SIZE];
|
||||||
int db_cl_altered;
|
int db_cl_altered= FALSE;
|
||||||
|
|
||||||
DBUG_ENTER("dump_routines_for_db");
|
DBUG_ENTER("dump_routines_for_db");
|
||||||
DBUG_PRINT("enter", ("db: '%s'", db));
|
DBUG_PRINT("enter", ("db: '%s'", db));
|
||||||
@ -1929,74 +2081,45 @@ static uint dump_routines_for_db(char *db)
|
|||||||
}
|
}
|
||||||
else if (strlen(row[2]))
|
else if (strlen(row[2]))
|
||||||
{
|
{
|
||||||
char *query_str= NULL;
|
char *query_str;
|
||||||
char *definer_begin;
|
|
||||||
|
|
||||||
if (opt_drop)
|
if (opt_drop)
|
||||||
fprintf(sql_file, "/*!50003 DROP %s IF EXISTS %s */;\n",
|
fprintf(sql_file, "/*!50003 DROP %s IF EXISTS %s */;\n",
|
||||||
routine_type[i], routine_name);
|
routine_type[i], routine_name);
|
||||||
|
|
||||||
/*
|
query_str= cover_definer_clause_in_sp(row[2], strlen(row[2]));
|
||||||
Cover DEFINER-clause in version-specific comments.
|
|
||||||
|
|
||||||
TODO: this is definitely a BAD IDEA to parse SHOW CREATE output.
|
if (mysql_num_fields(routine_res) >= 6)
|
||||||
However, we can not use INFORMATION_SCHEMA instead:
|
|
||||||
1. INFORMATION_SCHEMA provides data in UTF8, but here we
|
|
||||||
need data in the original character set;
|
|
||||||
2. INFORMATION_SCHEMA does not provide information about
|
|
||||||
routine parameters now.
|
|
||||||
*/
|
|
||||||
|
|
||||||
definer_begin= my_case_str(row[2], strlen(row[2]),
|
|
||||||
C_STRING_WITH_LEN(" DEFINER"));
|
|
||||||
|
|
||||||
if (definer_begin)
|
|
||||||
{
|
{
|
||||||
char *definer_end= my_case_str(definer_begin,
|
if (switch_db_collation(sql_file, db_name_buff, ";",
|
||||||
strlen(definer_begin),
|
db_cl_name, row[5], &db_cl_altered))
|
||||||
C_STRING_WITH_LEN(" PROCEDURE"));
|
|
||||||
|
|
||||||
if (!definer_end)
|
|
||||||
{
|
{
|
||||||
definer_end= my_case_str(definer_begin, strlen(definer_begin),
|
DBUG_RETURN(1);
|
||||||
C_STRING_WITH_LEN(" FUNCTION"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (definer_end)
|
switch_cs_variables(sql_file, ";",
|
||||||
{
|
row[3], /* character_set_client */
|
||||||
char *query_str_tail;
|
row[3], /* character_set_results */
|
||||||
|
row[4]); /* collation_connection */
|
||||||
/*
|
|
||||||
Allocate memory for new query string: original string
|
|
||||||
from SHOW statement and version-specific comments.
|
|
||||||
*/
|
|
||||||
query_str= alloc_query_str(strlen(row[2]) + 23);
|
|
||||||
|
|
||||||
query_str_tail= strnmov(query_str, row[2],
|
|
||||||
definer_begin - row[2]);
|
|
||||||
query_str_tail= strmov(query_str_tail, "*/ /*!50020");
|
|
||||||
query_str_tail= strnmov(query_str_tail, definer_begin,
|
|
||||||
definer_end - definer_begin);
|
|
||||||
query_str_tail= strxmov(query_str_tail, "*/ /*!50003",
|
|
||||||
definer_end, NullS);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
/*
|
|
||||||
we need to change sql_mode only for the CREATE
|
|
||||||
PROCEDURE/FUNCTION otherwise we may need to re-quote routine_name
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (switch_db_collation(sql_file, db_name_buff, ";",
|
|
||||||
db_cl_name, row[5], &db_cl_altered))
|
|
||||||
{
|
{
|
||||||
DBUG_RETURN(1);
|
/*
|
||||||
|
mysqldump is being run against the server, that does not
|
||||||
|
provide character set information in SHOW CREATE
|
||||||
|
statements.
|
||||||
|
|
||||||
|
NOTE: the dump may be incorrect, since character set
|
||||||
|
information is required in order to restore stored
|
||||||
|
procedure/function properly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
fprintf(sql_file,
|
||||||
|
"--\n"
|
||||||
|
"-- WARNING: old server version. "
|
||||||
|
"The following dump may be incomplete.\n"
|
||||||
|
"--\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
switch_cs_variables(sql_file, ";",
|
|
||||||
row[3], /* character_set_client */
|
|
||||||
row[3], /* character_set_results */
|
|
||||||
row[4]); /* collation_connection */
|
|
||||||
|
|
||||||
switch_sql_mode(sql_file, ";", row[1]);
|
switch_sql_mode(sql_file, ";", row[1]);
|
||||||
|
|
||||||
@ -2007,12 +2130,16 @@ static uint dump_routines_for_db(char *db)
|
|||||||
(const char *) (query_str != NULL ? query_str : row[2]));
|
(const char *) (query_str != NULL ? query_str : row[2]));
|
||||||
|
|
||||||
restore_sql_mode(sql_file, ";");
|
restore_sql_mode(sql_file, ";");
|
||||||
restore_cs_variables(sql_file, ";");
|
|
||||||
|
|
||||||
if (db_cl_altered)
|
if (mysql_num_fields(routine_res) >= 6)
|
||||||
{
|
{
|
||||||
if (restore_db_collation(sql_file, db_name_buff, ";", db_cl_name))
|
restore_cs_variables(sql_file, ";");
|
||||||
DBUG_RETURN(1);
|
|
||||||
|
if (db_cl_altered)
|
||||||
|
{
|
||||||
|
if (restore_db_collation(sql_file, db_name_buff, ";", db_cl_name))
|
||||||
|
DBUG_RETURN(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
my_free(query_str, MYF(MY_ALLOW_ZERO_PTR));
|
my_free(query_str, MYF(MY_ALLOW_ZERO_PTR));
|
||||||
@ -2061,7 +2188,6 @@ static uint get_table_structure(char *table, char *db, char *table_type,
|
|||||||
int len;
|
int len;
|
||||||
MYSQL_RES *result;
|
MYSQL_RES *result;
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
|
|
||||||
DBUG_ENTER("get_table_structure");
|
DBUG_ENTER("get_table_structure");
|
||||||
DBUG_PRINT("enter", ("db: %s table: %s", db, table));
|
DBUG_PRINT("enter", ("db: %s table: %s", db, table));
|
||||||
|
|
||||||
@ -2481,6 +2607,7 @@ static uint get_table_structure(char *table, char *db, char *table_type,
|
|||||||
fprintf(sql_file, " (%s)",row[7]); /* Sub key */
|
fprintf(sql_file, " (%s)",row[7]); /* Sub key */
|
||||||
check_io(sql_file);
|
check_io(sql_file);
|
||||||
}
|
}
|
||||||
|
mysql_free_result(result);
|
||||||
if (!opt_xml)
|
if (!opt_xml)
|
||||||
{
|
{
|
||||||
if (keynr)
|
if (keynr)
|
||||||
@ -2551,153 +2678,211 @@ continue_xml:
|
|||||||
DBUG_RETURN((uint) num_fields);
|
DBUG_RETURN((uint) num_fields);
|
||||||
} /* get_table_structure */
|
} /* get_table_structure */
|
||||||
|
|
||||||
|
static void dump_trigger_old(MYSQL_RES *show_triggers_rs,
|
||||||
|
MYSQL_ROW *show_trigger_row,
|
||||||
|
const char *table_name)
|
||||||
|
{
|
||||||
|
FILE *sql_file= md_result_file;
|
||||||
|
|
||||||
/*
|
char quoted_table_name_buf[NAME_LEN * 2 + 3];
|
||||||
|
char *quoted_table_name= quote_name(table_name, quoted_table_name_buf, 1);
|
||||||
|
|
||||||
dump_triggers_for_table
|
char name_buff[NAME_LEN * 4 + 3];
|
||||||
|
|
||||||
Dumps the triggers given a table/db name. This should be called after
|
DBUG_ENTER("dump_trigger_old");
|
||||||
the tables have been dumped in case a trigger depends on the existence
|
|
||||||
of a table
|
|
||||||
|
|
||||||
|
fprintf(sql_file,
|
||||||
|
"--\n"
|
||||||
|
"-- WARNING: old server version. "
|
||||||
|
"The following dump may be incomplete.\n"
|
||||||
|
"--\n");
|
||||||
|
|
||||||
|
if (opt_compact)
|
||||||
|
fprintf(sql_file, "/*!50003 SET @OLD_SQL_MODE=@@SQL_MODE*/;\n");
|
||||||
|
|
||||||
|
fprintf(sql_file,
|
||||||
|
"DELIMITER ;;\n"
|
||||||
|
"/*!50003 SET SESSION SQL_MODE=\"%s\" */;;\n"
|
||||||
|
"/*!50003 CREATE */ ",
|
||||||
|
(*show_trigger_row)[6]);
|
||||||
|
|
||||||
|
if (mysql_num_fields(show_triggers_rs) > 7)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
mysqldump can be run against the server, that does not support
|
||||||
|
definer in triggers (there is no DEFINER column in SHOW TRIGGERS
|
||||||
|
output). So, we should check if we have this column before
|
||||||
|
accessing it.
|
||||||
|
*/
|
||||||
|
|
||||||
|
size_t user_name_len;
|
||||||
|
char user_name_str[USERNAME_LENGTH + 1];
|
||||||
|
char quoted_user_name_str[USERNAME_LENGTH * 2 + 3];
|
||||||
|
size_t host_name_len;
|
||||||
|
char host_name_str[HOSTNAME_LENGTH + 1];
|
||||||
|
char quoted_host_name_str[HOSTNAME_LENGTH * 2 + 3];
|
||||||
|
|
||||||
|
parse_user((*show_trigger_row)[7],
|
||||||
|
strlen((*show_trigger_row)[7]),
|
||||||
|
user_name_str, &user_name_len,
|
||||||
|
host_name_str, &host_name_len);
|
||||||
|
|
||||||
|
fprintf(sql_file,
|
||||||
|
"/*!50017 DEFINER=%s@%s */ ",
|
||||||
|
quote_name(user_name_str, quoted_user_name_str, FALSE),
|
||||||
|
quote_name(host_name_str, quoted_host_name_str, FALSE));
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf(sql_file,
|
||||||
|
"/*!50003 TRIGGER %s %s %s ON %s FOR EACH ROW%s%s */;;\n"
|
||||||
|
"DELIMITER ;\n",
|
||||||
|
quote_name((*show_trigger_row)[0], name_buff, 0), /* Trigger */
|
||||||
|
(*show_trigger_row)[4], /* Timing */
|
||||||
|
(*show_trigger_row)[1], /* Event */
|
||||||
|
quoted_table_name,
|
||||||
|
(strchr(" \t\n\r", *((*show_trigger_row)[3]))) ? "" : " ",
|
||||||
|
(*show_trigger_row)[3] /* Statement */);
|
||||||
|
|
||||||
|
if (opt_compact)
|
||||||
|
fprintf(sql_file, "/*!50003 SET SESSION SQL_MODE=@OLD_SQL_MODE */;\n");
|
||||||
|
|
||||||
|
DBUG_VOID_RETURN;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int dump_trigger(MYSQL_RES *show_create_trigger_rs,
|
||||||
|
const char *db_name,
|
||||||
|
const char *db_cl_name)
|
||||||
|
{
|
||||||
|
FILE *sql_file= md_result_file;
|
||||||
|
MYSQL_ROW row;
|
||||||
|
int db_cl_altered= FALSE;
|
||||||
|
|
||||||
|
DBUG_ENTER("dump_trigger");
|
||||||
|
|
||||||
|
while ((row= mysql_fetch_row(show_create_trigger_rs)))
|
||||||
|
{
|
||||||
|
char *query_str= cover_definer_clause_in_trigger(row[2], strlen(row[2]));
|
||||||
|
|
||||||
|
|
||||||
|
if (switch_db_collation(sql_file, db_name, ";",
|
||||||
|
db_cl_name, row[5], &db_cl_altered))
|
||||||
|
DBUG_RETURN(TRUE);
|
||||||
|
|
||||||
|
switch_cs_variables(sql_file, ";",
|
||||||
|
row[3], /* character_set_client */
|
||||||
|
row[3], /* character_set_results */
|
||||||
|
row[4]); /* collation_connection */
|
||||||
|
|
||||||
|
switch_sql_mode(sql_file, ";", row[1]);
|
||||||
|
|
||||||
|
fprintf(sql_file,
|
||||||
|
"DELIMITER ;;\n"
|
||||||
|
"/*!50003 %s */;;\n"
|
||||||
|
"DELIMITER ;\n",
|
||||||
|
(const char *) (query_str != NULL ? query_str : row[2]));
|
||||||
|
|
||||||
|
restore_sql_mode(sql_file, ";");
|
||||||
|
restore_cs_variables(sql_file, ";");
|
||||||
|
|
||||||
|
if (db_cl_altered)
|
||||||
|
{
|
||||||
|
if (restore_db_collation(sql_file, db_name, ";", db_cl_name))
|
||||||
|
DBUG_RETURN(TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
my_free(query_str, MYF(MY_ALLOW_ZERO_PTR));
|
||||||
|
}
|
||||||
|
|
||||||
|
DBUG_RETURN(FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Dump the triggers for a given table.
|
||||||
|
|
||||||
|
This should be called after the tables have been dumped in case a trigger
|
||||||
|
depends on the existence of a table.
|
||||||
|
|
||||||
|
@param[in] table_name
|
||||||
|
@param[in] db_name
|
||||||
|
|
||||||
|
@return Error status.
|
||||||
|
@retval TRUE error has occurred.
|
||||||
|
@retval FALSE operation succeed.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static void dump_triggers_for_table(char *table, char *db_name)
|
static int dump_triggers_for_table(char *table_name, char *db_name)
|
||||||
{
|
{
|
||||||
char *result_table;
|
char name_buff[NAME_LEN*4+3];
|
||||||
char name_buff[NAME_LEN*4+3], table_buff[NAME_LEN*2+3];
|
|
||||||
char query_buff[QUERY_LENGTH];
|
char query_buff[QUERY_LENGTH];
|
||||||
uint old_opt_compatible_mode=opt_compatible_mode;
|
uint old_opt_compatible_mode= opt_compatible_mode;
|
||||||
FILE *sql_file= md_result_file;
|
MYSQL_RES *show_triggers_rs;
|
||||||
MYSQL_RES *result;
|
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
|
|
||||||
char db_cl_name[MY_CS_NAME_SIZE];
|
char db_cl_name[MY_CS_NAME_SIZE];
|
||||||
int db_cl_altered;
|
|
||||||
|
|
||||||
DBUG_ENTER("dump_triggers_for_table");
|
DBUG_ENTER("dump_triggers_for_table");
|
||||||
DBUG_PRINT("enter", ("db: %s, table: %s", db_name, table));
|
DBUG_PRINT("enter", ("db: %s, table_name: %s", db_name, table_name));
|
||||||
|
|
||||||
/* Do not use ANSI_QUOTES on triggers in dump */
|
/* Do not use ANSI_QUOTES on triggers in dump */
|
||||||
opt_compatible_mode&= ~MASK_ANSI_QUOTES;
|
opt_compatible_mode&= ~MASK_ANSI_QUOTES;
|
||||||
result_table= quote_name(table, table_buff, 1);
|
|
||||||
|
|
||||||
my_snprintf(query_buff, sizeof(query_buff),
|
|
||||||
"SHOW TRIGGERS LIKE %s",
|
|
||||||
quote_for_like(table, name_buff));
|
|
||||||
|
|
||||||
if (mysql_query_with_error_report(mysql, &result, query_buff))
|
|
||||||
{
|
|
||||||
if (path)
|
|
||||||
my_fclose(sql_file, MYF(MY_WME));
|
|
||||||
DBUG_VOID_RETURN;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Get database collation. */
|
/* Get database collation. */
|
||||||
|
|
||||||
if (fetch_db_collation(db_name, db_cl_name, sizeof (db_cl_name)))
|
|
||||||
DBUG_VOID_RETURN;
|
|
||||||
|
|
||||||
if (switch_character_set_results(mysql, "binary"))
|
if (switch_character_set_results(mysql, "binary"))
|
||||||
DBUG_VOID_RETURN;
|
DBUG_RETURN(TRUE);
|
||||||
|
|
||||||
|
if (fetch_db_collation(db_name, db_cl_name, sizeof (db_cl_name)))
|
||||||
|
DBUG_RETURN(TRUE);
|
||||||
|
|
||||||
|
/* Get list of triggers. */
|
||||||
|
|
||||||
|
my_snprintf(query_buff, sizeof(query_buff),
|
||||||
|
"SHOW TRIGGERS LIKE %s",
|
||||||
|
quote_for_like(table_name, name_buff));
|
||||||
|
|
||||||
|
if (mysql_query_with_error_report(mysql, &show_triggers_rs, query_buff))
|
||||||
|
DBUG_RETURN(TRUE);
|
||||||
|
|
||||||
/* Dump triggers. */
|
/* Dump triggers. */
|
||||||
|
|
||||||
while ((row= mysql_fetch_row(result)))
|
while ((row= mysql_fetch_row(show_triggers_rs)))
|
||||||
{
|
{
|
||||||
MYSQL_RES *res2;
|
|
||||||
|
|
||||||
my_snprintf(query_buff, sizeof (query_buff),
|
my_snprintf(query_buff, sizeof (query_buff),
|
||||||
"SHOW CREATE TRIGGER %s",
|
"SHOW CREATE TRIGGER %s",
|
||||||
quote_name(row[0], name_buff, TRUE));
|
quote_name(row[0], name_buff, TRUE));
|
||||||
|
|
||||||
if (mysql_query_with_error_report(mysql, &res2, query_buff))
|
if (mysql_query(mysql, query_buff))
|
||||||
{
|
{
|
||||||
if (path)
|
|
||||||
my_fclose(sql_file, MYF(MY_WME));
|
|
||||||
maybe_exit(EX_MYSQLERR);
|
|
||||||
DBUG_VOID_RETURN;
|
|
||||||
}
|
|
||||||
|
|
||||||
while ((row= mysql_fetch_row(res2)))
|
|
||||||
{
|
|
||||||
char *query_str= NULL;
|
|
||||||
char *definer_begin;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Cover DEFINER-clause in version-specific comments.
|
mysqldump is being run against old server, that does not support
|
||||||
|
SHOW CREATE TRIGGER statement. We should use SHOW TRIGGERS output.
|
||||||
|
|
||||||
TODO: this is definitely a BAD IDEA to parse SHOW CREATE output.
|
NOTE: the dump may be incorrect, as old SHOW TRIGGERS does not
|
||||||
However, we can not use INFORMATION_SCHEMA instead:
|
provide all the necessary information to restore trigger properly.
|
||||||
1. INFORMATION_SCHEMA provides data in UTF8, but here we
|
|
||||||
need data in the original character set;
|
|
||||||
2. INFORMATION_SCHEMA does not provide information about
|
|
||||||
routine parameters now.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
definer_begin= my_case_str(row[2], strlen(row[2]),
|
dump_trigger_old(show_triggers_rs, &row, table_name);
|
||||||
C_STRING_WITH_LEN(" DEFINER"));
|
|
||||||
|
|
||||||
if (definer_begin)
|
|
||||||
{
|
|
||||||
char *definer_end= my_case_str(definer_begin, strlen(definer_begin),
|
|
||||||
C_STRING_WITH_LEN(" TRIGGER"));
|
|
||||||
|
|
||||||
if (definer_end)
|
|
||||||
{
|
|
||||||
char *query_str_tail;
|
|
||||||
|
|
||||||
/*
|
|
||||||
Allocate memory for new query string: original string
|
|
||||||
from SHOW statement and version-specific comments.
|
|
||||||
*/
|
|
||||||
query_str= alloc_query_str(strlen(row[2]) + 23);
|
|
||||||
|
|
||||||
query_str_tail= strnmov(query_str, row[2],
|
|
||||||
definer_begin - row[2]);
|
|
||||||
query_str_tail= strmov(query_str_tail, "*/ /*!50017");
|
|
||||||
query_str_tail= strnmov(query_str_tail, definer_begin,
|
|
||||||
definer_end - definer_begin);
|
|
||||||
query_str_tail= strxmov(query_str_tail, "*/ /*!50003",
|
|
||||||
definer_end, NullS);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (switch_db_collation(sql_file, db_name, ";",
|
|
||||||
db_cl_name, row[5], &db_cl_altered))
|
|
||||||
DBUG_VOID_RETURN;
|
|
||||||
|
|
||||||
switch_cs_variables(sql_file, ";",
|
|
||||||
row[3], /* character_set_client */
|
|
||||||
row[3], /* character_set_results */
|
|
||||||
row[4]); /* collation_connection */
|
|
||||||
|
|
||||||
switch_sql_mode(sql_file, ";", row[1]);
|
|
||||||
|
|
||||||
fprintf(sql_file,
|
|
||||||
"DELIMITER ;;\n"
|
|
||||||
"/*!50003 %s */;;\n"
|
|
||||||
"DELIMITER ;\n",
|
|
||||||
(const char *) (query_str != NULL ? query_str : row[2]));
|
|
||||||
|
|
||||||
restore_sql_mode(sql_file, ";");
|
|
||||||
restore_cs_variables(sql_file, ";");
|
|
||||||
|
|
||||||
if (db_cl_altered)
|
|
||||||
{
|
|
||||||
if (restore_db_collation(sql_file, db_name, ";", db_cl_name))
|
|
||||||
DBUG_VOID_RETURN;
|
|
||||||
}
|
|
||||||
|
|
||||||
my_free(query_str, MYF(MY_ALLOW_ZERO_PTR));
|
|
||||||
}
|
}
|
||||||
mysql_free_result(res2);
|
else
|
||||||
|
{
|
||||||
|
MYSQL_RES *show_create_trigger_rs= mysql_store_result(mysql);
|
||||||
|
|
||||||
|
if (!show_create_trigger_rs ||
|
||||||
|
dump_trigger(show_create_trigger_rs, db_name, db_cl_name))
|
||||||
|
{
|
||||||
|
DBUG_RETURN(TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
mysql_free_result(show_create_trigger_rs);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
mysql_free_result(result);
|
mysql_free_result(show_triggers_rs);
|
||||||
|
|
||||||
if (switch_character_set_results(mysql, default_charset))
|
if (switch_character_set_results(mysql, default_charset))
|
||||||
DBUG_VOID_RETURN;
|
DBUG_RETURN(TRUE);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
make sure to set back opt_compatible mode to
|
make sure to set back opt_compatible mode to
|
||||||
@ -2705,7 +2890,7 @@ static void dump_triggers_for_table(char *table, char *db_name)
|
|||||||
*/
|
*/
|
||||||
opt_compatible_mode=old_opt_compatible_mode;
|
opt_compatible_mode=old_opt_compatible_mode;
|
||||||
|
|
||||||
DBUG_VOID_RETURN;
|
DBUG_RETURN(FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void add_load_option(DYNAMIC_STRING *str, const char *option,
|
static void add_load_option(DYNAMIC_STRING *str, const char *option,
|
||||||
@ -2822,7 +3007,7 @@ static void dump_table(char *table, char *db)
|
|||||||
/*
|
/*
|
||||||
The "table" could be a view. If so, we don't do anything here.
|
The "table" could be a view. If so, we don't do anything here.
|
||||||
*/
|
*/
|
||||||
if (strcmp (table_type, "VIEW") == 0)
|
if (strcmp(table_type, "VIEW") == 0)
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
|
|
||||||
/* Check --no-data flag */
|
/* Check --no-data flag */
|
||||||
@ -2912,6 +3097,7 @@ static void dump_table(char *table, char *db)
|
|||||||
if (mysql_real_query(mysql, query_string.str, query_string.length))
|
if (mysql_real_query(mysql, query_string.str, query_string.length))
|
||||||
{
|
{
|
||||||
DB_error(mysql, "when executing 'SELECT INTO OUTFILE'");
|
DB_error(mysql, "when executing 'SELECT INTO OUTFILE'");
|
||||||
|
dynstr_free(&query_string);
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3266,8 +3452,8 @@ static void dump_table(char *table, char *db)
|
|||||||
check_io(md_result_file);
|
check_io(md_result_file);
|
||||||
}
|
}
|
||||||
mysql_free_result(res);
|
mysql_free_result(res);
|
||||||
dynstr_free(&query_string);
|
|
||||||
}
|
}
|
||||||
|
dynstr_free(&query_string);
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
|
|
||||||
err:
|
err:
|
||||||
@ -3388,6 +3574,7 @@ static int dump_tablespaces(char* ts_where)
|
|||||||
char extra_format[]= "UNDO_BUFFER_SIZE=";
|
char extra_format[]= "UNDO_BUFFER_SIZE=";
|
||||||
char *ubs;
|
char *ubs;
|
||||||
char *endsemi;
|
char *endsemi;
|
||||||
|
DBUG_ENTER("dump_tablespaces");
|
||||||
|
|
||||||
init_dynamic_string_checked(&sqlbuf,
|
init_dynamic_string_checked(&sqlbuf,
|
||||||
"SELECT LOGFILE_GROUP_NAME,"
|
"SELECT LOGFILE_GROUP_NAME,"
|
||||||
@ -3419,6 +3606,7 @@ static int dump_tablespaces(char* ts_where)
|
|||||||
if (mysql_query(mysql, sqlbuf.str) ||
|
if (mysql_query(mysql, sqlbuf.str) ||
|
||||||
!(tableres = mysql_store_result(mysql)))
|
!(tableres = mysql_store_result(mysql)))
|
||||||
{
|
{
|
||||||
|
dynstr_free(&sqlbuf);
|
||||||
if (mysql_errno(mysql) == ER_BAD_TABLE_ERROR ||
|
if (mysql_errno(mysql) == ER_BAD_TABLE_ERROR ||
|
||||||
mysql_errno(mysql) == ER_BAD_DB_ERROR ||
|
mysql_errno(mysql) == ER_BAD_DB_ERROR ||
|
||||||
mysql_errno(mysql) == ER_UNKNOWN_TABLE)
|
mysql_errno(mysql) == ER_UNKNOWN_TABLE)
|
||||||
@ -3427,12 +3615,12 @@ static int dump_tablespaces(char* ts_where)
|
|||||||
"\n--\n-- Not dumping tablespaces as no INFORMATION_SCHEMA.FILES"
|
"\n--\n-- Not dumping tablespaces as no INFORMATION_SCHEMA.FILES"
|
||||||
" table on this server\n--\n");
|
" table on this server\n--\n");
|
||||||
check_io(md_result_file);
|
check_io(md_result_file);
|
||||||
return 0;
|
DBUG_RETURN(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
my_printf_error(0, "Error: Couldn't dump tablespaces %s",
|
my_printf_error(0, "Error: '%s' when trying to dump tablespaces",
|
||||||
MYF(0), mysql_error(mysql));
|
MYF(0), mysql_error(mysql));
|
||||||
return 1;
|
DBUG_RETURN(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
buf[0]= 0;
|
buf[0]= 0;
|
||||||
@ -3484,6 +3672,7 @@ static int dump_tablespaces(char* ts_where)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
dynstr_free(&sqlbuf);
|
dynstr_free(&sqlbuf);
|
||||||
|
mysql_free_result(tableres);
|
||||||
init_dynamic_string_checked(&sqlbuf,
|
init_dynamic_string_checked(&sqlbuf,
|
||||||
"SELECT DISTINCT TABLESPACE_NAME,"
|
"SELECT DISTINCT TABLESPACE_NAME,"
|
||||||
" FILE_NAME,"
|
" FILE_NAME,"
|
||||||
@ -3501,7 +3690,10 @@ static int dump_tablespaces(char* ts_where)
|
|||||||
dynstr_append_checked(&sqlbuf, " ORDER BY TABLESPACE_NAME, LOGFILE_GROUP_NAME");
|
dynstr_append_checked(&sqlbuf, " ORDER BY TABLESPACE_NAME, LOGFILE_GROUP_NAME");
|
||||||
|
|
||||||
if (mysql_query_with_error_report(mysql, &tableres, sqlbuf.str))
|
if (mysql_query_with_error_report(mysql, &tableres, sqlbuf.str))
|
||||||
return 1;
|
{
|
||||||
|
dynstr_free(&sqlbuf);
|
||||||
|
DBUG_RETURN(1);
|
||||||
|
}
|
||||||
|
|
||||||
buf[0]= 0;
|
buf[0]= 0;
|
||||||
while ((row= mysql_fetch_row(tableres)))
|
while ((row= mysql_fetch_row(tableres)))
|
||||||
@ -3547,8 +3739,9 @@ static int dump_tablespaces(char* ts_where)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mysql_free_result(tableres);
|
||||||
dynstr_free(&sqlbuf);
|
dynstr_free(&sqlbuf);
|
||||||
return 0;
|
DBUG_RETURN(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int dump_all_databases()
|
static int dump_all_databases()
|
||||||
@ -3635,8 +3828,11 @@ RETURN VALUES
|
|||||||
0 Success.
|
0 Success.
|
||||||
1 Failure.
|
1 Failure.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int init_dumping_tables(char *qdatabase)
|
int init_dumping_tables(char *qdatabase)
|
||||||
{
|
{
|
||||||
|
DBUG_ENTER("init_dumping_tables");
|
||||||
|
|
||||||
if (!opt_create_db)
|
if (!opt_create_db)
|
||||||
{
|
{
|
||||||
char qbuf[256];
|
char qbuf[256];
|
||||||
@ -3669,10 +3865,10 @@ int init_dumping_tables(char *qdatabase)
|
|||||||
{
|
{
|
||||||
fprintf(md_result_file,"\n%s;\n",row[1]);
|
fprintf(md_result_file,"\n%s;\n",row[1]);
|
||||||
}
|
}
|
||||||
|
mysql_free_result(dbinfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
DBUG_RETURN(0);
|
||||||
return 0;
|
|
||||||
} /* init_dumping_tables */
|
} /* init_dumping_tables */
|
||||||
|
|
||||||
|
|
||||||
@ -3717,7 +3913,7 @@ static int init_dumping(char *database, int init_func(char*))
|
|||||||
|
|
||||||
/* Return 1 if we should copy the table */
|
/* Return 1 if we should copy the table */
|
||||||
|
|
||||||
my_bool include_table(uchar* hash_key, uint len)
|
my_bool include_table(const char* hash_key, uint len)
|
||||||
{
|
{
|
||||||
return !hash_search(&ignore_table, (uchar*) hash_key, len);
|
return !hash_search(&ignore_table, (uchar*) hash_key, len);
|
||||||
}
|
}
|
||||||
@ -3775,7 +3971,14 @@ static int dump_all_tables_in_db(char *database)
|
|||||||
order_by= 0;
|
order_by= 0;
|
||||||
if (opt_dump_triggers && ! opt_xml &&
|
if (opt_dump_triggers && ! opt_xml &&
|
||||||
mysql_get_server_version(mysql) >= 50009)
|
mysql_get_server_version(mysql) >= 50009)
|
||||||
dump_triggers_for_table(table, database);
|
{
|
||||||
|
if (dump_triggers_for_table(table, database))
|
||||||
|
{
|
||||||
|
if (path)
|
||||||
|
my_fclose(md_result_file, MYF(MY_WME));
|
||||||
|
maybe_exit(EX_MYSQLERR);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (opt_events && !opt_xml &&
|
if (opt_events && !opt_xml &&
|
||||||
@ -3955,8 +4158,13 @@ static int dump_selected_tables(char *db, char **table_names, int tables)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
maybe_die(EX_ILLEGAL_TABLE, "Couldn't find table: \"%s\"", *table_names);
|
if (!ignore_errors)
|
||||||
/* We shall countinue here, if --force was given */
|
{
|
||||||
|
dynstr_free(&lock_tables_query);
|
||||||
|
free_root(&root, MYF(0));
|
||||||
|
}
|
||||||
|
maybe_die(EX_ILLEGAL_TABLE, "Couldn't find table: \"%s\"", *table_names);
|
||||||
|
/* We shall countinue here, if --force was given */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
end= pos;
|
end= pos;
|
||||||
@ -3965,14 +4173,25 @@ static int dump_selected_tables(char *db, char **table_names, int tables)
|
|||||||
{
|
{
|
||||||
if (mysql_real_query(mysql, lock_tables_query.str,
|
if (mysql_real_query(mysql, lock_tables_query.str,
|
||||||
lock_tables_query.length-1))
|
lock_tables_query.length-1))
|
||||||
|
{
|
||||||
|
if (!ignore_errors)
|
||||||
|
{
|
||||||
|
dynstr_free(&lock_tables_query);
|
||||||
|
free_root(&root, MYF(0));
|
||||||
|
}
|
||||||
DB_error(mysql, "when doing LOCK TABLES");
|
DB_error(mysql, "when doing LOCK TABLES");
|
||||||
/* We shall countinue here, if --force was given */
|
/* We shall countinue here, if --force was given */
|
||||||
|
}
|
||||||
}
|
}
|
||||||
dynstr_free(&lock_tables_query);
|
dynstr_free(&lock_tables_query);
|
||||||
if (flush_logs)
|
if (flush_logs)
|
||||||
{
|
{
|
||||||
if (mysql_refresh(mysql, REFRESH_LOG))
|
if (mysql_refresh(mysql, REFRESH_LOG))
|
||||||
|
{
|
||||||
|
if (!ignore_errors)
|
||||||
|
free_root(&root, MYF(0));
|
||||||
DB_error(mysql, "when doing refresh");
|
DB_error(mysql, "when doing refresh");
|
||||||
|
}
|
||||||
/* We shall countinue here, if --force was given */
|
/* We shall countinue here, if --force was given */
|
||||||
}
|
}
|
||||||
if (opt_xml)
|
if (opt_xml)
|
||||||
@ -3985,7 +4204,14 @@ static int dump_selected_tables(char *db, char **table_names, int tables)
|
|||||||
dump_table(*pos, db);
|
dump_table(*pos, db);
|
||||||
if (opt_dump_triggers &&
|
if (opt_dump_triggers &&
|
||||||
mysql_get_server_version(mysql) >= 50009)
|
mysql_get_server_version(mysql) >= 50009)
|
||||||
dump_triggers_for_table(*pos, db);
|
{
|
||||||
|
if (dump_triggers_for_table(*pos, db))
|
||||||
|
{
|
||||||
|
if (path)
|
||||||
|
my_fclose(md_result_file, MYF(MY_WME));
|
||||||
|
maybe_exit(EX_MYSQLERR);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Dump each selected view */
|
/* Dump each selected view */
|
||||||
@ -4288,7 +4514,8 @@ char check_if_ignore_table(const char *table_name, char *table_type)
|
|||||||
If these two types, we do want to skip dumping the table
|
If these two types, we do want to skip dumping the table
|
||||||
*/
|
*/
|
||||||
if (!opt_no_data &&
|
if (!opt_no_data &&
|
||||||
(!strcmp(table_type,"MRG_MyISAM") || !strcmp(table_type,"MRG_ISAM")))
|
(!my_strcasecmp(&my_charset_latin1, table_type, "MRG_MyISAM") ||
|
||||||
|
!strcmp(table_type,"MRG_ISAM")))
|
||||||
result= IGNORE_DATA;
|
result= IGNORE_DATA;
|
||||||
}
|
}
|
||||||
mysql_free_result(res);
|
mysql_free_result(res);
|
||||||
@ -4535,6 +4762,9 @@ static my_bool get_view_structure(char *table, char* db)
|
|||||||
if (!(table_res= mysql_store_result(mysql)) ||
|
if (!(table_res= mysql_store_result(mysql)) ||
|
||||||
!(row= mysql_fetch_row(table_res)))
|
!(row= mysql_fetch_row(table_res)))
|
||||||
{
|
{
|
||||||
|
if (table_res)
|
||||||
|
mysql_free_result(table_res);
|
||||||
|
dynstr_free(&ds_view);
|
||||||
DB_error(mysql, "when trying to save the result of SHOW CREATE TABLE in ds_view.");
|
DB_error(mysql, "when trying to save the result of SHOW CREATE TABLE in ds_view.");
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
** * *
|
** * *
|
||||||
** *************************
|
** *************************
|
||||||
*/
|
*/
|
||||||
#define IMPORT_VERSION "3.6"
|
#define IMPORT_VERSION "3.7"
|
||||||
|
|
||||||
#include "client_priv.h"
|
#include "client_priv.h"
|
||||||
#include "mysql_version.h"
|
#include "mysql_version.h"
|
||||||
@ -49,8 +49,8 @@ static char *add_load_option(char *ptr,const char *object,
|
|||||||
static my_bool verbose=0,lock_tables=0,ignore_errors=0,opt_delete=0,
|
static my_bool verbose=0,lock_tables=0,ignore_errors=0,opt_delete=0,
|
||||||
replace=0,silent=0,ignore=0,opt_compress=0,
|
replace=0,silent=0,ignore=0,opt_compress=0,
|
||||||
opt_low_priority= 0, tty_password= 0;
|
opt_low_priority= 0, tty_password= 0;
|
||||||
static my_bool info_flag= 0;
|
static my_bool debug_info_flag= 0, debug_check_flag= 0;
|
||||||
static uint opt_use_threads=0, opt_local_file=0;
|
static uint opt_use_threads=0, opt_local_file=0, my_end_arg= 0;
|
||||||
static char *opt_password=0, *current_user=0,
|
static char *opt_password=0, *current_user=0,
|
||||||
*current_host=0, *current_db=0, *fields_terminated=0,
|
*current_host=0, *current_db=0, *fields_terminated=0,
|
||||||
*lines_terminated=0, *enclosed=0, *opt_enclosed=0,
|
*lines_terminated=0, *enclosed=0, *opt_enclosed=0,
|
||||||
@ -87,8 +87,12 @@ static struct my_option my_long_options[] =
|
|||||||
0, 0, 0},
|
0, 0, 0},
|
||||||
{"debug",'#', "Output debug log. Often this is 'd:t:o,filename'.", 0, 0, 0,
|
{"debug",'#', "Output debug log. Often this is 'd:t:o,filename'.", 0, 0, 0,
|
||||||
GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
{"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.", (uchar**) &info_flag,
|
{"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit .",
|
||||||
(uchar**) &info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
(uchar**) &debug_check_flag, (uchar**) &debug_check_flag, 0,
|
||||||
|
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
|
{"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.",
|
||||||
|
(uchar**) &debug_info_flag, (uchar**) &debug_info_flag,
|
||||||
|
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
{"delete", 'd', "First delete all rows from table.", (uchar**) &opt_delete,
|
{"delete", 'd', "First delete all rows from table.", (uchar**) &opt_delete,
|
||||||
(uchar**) &opt_delete, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
(uchar**) &opt_delete, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
{"fields-terminated-by", OPT_FTB,
|
{"fields-terminated-by", OPT_FTB,
|
||||||
@ -236,6 +240,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
|||||||
break;
|
break;
|
||||||
case '#':
|
case '#':
|
||||||
DBUG_PUSH(argument ? argument : "d:t:o");
|
DBUG_PUSH(argument ? argument : "d:t:o");
|
||||||
|
debug_check_flag= 1;
|
||||||
break;
|
break;
|
||||||
#include <sslopt-case.h>
|
#include <sslopt-case.h>
|
||||||
case 'V': print_version(); exit(0);
|
case 'V': print_version(); exit(0);
|
||||||
@ -254,6 +259,10 @@ static int get_options(int *argc, char ***argv)
|
|||||||
|
|
||||||
if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option)))
|
if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option)))
|
||||||
exit(ho_error);
|
exit(ho_error);
|
||||||
|
if (debug_info_flag)
|
||||||
|
my_end_arg= MY_CHECK_ERROR | MY_GIVE_INFO;
|
||||||
|
if (debug_check_flag)
|
||||||
|
my_end_arg= MY_CHECK_ERROR;
|
||||||
|
|
||||||
if (enclosed && opt_enclosed)
|
if (enclosed && opt_enclosed)
|
||||||
{
|
{
|
||||||
@ -659,6 +668,6 @@ int main(int argc, char **argv)
|
|||||||
my_free(shared_memory_base_name,MYF(MY_ALLOW_ZERO_PTR));
|
my_free(shared_memory_base_name,MYF(MY_ALLOW_ZERO_PTR));
|
||||||
#endif
|
#endif
|
||||||
free_defaults(argv_to_free);
|
free_defaults(argv_to_free);
|
||||||
my_end(info_flag ? MY_CHECK_ERROR : 0);
|
my_end(my_end_arg);
|
||||||
return(exitcode);
|
return(exitcode);
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
/* Show databases, tables or columns */
|
/* Show databases, tables or columns */
|
||||||
|
|
||||||
#define SHOW_VERSION "9.6"
|
#define SHOW_VERSION "9.10"
|
||||||
|
|
||||||
#include "client_priv.h"
|
#include "client_priv.h"
|
||||||
#include <my_sys.h>
|
#include <my_sys.h>
|
||||||
@ -28,7 +28,9 @@
|
|||||||
|
|
||||||
static char * host=0, *opt_password=0, *user=0;
|
static char * host=0, *opt_password=0, *user=0;
|
||||||
static my_bool opt_show_keys= 0, opt_compress= 0, opt_count=0, opt_status= 0;
|
static my_bool opt_show_keys= 0, opt_compress= 0, opt_count=0, opt_status= 0;
|
||||||
static my_bool tty_password= 0, opt_table_type= 0, info_flag= 0;
|
static my_bool tty_password= 0, opt_table_type= 0;
|
||||||
|
static my_bool debug_info_flag= 0, debug_check_flag= 0;
|
||||||
|
static uint my_end_arg= 0;
|
||||||
static uint opt_verbose=0;
|
static uint opt_verbose=0;
|
||||||
static char *default_charset= (char*) MYSQL_DEFAULT_CHARSET_NAME;
|
static char *default_charset= (char*) MYSQL_DEFAULT_CHARSET_NAME;
|
||||||
|
|
||||||
@ -150,7 +152,7 @@ int main(int argc, char **argv)
|
|||||||
#ifdef HAVE_SMEM
|
#ifdef HAVE_SMEM
|
||||||
my_free(shared_memory_base_name,MYF(MY_ALLOW_ZERO_PTR));
|
my_free(shared_memory_base_name,MYF(MY_ALLOW_ZERO_PTR));
|
||||||
#endif
|
#endif
|
||||||
my_end(info_flag ? MY_CHECK_ERROR : 0);
|
my_end(my_end_arg);
|
||||||
exit(error ? 1 : 0);
|
exit(error ? 1 : 0);
|
||||||
return 0; /* No compiler warnings */
|
return 0; /* No compiler warnings */
|
||||||
}
|
}
|
||||||
@ -176,8 +178,12 @@ static struct my_option my_long_options[] =
|
|||||||
0, 0, 0},
|
0, 0, 0},
|
||||||
{"debug", '#', "Output debug log. Often this is 'd:t:o,filename'.",
|
{"debug", '#', "Output debug log. Often this is 'd:t:o,filename'.",
|
||||||
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
{"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.", (uchar**) &info_flag,
|
{"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit .",
|
||||||
(uchar**) &info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
(uchar**) &debug_check_flag, (uchar**) &debug_check_flag, 0,
|
||||||
|
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
|
{"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.",
|
||||||
|
(uchar**) &debug_info_flag, (uchar**) &debug_info_flag,
|
||||||
|
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
{"help", '?', "Display this help and exit.", 0, 0, 0, GET_NO_ARG, NO_ARG,
|
{"help", '?', "Display this help and exit.", 0, 0, 0, GET_NO_ARG, NO_ARG,
|
||||||
0, 0, 0, 0, 0, 0},
|
0, 0, 0, 0, 0, 0},
|
||||||
{"host", 'h', "Connect to host.", (uchar**) &host, (uchar**) &host, 0, GET_STR,
|
{"host", 'h', "Connect to host.", (uchar**) &host, (uchar**) &host, 0, GET_STR,
|
||||||
@ -293,6 +299,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
|||||||
break;
|
break;
|
||||||
case '#':
|
case '#':
|
||||||
DBUG_PUSH(argument ? argument : "d:t:o");
|
DBUG_PUSH(argument ? argument : "d:t:o");
|
||||||
|
debug_check_flag= 1;
|
||||||
break;
|
break;
|
||||||
#include <sslopt-case.h>
|
#include <sslopt-case.h>
|
||||||
case 'V':
|
case 'V':
|
||||||
@ -326,6 +333,10 @@ get_options(int *argc,char ***argv)
|
|||||||
*/
|
*/
|
||||||
opt_verbose= 2;
|
opt_verbose= 2;
|
||||||
}
|
}
|
||||||
|
if (debug_info_flag)
|
||||||
|
my_end_arg= MY_CHECK_ERROR | MY_GIVE_INFO;
|
||||||
|
if (debug_check_flag)
|
||||||
|
my_end_arg= MY_CHECK_ERROR;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,7 +69,7 @@ TODO:
|
|||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define SHOW_VERSION "0.9"
|
#define SLAP_VERSION "1.0"
|
||||||
|
|
||||||
#define HUGE_STRING_LENGTH 8196
|
#define HUGE_STRING_LENGTH 8196
|
||||||
#define RAND_STRING_SIZE 126
|
#define RAND_STRING_SIZE 126
|
||||||
@ -131,10 +131,8 @@ const char *delimiter= "\n";
|
|||||||
|
|
||||||
const char *create_schema_string= "mysqlslap";
|
const char *create_schema_string= "mysqlslap";
|
||||||
|
|
||||||
static my_bool opt_preserve;
|
static my_bool opt_preserve= 0, debug_info_flag= 0, debug_check_flag= 0;
|
||||||
|
|
||||||
static my_bool opt_only_print= FALSE;
|
static my_bool opt_only_print= FALSE;
|
||||||
|
|
||||||
static my_bool opt_compress= FALSE, tty_password= FALSE,
|
static my_bool opt_compress= FALSE, tty_password= FALSE,
|
||||||
opt_silent= FALSE,
|
opt_silent= FALSE,
|
||||||
auto_generate_sql_autoincrement= FALSE,
|
auto_generate_sql_autoincrement= FALSE,
|
||||||
@ -149,13 +147,14 @@ static uint commit_rate;
|
|||||||
static uint detach_rate;
|
static uint detach_rate;
|
||||||
const char *num_int_cols_opt;
|
const char *num_int_cols_opt;
|
||||||
const char *num_char_cols_opt;
|
const char *num_char_cols_opt;
|
||||||
|
|
||||||
/* Yes, we do set defaults here */
|
/* Yes, we do set defaults here */
|
||||||
static unsigned int num_int_cols= 1;
|
static unsigned int num_int_cols= 1;
|
||||||
static unsigned int num_char_cols= 1;
|
static unsigned int num_char_cols= 1;
|
||||||
static unsigned int num_int_cols_index= 0;
|
static unsigned int num_int_cols_index= 0;
|
||||||
static unsigned int num_char_cols_index= 0;
|
static unsigned int num_char_cols_index= 0;
|
||||||
|
|
||||||
static unsigned int iterations;
|
static unsigned int iterations;
|
||||||
|
static uint my_end_arg= 0;
|
||||||
static char *default_charset= (char*) MYSQL_DEFAULT_CHARSET_NAME;
|
static char *default_charset= (char*) MYSQL_DEFAULT_CHARSET_NAME;
|
||||||
static ulonglong actual_queries= 0;
|
static ulonglong actual_queries= 0;
|
||||||
static ulonglong auto_actual_queries;
|
static ulonglong auto_actual_queries;
|
||||||
@ -410,7 +409,7 @@ int main(int argc, char **argv)
|
|||||||
my_free(shared_memory_base_name, MYF(MY_ALLOW_ZERO_PTR));
|
my_free(shared_memory_base_name, MYF(MY_ALLOW_ZERO_PTR));
|
||||||
#endif
|
#endif
|
||||||
free_defaults(defaults_argv);
|
free_defaults(defaults_argv);
|
||||||
my_end(0);
|
my_end(my_end_arg);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -569,6 +568,11 @@ static struct my_option my_long_options[] =
|
|||||||
{"debug", '#', "Output debug log. Often this is 'd:t:o,filename'.",
|
{"debug", '#', "Output debug log. Often this is 'd:t:o,filename'.",
|
||||||
(uchar**) &default_dbug_option, (uchar**) &default_dbug_option, 0, GET_STR,
|
(uchar**) &default_dbug_option, (uchar**) &default_dbug_option, 0, GET_STR,
|
||||||
OPT_ARG, 0, 0, 0, 0, 0, 0},
|
OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
|
{"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit .",
|
||||||
|
(uchar**) &debug_check_flag, (uchar**) &debug_check_flag, 0,
|
||||||
|
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
|
{"debug-info", 'T', "Print some debug info at exit.", (uchar**) &debug_info_flag,
|
||||||
|
(uchar**) &debug_info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
{"delimiter", 'F',
|
{"delimiter", 'F',
|
||||||
"Delimiter to use in SQL statements supplied in file or command line.",
|
"Delimiter to use in SQL statements supplied in file or command line.",
|
||||||
(uchar**) &delimiter, (uchar**) &delimiter, 0, GET_STR, REQUIRED_ARG,
|
(uchar**) &delimiter, (uchar**) &delimiter, 0, GET_STR, REQUIRED_ARG,
|
||||||
@ -672,7 +676,7 @@ static struct my_option my_long_options[] =
|
|||||||
|
|
||||||
static void print_version(void)
|
static void print_version(void)
|
||||||
{
|
{
|
||||||
printf("%s Ver %s Distrib %s, for %s (%s)\n",my_progname,SHOW_VERSION,
|
printf("%s Ver %s Distrib %s, for %s (%s)\n",my_progname, SLAP_VERSION,
|
||||||
MYSQL_SERVER_VERSION,SYSTEM_TYPE,MACHINE_TYPE);
|
MYSQL_SERVER_VERSION,SYSTEM_TYPE,MACHINE_TYPE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -731,6 +735,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
|||||||
break;
|
break;
|
||||||
case '#':
|
case '#':
|
||||||
DBUG_PUSH(argument ? argument : default_dbug_option);
|
DBUG_PUSH(argument ? argument : default_dbug_option);
|
||||||
|
debug_check_flag= 1;
|
||||||
break;
|
break;
|
||||||
#include <sslopt-case.h>
|
#include <sslopt-case.h>
|
||||||
case 'V':
|
case 'V':
|
||||||
@ -1126,6 +1131,10 @@ get_options(int *argc,char ***argv)
|
|||||||
DBUG_ENTER("get_options");
|
DBUG_ENTER("get_options");
|
||||||
if ((ho_error= handle_options(argc, argv, my_long_options, get_one_option)))
|
if ((ho_error= handle_options(argc, argv, my_long_options, get_one_option)))
|
||||||
exit(ho_error);
|
exit(ho_error);
|
||||||
|
if (debug_info_flag)
|
||||||
|
my_end_arg= MY_CHECK_ERROR | MY_GIVE_INFO;
|
||||||
|
if (debug_check_flag)
|
||||||
|
my_end_arg= MY_CHECK_ERROR;
|
||||||
|
|
||||||
if (!user)
|
if (!user)
|
||||||
user= (char *)"root";
|
user= (char *)"root";
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
Holyfoot
|
Holyfoot
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define MTEST_VERSION "3.2"
|
#define MTEST_VERSION "3.3"
|
||||||
|
|
||||||
#include "client_priv.h"
|
#include "client_priv.h"
|
||||||
#include <mysql_version.h>
|
#include <mysql_version.h>
|
||||||
@ -80,6 +80,7 @@ const char *opt_include= 0, *opt_charsets_dir;
|
|||||||
static int opt_port= 0;
|
static int opt_port= 0;
|
||||||
static int opt_max_connect_retries;
|
static int opt_max_connect_retries;
|
||||||
static my_bool opt_compress= 0, silent= 0, verbose= 0;
|
static my_bool opt_compress= 0, silent= 0, verbose= 0;
|
||||||
|
static my_bool debug_info_flag= 0, debug_check_flag= 0;
|
||||||
static my_bool tty_password= 0;
|
static my_bool tty_password= 0;
|
||||||
static my_bool opt_mark_progress= 0;
|
static my_bool opt_mark_progress= 0;
|
||||||
static my_bool ps_protocol= 0, ps_protocol_enabled= 0;
|
static my_bool ps_protocol= 0, ps_protocol_enabled= 0;
|
||||||
@ -100,6 +101,7 @@ static const char *load_default_groups[]= { "mysqltest", "client", 0 };
|
|||||||
static char line_buffer[MAX_DELIMITER_LENGTH], *line_buffer_pos= line_buffer;
|
static char line_buffer[MAX_DELIMITER_LENGTH], *line_buffer_pos= line_buffer;
|
||||||
|
|
||||||
static uint start_lineno= 0; /* Start line of current command */
|
static uint start_lineno= 0; /* Start line of current command */
|
||||||
|
static uint my_end_arg= 0;
|
||||||
|
|
||||||
static char delimiter[MAX_DELIMITER_LENGTH]= ";";
|
static char delimiter[MAX_DELIMITER_LENGTH]= ";";
|
||||||
static uint delimiter_length= 1;
|
static uint delimiter_length= 1;
|
||||||
@ -807,12 +809,10 @@ void free_used_memory()
|
|||||||
static void cleanup_and_exit(int exit_code)
|
static void cleanup_and_exit(int exit_code)
|
||||||
{
|
{
|
||||||
free_used_memory();
|
free_used_memory();
|
||||||
my_end(MY_CHECK_ERROR);
|
my_end(my_end_arg);
|
||||||
|
|
||||||
if (!silent)
|
if (!silent) {
|
||||||
{
|
switch (exit_code) {
|
||||||
switch (exit_code)
|
|
||||||
{
|
|
||||||
case 1:
|
case 1:
|
||||||
printf("not ok\n");
|
printf("not ok\n");
|
||||||
break;
|
break;
|
||||||
@ -1084,8 +1084,7 @@ void check_result(DYNAMIC_STRING* ds)
|
|||||||
DBUG_ENTER("check_result");
|
DBUG_ENTER("check_result");
|
||||||
DBUG_ASSERT(result_file_name);
|
DBUG_ASSERT(result_file_name);
|
||||||
|
|
||||||
switch (dyn_string_cmp(ds, result_file_name))
|
switch (dyn_string_cmp(ds, result_file_name)) {
|
||||||
{
|
|
||||||
case RESULT_OK:
|
case RESULT_OK:
|
||||||
break; /* ok */
|
break; /* ok */
|
||||||
case RESULT_LENGTH_MISMATCH:
|
case RESULT_LENGTH_MISMATCH:
|
||||||
@ -1929,7 +1928,10 @@ void do_exec(struct st_command *command)
|
|||||||
command->first_argument, ds_cmd.str));
|
command->first_argument, ds_cmd.str));
|
||||||
|
|
||||||
if (!(res_file= my_popen(&ds_cmd, "r")) && command->abort_on_error)
|
if (!(res_file= my_popen(&ds_cmd, "r")) && command->abort_on_error)
|
||||||
|
{
|
||||||
|
dynstr_free(&ds_cmd);
|
||||||
die("popen(\"%s\", \"r\") failed", command->first_argument);
|
die("popen(\"%s\", \"r\") failed", command->first_argument);
|
||||||
|
}
|
||||||
|
|
||||||
while (fgets(buf, sizeof(buf), res_file))
|
while (fgets(buf, sizeof(buf), res_file))
|
||||||
{
|
{
|
||||||
@ -1953,6 +1955,7 @@ void do_exec(struct st_command *command)
|
|||||||
{
|
{
|
||||||
log_msg("exec of '%s failed, error: %d, status: %d, errno: %d",
|
log_msg("exec of '%s failed, error: %d, status: %d, errno: %d",
|
||||||
ds_cmd.str, error, status, errno);
|
ds_cmd.str, error, status, errno);
|
||||||
|
dynstr_free(&ds_cmd);
|
||||||
die("command \"%s\" failed", command->first_argument);
|
die("command \"%s\" failed", command->first_argument);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1971,8 +1974,11 @@ void do_exec(struct st_command *command)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!ok)
|
if (!ok)
|
||||||
|
{
|
||||||
|
dynstr_free(&ds_cmd);
|
||||||
die("command \"%s\" failed with wrong error: %d",
|
die("command \"%s\" failed with wrong error: %d",
|
||||||
command->first_argument, status);
|
command->first_argument, status);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (command->expected_errors.err[0].type == ERR_ERRNO &&
|
else if (command->expected_errors.err[0].type == ERR_ERRNO &&
|
||||||
command->expected_errors.err[0].code.errnum != 0)
|
command->expected_errors.err[0].code.errnum != 0)
|
||||||
@ -1980,6 +1986,7 @@ void do_exec(struct st_command *command)
|
|||||||
/* Error code we wanted was != 0, i.e. not an expected success */
|
/* Error code we wanted was != 0, i.e. not an expected success */
|
||||||
log_msg("exec of '%s failed, error: %d, errno: %d",
|
log_msg("exec of '%s failed, error: %d, errno: %d",
|
||||||
ds_cmd.str, error, errno);
|
ds_cmd.str, error, errno);
|
||||||
|
dynstr_free(&ds_cmd);
|
||||||
die("command \"%s\" succeeded - should have failed with errno %d...",
|
die("command \"%s\" succeeded - should have failed with errno %d...",
|
||||||
command->first_argument, command->expected_errors.err[0].code.errnum);
|
command->first_argument, command->expected_errors.err[0].code.errnum);
|
||||||
}
|
}
|
||||||
@ -4482,6 +4489,12 @@ static struct my_option my_long_options[] =
|
|||||||
{"debug", '#', "Output debug log. Often this is 'd:t:o,filename'.",
|
{"debug", '#', "Output debug log. Often this is 'd:t:o,filename'.",
|
||||||
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
#endif
|
#endif
|
||||||
|
{"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit .",
|
||||||
|
(uchar**) &debug_check_flag, (uchar**) &debug_check_flag, 0,
|
||||||
|
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
|
{"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.",
|
||||||
|
(uchar**) &debug_info_flag, (uchar**) &debug_info_flag,
|
||||||
|
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
{"host", 'h', "Connect to host.", (uchar**) &opt_host, (uchar**) &opt_host, 0,
|
{"host", 'h', "Connect to host.", (uchar**) &opt_host, (uchar**) &opt_host, 0,
|
||||||
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
{"include", 'i', "Include SQL before each test case.", (uchar**) &opt_include,
|
{"include", 'i', "Include SQL before each test case.", (uchar**) &opt_include,
|
||||||
@ -4625,6 +4638,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
|||||||
case '#':
|
case '#':
|
||||||
#ifndef DBUG_OFF
|
#ifndef DBUG_OFF
|
||||||
DBUG_PUSH(argument ? argument : "d:t:S:i:O,/tmp/mysqltest.trace");
|
DBUG_PUSH(argument ? argument : "d:t:S:i:O,/tmp/mysqltest.trace");
|
||||||
|
debug_check_flag= 1;
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
case 'r':
|
case 'r':
|
||||||
@ -4724,6 +4738,10 @@ int parse_args(int argc, char **argv)
|
|||||||
opt_db= *argv;
|
opt_db= *argv;
|
||||||
if (tty_password)
|
if (tty_password)
|
||||||
opt_pass= get_tty_password(NullS); /* purify tested */
|
opt_pass= get_tty_password(NullS); /* purify tested */
|
||||||
|
if (debug_info_flag)
|
||||||
|
my_end_arg= MY_CHECK_ERROR | MY_GIVE_INFO;
|
||||||
|
if (debug_check_flag)
|
||||||
|
my_end_arg= MY_CHECK_ERROR;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -5377,11 +5395,8 @@ end:
|
|||||||
ds - dynamic string which is used for output buffer
|
ds - dynamic string which is used for output buffer
|
||||||
|
|
||||||
NOTE
|
NOTE
|
||||||
If there is an unexpected error this function will abort mysqltest
|
If there is an unexpected error this function will abort mysqltest
|
||||||
immediately.
|
immediately.
|
||||||
|
|
||||||
RETURN VALUE
|
|
||||||
error - function will not return
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void handle_error(struct st_command *command,
|
void handle_error(struct st_command *command,
|
||||||
|
@ -10,13 +10,13 @@ AC_CANONICAL_SYSTEM
|
|||||||
#
|
#
|
||||||
# When changing major version number please also check switch statement
|
# When changing major version number please also check switch statement
|
||||||
# in mysqlbinlog::check_master_version().
|
# in mysqlbinlog::check_master_version().
|
||||||
AM_INIT_AUTOMAKE(mysql, 5.1.21-beta)
|
AM_INIT_AUTOMAKE(mysql, 5.1.22-beta)
|
||||||
AM_CONFIG_HEADER([include/config.h:config.h.in])
|
AM_CONFIG_HEADER([include/config.h:config.h.in])
|
||||||
|
|
||||||
PROTOCOL_VERSION=10
|
PROTOCOL_VERSION=10
|
||||||
DOT_FRM_VERSION=6
|
DOT_FRM_VERSION=6
|
||||||
# See the libtool docs for information on how to do shared lib versions.
|
# See the libtool docs for information on how to do shared lib versions.
|
||||||
SHARED_LIB_MAJOR_VERSION=15
|
SHARED_LIB_MAJOR_VERSION=16
|
||||||
SHARED_LIB_VERSION=$SHARED_LIB_MAJOR_VERSION:0:0
|
SHARED_LIB_VERSION=$SHARED_LIB_MAJOR_VERSION:0:0
|
||||||
NDB_SHARED_LIB_MAJOR_VERSION=3
|
NDB_SHARED_LIB_MAJOR_VERSION=3
|
||||||
NDB_SHARED_LIB_VERSION=$NDB_SHARED_LIB_MAJOR_VERSION:0:0
|
NDB_SHARED_LIB_VERSION=$NDB_SHARED_LIB_MAJOR_VERSION:0:0
|
||||||
@ -1922,8 +1922,9 @@ AC_CHECK_FUNCS(alarm bcmp bfill bmove bsearch bzero \
|
|||||||
chsize cuserid fchmod fcntl \
|
chsize cuserid fchmod fcntl \
|
||||||
fconvert fdatasync finite fpresetsticky fpsetmask fsync ftruncate \
|
fconvert fdatasync finite fpresetsticky fpsetmask fsync ftruncate \
|
||||||
getcwd gethostbyaddr_r gethostbyname_r getpass getpassphrase getpwnam \
|
getcwd gethostbyaddr_r gethostbyname_r getpass getpassphrase getpwnam \
|
||||||
getpwuid getrlimit getrusage getwd gmtime_r index initgroups isnan \
|
getpwuid getrlimit getrusage getwd index initgroups isnan \
|
||||||
localtime_r locking longjmp lrand48 madvise mallinfo memcpy memmove \
|
localtime_r gethrtime gmtime_r \
|
||||||
|
locking longjmp lrand48 madvise mallinfo memcpy memmove \
|
||||||
mkstemp mlockall perror poll pread pthread_attr_create mmap mmap64 getpagesize \
|
mkstemp mlockall perror poll pread pthread_attr_create mmap mmap64 getpagesize \
|
||||||
pthread_attr_getstacksize pthread_attr_setprio pthread_attr_setschedparam \
|
pthread_attr_getstacksize pthread_attr_setprio pthread_attr_setschedparam \
|
||||||
pthread_attr_setstacksize pthread_condattr_create pthread_getsequence_np \
|
pthread_attr_setstacksize pthread_condattr_create pthread_getsequence_np \
|
||||||
|
12
dbug/CMakeLists.txt
Normal file → Executable file
12
dbug/CMakeLists.txt
Normal file → Executable file
@ -13,8 +13,12 @@
|
|||||||
# along with this program; if not, write to the Free Software
|
# along with this program; if not, write to the Free Software
|
||||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX -D__WIN32__")
|
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/dbug)
|
||||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
|
||||||
|
|
||||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
|
SET(DBUG_SOURCES dbug.c factorial.c sanity.c)
|
||||||
ADD_LIBRARY(dbug dbug.c factorial.c sanity.c)
|
|
||||||
|
IF(NOT SOURCE_SUBLIBS)
|
||||||
|
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||||
|
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
|
||||||
|
ADD_LIBRARY(dbug ${DBUG_SOURCES})
|
||||||
|
ENDIF(NOT SOURCE_SUBLIBS)
|
||||||
|
@ -1184,7 +1184,7 @@ void _db_dump_(uint _line_, const char *keyword,
|
|||||||
fprintf(cs->stack->out_file, "%s: ", cs->func);
|
fprintf(cs->stack->out_file, "%s: ", cs->func);
|
||||||
}
|
}
|
||||||
sprintf(dbuff,"%s: Memory: 0x%lx Bytes: (%ld)\n",
|
sprintf(dbuff,"%s: Memory: 0x%lx Bytes: (%ld)\n",
|
||||||
keyword,(ulong) memory, length);
|
keyword, (ulong) memory, (long) length);
|
||||||
(void) fputs(dbuff,cs->stack->out_file);
|
(void) fputs(dbuff,cs->stack->out_file);
|
||||||
|
|
||||||
pos=0;
|
pos=0;
|
||||||
@ -1449,6 +1449,7 @@ static void FreeState(CODE_STATE *cs, struct settings *state, int free_state)
|
|||||||
FreeList(state->p_functions);
|
FreeList(state->p_functions);
|
||||||
if (!is_shared(state, out_file))
|
if (!is_shared(state, out_file))
|
||||||
DBUGCloseFile(cs, state->out_file);
|
DBUGCloseFile(cs, state->out_file);
|
||||||
|
(void) fflush(cs->stack->out_file);
|
||||||
if (state->prof_file)
|
if (state->prof_file)
|
||||||
DBUGCloseFile(cs, state->prof_file);
|
DBUGCloseFile(cs, state->prof_file);
|
||||||
if (free_state)
|
if (free_state)
|
||||||
@ -1882,7 +1883,6 @@ static FILE *OpenProfile(CODE_STATE *cs, const char *name)
|
|||||||
{
|
{
|
||||||
(void) fprintf(cs->stack->out_file, ERR_OPEN, cs->process, name);
|
(void) fprintf(cs->stack->out_file, ERR_OPEN, cs->process, name);
|
||||||
perror("");
|
perror("");
|
||||||
dbug_flush(0);
|
|
||||||
(void) Delay(cs->stack->delay);
|
(void) Delay(cs->stack->delay);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1892,7 +1892,6 @@ static FILE *OpenProfile(CODE_STATE *cs, const char *name)
|
|||||||
{
|
{
|
||||||
(void) fprintf(cs->stack->out_file, ERR_OPEN, cs->process, name);
|
(void) fprintf(cs->stack->out_file, ERR_OPEN, cs->process, name);
|
||||||
perror("");
|
perror("");
|
||||||
dbug_flush(0);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1931,7 +1930,7 @@ static void DBUGCloseFile(CODE_STATE *cs, FILE *fp)
|
|||||||
pthread_mutex_lock(&THR_LOCK_dbug);
|
pthread_mutex_lock(&THR_LOCK_dbug);
|
||||||
(void) fprintf(cs->stack->out_file, ERR_CLOSE, cs->process);
|
(void) fprintf(cs->stack->out_file, ERR_CLOSE, cs->process);
|
||||||
perror("");
|
perror("");
|
||||||
dbug_flush(0);
|
dbug_flush(cs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
8
extra/CMakeLists.txt
Normal file → Executable file
8
extra/CMakeLists.txt
Normal file → Executable file
@ -20,7 +20,7 @@ SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
|||||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
|
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
|
||||||
|
|
||||||
ADD_EXECUTABLE(comp_err comp_err.c)
|
ADD_EXECUTABLE(comp_err comp_err.c)
|
||||||
TARGET_LINK_LIBRARIES(comp_err dbug mysys strings zlib wsock32)
|
TARGET_LINK_LIBRARIES(comp_err debug dbug mysys strings zlib wsock32)
|
||||||
|
|
||||||
GET_TARGET_PROPERTY(COMP_ERR_EXE comp_err LOCATION)
|
GET_TARGET_PROPERTY(COMP_ERR_EXE comp_err LOCATION)
|
||||||
|
|
||||||
@ -39,13 +39,13 @@ ADD_CUSTOM_TARGET(GenError
|
|||||||
DEPENDS ${PROJECT_SOURCE_DIR}/include/mysqld_error.h)
|
DEPENDS ${PROJECT_SOURCE_DIR}/include/mysqld_error.h)
|
||||||
|
|
||||||
ADD_EXECUTABLE(my_print_defaults my_print_defaults.c)
|
ADD_EXECUTABLE(my_print_defaults my_print_defaults.c)
|
||||||
TARGET_LINK_LIBRARIES(my_print_defaults strings mysys dbug taocrypt wsock32)
|
TARGET_LINK_LIBRARIES(my_print_defaults strings mysys debug dbug taocrypt wsock32)
|
||||||
|
|
||||||
ADD_EXECUTABLE(perror perror.c)
|
ADD_EXECUTABLE(perror perror.c)
|
||||||
TARGET_LINK_LIBRARIES(perror strings mysys dbug wsock32)
|
TARGET_LINK_LIBRARIES(perror strings mysys debug dbug wsock32)
|
||||||
|
|
||||||
ADD_EXECUTABLE(replace replace.c)
|
ADD_EXECUTABLE(replace replace.c)
|
||||||
TARGET_LINK_LIBRARIES(replace strings mysys dbug wsock32)
|
TARGET_LINK_LIBRARIES(replace strings mysys debug dbug wsock32)
|
||||||
|
|
||||||
IF(EMBED_MANIFESTS)
|
IF(EMBED_MANIFESTS)
|
||||||
MYSQL_EMBED_MANIFEST("myTest" "asInvoker")
|
MYSQL_EMBED_MANIFEST("myTest" "asInvoker")
|
||||||
|
12
extra/yassl/CMakeLists.txt
Normal file → Executable file
12
extra/yassl/CMakeLists.txt
Normal file → Executable file
@ -13,9 +13,15 @@
|
|||||||
# along with this program; if not, write to the Free Software
|
# along with this program; if not, write to the Free Software
|
||||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
ADD_DEFINITIONS("-DWIN32 -D_LIB -DYASSL_PREFIX")
|
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/extra/yassl/include
|
||||||
|
${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/include
|
||||||
|
${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/mySTL)
|
||||||
|
|
||||||
INCLUDE_DIRECTORIES(include taocrypt/include taocrypt/mySTL)
|
ADD_DEFINITIONS("-D_LIB -DYASSL_PREFIX")
|
||||||
ADD_LIBRARY(yassl src/buffer.cpp src/cert_wrapper.cpp src/crypto_wrapper.cpp src/handshake.cpp src/lock.cpp
|
|
||||||
|
SET(YASSL_SOURCES src/buffer.cpp src/cert_wrapper.cpp src/crypto_wrapper.cpp src/handshake.cpp src/lock.cpp
|
||||||
src/log.cpp src/socket_wrapper.cpp src/ssl.cpp src/timer.cpp src/yassl_error.cpp
|
src/log.cpp src/socket_wrapper.cpp src/ssl.cpp src/timer.cpp src/yassl_error.cpp
|
||||||
src/yassl_imp.cpp src/yassl_int.cpp)
|
src/yassl_imp.cpp src/yassl_int.cpp)
|
||||||
|
IF(NOT SOURCE_SUBLIBS)
|
||||||
|
ADD_LIBRARY(yassl ${YASSL_SOURCES})
|
||||||
|
ENDIF(NOT SOURCE_SUBLIBS)
|
||||||
|
8
extra/yassl/taocrypt/CMakeLists.txt
Normal file → Executable file
8
extra/yassl/taocrypt/CMakeLists.txt
Normal file → Executable file
@ -13,9 +13,10 @@
|
|||||||
# along with this program; if not, write to the Free Software
|
# along with this program; if not, write to the Free Software
|
||||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
INCLUDE_DIRECTORIES(mySTL include)
|
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/mySTL
|
||||||
|
${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/include)
|
||||||
|
|
||||||
ADD_LIBRARY(taocrypt src/aes.cpp src/aestables.cpp src/algebra.cpp src/arc4.cpp src/asn.cpp src/coding.cpp
|
SET(TAOCRYPT_SOURCES src/aes.cpp src/aestables.cpp src/algebra.cpp src/arc4.cpp src/asn.cpp src/coding.cpp
|
||||||
src/des.cpp src/dh.cpp src/dsa.cpp src/file.cpp src/hash.cpp src/integer.cpp src/md2.cpp
|
src/des.cpp src/dh.cpp src/dsa.cpp src/file.cpp src/hash.cpp src/integer.cpp src/md2.cpp
|
||||||
src/md4.cpp src/md5.cpp src/misc.cpp src/random.cpp src/ripemd.cpp src/rsa.cpp src/sha.cpp
|
src/md4.cpp src/md5.cpp src/misc.cpp src/random.cpp src/ripemd.cpp src/rsa.cpp src/sha.cpp
|
||||||
include/aes.hpp include/algebra.hpp include/arc4.hpp include/asn.hpp include/block.hpp
|
include/aes.hpp include/algebra.hpp include/arc4.hpp include/asn.hpp include/block.hpp
|
||||||
@ -23,3 +24,6 @@ ADD_LIBRARY(taocrypt src/aes.cpp src/aestables.cpp src/algebra.cpp src/arc4.cpp
|
|||||||
include/error.hpp include/file.hpp include/hash.hpp include/hmac.hpp include/integer.hpp
|
include/error.hpp include/file.hpp include/hash.hpp include/hmac.hpp include/integer.hpp
|
||||||
include/md2.hpp include/md5.hpp include/misc.hpp include/modarith.hpp include/modes.hpp
|
include/md2.hpp include/md5.hpp include/misc.hpp include/modarith.hpp include/modes.hpp
|
||||||
include/random.hpp include/ripemd.hpp include/rsa.hpp include/sha.hpp)
|
include/random.hpp include/ripemd.hpp include/rsa.hpp include/sha.hpp)
|
||||||
|
IF(NOT SOURCE_SUBLIBS)
|
||||||
|
ADD_LIBRARY(taocrypt ${TAOCRYPT_SOURCES})
|
||||||
|
ENDIF(NOT SOURCE_SUBLIBS)
|
||||||
|
@ -189,11 +189,14 @@ typedef struct st_heap_create_info
|
|||||||
ulonglong max_table_size;
|
ulonglong max_table_size;
|
||||||
ulonglong auto_increment;
|
ulonglong auto_increment;
|
||||||
my_bool with_auto_increment;
|
my_bool with_auto_increment;
|
||||||
|
my_bool internal_table;
|
||||||
} HP_CREATE_INFO;
|
} HP_CREATE_INFO;
|
||||||
|
|
||||||
/* Prototypes for heap-functions */
|
/* Prototypes for heap-functions */
|
||||||
|
|
||||||
extern HP_INFO *heap_open(const char *name, int mode);
|
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 int heap_close(HP_INFO *info);
|
extern int heap_close(HP_INFO *info);
|
||||||
extern int heap_write(HP_INFO *info,const uchar *buff);
|
extern int heap_write(HP_INFO *info,const uchar *buff);
|
||||||
extern int heap_update(HP_INFO *info,const uchar *old,const uchar *newdata);
|
extern int heap_update(HP_INFO *info,const uchar *old,const uchar *newdata);
|
||||||
@ -204,7 +207,7 @@ extern int heap_delete(HP_INFO *info,const uchar *buff);
|
|||||||
extern int heap_info(HP_INFO *info,HEAPINFO *x,int flag);
|
extern int heap_info(HP_INFO *info,HEAPINFO *x,int flag);
|
||||||
extern int heap_create(const char *name, uint keys, HP_KEYDEF *keydef,
|
extern int heap_create(const char *name, uint keys, HP_KEYDEF *keydef,
|
||||||
uint reclength, ulong max_records, ulong min_records,
|
uint reclength, ulong max_records, ulong min_records,
|
||||||
HP_CREATE_INFO *create_info);
|
HP_CREATE_INFO *create_info, HP_SHARE **share);
|
||||||
extern int heap_delete_table(const char *name);
|
extern int heap_delete_table(const char *name);
|
||||||
extern void heap_drop_table(HP_INFO *info);
|
extern void heap_drop_table(HP_INFO *info);
|
||||||
extern int heap_extra(HP_INFO *info,enum ha_extra_function function);
|
extern int heap_extra(HP_INFO *info,enum ha_extra_function function);
|
||||||
|
@ -47,7 +47,7 @@ typedef struct st_key_cache
|
|||||||
my_bool in_resize; /* true during resize operation */
|
my_bool in_resize; /* true during resize operation */
|
||||||
my_bool resize_in_flush; /* true during flush of resize operation */
|
my_bool resize_in_flush; /* true during flush of resize operation */
|
||||||
my_bool can_be_used; /* usage of cache for read/write is allowed */
|
my_bool can_be_used; /* usage of cache for read/write is allowed */
|
||||||
ulong key_cache_mem_size; /* specified size of the cache memory */
|
size_t key_cache_mem_size; /* specified size of the cache memory */
|
||||||
uint key_cache_block_size; /* size of the page buffer of a cache block */
|
uint key_cache_block_size; /* size of the page buffer of a cache block */
|
||||||
ulong min_warm_blocks; /* min number of warm blocks; */
|
ulong min_warm_blocks; /* min number of warm blocks; */
|
||||||
ulong age_threshold; /* age threshold for hot blocks */
|
ulong age_threshold; /* age threshold for hot blocks */
|
||||||
@ -107,10 +107,10 @@ typedef struct st_key_cache
|
|||||||
extern KEY_CACHE dflt_key_cache_var, *dflt_key_cache;
|
extern KEY_CACHE dflt_key_cache_var, *dflt_key_cache;
|
||||||
|
|
||||||
extern int init_key_cache(KEY_CACHE *keycache, uint key_cache_block_size,
|
extern int init_key_cache(KEY_CACHE *keycache, uint key_cache_block_size,
|
||||||
ulong use_mem, uint division_limit,
|
size_t use_mem, uint division_limit,
|
||||||
uint age_threshold);
|
uint age_threshold);
|
||||||
extern int resize_key_cache(KEY_CACHE *keycache, uint key_cache_block_size,
|
extern int resize_key_cache(KEY_CACHE *keycache, uint key_cache_block_size,
|
||||||
ulong use_mem, uint division_limit,
|
size_t use_mem, uint division_limit,
|
||||||
uint age_threshold);
|
uint age_threshold);
|
||||||
extern void change_key_cache_param(KEY_CACHE *keycache, uint division_limit,
|
extern void change_key_cache_param(KEY_CACHE *keycache, uint division_limit,
|
||||||
uint age_threshold);
|
uint age_threshold);
|
||||||
|
@ -48,6 +48,8 @@
|
|||||||
#define HA_OPEN_FOR_REPAIR 32 /* open even if crashed */
|
#define HA_OPEN_FOR_REPAIR 32 /* open even if crashed */
|
||||||
#define HA_OPEN_FROM_SQL_LAYER 64
|
#define HA_OPEN_FROM_SQL_LAYER 64
|
||||||
#define HA_OPEN_MMAP 128 /* open memory mapped */
|
#define HA_OPEN_MMAP 128 /* open memory mapped */
|
||||||
|
/* Internal temp table, used for temporary results */
|
||||||
|
#define HA_OPEN_INTERNAL_TABLE 256
|
||||||
|
|
||||||
/* The following is parameter to ha_rkey() how to use key */
|
/* The following is parameter to ha_rkey() how to use key */
|
||||||
|
|
||||||
|
@ -31,6 +31,7 @@ C_MODE_START
|
|||||||
#define GET_DISABLED 11
|
#define GET_DISABLED 11
|
||||||
#define GET_ENUM 12
|
#define GET_ENUM 12
|
||||||
#define GET_SET 13
|
#define GET_SET 13
|
||||||
|
#define GET_DOUBLE 14
|
||||||
|
|
||||||
#define GET_ASK_ADDR 128
|
#define GET_ASK_ADDR 128
|
||||||
#define GET_TYPE_MASK 127
|
#define GET_TYPE_MASK 127
|
||||||
|
@ -150,7 +150,7 @@ extern ulonglong sf_malloc_mem_limit;
|
|||||||
#else
|
#else
|
||||||
#define my_checkmalloc()
|
#define my_checkmalloc()
|
||||||
#undef TERMINATE
|
#undef TERMINATE
|
||||||
#define TERMINATE(A) {}
|
#define TERMINATE(A,B) {}
|
||||||
#define QUICK_SAFEMALLOC
|
#define QUICK_SAFEMALLOC
|
||||||
#define NORMAL_SAFEMALLOC
|
#define NORMAL_SAFEMALLOC
|
||||||
extern void *my_malloc(size_t Size,myf MyFlags);
|
extern void *my_malloc(size_t Size,myf MyFlags);
|
||||||
@ -618,7 +618,7 @@ extern int nt_share_delete(const char *name,myf MyFlags);
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef TERMINATE
|
#ifndef TERMINATE
|
||||||
extern void TERMINATE(FILE *file);
|
extern void TERMINATE(FILE *file, uint flag);
|
||||||
#endif
|
#endif
|
||||||
extern void init_glob_errs(void);
|
extern void init_glob_errs(void);
|
||||||
extern FILE *my_fopen(const char *FileName,int Flags,myf MyFlags);
|
extern FILE *my_fopen(const char *FileName,int Flags,myf MyFlags);
|
||||||
@ -833,7 +833,7 @@ extern my_bool my_compress(uchar *, size_t *, size_t *);
|
|||||||
extern my_bool my_uncompress(uchar *, size_t , size_t *);
|
extern my_bool my_uncompress(uchar *, size_t , size_t *);
|
||||||
extern uchar *my_compress_alloc(const uchar *packet, size_t *len,
|
extern uchar *my_compress_alloc(const uchar *packet, size_t *len,
|
||||||
size_t *complen);
|
size_t *complen);
|
||||||
extern int packfrm(const uchar *, size_t, uchar **, size_t *);
|
extern int packfrm(uchar *, size_t, uchar **, size_t *);
|
||||||
extern int unpackfrm(uchar **, size_t *, const uchar *);
|
extern int unpackfrm(uchar **, size_t *, const uchar *);
|
||||||
|
|
||||||
extern ha_checksum my_checksum(ha_checksum crc, const uchar *mem,
|
extern ha_checksum my_checksum(ha_checksum crc, const uchar *mem,
|
||||||
@ -846,7 +846,11 @@ extern void my_sleep(ulong m_seconds);
|
|||||||
extern uint my_set_max_open_files(uint files);
|
extern uint my_set_max_open_files(uint files);
|
||||||
void my_free_open_file_info(void);
|
void my_free_open_file_info(void);
|
||||||
|
|
||||||
|
extern time_t my_time(myf flags);
|
||||||
extern ulonglong my_getsystime(void);
|
extern ulonglong my_getsystime(void);
|
||||||
|
extern ulonglong my_micro_time();
|
||||||
|
extern ulonglong my_micro_time_and_time(time_t *time_arg);
|
||||||
|
time_t my_time_possible_from_micro(ulonglong microtime);
|
||||||
extern my_bool my_gethwaddr(uchar *to);
|
extern my_bool my_gethwaddr(uchar *to);
|
||||||
extern int my_getncpus();
|
extern int my_getncpus();
|
||||||
|
|
||||||
|
@ -113,6 +113,7 @@ typedef struct st_mysql_field {
|
|||||||
unsigned int decimals; /* Number of decimals in field */
|
unsigned int decimals; /* Number of decimals in field */
|
||||||
unsigned int charsetnr; /* Character set */
|
unsigned int charsetnr; /* Character set */
|
||||||
enum enum_field_types type; /* Type of field. See mysql_com.h for types */
|
enum enum_field_types type; /* Type of field. See mysql_com.h for types */
|
||||||
|
void *extension;
|
||||||
} MYSQL_FIELD;
|
} MYSQL_FIELD;
|
||||||
|
|
||||||
typedef char **MYSQL_ROW; /* return data as array of strings */
|
typedef char **MYSQL_ROW; /* return data as array of strings */
|
||||||
@ -147,12 +148,13 @@ typedef MYSQL_ROWS *MYSQL_ROW_OFFSET; /* offset to current row */
|
|||||||
|
|
||||||
typedef struct embedded_query_result EMBEDDED_QUERY_RESULT;
|
typedef struct embedded_query_result EMBEDDED_QUERY_RESULT;
|
||||||
typedef struct st_mysql_data {
|
typedef struct st_mysql_data {
|
||||||
|
MYSQL_ROWS *data;
|
||||||
|
struct embedded_query_result *embedded_info;
|
||||||
|
MEM_ROOT alloc;
|
||||||
my_ulonglong rows;
|
my_ulonglong rows;
|
||||||
unsigned int fields;
|
unsigned int fields;
|
||||||
MYSQL_ROWS *data;
|
|
||||||
MEM_ROOT alloc;
|
|
||||||
/* extra info for embedded library */
|
/* extra info for embedded library */
|
||||||
struct embedded_query_result *embedded_info;
|
void *extension;
|
||||||
} MYSQL_DATA;
|
} MYSQL_DATA;
|
||||||
|
|
||||||
enum mysql_option
|
enum mysql_option
|
||||||
@ -215,6 +217,7 @@ struct st_mysql_options {
|
|||||||
void (*local_infile_end)(void *);
|
void (*local_infile_end)(void *);
|
||||||
int (*local_infile_error)(void *, char *, unsigned int);
|
int (*local_infile_error)(void *, char *, unsigned int);
|
||||||
void *local_infile_userdata;
|
void *local_infile_userdata;
|
||||||
|
void *extension;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum mysql_status
|
enum mysql_status
|
||||||
@ -304,27 +307,28 @@ typedef struct st_mysql
|
|||||||
from mysql_stmt_close if close had to cancel result set of this object.
|
from mysql_stmt_close if close had to cancel result set of this object.
|
||||||
*/
|
*/
|
||||||
my_bool *unbuffered_fetch_owner;
|
my_bool *unbuffered_fetch_owner;
|
||||||
#if defined(EMBEDDED_LIBRARY) || defined(EMBEDDED_LIBRARY_COMPATIBLE) || MYSQL_VERSION_ID >= 50100
|
|
||||||
/* needed for embedded server - no net buffer to store the 'info' */
|
/* needed for embedded server - no net buffer to store the 'info' */
|
||||||
char *info_buffer;
|
char *info_buffer;
|
||||||
#endif
|
void *extension;
|
||||||
} MYSQL;
|
} MYSQL;
|
||||||
|
|
||||||
|
|
||||||
typedef struct st_mysql_res {
|
typedef struct st_mysql_res {
|
||||||
my_ulonglong row_count;
|
my_ulonglong row_count;
|
||||||
MYSQL_FIELD *fields;
|
MYSQL_FIELD *fields;
|
||||||
MYSQL_DATA *data;
|
MYSQL_DATA *data;
|
||||||
MYSQL_ROWS *data_cursor;
|
MYSQL_ROWS *data_cursor;
|
||||||
unsigned long *lengths; /* column lengths of current row */
|
unsigned long *lengths; /* column lengths of current row */
|
||||||
MYSQL *handle; /* for unbuffered reads */
|
MYSQL *handle; /* for unbuffered reads */
|
||||||
MEM_ROOT field_alloc;
|
const struct st_mysql_methods *methods;
|
||||||
unsigned int field_count, current_field;
|
|
||||||
MYSQL_ROW row; /* If unbuffered read */
|
MYSQL_ROW row; /* If unbuffered read */
|
||||||
MYSQL_ROW current_row; /* buffer to current row */
|
MYSQL_ROW current_row; /* buffer to current row */
|
||||||
|
MEM_ROOT field_alloc;
|
||||||
|
unsigned int field_count, current_field;
|
||||||
my_bool eof; /* Used by mysql_fetch_row */
|
my_bool eof; /* Used by mysql_fetch_row */
|
||||||
/* mysql_stmt_close() had to cancel this result */
|
/* mysql_stmt_close() had to cancel this result */
|
||||||
my_bool unbuffered_fetch_cancelled;
|
my_bool unbuffered_fetch_cancelled;
|
||||||
const struct st_mysql_methods *methods;
|
void *extension;
|
||||||
} MYSQL_RES;
|
} MYSQL_RES;
|
||||||
|
|
||||||
#define MAX_MYSQL_MANAGER_ERR 256
|
#define MAX_MYSQL_MANAGER_ERR 256
|
||||||
@ -344,21 +348,23 @@ typedef struct st_mysql_res {
|
|||||||
typedef struct st_mysql_manager
|
typedef struct st_mysql_manager
|
||||||
{
|
{
|
||||||
NET net;
|
NET net;
|
||||||
char *host,*user,*passwd;
|
char *host, *user, *passwd;
|
||||||
|
char *net_buf, *net_buf_pos, *net_data_end;
|
||||||
unsigned int port;
|
unsigned int port;
|
||||||
my_bool free_me;
|
|
||||||
my_bool eof;
|
|
||||||
int cmd_status;
|
int cmd_status;
|
||||||
int last_errno;
|
int last_errno;
|
||||||
char* net_buf,*net_buf_pos,*net_data_end;
|
|
||||||
int net_buf_size;
|
int net_buf_size;
|
||||||
|
my_bool free_me;
|
||||||
|
my_bool eof;
|
||||||
char last_error[MAX_MYSQL_MANAGER_ERR];
|
char last_error[MAX_MYSQL_MANAGER_ERR];
|
||||||
|
void *extension;
|
||||||
} MYSQL_MANAGER;
|
} MYSQL_MANAGER;
|
||||||
|
|
||||||
typedef struct st_mysql_parameters
|
typedef struct st_mysql_parameters
|
||||||
{
|
{
|
||||||
unsigned long *p_max_allowed_packet;
|
unsigned long *p_max_allowed_packet;
|
||||||
unsigned long *p_net_buffer_length;
|
unsigned long *p_net_buffer_length;
|
||||||
|
void *extension;
|
||||||
} MYSQL_PARAMETERS;
|
} MYSQL_PARAMETERS;
|
||||||
|
|
||||||
#if !defined(MYSQL_SERVER) && !defined(EMBEDDED_LIBRARY)
|
#if !defined(MYSQL_SERVER) && !defined(EMBEDDED_LIBRARY)
|
||||||
@ -373,6 +379,7 @@ typedef struct st_mysql_parameters
|
|||||||
*/
|
*/
|
||||||
int STDCALL mysql_server_init(int argc, char **argv, char **groups);
|
int STDCALL mysql_server_init(int argc, char **argv, char **groups);
|
||||||
void STDCALL mysql_server_end(void);
|
void STDCALL mysql_server_end(void);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
mysql_server_init/end need to be called when using libmysqld or
|
mysql_server_init/end need to be called when using libmysqld or
|
||||||
libmysqlclient (exactly, mysql_server_init() is called by mysql_init() so
|
libmysqlclient (exactly, mysql_server_init() is called by mysql_init() so
|
||||||
@ -661,23 +668,24 @@ typedef struct st_mysql_bind
|
|||||||
void *buffer; /* buffer to get/put data */
|
void *buffer; /* buffer to get/put data */
|
||||||
/* set this if you want to track data truncations happened during fetch */
|
/* set this if you want to track data truncations happened during fetch */
|
||||||
my_bool *error;
|
my_bool *error;
|
||||||
enum enum_field_types buffer_type; /* buffer type */
|
|
||||||
/* output buffer length, must be set when fetching str/binary */
|
|
||||||
unsigned long buffer_length;
|
|
||||||
unsigned char *row_ptr; /* for the current data position */
|
unsigned char *row_ptr; /* for the current data position */
|
||||||
unsigned long offset; /* offset position for char/binary fetch */
|
|
||||||
unsigned long length_value; /* Used if length is 0 */
|
|
||||||
unsigned int param_number; /* For null count and error messages */
|
|
||||||
unsigned int pack_length; /* Internal length for packed data */
|
|
||||||
my_bool error_value; /* used if error is 0 */
|
|
||||||
my_bool is_unsigned; /* set if integer type is unsigned */
|
|
||||||
my_bool long_data_used; /* If used with mysql_send_long_data */
|
|
||||||
my_bool is_null_value; /* Used if is_null is 0 */
|
|
||||||
void (*store_param_func)(NET *net, struct st_mysql_bind *param);
|
void (*store_param_func)(NET *net, struct st_mysql_bind *param);
|
||||||
void (*fetch_result)(struct st_mysql_bind *, MYSQL_FIELD *,
|
void (*fetch_result)(struct st_mysql_bind *, MYSQL_FIELD *,
|
||||||
unsigned char **row);
|
unsigned char **row);
|
||||||
void (*skip_result)(struct st_mysql_bind *, MYSQL_FIELD *,
|
void (*skip_result)(struct st_mysql_bind *, MYSQL_FIELD *,
|
||||||
unsigned char **row);
|
unsigned char **row);
|
||||||
|
/* output buffer length, must be set when fetching str/binary */
|
||||||
|
unsigned long buffer_length;
|
||||||
|
unsigned long offset; /* offset position for char/binary fetch */
|
||||||
|
unsigned long length_value; /* Used if length is 0 */
|
||||||
|
unsigned int param_number; /* For null count and error messages */
|
||||||
|
unsigned int pack_length; /* Internal length for packed data */
|
||||||
|
enum enum_field_types buffer_type; /* buffer type */
|
||||||
|
my_bool error_value; /* used if error is 0 */
|
||||||
|
my_bool is_unsigned; /* set if integer type is unsigned */
|
||||||
|
my_bool long_data_used; /* If used with mysql_send_long_data */
|
||||||
|
my_bool is_null_value; /* Used if is_null is 0 */
|
||||||
|
void *extension;
|
||||||
} MYSQL_BIND;
|
} MYSQL_BIND;
|
||||||
|
|
||||||
|
|
||||||
@ -692,15 +700,15 @@ typedef struct st_mysql_stmt
|
|||||||
MYSQL_FIELD *fields; /* result set metadata */
|
MYSQL_FIELD *fields; /* result set metadata */
|
||||||
MYSQL_DATA result; /* cached result set */
|
MYSQL_DATA result; /* cached result set */
|
||||||
MYSQL_ROWS *data_cursor; /* current row in cached result */
|
MYSQL_ROWS *data_cursor; /* current row in cached result */
|
||||||
/* copy of mysql->affected_rows after statement execution */
|
|
||||||
my_ulonglong affected_rows;
|
|
||||||
my_ulonglong insert_id; /* copy of mysql->insert_id */
|
|
||||||
/*
|
/*
|
||||||
mysql_stmt_fetch() calls this function to fetch one row (it's different
|
mysql_stmt_fetch() calls this function to fetch one row (it's different
|
||||||
for buffered, unbuffered and cursor fetch).
|
for buffered, unbuffered and cursor fetch).
|
||||||
*/
|
*/
|
||||||
int (*read_row_func)(struct st_mysql_stmt *stmt,
|
int (*read_row_func)(struct st_mysql_stmt *stmt,
|
||||||
unsigned char **row);
|
unsigned char **row);
|
||||||
|
/* copy of mysql->affected_rows after statement execution */
|
||||||
|
my_ulonglong affected_rows;
|
||||||
|
my_ulonglong insert_id; /* copy of mysql->insert_id */
|
||||||
unsigned long stmt_id; /* Id for prepared statement */
|
unsigned long stmt_id; /* Id for prepared statement */
|
||||||
unsigned long flags; /* i.e. type of cursor to open */
|
unsigned long flags; /* i.e. type of cursor to open */
|
||||||
unsigned long prefetch_rows; /* number of rows per one COM_FETCH */
|
unsigned long prefetch_rows; /* number of rows per one COM_FETCH */
|
||||||
@ -726,6 +734,7 @@ typedef struct st_mysql_stmt
|
|||||||
metadata fields when doing mysql_stmt_store_result.
|
metadata fields when doing mysql_stmt_store_result.
|
||||||
*/
|
*/
|
||||||
my_bool update_max_length;
|
my_bool update_max_length;
|
||||||
|
void *extension;
|
||||||
} MYSQL_STMT;
|
} MYSQL_STMT;
|
||||||
|
|
||||||
enum enum_stmt_attr_type
|
enum enum_stmt_attr_type
|
||||||
|
@ -110,7 +110,7 @@ enum enum_mysql_show_type
|
|||||||
{
|
{
|
||||||
SHOW_UNDEF, SHOW_BOOL, SHOW_INT, SHOW_LONG,
|
SHOW_UNDEF, SHOW_BOOL, SHOW_INT, SHOW_LONG,
|
||||||
SHOW_LONGLONG, SHOW_CHAR, SHOW_CHAR_PTR,
|
SHOW_LONGLONG, SHOW_CHAR, SHOW_CHAR_PTR,
|
||||||
SHOW_ARRAY, SHOW_FUNC
|
SHOW_ARRAY, SHOW_FUNC, SHOW_DOUBLE
|
||||||
};
|
};
|
||||||
|
|
||||||
struct st_mysql_show_var {
|
struct st_mysql_show_var {
|
||||||
|
@ -186,25 +186,25 @@ typedef struct st_vio Vio;
|
|||||||
|
|
||||||
typedef struct st_net {
|
typedef struct st_net {
|
||||||
#if !defined(CHECK_EMBEDDED_DIFFERENCES) || !defined(EMBEDDED_LIBRARY)
|
#if !defined(CHECK_EMBEDDED_DIFFERENCES) || !defined(EMBEDDED_LIBRARY)
|
||||||
Vio* vio;
|
Vio *vio;
|
||||||
unsigned char *buff,*buff_end,*write_pos,*read_pos;
|
unsigned char *buff,*buff_end,*write_pos,*read_pos;
|
||||||
my_socket fd; /* For Perl DBI/dbd */
|
my_socket fd; /* For Perl DBI/dbd */
|
||||||
unsigned long max_packet,max_packet_size;
|
|
||||||
unsigned int pkt_nr,compress_pkt_nr;
|
|
||||||
unsigned int write_timeout, read_timeout, retry_count;
|
|
||||||
int fcntl;
|
|
||||||
my_bool compress;
|
|
||||||
/*
|
/*
|
||||||
The following variable is set if we are doing several queries in one
|
The following variable is set if we are doing several queries in one
|
||||||
command ( as in LOAD TABLE ... FROM MASTER ),
|
command ( as in LOAD TABLE ... FROM MASTER ),
|
||||||
and do not want to confuse the client with OK at the wrong time
|
and do not want to confuse the client with OK at the wrong time
|
||||||
*/
|
*/
|
||||||
unsigned long remain_in_buf,length, buf_length, where_b;
|
unsigned long remain_in_buf,length, buf_length, where_b;
|
||||||
|
unsigned long max_packet,max_packet_size;
|
||||||
|
unsigned int pkt_nr,compress_pkt_nr;
|
||||||
|
unsigned int write_timeout, read_timeout, retry_count;
|
||||||
|
int fcntl;
|
||||||
unsigned int *return_status;
|
unsigned int *return_status;
|
||||||
unsigned char reading_or_writing;
|
unsigned char reading_or_writing;
|
||||||
char save_char;
|
char save_char;
|
||||||
my_bool no_send_ok; /* For SPs and other things that do multiple stmts */
|
my_bool no_send_ok; /* For SPs and other things that do multiple stmts */
|
||||||
my_bool no_send_eof; /* For SPs' first version read-only cursors */
|
my_bool no_send_eof; /* For SPs' first version read-only cursors */
|
||||||
|
my_bool compress;
|
||||||
/*
|
/*
|
||||||
Set if OK packet is already sent, and we do not need to send error
|
Set if OK packet is already sent, and we do not need to send error
|
||||||
messages
|
messages
|
||||||
@ -215,20 +215,20 @@ typedef struct st_net {
|
|||||||
queries in cache that have not stored its results yet
|
queries in cache that have not stored its results yet
|
||||||
*/
|
*/
|
||||||
#endif
|
#endif
|
||||||
char last_error[MYSQL_ERRMSG_SIZE], sqlstate[SQLSTATE_LENGTH+1];
|
|
||||||
unsigned int last_errno;
|
|
||||||
unsigned char error;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
'query_cache_query' should be accessed only via query cache
|
'query_cache_query' should be accessed only via query cache
|
||||||
functions and methods to maintain proper locking.
|
functions and methods to maintain proper locking.
|
||||||
*/
|
*/
|
||||||
unsigned char *query_cache_query;
|
unsigned char *query_cache_query;
|
||||||
|
unsigned int last_errno;
|
||||||
|
unsigned char error;
|
||||||
my_bool report_error; /* We should report error (we have unreported error) */
|
my_bool report_error; /* We should report error (we have unreported error) */
|
||||||
my_bool return_errno;
|
my_bool return_errno;
|
||||||
|
char last_error[MYSQL_ERRMSG_SIZE], sqlstate[SQLSTATE_LENGTH+1];
|
||||||
|
void *extension;
|
||||||
} NET;
|
} NET;
|
||||||
|
|
||||||
|
|
||||||
#define packet_error (~(unsigned long) 0)
|
#define packet_error (~(unsigned long) 0)
|
||||||
|
|
||||||
enum enum_field_types { MYSQL_TYPE_DECIMAL, MYSQL_TYPE_TINY,
|
enum enum_field_types { MYSQL_TYPE_DECIMAL, MYSQL_TYPE_TINY,
|
||||||
@ -389,6 +389,7 @@ typedef struct st_udf_args
|
|||||||
char *maybe_null; /* Set to 1 for all maybe_null args */
|
char *maybe_null; /* Set to 1 for all maybe_null args */
|
||||||
char **attributes; /* Pointer to attribute name */
|
char **attributes; /* Pointer to attribute name */
|
||||||
unsigned long *attribute_lengths; /* Length of attribute arguments */
|
unsigned long *attribute_lengths; /* Length of attribute arguments */
|
||||||
|
void *extension;
|
||||||
} UDF_ARGS;
|
} UDF_ARGS;
|
||||||
|
|
||||||
/* This holds information about the result */
|
/* This holds information about the result */
|
||||||
@ -399,7 +400,9 @@ typedef struct st_udf_init
|
|||||||
unsigned int decimals; /* for real functions */
|
unsigned int decimals; /* for real functions */
|
||||||
unsigned long max_length; /* For string functions */
|
unsigned long max_length; /* For string functions */
|
||||||
char *ptr; /* free pointer for function data */
|
char *ptr; /* free pointer for function data */
|
||||||
my_bool const_item; /* 0 if result is independent of arguments */
|
/* 0 if result is independent of arguments */
|
||||||
|
my_bool const_item;
|
||||||
|
void *extension;
|
||||||
} UDF_INIT;
|
} UDF_INIT;
|
||||||
|
|
||||||
/* Constants when using compression */
|
/* Constants when using compression */
|
||||||
|
100
libmysql/CMakeLists.txt
Normal file → Executable file
100
libmysql/CMakeLists.txt
Normal file → Executable file
@ -12,24 +12,56 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program; if not, write to the Free Software
|
# along with this program; if not, write to the Free Software
|
||||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
# Need to set USE_TLS, since __declspec(thread) approach to thread local
|
|
||||||
# storage does not work properly in DLLs.
|
|
||||||
INCLUDE("${PROJECT_SOURCE_DIR}/win/mysql_manifest.cmake")
|
INCLUDE("${PROJECT_SOURCE_DIR}/win/mysql_manifest.cmake")
|
||||||
|
|
||||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX -DUSE_TLS")
|
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX -DUSE_TLS")
|
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||||
|
|
||||||
|
# Note that we don't link with the libraries "strings" or "mysys"
|
||||||
|
# here, instead we recompile the files needed and include them
|
||||||
|
# directly. This means we don't have to worry here about if these
|
||||||
|
# libraries are compiled defining USE_TLS or not. Not that it *should*
|
||||||
|
# have been a problem anyway, they don't use thread local storage.
|
||||||
|
|
||||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
|
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
|
||||||
${CMAKE_SOURCE_DIR}/zlib
|
|
||||||
${CMAKE_SOURCE_DIR}/extra/yassl/include
|
|
||||||
${CMAKE_SOURCE_DIR}/libmysql
|
${CMAKE_SOURCE_DIR}/libmysql
|
||||||
${CMAKE_SOURCE_DIR}/regex
|
${CMAKE_SOURCE_DIR}/regex
|
||||||
${CMAKE_SOURCE_DIR}/sql
|
${CMAKE_SOURCE_DIR}/sql
|
||||||
${CMAKE_SOURCE_DIR}/strings)
|
${CMAKE_SOURCE_DIR}/strings)
|
||||||
|
|
||||||
ADD_LIBRARY(libmysql SHARED dll.c libmysql.def
|
# We include the source file listing instead of referencing the
|
||||||
../mysys/array.c ../strings/bchange.c ../strings/bmove.c
|
# libraries. At least with CMake 2.4 and Visual Studio 2005 a static
|
||||||
|
# library created from other static libraries would not be complete,
|
||||||
|
# i.e. the libraries listed in TARGET_LINK_LIBRARIES() were just
|
||||||
|
# ignored.
|
||||||
|
|
||||||
|
|
||||||
|
# Include and add the directory path
|
||||||
|
SET(SOURCE_SUBLIBS TRUE)
|
||||||
|
|
||||||
|
INCLUDE(${CMAKE_SOURCE_DIR}/zlib/CMakeLists.txt)
|
||||||
|
FOREACH(rpath ${ZLIB_SOURCES})
|
||||||
|
SET(LIB_SOURCES ${LIB_SOURCES} ../zlib/${rpath})
|
||||||
|
ENDFOREACH(rpath)
|
||||||
|
|
||||||
|
# FIXME only needed if build type is "Debug", but CMAKE_BUILD_TYPE is
|
||||||
|
# not set during configure time.
|
||||||
|
INCLUDE(${CMAKE_SOURCE_DIR}/dbug/CMakeLists.txt)
|
||||||
|
FOREACH(rpath ${DBUG_SOURCES})
|
||||||
|
SET(LIB_SOURCES ${LIB_SOURCES} ../dbug/${rpath})
|
||||||
|
ENDFOREACH(rpath)
|
||||||
|
|
||||||
|
INCLUDE(${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/CMakeLists.txt)
|
||||||
|
FOREACH(rpath ${TAOCRYPT_SOURCES})
|
||||||
|
SET(LIB_SOURCES ${LIB_SOURCES} ../extra/yassl/taocrypt/${rpath})
|
||||||
|
ENDFOREACH(rpath)
|
||||||
|
|
||||||
|
INCLUDE(${CMAKE_SOURCE_DIR}/extra/yassl/CMakeLists.txt)
|
||||||
|
FOREACH(rpath ${YASSL_SOURCES})
|
||||||
|
SET(LIB_SOURCES ${LIB_SOURCES} ../extra/yassl/${rpath})
|
||||||
|
ENDFOREACH(rpath)
|
||||||
|
|
||||||
|
SET(CLIENT_SOURCES ../mysys/array.c ../strings/bchange.c ../strings/bmove.c
|
||||||
../strings/bmove_upp.c ../mysys/charset-def.c ../mysys/charset.c
|
../strings/bmove_upp.c ../mysys/charset-def.c ../mysys/charset.c
|
||||||
../sql-common/client.c ../strings/ctype-big5.c ../strings/ctype-bin.c
|
../sql-common/client.c ../strings/ctype-big5.c ../strings/ctype-bin.c
|
||||||
../strings/ctype-cp932.c ../strings/ctype-czech.c ../strings/ctype-euc_kr.c
|
../strings/ctype-cp932.c ../strings/ctype-czech.c ../strings/ctype-euc_kr.c
|
||||||
@ -38,10 +70,11 @@ ADD_LIBRARY(libmysql SHARED dll.c libmysql.def
|
|||||||
../strings/ctype-simple.c ../strings/ctype-sjis.c ../strings/ctype-tis620.c
|
../strings/ctype-simple.c ../strings/ctype-sjis.c ../strings/ctype-tis620.c
|
||||||
../strings/ctype-uca.c ../strings/ctype-ucs2.c ../strings/ctype-ujis.c
|
../strings/ctype-uca.c ../strings/ctype-ucs2.c ../strings/ctype-ujis.c
|
||||||
../strings/ctype-utf8.c ../strings/ctype-win1250ch.c ../strings/ctype.c
|
../strings/ctype-utf8.c ../strings/ctype-win1250ch.c ../strings/ctype.c
|
||||||
../mysys/default.c ../libmysql/errmsg.c ../mysys/errors.c
|
../mysys/default.c errmsg.c ../mysys/errors.c
|
||||||
../libmysql/get_password.c ../strings/int2str.c ../strings/is_prefix.c
|
../mysys/hash.c ../mysys/my_sleep.c ../mysys/default_modify.c
|
||||||
../libmysql/libmysql.c ../mysys/list.c ../strings/llstr.c
|
get_password.c ../strings/int2str.c ../strings/is_prefix.c
|
||||||
../strings/longlong2str.c ../libmysql/manager.c ../mysys/mf_cache.c
|
libmysql.c ../mysys/list.c ../strings/llstr.c
|
||||||
|
../strings/longlong2str.c manager.c ../mysys/mf_cache.c
|
||||||
../mysys/mf_dirname.c ../mysys/mf_fn_ext.c ../mysys/mf_format.c
|
../mysys/mf_dirname.c ../mysys/mf_fn_ext.c ../mysys/mf_format.c
|
||||||
../mysys/mf_iocache.c ../mysys/mf_iocache2.c ../mysys/mf_loadpath.c
|
../mysys/mf_iocache.c ../mysys/mf_iocache2.c ../mysys/mf_loadpath.c
|
||||||
../mysys/mf_pack.c ../mysys/mf_path.c ../mysys/mf_tempfile.c ../mysys/mf_unixpath.c
|
../mysys/mf_pack.c ../mysys/mf_path.c ../mysys/mf_tempfile.c ../mysys/mf_unixpath.c
|
||||||
@ -63,13 +96,38 @@ ADD_LIBRARY(libmysql SHARED dll.c libmysql.def
|
|||||||
../strings/strmov.c ../strings/strnlen.c ../strings/strnmov.c ../strings/strtod.c
|
../strings/strmov.c ../strings/strnlen.c ../strings/strnmov.c ../strings/strtod.c
|
||||||
../strings/strtoll.c ../strings/strtoull.c ../strings/strxmov.c ../strings/strxnmov.c
|
../strings/strtoll.c ../strings/strtoull.c ../strings/strxmov.c ../strings/strxnmov.c
|
||||||
../mysys/thr_mutex.c ../mysys/typelib.c ../vio/vio.c ../vio/viosocket.c
|
../mysys/thr_mutex.c ../mysys/typelib.c ../vio/vio.c ../vio/viosocket.c
|
||||||
../vio/viossl.c ../vio/viosslfactories.c ../strings/xml.c)
|
../vio/viossl.c ../vio/viosslfactories.c ../strings/xml.c
|
||||||
ADD_DEPENDENCIES(libmysql dbug vio mysys strings GenError zlib yassl taocrypt)
|
../mysys/my_getsystime.c ${LIB_SOURCES})
|
||||||
TARGET_LINK_LIBRARIES(libmysql mysys strings wsock32)
|
|
||||||
|
|
||||||
ADD_EXECUTABLE(myTest mytest.c)
|
# Need to set USE_TLS for building the DLL, since __declspec(thread)
|
||||||
TARGET_LINK_LIBRARIES(myTest libmysql)
|
# approach to thread local storage does not work properly in DLLs.
|
||||||
|
#
|
||||||
|
# The static library might be used to form another DLL, as is the case
|
||||||
|
# with the ODBC driver, so it has to be compiled with USE_TLS as well.
|
||||||
|
#
|
||||||
|
# We create a third library without USE_TLS for internal use. We can't
|
||||||
|
# be sure that some client application part of this build doesn't go
|
||||||
|
# beond the documented API, and try access the Thread Local Storage.
|
||||||
|
# The "_notls" means no Tls*() functions used, i.e. "static" TLS.
|
||||||
|
|
||||||
IF(EMBED_MANIFESTS)
|
ADD_LIBRARY(mysqlclient STATIC ${CLIENT_SOURCES})
|
||||||
MYSQL_EMBED_MANIFEST("myTest" "asInvoker")
|
ADD_DEPENDENCIES(mysqlclient GenError)
|
||||||
ENDIF(EMBED_MANIFESTS)
|
TARGET_LINK_LIBRARIES(mysqlclient)
|
||||||
|
|
||||||
|
ADD_LIBRARY(mysqlclient_notls STATIC ${CLIENT_SOURCES})
|
||||||
|
ADD_DEPENDENCIES(mysqlclient_notls GenError)
|
||||||
|
TARGET_LINK_LIBRARIES(mysqlclient_notls)
|
||||||
|
|
||||||
|
IF(NOT EMBEDDED_ONLY)
|
||||||
|
ADD_LIBRARY(libmysql SHARED ${CLIENT_SOURCES} dll.c libmysql.def)
|
||||||
|
SET_TARGET_PROPERTIES(libmysql mysqlclient PROPERTIES COMPILE_FLAGS "-DUSE_TLS")
|
||||||
|
ADD_DEPENDENCIES(libmysql GenError)
|
||||||
|
TARGET_LINK_LIBRARIES(libmysql wsock32)
|
||||||
|
|
||||||
|
ADD_EXECUTABLE(myTest mytest.c)
|
||||||
|
TARGET_LINK_LIBRARIES(myTest libmysql)
|
||||||
|
|
||||||
|
IF(EMBED_MANIFESTS)
|
||||||
|
MYSQL_EMBED_MANIFEST("myTest" "asInvoker")
|
||||||
|
ENDIF(EMBED_MANIFESTS)
|
||||||
|
ENDIF(NOT EMBEDDED_ONLY)
|
||||||
|
@ -68,7 +68,7 @@ mysysobjects1 = my_init.lo my_static.lo my_malloc.lo my_realloc.lo \
|
|||||||
mf_iocache2.lo my_seek.lo my_sleep.lo \
|
mf_iocache2.lo my_seek.lo my_sleep.lo \
|
||||||
my_pread.lo mf_cache.lo md5.lo sha1.lo \
|
my_pread.lo mf_cache.lo md5.lo sha1.lo \
|
||||||
my_getopt.lo my_gethostbyname.lo my_port.lo \
|
my_getopt.lo my_gethostbyname.lo my_port.lo \
|
||||||
my_rename.lo my_chsize.lo
|
my_rename.lo my_chsize.lo my_getsystime.lo
|
||||||
sqlobjects = net.lo
|
sqlobjects = net.lo
|
||||||
sql_cmn_objects = pack.lo client.lo my_time.lo
|
sql_cmn_objects = pack.lo client.lo my_time.lo
|
||||||
|
|
||||||
|
@ -215,7 +215,7 @@ void STDCALL mysql_server_end()
|
|||||||
}
|
}
|
||||||
|
|
||||||
static MYSQL_PARAMETERS mysql_internal_parameters=
|
static MYSQL_PARAMETERS mysql_internal_parameters=
|
||||||
{&max_allowed_packet, &net_buffer_length};
|
{&max_allowed_packet, &net_buffer_length, 0};
|
||||||
|
|
||||||
MYSQL_PARAMETERS *STDCALL mysql_get_parameters(void)
|
MYSQL_PARAMETERS *STDCALL mysql_get_parameters(void)
|
||||||
{
|
{
|
||||||
|
@ -20,21 +20,21 @@ SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
|||||||
# storage does not work properly in DLLs.
|
# storage does not work properly in DLLs.
|
||||||
ADD_DEFINITIONS(-DUSE_TLS -DMYSQL_SERVER)
|
ADD_DEFINITIONS(-DUSE_TLS -DMYSQL_SERVER)
|
||||||
|
|
||||||
# The old Windows build method used renamed (.cc -> .cpp) source files, fails
|
|
||||||
# in #include in lib_sql.cc. So disable that using the USING_CMAKE define.
|
|
||||||
ADD_DEFINITIONS(-DUSING_CMAKE)
|
|
||||||
|
|
||||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
|
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
|
||||||
${CMAKE_SOURCE_DIR}/libmysqld
|
${CMAKE_SOURCE_DIR}/libmysqld
|
||||||
${CMAKE_SOURCE_DIR}/libmysql
|
${CMAKE_SOURCE_DIR}/libmysql
|
||||||
${CMAKE_SOURCE_DIR}/sql
|
${CMAKE_SOURCE_DIR}/sql
|
||||||
${CMAKE_SOURCE_DIR}/regex
|
${CMAKE_SOURCE_DIR}/regex
|
||||||
${CMAKE_SOURCE_DIR}/extra/yassl/include
|
${CMAKE_SOURCE_DIR}/extra/yassl/include
|
||||||
${CMAKE_SOURCE_DIR}/zlib
|
${CMAKE_SOURCE_DIR}/zlib
|
||||||
)
|
)
|
||||||
|
|
||||||
SET_SOURCE_FILES_PROPERTIES(${PROJECT_SOURCE_DIR}/sql/sql_yacc.cc
|
SET_SOURCE_FILES_PROPERTIES(sql_yacc.cc
|
||||||
${PROJECT_SOURCE_DIR}/sql/sql_yacc.h
|
sql_yacc.h
|
||||||
|
message.h
|
||||||
|
message.rc
|
||||||
|
${CMAKE_SOURCE_DIR}/sql/sql_builtin.cc
|
||||||
|
lex_hash.h
|
||||||
PROPERTIES GENERATED 1)
|
PROPERTIES GENERATED 1)
|
||||||
|
|
||||||
ADD_LIBRARY(mysqldemb emb_qcache.cc libmysqld.c lib_sql.cc
|
ADD_LIBRARY(mysqldemb emb_qcache.cc libmysqld.c lib_sql.cc
|
||||||
@ -80,10 +80,54 @@ ADD_LIBRARY(mysqldemb emb_qcache.cc libmysqld.c lib_sql.cc
|
|||||||
../sql/scheduler.cc
|
../sql/scheduler.cc
|
||||||
../vio/vio.c ../vio/viosocket.c ../vio/viossl.c
|
../vio/vio.c ../vio/viosocket.c ../vio/viossl.c
|
||||||
../vio/viosslfactories.c
|
../vio/viosslfactories.c
|
||||||
${PROJECT_SOURCE_DIR}/sql/sql_yacc.cc
|
sql_yacc.cc
|
||||||
${PROJECT_SOURCE_DIR}/sql/sql_yacc.h)
|
sql_yacc.h
|
||||||
|
message.h
|
||||||
|
message.rc
|
||||||
|
lex_hash.h)
|
||||||
ADD_DEPENDENCIES(mysqldemb GenError)
|
ADD_DEPENDENCIES(mysqldemb GenError)
|
||||||
|
|
||||||
|
# Sql Parser custom command
|
||||||
|
ADD_CUSTOM_COMMAND(
|
||||||
|
SOURCE ${PROJECT_SOURCE_DIR}/sql/sql_yacc.yy
|
||||||
|
OUTPUT sql_yacc.cc
|
||||||
|
COMMAND bison.exe
|
||||||
|
ARGS -y -p MYSQL --defines=sql_yacc.h
|
||||||
|
--output=sql_yacc.cc ${PROJECT_SOURCE_DIR}/sql/sql_yacc.yy
|
||||||
|
DEPENDS ${PROJECT_SOURCE_DIR}/sql/sql_yacc.yy
|
||||||
|
)
|
||||||
|
|
||||||
|
ADD_CUSTOM_COMMAND(
|
||||||
|
OUTPUT sql_yacc.h
|
||||||
|
COMMAND echo
|
||||||
|
DEPENDS ${PROJECT_SOURCE_DIR}/sql/sql_yacc.cc
|
||||||
|
)
|
||||||
|
|
||||||
|
# Windows message file
|
||||||
|
ADD_CUSTOM_COMMAND(
|
||||||
|
SOURCE ${CMAKE_SOURCE_DIR}/sql/message.mc
|
||||||
|
OUTPUT message.rc message.h
|
||||||
|
COMMAND mc
|
||||||
|
ARGS ${CMAKE_SOURCE_DIR}/sql/message.mc
|
||||||
|
DEPENDS ${CMAKE_SOURCE_DIR}/sql/message.mc
|
||||||
|
)
|
||||||
|
|
||||||
|
# Gen_lex_hash
|
||||||
|
ADD_EXECUTABLE(gen_lex_hash ../sql/gen_lex_hash.cc)
|
||||||
|
TARGET_LINK_LIBRARIES(gen_lex_hash dbug mysqlclient wsock32)
|
||||||
|
GET_TARGET_PROPERTY(GEN_LEX_HASH_EXE gen_lex_hash LOCATION)
|
||||||
|
ADD_CUSTOM_COMMAND(
|
||||||
|
OUTPUT lex_hash.h
|
||||||
|
COMMAND ${GEN_LEX_HASH_EXE} ARGS > lex_hash.h
|
||||||
|
DEPENDS ${GEN_LEX_HASH_EXE}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Remove the auto-generated files as part of 'Clean Solution'
|
||||||
|
SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES
|
||||||
|
"lex_hash.h;message.rc;message.h;sql_yacc.h;sql_yacc.cc")
|
||||||
|
|
||||||
|
ADD_DEPENDENCIES(mysqldemb gen_lex_hash)
|
||||||
|
|
||||||
# Seems we cannot make a library without at least one source file. So use a
|
# Seems we cannot make a library without at least one source file. So use a
|
||||||
# dummy empty file
|
# dummy empty file
|
||||||
FILE(WRITE cmake_dummy.c " ")
|
FILE(WRITE cmake_dummy.c " ")
|
||||||
@ -120,3 +164,6 @@ ENDIF(WITH_ARCHIVE_STORAGE_ENGINE)
|
|||||||
IF(WITH_BLACKHOLE_STORAGE_ENGINE)
|
IF(WITH_BLACKHOLE_STORAGE_ENGINE)
|
||||||
TARGET_LINK_LIBRARIES(libmysqld blackhole)
|
TARGET_LINK_LIBRARIES(libmysqld blackhole)
|
||||||
ENDIF(WITH_BLACKHOLE_STORAGE_ENGINE)
|
ENDIF(WITH_BLACKHOLE_STORAGE_ENGINE)
|
||||||
|
IF(WITH_CSV_STORAGE_ENGINE)
|
||||||
|
TARGET_LINK_LIBRARIES(libmysqld csv)
|
||||||
|
ENDIF(WITH_CSV_STORAGE_ENGINE)
|
||||||
|
@ -22,7 +22,7 @@ MYSQLSHAREdir = $(pkgdatadir)
|
|||||||
MYSQLBASEdir= $(prefix)
|
MYSQLBASEdir= $(prefix)
|
||||||
MYSQLLIBdir= $(libdir)
|
MYSQLLIBdir= $(libdir)
|
||||||
|
|
||||||
EXTRA_DIST = libmysqld.def
|
EXTRA_DIST = libmysqld.def CMakeLists.txt
|
||||||
DEFS = -DEMBEDDED_LIBRARY -DMYSQL_SERVER \
|
DEFS = -DEMBEDDED_LIBRARY -DMYSQL_SERVER \
|
||||||
-DDEFAULT_MYSQL_HOME="\"$(MYSQLBASEdir)\"" \
|
-DDEFAULT_MYSQL_HOME="\"$(MYSQLBASEdir)\"" \
|
||||||
-DDATADIR="\"$(MYSQLDATAdir)\"" \
|
-DDATADIR="\"$(MYSQLDATAdir)\"" \
|
||||||
|
@ -23,11 +23,11 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
|
|||||||
# Currently does not work with DBUG, there are missing symbols reported.
|
# Currently does not work with DBUG, there are missing symbols reported.
|
||||||
ADD_DEFINITIONS(-DDBUG_OFF)
|
ADD_DEFINITIONS(-DDBUG_OFF)
|
||||||
ADD_DEFINITIONS(-DUSE_TLS)
|
ADD_DEFINITIONS(-DUSE_TLS)
|
||||||
ADD_EXECUTABLE(test_libmysqld ../../client/completion_hash.cc
|
ADD_EXECUTABLE(mysql_embedded ../../client/completion_hash.cc
|
||||||
../../client/mysql.cc ../../client/readline.cc
|
../../client/mysql.cc ../../client/readline.cc
|
||||||
../../client/sql_string.cc)
|
../../client/sql_string.cc)
|
||||||
TARGET_LINK_LIBRARIES(test_libmysqld mysys yassl taocrypt zlib dbug regex strings wsock32)
|
TARGET_LINK_LIBRARIES(mysql_embedded mysys yassl taocrypt zlib dbug regex strings wsock32)
|
||||||
ADD_DEPENDENCIES(test_libmysqld libmysqld)
|
ADD_DEPENDENCIES(mysql_embedded libmysqld)
|
||||||
|
|
||||||
ADD_EXECUTABLE(mysqltest_embedded ../../client/mysqltest.c)
|
ADD_EXECUTABLE(mysqltest_embedded ../../client/mysqltest.c)
|
||||||
TARGET_LINK_LIBRARIES(mysqltest_embedded mysys yassl taocrypt zlib dbug regex strings wsock32)
|
TARGET_LINK_LIBRARIES(mysqltest_embedded mysys yassl taocrypt zlib dbug regex strings wsock32)
|
||||||
|
@ -19,6 +19,7 @@ client_sources = $(mysqltest_embedded_SOURCES) $(mysql_SOURCES)
|
|||||||
tests_sources = $(mysql_client_test_embedded_SOURCES)
|
tests_sources = $(mysql_client_test_embedded_SOURCES)
|
||||||
BUILT_SOURCES = link_sources
|
BUILT_SOURCES = link_sources
|
||||||
CLEANFILES = $(client_sources) $(tests_sources) $(BUILT_SOURCES)
|
CLEANFILES = $(client_sources) $(tests_sources) $(BUILT_SOURCES)
|
||||||
|
EXTRA_DIST = CMakeLists.txt
|
||||||
|
|
||||||
link_sources:
|
link_sources:
|
||||||
for f in $(client_sources); do \
|
for f in $(client_sources); do \
|
||||||
|
@ -28,11 +28,7 @@ extern "C"
|
|||||||
extern unsigned long max_allowed_packet, net_buffer_length;
|
extern unsigned long max_allowed_packet, net_buffer_length;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(__WIN__) && !defined(USING_CMAKE)
|
|
||||||
#include "../sql/mysqld.cpp"
|
|
||||||
#else
|
|
||||||
#include "../sql/mysqld.cc"
|
#include "../sql/mysqld.cc"
|
||||||
#endif
|
|
||||||
|
|
||||||
C_MODE_START
|
C_MODE_START
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
LIBRARY LIBMYSQLD
|
LIBRARY LIBMYSQLD
|
||||||
DESCRIPTION 'MySQL 5.0 Embedded Server Library'
|
DESCRIPTION 'MySQL 5.1 Embedded Server Library'
|
||||||
VERSION 5.0
|
VERSION 5.1
|
||||||
EXPORTS
|
EXPORTS
|
||||||
_dig_vec_upper
|
_dig_vec_upper
|
||||||
_dig_vec_lower
|
_dig_vec_lower
|
||||||
@ -48,6 +48,7 @@ EXPORTS
|
|||||||
mysql_errno
|
mysql_errno
|
||||||
mysql_error
|
mysql_error
|
||||||
mysql_escape_string
|
mysql_escape_string
|
||||||
|
mysql_hex_string
|
||||||
mysql_fetch_field
|
mysql_fetch_field
|
||||||
mysql_fetch_field_direct
|
mysql_fetch_field_direct
|
||||||
mysql_fetch_fields
|
mysql_fetch_fields
|
||||||
@ -62,11 +63,13 @@ EXPORTS
|
|||||||
mysql_get_host_info
|
mysql_get_host_info
|
||||||
mysql_get_proto_info
|
mysql_get_proto_info
|
||||||
mysql_get_server_info
|
mysql_get_server_info
|
||||||
|
mysql_get_client_version
|
||||||
mysql_get_ssl_cipher
|
mysql_get_ssl_cipher
|
||||||
mysql_info
|
mysql_info
|
||||||
mysql_init
|
mysql_init
|
||||||
mysql_insert_id
|
mysql_insert_id
|
||||||
mysql_kill
|
mysql_kill
|
||||||
|
mysql_set_server_option
|
||||||
mysql_list_dbs
|
mysql_list_dbs
|
||||||
mysql_list_fields
|
mysql_list_fields
|
||||||
mysql_list_processes
|
mysql_list_processes
|
||||||
@ -172,4 +175,3 @@ EXPORTS
|
|||||||
my_charset_bin
|
my_charset_bin
|
||||||
my_charset_same
|
my_charset_same
|
||||||
modify_defaults_file
|
modify_defaults_file
|
||||||
mysql_set_server_option
|
|
||||||
|
@ -693,6 +693,37 @@ sub command_line_setup () {
|
|||||||
|
|
||||||
$glob_timers= mtr_init_timers();
|
$glob_timers= mtr_init_timers();
|
||||||
|
|
||||||
|
# --------------------------------------------------------------------------
|
||||||
|
# Embedded server flag
|
||||||
|
# --------------------------------------------------------------------------
|
||||||
|
if ( $opt_embedded_server )
|
||||||
|
{
|
||||||
|
$glob_use_embedded_server= 1;
|
||||||
|
# Add the location for libmysqld.dll to the path.
|
||||||
|
if ( $glob_win32 )
|
||||||
|
{
|
||||||
|
my $lib_mysqld=
|
||||||
|
mtr_path_exists(vs_config_dirs('libmysqld',''));
|
||||||
|
$lib_mysqld= $glob_cygwin_perl ? ":".`cygpath "$lib_mysqld"`
|
||||||
|
: ";".$lib_mysqld;
|
||||||
|
chomp($lib_mysqld);
|
||||||
|
$ENV{'PATH'}="$ENV{'PATH'}".$lib_mysqld;
|
||||||
|
}
|
||||||
|
|
||||||
|
push(@glob_test_mode, "embedded");
|
||||||
|
$opt_skip_rpl= 1; # We never run replication with embedded
|
||||||
|
$opt_skip_ndbcluster= 1; # Turn off use of NDB cluster
|
||||||
|
$opt_skip_ssl= 1; # Turn off use of SSL
|
||||||
|
|
||||||
|
# Turn off use of bin log
|
||||||
|
push(@opt_extra_mysqld_opt, "--skip-log-bin");
|
||||||
|
|
||||||
|
if ( $opt_extern )
|
||||||
|
{
|
||||||
|
mtr_error("Can't use --extern with --embedded-server");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
# Find the mysqld executable to be able to find the mysqld version
|
# Find the mysqld executable to be able to find the mysqld version
|
||||||
# number as early as possible
|
# number as early as possible
|
||||||
@ -717,6 +748,7 @@ sub command_line_setup () {
|
|||||||
if (!$opt_extern)
|
if (!$opt_extern)
|
||||||
{
|
{
|
||||||
$exe_mysqld= mtr_exe_exists (vs_config_dirs('sql', 'mysqld'),
|
$exe_mysqld= mtr_exe_exists (vs_config_dirs('sql', 'mysqld'),
|
||||||
|
vs_config_dirs('sql', 'mysqld-debug'),
|
||||||
"$glob_basedir/sql/mysqld",
|
"$glob_basedir/sql/mysqld",
|
||||||
"$path_client_bindir/mysqld-max-nt",
|
"$path_client_bindir/mysqld-max-nt",
|
||||||
"$path_client_bindir/mysqld-max",
|
"$path_client_bindir/mysqld-max",
|
||||||
@ -1662,7 +1694,7 @@ sub generate_cmdline_mysqldump ($) {
|
|||||||
my($mysqld) = @_;
|
my($mysqld) = @_;
|
||||||
return
|
return
|
||||||
mtr_native_path($exe_mysqldump) .
|
mtr_native_path($exe_mysqldump) .
|
||||||
" --no-defaults -uroot --debug-info " .
|
" --no-defaults -uroot --debug-check " .
|
||||||
"--port=$mysqld->{'port'} " .
|
"--port=$mysqld->{'port'} " .
|
||||||
"--socket=$mysqld->{'path_sock'} --password=";
|
"--socket=$mysqld->{'path_sock'} --password=";
|
||||||
}
|
}
|
||||||
@ -1915,7 +1947,7 @@ sub environment_setup () {
|
|||||||
# ----------------------------------------------------
|
# ----------------------------------------------------
|
||||||
my $cmdline_mysqlcheck=
|
my $cmdline_mysqlcheck=
|
||||||
mtr_native_path($exe_mysqlcheck) .
|
mtr_native_path($exe_mysqlcheck) .
|
||||||
" --no-defaults --debug-info -uroot " .
|
" --no-defaults --debug-check -uroot " .
|
||||||
"--port=$master->[0]->{'port'} " .
|
"--port=$master->[0]->{'port'} " .
|
||||||
"--socket=$master->[0]->{'path_sock'} --password=";
|
"--socket=$master->[0]->{'path_sock'} --password=";
|
||||||
|
|
||||||
@ -1967,7 +1999,7 @@ sub environment_setup () {
|
|||||||
# ----------------------------------------------------
|
# ----------------------------------------------------
|
||||||
my $cmdline_mysqlimport=
|
my $cmdline_mysqlimport=
|
||||||
mtr_native_path($exe_mysqlimport) .
|
mtr_native_path($exe_mysqlimport) .
|
||||||
" -uroot --debug-info " .
|
" -uroot --debug-check " .
|
||||||
"--port=$master->[0]->{'port'} " .
|
"--port=$master->[0]->{'port'} " .
|
||||||
"--socket=$master->[0]->{'path_sock'} --password=";
|
"--socket=$master->[0]->{'path_sock'} --password=";
|
||||||
|
|
||||||
@ -1984,7 +2016,7 @@ sub environment_setup () {
|
|||||||
# ----------------------------------------------------
|
# ----------------------------------------------------
|
||||||
my $cmdline_mysqlshow=
|
my $cmdline_mysqlshow=
|
||||||
mtr_native_path($exe_mysqlshow) .
|
mtr_native_path($exe_mysqlshow) .
|
||||||
" -uroot --debug-info " .
|
" -uroot --debug-check " .
|
||||||
"--port=$master->[0]->{'port'} " .
|
"--port=$master->[0]->{'port'} " .
|
||||||
"--socket=$master->[0]->{'path_sock'} --password=";
|
"--socket=$master->[0]->{'path_sock'} --password=";
|
||||||
|
|
||||||
@ -2000,7 +2032,7 @@ sub environment_setup () {
|
|||||||
# ----------------------------------------------------
|
# ----------------------------------------------------
|
||||||
my $cmdline_mysqlbinlog=
|
my $cmdline_mysqlbinlog=
|
||||||
mtr_native_path($exe_mysqlbinlog) .
|
mtr_native_path($exe_mysqlbinlog) .
|
||||||
" --no-defaults --disable-force-if-open --debug-info";
|
" --no-defaults --disable-force-if-open --debug-check";
|
||||||
if ( !$opt_extern && $mysql_version_id >= 50000 )
|
if ( !$opt_extern && $mysql_version_id >= 50000 )
|
||||||
{
|
{
|
||||||
$cmdline_mysqlbinlog .=" --character-sets-dir=$path_charsetsdir";
|
$cmdline_mysqlbinlog .=" --character-sets-dir=$path_charsetsdir";
|
||||||
@ -2018,7 +2050,7 @@ sub environment_setup () {
|
|||||||
# ----------------------------------------------------
|
# ----------------------------------------------------
|
||||||
my $cmdline_mysql=
|
my $cmdline_mysql=
|
||||||
mtr_native_path($exe_mysql) .
|
mtr_native_path($exe_mysql) .
|
||||||
" --no-defaults --debug-info --host=localhost --user=root --password= " .
|
" --no-defaults --debug-check --host=localhost --user=root --password= " .
|
||||||
"--port=$master->[0]->{'port'} " .
|
"--port=$master->[0]->{'port'} " .
|
||||||
"--socket=$master->[0]->{'path_sock'} ".
|
"--socket=$master->[0]->{'path_sock'} ".
|
||||||
"--character-sets-dir=$path_charsetsdir";
|
"--character-sets-dir=$path_charsetsdir";
|
||||||
@ -2449,6 +2481,7 @@ sub vs_config_dirs ($$) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return ("$glob_basedir/$path_part/release/$exe",
|
return ("$glob_basedir/$path_part/release/$exe",
|
||||||
|
"$glob_basedir/$path_part/relwithdebinfo/$exe",
|
||||||
"$glob_basedir/$path_part/debug/$exe");
|
"$glob_basedir/$path_part/debug/$exe");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,9 +5,9 @@ CREATE TABLE t3 (b INT AUTO_INCREMENT PRIMARY KEY);
|
|||||||
CREATE VIEW v1(a,b) AS SELECT a,b FROM t2,t3;
|
CREATE VIEW v1(a,b) AS SELECT a,b FROM t2,t3;
|
||||||
INSERT INTO t1 SELECT UUID();
|
INSERT INTO t1 SELECT UUID();
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1589 Statement is not safe to log in statement format.
|
Warning 1590 Statement is not safe to log in statement format.
|
||||||
SHOW WARNINGS;
|
SHOW WARNINGS;
|
||||||
Level Warning
|
Level Warning
|
||||||
Code 1589
|
Code 1590
|
||||||
Message Statement is not safe to log in statement format.
|
Message Statement is not safe to log in statement format.
|
||||||
DROP TABLE t1,t2,t3;
|
DROP TABLE t1,t2,t3;
|
||||||
|
@ -209,16 +209,16 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||||||
1 SIMPLE t1 index NULL PRIMARY 4 NULL 4 Using index
|
1 SIMPLE t1 index NULL PRIMARY 4 NULL 4 Using index
|
||||||
explain SELECT distinct t1.a from t1 order by a desc limit 1;
|
explain SELECT distinct t1.a from t1 order by a desc limit 1;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 index NULL PRIMARY 4 NULL 4 Using index
|
1 SIMPLE t1 index NULL PRIMARY 4 NULL 1 Using index
|
||||||
explain SELECT distinct a from t3 order by a desc limit 2;
|
explain SELECT distinct a from t3 order by a desc limit 2;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t3 index NULL a 5 NULL 204 Using index
|
1 SIMPLE t3 index NULL a 5 NULL 40 Using index
|
||||||
explain SELECT distinct a,b from t3 order by a+1;
|
explain SELECT distinct a,b from t3 order by a+1;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t3 ALL NULL NULL NULL NULL 204 Using temporary; Using filesort
|
1 SIMPLE t3 ALL NULL NULL NULL NULL 204 Using temporary; Using filesort
|
||||||
explain SELECT distinct a,b from t3 order by a limit 10;
|
explain SELECT distinct a,b from t3 order by a limit 2;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t3 index NULL a 5 NULL 204 Using temporary
|
1 SIMPLE t3 index NULL a 5 NULL 2 Using temporary
|
||||||
explain SELECT a,b from t3 group by a,b order by a+1;
|
explain SELECT a,b from t3 group by a,b order by a+1;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t3 ALL NULL NULL NULL NULL 204 Using temporary; Using filesort
|
1 SIMPLE t3 ALL NULL NULL NULL NULL 204 Using temporary; Using filesort
|
||||||
|
@ -154,7 +154,7 @@ teststring
|
|||||||
teststring
|
teststring
|
||||||
explain select * from t1 order by text1;
|
explain select * from t1 order by text1;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 index NULL key1 34 NULL 3
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using filesort
|
||||||
alter table t1 modify text1 char(32) binary not null;
|
alter table t1 modify text1 char(32) binary not null;
|
||||||
select * from t1 order by text1;
|
select * from t1 order by text1;
|
||||||
text1
|
text1
|
||||||
|
@ -31,7 +31,7 @@ create event e_55 on schedule at 10000101000000 do drop table t;
|
|||||||
ERROR HY000: Incorrect AT value: '10000101000000'
|
ERROR HY000: Incorrect AT value: '10000101000000'
|
||||||
create event e_55 on schedule at 20000101000000 do drop table t;
|
create event e_55 on schedule at 20000101000000 do drop table t;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1585 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. The event was dropped immediately after creation.
|
Note 1586 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. The event was dropped immediately after creation.
|
||||||
show events;
|
show events;
|
||||||
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation
|
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation
|
||||||
create event e_55 on schedule at 20200101000000 starts 10000101000000 do drop table t;
|
create event e_55 on schedule at 20200101000000 starts 10000101000000 do drop table t;
|
||||||
@ -457,22 +457,22 @@ CREATE EVENT e4 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00'
|
|||||||
DO
|
DO
|
||||||
SELECT 1;
|
SELECT 1;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1585 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. The event was dropped immediately after creation.
|
Note 1586 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. The event was dropped immediately after creation.
|
||||||
CREATE EVENT e4 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00'
|
CREATE EVENT e4 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00'
|
||||||
ENDS '1999-01-02 00:00:00' DISABLE
|
ENDS '1999-01-02 00:00:00' DISABLE
|
||||||
DO
|
DO
|
||||||
SELECT 1;
|
SELECT 1;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1585 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. The event was dropped immediately after creation.
|
Note 1586 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. The event was dropped immediately after creation.
|
||||||
CREATE EVENT e4 ON SCHEDULE AT '1999-01-01 00:00:00' DO
|
CREATE EVENT e4 ON SCHEDULE AT '1999-01-01 00:00:00' DO
|
||||||
SELECT 1;
|
SELECT 1;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1585 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. The event was dropped immediately after creation.
|
Note 1586 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. The event was dropped immediately after creation.
|
||||||
CREATE EVENT e4 ON SCHEDULE AT '1999-01-01 00:00:00' DISABLE
|
CREATE EVENT e4 ON SCHEDULE AT '1999-01-01 00:00:00' DISABLE
|
||||||
DO
|
DO
|
||||||
SELECT 1;
|
SELECT 1;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1585 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. The event was dropped immediately after creation.
|
Note 1586 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. The event was dropped immediately after creation.
|
||||||
SHOW EVENTS;
|
SHOW EVENTS;
|
||||||
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation
|
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation
|
||||||
events_test e1 root@localhost +05:00 RECURRING NULL 1 DAY 2006-01-01 00:00:00 NULL ENABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci
|
events_test e1 root@localhost +05:00 RECURRING NULL 1 DAY 2006-01-01 00:00:00 NULL ENABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci
|
||||||
@ -482,19 +482,19 @@ The following should succeed giving a warning.
|
|||||||
ALTER EVENT e1 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00'
|
ALTER EVENT e1 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00'
|
||||||
ENDS '1999-01-02 00:00:00' ON COMPLETION PRESERVE;
|
ENDS '1999-01-02 00:00:00' ON COMPLETION PRESERVE;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1541 Event execution time is in the past. Event has been disabled
|
Note 1542 Event execution time is in the past. Event has been disabled
|
||||||
CREATE EVENT e4 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00'
|
CREATE EVENT e4 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00'
|
||||||
ENDS '1999-01-02 00:00:00' ON COMPLETION PRESERVE
|
ENDS '1999-01-02 00:00:00' ON COMPLETION PRESERVE
|
||||||
DO
|
DO
|
||||||
SELECT 1;
|
SELECT 1;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1541 Event execution time is in the past. Event has been disabled
|
Note 1542 Event execution time is in the past. Event has been disabled
|
||||||
CREATE EVENT e5 ON SCHEDULE AT '1999-01-01 00:00:00'
|
CREATE EVENT e5 ON SCHEDULE AT '1999-01-01 00:00:00'
|
||||||
ON COMPLETION PRESERVE
|
ON COMPLETION PRESERVE
|
||||||
DO
|
DO
|
||||||
SELECT 1;
|
SELECT 1;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1541 Event execution time is in the past. Event has been disabled
|
Note 1542 Event execution time is in the past. Event has been disabled
|
||||||
The following should succeed without warnings.
|
The following should succeed without warnings.
|
||||||
ALTER EVENT e2 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00';
|
ALTER EVENT e2 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00';
|
||||||
ALTER EVENT e3 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00'
|
ALTER EVENT e3 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00'
|
||||||
|
@ -41,7 +41,7 @@ SELECT user_host, query_time, db, sql_text FROM mysql.slow_log;
|
|||||||
user_host query_time db sql_text
|
user_host query_time db sql_text
|
||||||
"Set new values"
|
"Set new values"
|
||||||
SET GLOBAL long_query_time=4;
|
SET GLOBAL long_query_time=4;
|
||||||
SET SESSION long_query_time=1;
|
SET SESSION long_query_time=0.5;
|
||||||
"Check that logging is working"
|
"Check that logging is working"
|
||||||
SELECT SLEEP(2);
|
SELECT SLEEP(2);
|
||||||
SLEEP(2)
|
SLEEP(2)
|
||||||
|
@ -63,7 +63,7 @@ begin work;
|
|||||||
insert into t1 (a) values ("OK: create event if not exists");
|
insert into t1 (a) values ("OK: create event if not exists");
|
||||||
create event if not exists e1 on schedule every 2 day do select 2;
|
create event if not exists e1 on schedule every 2 day do select 2;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1534 Event 'e1' already exists
|
Note 1535 Event 'e1' already exists
|
||||||
rollback work;
|
rollback work;
|
||||||
select * from t1;
|
select * from t1;
|
||||||
a
|
a
|
||||||
|
@ -1920,6 +1920,20 @@ a b
|
|||||||
2 Curly
|
2 Curly
|
||||||
drop table federated.t1;
|
drop table federated.t1;
|
||||||
drop table federated.t1;
|
drop table federated.t1;
|
||||||
|
|
||||||
|
Bug#18287 create federated table always times out, error 1159 ' '
|
||||||
|
|
||||||
|
Test that self-references work
|
||||||
|
|
||||||
|
create table federated.t1 (a int primary key);
|
||||||
|
create table federated.t2 (a int primary key)
|
||||||
|
ENGINE=FEDERATED
|
||||||
|
connection='mysql://root@127.0.0.1:SLAVE_PORT/federated/t1';
|
||||||
|
insert into federated.t1 (a) values (1);
|
||||||
|
select * from federated.t2;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
drop table federated.t1, federated.t2;
|
||||||
CREATE TABLE federated.t1 (a INT PRIMARY KEY) DEFAULT CHARSET=utf8;
|
CREATE TABLE federated.t1 (a INT PRIMARY KEY) DEFAULT CHARSET=utf8;
|
||||||
CREATE TABLE federated.t1 (a INT PRIMARY KEY)
|
CREATE TABLE federated.t1 (a INT PRIMARY KEY)
|
||||||
ENGINE=FEDERATED
|
ENGINE=FEDERATED
|
||||||
|
@ -1161,7 +1161,7 @@ CREATE TABLE t2 (a INT, b INT, KEY(a));
|
|||||||
INSERT INTO t2 VALUES (1, 1), (2, 2), (3,3), (4,4);
|
INSERT INTO t2 VALUES (1, 1), (2, 2), (3,3), (4,4);
|
||||||
EXPLAIN SELECT a, SUM(b) FROM t2 GROUP BY a LIMIT 2;
|
EXPLAIN SELECT a, SUM(b) FROM t2 GROUP BY a LIMIT 2;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t2 index NULL a 5 NULL 4
|
1 SIMPLE t2 index NULL a 5 NULL 2
|
||||||
EXPLAIN SELECT a, SUM(b) FROM t2 IGNORE INDEX (a) GROUP BY a LIMIT 2;
|
EXPLAIN SELECT a, SUM(b) FROM t2 IGNORE INDEX (a) GROUP BY a LIMIT 2;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 4 Using temporary; Using filesort
|
1 SIMPLE t2 ALL NULL NULL NULL NULL 4 Using temporary; Using filesort
|
||||||
|
@ -1963,20 +1963,20 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 128 Using temporary; Using filesort
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 128 Using temporary; Using filesort
|
||||||
explain select a1,a2,count(a2) from t1 group by a1,a2,b;
|
explain select a1,a2,count(a2) from t1 group by a1,a2,b;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 index NULL idx_t1_1 163 NULL 128 Using index
|
1 SIMPLE t1 index NULL idx_t1_2 147 NULL 128 Using index
|
||||||
explain extended select a1,a2,count(a2) from t1 where (a1 > 'a') group by a1,a2,b;
|
explain extended select a1,a2,count(a2) from t1 where (a1 > 'a') group by a1,a2,b;
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 SIMPLE t1 index idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 163 NULL 128 75.00 Using where; Using index
|
1 SIMPLE t1 index idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 147 NULL 128 75.00 Using where; Using index
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,count(`test`.`t1`.`a2`) AS `count(a2)` from `test`.`t1` where (`test`.`t1`.`a1` > _latin1'a') group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
Note 1003 select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,count(`test`.`t1`.`a2`) AS `count(a2)` from `test`.`t1` where (`test`.`t1`.`a1` > _latin1'a') group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
||||||
explain extended select sum(ord(a1)) from t1 where (a1 > 'a') group by a1,a2,b;
|
explain extended select sum(ord(a1)) from t1 where (a1 > 'a') group by a1,a2,b;
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 SIMPLE t1 index idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 163 NULL 128 75.00 Using where; Using index
|
1 SIMPLE t1 index idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 147 NULL 128 75.00 Using where; Using index
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select sum(ord(`test`.`t1`.`a1`)) AS `sum(ord(a1))` from `test`.`t1` where (`test`.`t1`.`a1` > _latin1'a') group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
Note 1003 select sum(ord(`test`.`t1`.`a1`)) AS `sum(ord(a1))` from `test`.`t1` where (`test`.`t1`.`a1` > _latin1'a') group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
||||||
explain select distinct(a1) from t1 where ord(a2) = 98;
|
explain select distinct(a1) from t1 where ord(a2) = 98;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 index NULL idx_t1_1 163 NULL 128 Using where; Using index
|
1 SIMPLE t1 index NULL idx_t1_2 147 NULL 128 Using where; Using index
|
||||||
select distinct(a1) from t1 where ord(a2) = 98;
|
select distinct(a1) from t1 where ord(a2) = 98;
|
||||||
a1
|
a1
|
||||||
a
|
a
|
||||||
@ -2256,7 +2256,7 @@ EXPLAIN SELECT 1 FROM t1 AS t1_outer WHERE
|
|||||||
a IN (SELECT max(b) FROM t1 GROUP BY a HAVING a < 2);
|
a IN (SELECT max(b) FROM t1 GROUP BY a HAVING a < 2);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1_outer index NULL a 10 NULL 15 Using where; Using index
|
1 PRIMARY t1_outer index NULL a 10 NULL 15 Using where; Using index
|
||||||
2 DEPENDENT SUBQUERY t1 index NULL a 10 NULL 15 Using index
|
2 DEPENDENT SUBQUERY t1 index NULL a 10 NULL 1 Using index
|
||||||
EXPLAIN SELECT 1 FROM t1 AS t1_outer GROUP BY a HAVING
|
EXPLAIN SELECT 1 FROM t1 AS t1_outer GROUP BY a HAVING
|
||||||
a > (SELECT max(b) FROM t1 GROUP BY a HAVING a < 2);
|
a > (SELECT max(b) FROM t1 GROUP BY a HAVING a < 2);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
@ -289,8 +289,8 @@ explain select a.ROUTINE_NAME from information_schema.ROUTINES a,
|
|||||||
information_schema.SCHEMATA b where
|
information_schema.SCHEMATA b where
|
||||||
a.ROUTINE_SCHEMA = b.SCHEMA_NAME;
|
a.ROUTINE_SCHEMA = b.SCHEMA_NAME;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE # ALL NULL NULL NULL NULL 2
|
1 SIMPLE # ALL NULL NULL NULL NULL NULL
|
||||||
1 SIMPLE # ALL NULL NULL NULL NULL 2 Using where; Using join buffer
|
1 SIMPLE # ALL NULL NULL NULL NULL NULL Using where; Using join buffer
|
||||||
select a.ROUTINE_NAME, b.name from information_schema.ROUTINES a,
|
select a.ROUTINE_NAME, b.name from information_schema.ROUTINES a,
|
||||||
mysql.proc b where a.ROUTINE_NAME = convert(b.name using utf8) order by 1;
|
mysql.proc b where a.ROUTINE_NAME = convert(b.name using utf8) order by 1;
|
||||||
ROUTINE_NAME name
|
ROUTINE_NAME name
|
||||||
@ -355,7 +355,7 @@ mysql
|
|||||||
test
|
test
|
||||||
explain select * from v0;
|
explain select * from v0;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE # ALL NULL NULL NULL NULL 2
|
1 SIMPLE # ALL NULL NULL NULL NULL NULL
|
||||||
create view v1 (c) as select table_name from information_schema.tables
|
create view v1 (c) as select table_name from information_schema.tables
|
||||||
where table_name="v1";
|
where table_name="v1";
|
||||||
select * from v1;
|
select * from v1;
|
||||||
@ -679,17 +679,11 @@ where table_schema='test';
|
|||||||
table_name
|
table_name
|
||||||
v2
|
v2
|
||||||
v3
|
v3
|
||||||
Warnings:
|
|
||||||
Warning 1356 View 'test.v2' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
|
|
||||||
Warning 1356 View 'test.v3' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
|
|
||||||
select table_name from information_schema.views
|
select table_name from information_schema.views
|
||||||
where table_schema='test';
|
where table_schema='test';
|
||||||
table_name
|
table_name
|
||||||
v2
|
v2
|
||||||
v3
|
v3
|
||||||
Warnings:
|
|
||||||
Warning 1356 View 'test.v2' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
|
|
||||||
Warning 1356 View 'test.v3' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
|
|
||||||
select column_name from information_schema.columns
|
select column_name from information_schema.columns
|
||||||
where table_schema='test';
|
where table_schema='test';
|
||||||
column_name
|
column_name
|
||||||
@ -1337,11 +1331,11 @@ from information_schema.tables
|
|||||||
order by object_schema;
|
order by object_schema;
|
||||||
explain select * from v1;
|
explain select * from v1;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE tables ALL NULL NULL NULL NULL 2 Using filesort
|
1 SIMPLE tables ALL NULL NULL NULL NULL NULL Open_frm_only; Scanned all databases; Using filesort
|
||||||
explain select * from (select table_name from information_schema.tables) as a;
|
explain select * from (select table_name from information_schema.tables) as a;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY <derived2> system NULL NULL NULL NULL 0 const row not found
|
1 PRIMARY <derived2> system NULL NULL NULL NULL 0 const row not found
|
||||||
2 DERIVED tables ALL NULL NULL NULL NULL 2
|
2 DERIVED tables ALL NULL NULL NULL NULL NULL Skip_open_table; Scanned all databases
|
||||||
drop view v1;
|
drop view v1;
|
||||||
create table t1 (f1 int(11));
|
create table t1 (f1 int(11));
|
||||||
create table t2 (f1 int(11), f2 int(11));
|
create table t2 (f1 int(11), f2 int(11));
|
||||||
@ -1445,4 +1439,28 @@ ABORTED_CONNECTS
|
|||||||
BINLOG_CACHE_DISK_USE
|
BINLOG_CACHE_DISK_USE
|
||||||
DROP TABLE server_status;
|
DROP TABLE server_status;
|
||||||
SET GLOBAL event_scheduler=0;
|
SET GLOBAL event_scheduler=0;
|
||||||
|
explain select table_name from information_schema.views where
|
||||||
|
table_schema='test' and table_name='v1';
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE views ALL NULL TABLE_SCHEMA,TABLE_NAME NULL NULL NULL Using where; Open_frm_only; Scanned 0 databases
|
||||||
|
explain select * from information_schema.tables;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE tables ALL NULL NULL NULL NULL NULL Open_full_table; Scanned all databases
|
||||||
|
explain select * from information_schema.collations;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE collations ALL NULL NULL NULL NULL NULL
|
||||||
|
explain select * from information_schema.tables where
|
||||||
|
table_schema='test' and table_name= 't1';
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE tables ALL NULL TABLE_SCHEMA,TABLE_NAME NULL NULL NULL Using where; Open_full_table; Scanned 0 databases
|
||||||
|
explain select table_name, table_type from information_schema.tables
|
||||||
|
where table_schema='test';
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE tables ALL NULL TABLE_SCHEMA NULL NULL NULL Using where; Open_frm_only; Scanned 1 database
|
||||||
|
explain select b.table_name
|
||||||
|
from information_schema.tables a, information_schema.columns b
|
||||||
|
where a.table_name='t1' and a.table_schema='test' and b.table_name=a.table_name;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE a ALL NULL TABLE_SCHEMA,TABLE_NAME NULL NULL NULL Using where; Skip_open_table; Scanned 0 databases
|
||||||
|
1 SIMPLE b ALL NULL NULL NULL NULL NULL Using where; Open_frm_only; Scanned all databases; Using join buffer
|
||||||
End of 5.1 tests.
|
End of 5.1 tests.
|
||||||
|
@ -74,11 +74,11 @@ drop table t1;
|
|||||||
select table_name, table_type, table_comment from information_schema.tables
|
select table_name, table_type, table_comment from information_schema.tables
|
||||||
where table_schema='inf%' and func2();
|
where table_schema='inf%' and func2();
|
||||||
table_name table_type table_comment
|
table_name table_type table_comment
|
||||||
v1 VIEW View 'inf%.v1' references invalid table(s) or column(s) or function(s) or define
|
v1 VIEW VIEW
|
||||||
select table_name, table_type, table_comment from information_schema.tables
|
select table_name, table_type, table_comment from information_schema.tables
|
||||||
where table_schema='inf%' and func2();
|
where table_schema='inf%' and func2();
|
||||||
table_name table_type table_comment
|
table_name table_type table_comment
|
||||||
v1 VIEW View 'inf%.v1' references invalid table(s) or column(s) or function(s) or define
|
v1 VIEW VIEW
|
||||||
drop view v1;
|
drop view v1;
|
||||||
drop function func1;
|
drop function func1;
|
||||||
drop function func2;
|
drop function func2;
|
||||||
|
@ -947,7 +947,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||||||
1 SIMPLE t1 index NULL PRIMARY 4 NULL #
|
1 SIMPLE t1 index NULL PRIMARY 4 NULL #
|
||||||
explain select * from t1 order by b;
|
explain select * from t1 order by b;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 index NULL b 4 NULL #
|
1 SIMPLE t1 ALL NULL NULL NULL NULL # Using filesort
|
||||||
explain select * from t1 order by c;
|
explain select * from t1 order by c;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL # Using filesort
|
1 SIMPLE t1 ALL NULL NULL NULL NULL # Using filesort
|
||||||
|
@ -879,13 +879,13 @@ EXPLAIN SELECT * FROM t1 WHERE b BETWEEN 1 AND 2 ORDER BY a;
|
|||||||
id 1
|
id 1
|
||||||
select_type SIMPLE
|
select_type SIMPLE
|
||||||
table t1
|
table t1
|
||||||
type range
|
type index
|
||||||
possible_keys bkey
|
possible_keys bkey
|
||||||
key bkey
|
key PRIMARY
|
||||||
key_len 5
|
key_len 4
|
||||||
ref NULL
|
ref NULL
|
||||||
rows 16
|
rows 32
|
||||||
Extra Using where; Using index; Using filesort
|
Extra Using where
|
||||||
SELECT * FROM t1 WHERE b BETWEEN 1 AND 2 ORDER BY a;
|
SELECT * FROM t1 WHERE b BETWEEN 1 AND 2 ORDER BY a;
|
||||||
a b
|
a b
|
||||||
1 2
|
1 2
|
||||||
@ -974,13 +974,13 @@ EXPLAIN SELECT * FROM t2 WHERE b=1 ORDER BY a;
|
|||||||
id 1
|
id 1
|
||||||
select_type SIMPLE
|
select_type SIMPLE
|
||||||
table t2
|
table t2
|
||||||
type ref
|
type index
|
||||||
possible_keys bkey
|
possible_keys bkey
|
||||||
key bkey
|
key PRIMARY
|
||||||
key_len 5
|
key_len 4
|
||||||
ref const
|
ref NULL
|
||||||
rows 8
|
rows 16
|
||||||
Extra Using where; Using index; Using filesort
|
Extra Using where; Using index
|
||||||
SELECT * FROM t2 WHERE b=1 ORDER BY a;
|
SELECT * FROM t2 WHERE b=1 ORDER BY a;
|
||||||
a b c
|
a b c
|
||||||
1 1 1
|
1 1 1
|
||||||
|
@ -96,4 +96,74 @@ ERROR HY000: You can't combine write-locking of system tables with other tables
|
|||||||
LOCK TABLES mysql.time_zone READ, mysql.proc WRITE;
|
LOCK TABLES mysql.time_zone READ, mysql.proc WRITE;
|
||||||
ERROR HY000: You can't combine write-locking of system tables with other tables or lock types
|
ERROR HY000: You can't combine write-locking of system tables with other tables or lock types
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
Bug#5719 impossible to lock VIEW
|
||||||
|
|
||||||
|
Just covering existing behaviour with tests.
|
||||||
|
Consistency has not been found here.
|
||||||
|
|
||||||
|
drop view if exists v_bug5719;
|
||||||
|
drop table if exists t1, t2, t3;
|
||||||
|
create table t1 (a int);
|
||||||
|
create temporary table t2 (a int);
|
||||||
|
create table t3 (a int);
|
||||||
|
create view v_bug5719 as select 1;
|
||||||
|
lock table v_bug5719 write;
|
||||||
|
select * from t1;
|
||||||
|
ERROR HY000: Table 't1' was not locked with LOCK TABLES
|
||||||
|
|
||||||
|
Allowed to select from a temporary talbe under LOCK TABLES
|
||||||
|
|
||||||
|
select * from t2;
|
||||||
|
a
|
||||||
|
select * from t3;
|
||||||
|
ERROR HY000: Table 't3' was not locked with LOCK TABLES
|
||||||
|
select * from v_bug5719;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
drop view v_bug5719;
|
||||||
|
|
||||||
|
sic: did not left LOCK TABLES mode automatically
|
||||||
|
|
||||||
|
select * from t1;
|
||||||
|
ERROR HY000: Table 't1' was not locked with LOCK TABLES
|
||||||
|
unlock tables;
|
||||||
|
create view v_bug5719 as select * from t1;
|
||||||
|
lock tables v_bug5719 write;
|
||||||
|
select * from v_bug5719;
|
||||||
|
a
|
||||||
|
|
||||||
|
Allowed to use an underlying table under LOCK TABLES <view>
|
||||||
|
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
|
||||||
|
Allowed to select from a temporary table under LOCK TABLES
|
||||||
|
|
||||||
|
select * from t2;
|
||||||
|
a
|
||||||
|
select * from t3;
|
||||||
|
ERROR HY000: Table 't3' was not locked with LOCK TABLES
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
|
sic: left LOCK TABLES mode
|
||||||
|
|
||||||
|
select * from t3;
|
||||||
|
a
|
||||||
|
select * from v_bug5719;
|
||||||
|
ERROR HY000: View 'test.v_bug5719' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
|
||||||
|
unlock tables;
|
||||||
|
drop view v_bug5719;
|
||||||
|
|
||||||
|
When limitation to use temporary tables in views is removed, please
|
||||||
|
add a test that shows what happens under LOCK TABLES when a view
|
||||||
|
references a temporary table, is locked, and the underlying table
|
||||||
|
is dropped.
|
||||||
|
|
||||||
|
create view v_bug5719 as select * from t2;
|
||||||
|
ERROR HY000: View's SELECT refers to a temporary table 't2'
|
||||||
|
|
||||||
|
Cleanup.
|
||||||
|
|
||||||
|
drop table t2, t3;
|
||||||
End of 5.1 tests.
|
End of 5.1 tests.
|
||||||
|
@ -95,3 +95,13 @@ alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1
|
|||||||
alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; //
|
alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; alter table t1 auto_increment=0; //
|
||||||
unlock tables;
|
unlock tables;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1 (i int);
|
||||||
|
lock table t1 read;
|
||||||
|
update t1 set i= 10;;
|
||||||
|
select * from t1;;
|
||||||
|
kill query ID;
|
||||||
|
i
|
||||||
|
ERROR 70100: Query execution was interrupted
|
||||||
|
unlock tables;
|
||||||
|
drop table t1;
|
||||||
|
End of 5.1 tests
|
||||||
|
@ -37,14 +37,14 @@ set session long_query_time=1;
|
|||||||
select sleep(2);
|
select sleep(2);
|
||||||
sleep(2)
|
sleep(2)
|
||||||
0
|
0
|
||||||
select * from mysql.slow_log;
|
select * from mysql.slow_log where sql_text NOT LIKE '%slow_log%';
|
||||||
start_time user_host query_time lock_time rows_sent rows_examined db last_insert_id insert_id server_id sql_text
|
start_time user_host query_time lock_time rows_sent rows_examined db last_insert_id insert_id server_id sql_text
|
||||||
set global slow_query_log= ON;
|
set global slow_query_log= ON;
|
||||||
set session long_query_time=1;
|
set session long_query_time=1;
|
||||||
select sleep(2);
|
select sleep(2);
|
||||||
sleep(2)
|
sleep(2)
|
||||||
0
|
0
|
||||||
select * from mysql.slow_log;
|
select * from mysql.slow_log where sql_text NOT LIKE '%slow_log%';
|
||||||
start_time user_host query_time lock_time rows_sent rows_examined db last_insert_id insert_id server_id sql_text
|
start_time user_host query_time lock_time rows_sent rows_examined db last_insert_id insert_id server_id sql_text
|
||||||
TIMESTAMP USER_HOST QUERY_TIME 00:00:00 1 0 test 0 0 1 select sleep(2)
|
TIMESTAMP USER_HOST QUERY_TIME 00:00:00 1 0 test 0 0 1 select sleep(2)
|
||||||
show global variables
|
show global variables
|
||||||
|
@ -86,7 +86,7 @@ a b
|
|||||||
19 Testing
|
19 Testing
|
||||||
explain select a from t3 order by a desc limit 10;
|
explain select a from t3 order by a desc limit 10;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t3 index NULL a 4 NULL 1131 Using index
|
1 SIMPLE t3 index NULL a 4 NULL 10 Using index
|
||||||
select a from t3 order by a desc limit 10;
|
select a from t3 order by a desc limit 10;
|
||||||
a
|
a
|
||||||
699
|
699
|
||||||
|
@ -177,3 +177,4 @@ ERROR at line 1: DELIMITER cannot contain a backslash character
|
|||||||
1
|
1
|
||||||
1
|
1
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
WARNING: --server-arg option not supported in this configuration.
|
||||||
|
@ -1073,3 +1073,61 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||||||
1 SIMPLE t1 const PRIMARY,b b 5 const 1
|
1 SIMPLE t1 const PRIMARY,b b 5 const 1
|
||||||
1 SIMPLE t2 ref a a 5 const 2 Using where; Using index
|
1 SIMPLE t2 ref a a 5 const 2 Using where; Using index
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
CREATE TABLE t1(
|
||||||
|
id int auto_increment PRIMARY KEY, c2 int, c3 int, INDEX k2(c2), INDEX k3(c3));
|
||||||
|
INSERT INTO t1 (c2,c3) VALUES
|
||||||
|
(31,34),(35,38),(34,31),(32,35),(31,39),
|
||||||
|
(11,14),(15,18),(14,11),(12,15),(11,19);
|
||||||
|
INSERT INTO t1 (c2,c3) SELECT c2,c3 FROM t1;
|
||||||
|
INSERT INTO t1 (c2,c3) SELECT c2,c3 FROM t1;
|
||||||
|
INSERT INTO t1 (c2,c3) SELECT c2,c3 FROM t1;
|
||||||
|
INSERT INTO t1 (c2,c3) SELECT c2,c3 FROM t1;
|
||||||
|
INSERT INTO t1 (c2,c3) SELECT c2,c3 FROM t1;
|
||||||
|
INSERT INTO t1 (c2,c3) SELECT c2,c3 FROM t1;
|
||||||
|
INSERT INTO t1 (c2,c3) SELECT c2,c3 FROM t1;
|
||||||
|
INSERT INTO t1 (c2,c3) SELECT c2,c3 FROM t1;
|
||||||
|
INSERT INTO t1 (c2,c3) SELECT c2,c3 FROM t1;
|
||||||
|
INSERT INTO t1 (c2,c3) SELECT c2,c3 FROM t1;
|
||||||
|
INSERT INTO t1 (c2,c3) SELECT c2,c3 FROM t1;
|
||||||
|
INSERT INTO t1 (c2,c3) SELECT c2,c3 FROM t1;
|
||||||
|
UPDATE t1 SET c2=20 WHERE id%100 = 0;
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
40960
|
||||||
|
CREATE TABLE t2 LIKE t1;
|
||||||
|
INSERT INTO t2 SELECT * FROM t1 ORDER BY id;
|
||||||
|
EXPLAIN SELECT id,c3 FROM t2 WHERE c2=11 ORDER BY c3 LIMIT 20;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t2 index k2 k3 5 NULL 111 Using where
|
||||||
|
EXPLAIN SELECT id,c3 FROM t2 WHERE c2=11 ORDER BY c3 LIMIT 4000;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t2 ref k2 k2 5 const 7341 Using where; Using filesort
|
||||||
|
EXPLAIN SELECT id,c3 FROM t2 WHERE c2 BETWEEN 10 AND 12 ORDER BY c3 LIMIT 20;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t2 index k2 k3 5 NULL 73 Using where
|
||||||
|
EXPLAIN SELECT id,c3 FROM t2 WHERE c2 BETWEEN 20 AND 30 ORDER BY c3 LIMIT 4000;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t2 range k2 k2 5 NULL 386 Using where; Using filesort
|
||||||
|
SELECT id,c3 FROM t2 WHERE c2=11 ORDER BY c3 LIMIT 20;
|
||||||
|
id c3
|
||||||
|
6 14
|
||||||
|
16 14
|
||||||
|
26 14
|
||||||
|
36 14
|
||||||
|
46 14
|
||||||
|
56 14
|
||||||
|
66 14
|
||||||
|
76 14
|
||||||
|
86 14
|
||||||
|
96 14
|
||||||
|
106 14
|
||||||
|
116 14
|
||||||
|
126 14
|
||||||
|
136 14
|
||||||
|
146 14
|
||||||
|
156 14
|
||||||
|
166 14
|
||||||
|
176 14
|
||||||
|
186 14
|
||||||
|
196 14
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
@ -3980,4 +3980,14 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||||||
1 SIMPLE f1 index inx inx 10 NULL 7 Using where; Using index
|
1 SIMPLE f1 index inx inx 10 NULL 7 Using where; Using index
|
||||||
1 SIMPLE f2 ref inx inx 5 test.f1.b 1 Using where; Using index
|
1 SIMPLE f2 ref inx inx 5 test.f1.b 1 Using where; Using index
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (c1 INT, c2 INT);
|
||||||
|
INSERT INTO t1 VALUES (1,11), (2,22), (2,22);
|
||||||
|
EXPLAIN SELECT c1 FROM t1 WHERE (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT COUNT(c2)))))))))))))))))))))))))))))))) > 0;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 Using where
|
||||||
|
31 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||||
|
32 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||||
|
EXPLAIN SELECT c1 FROM t1 WHERE (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT COUNT(c2))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) > 0;
|
||||||
|
ERROR HY000: Too high level of nesting for select
|
||||||
|
DROP TABLE t1;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
@ -84,7 +84,7 @@ UNIQUE KEY e_n (email,name)
|
|||||||
EXPLAIN SELECT SQL_CALC_FOUND_ROWS DISTINCT email FROM t2 LEFT JOIN t1 ON kid = t2.id WHERE t1.id IS NULL LIMIT 10;
|
EXPLAIN SELECT SQL_CALC_FOUND_ROWS DISTINCT email FROM t2 LEFT JOIN t1 ON kid = t2.id WHERE t1.id IS NULL LIMIT 10;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 system PRIMARY,kid NULL NULL NULL 0 const row not found
|
1 SIMPLE t1 system PRIMARY,kid NULL NULL NULL 0 const row not found
|
||||||
1 SIMPLE t2 index NULL e_n 104 NULL 200
|
1 SIMPLE t2 index NULL e_n 104 NULL 10
|
||||||
SELECT SQL_CALC_FOUND_ROWS DISTINCT email FROM t2 LEFT JOIN t1 ON kid = t2.id WHERE t1.id IS NULL LIMIT 10;
|
SELECT SQL_CALC_FOUND_ROWS DISTINCT email FROM t2 LEFT JOIN t1 ON kid = t2.id WHERE t1.id IS NULL LIMIT 10;
|
||||||
email
|
email
|
||||||
email1
|
email1
|
||||||
|
@ -5670,7 +5670,7 @@ drop function if exists pi;
|
|||||||
create function pi() returns varchar(50)
|
create function pi() returns varchar(50)
|
||||||
return "pie, my favorite desert.";
|
return "pie, my favorite desert.";
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1582 This function 'pi' has the same name as a native function
|
Note 1583 This function 'pi' has the same name as a native function
|
||||||
SET @save_sql_mode=@@sql_mode;
|
SET @save_sql_mode=@@sql_mode;
|
||||||
SET SQL_MODE='IGNORE_SPACE';
|
SET SQL_MODE='IGNORE_SPACE';
|
||||||
select pi(), pi ();
|
select pi(), pi ();
|
||||||
@ -5719,15 +5719,15 @@ use test;
|
|||||||
create function `database`() returns varchar(50)
|
create function `database`() returns varchar(50)
|
||||||
return "Stored function database";
|
return "Stored function database";
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1582 This function 'database' has the same name as a native function
|
Note 1583 This function 'database' has the same name as a native function
|
||||||
create function `current_user`() returns varchar(50)
|
create function `current_user`() returns varchar(50)
|
||||||
return "Stored function current_user";
|
return "Stored function current_user";
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1582 This function 'current_user' has the same name as a native function
|
Note 1583 This function 'current_user' has the same name as a native function
|
||||||
create function md5(x varchar(50)) returns varchar(50)
|
create function md5(x varchar(50)) returns varchar(50)
|
||||||
return "Stored function md5";
|
return "Stored function md5";
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1582 This function 'md5' has the same name as a native function
|
Note 1583 This function 'md5' has the same name as a native function
|
||||||
SET SQL_MODE='IGNORE_SPACE';
|
SET SQL_MODE='IGNORE_SPACE';
|
||||||
select database(), database ();
|
select database(), database ();
|
||||||
database() database ()
|
database() database ()
|
||||||
|
@ -7,11 +7,11 @@ return 1;
|
|||||||
create function x() returns int
|
create function x() returns int
|
||||||
return 2;
|
return 2;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1582 This function 'x' has the same name as a native function
|
Note 1583 This function 'x' has the same name as a native function
|
||||||
create function y() returns int
|
create function y() returns int
|
||||||
return 3;
|
return 3;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1582 This function 'y' has the same name as a native function
|
Note 1583 This function 'y' has the same name as a native function
|
||||||
select a();
|
select a();
|
||||||
a()
|
a()
|
||||||
1
|
1
|
||||||
|
@ -3419,7 +3419,7 @@ EXPLAIN
|
|||||||
SELECT * FROM t1 WHERE (a,b) = ANY (SELECT a, max(b) FROM t1 GROUP BY a);
|
SELECT * FROM t1 WHERE (a,b) = ANY (SELECT a, max(b) FROM t1 GROUP BY a);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 9 Using where
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 9 Using where
|
||||||
2 DEPENDENT SUBQUERY t1 index NULL a 8 NULL 9 Using filesort
|
2 DEPENDENT SUBQUERY t1 index NULL a 8 NULL 1 Using filesort
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
create table t1( f1 int,f2 int);
|
create table t1( f1 int,f2 int);
|
||||||
insert into t1 values (1,1),(2,2);
|
insert into t1 values (1,1),(2,2);
|
||||||
|
@ -618,6 +618,30 @@ bit_field int_field
|
|||||||
2
|
2
|
||||||
handler t1 close;
|
handler t1 close;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
CREATE TABLE t1 (b BIT(2), a VARCHAR(5));
|
||||||
|
INSERT INTO t1 (b, a) VALUES (1, "x"), (3, "zz"), (0, "y"), (3, "z");
|
||||||
|
SELECT b+0, COUNT(DISTINCT a) FROM t1 GROUP BY b;
|
||||||
|
b+0 COUNT(DISTINCT a)
|
||||||
|
0 1
|
||||||
|
1 1
|
||||||
|
3 2
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (a CHAR(5), b BIT(2));
|
||||||
|
INSERT INTO t1 (b, a) VALUES (1, "x"), (3, "zz"), (0, "y"), (3, "z");
|
||||||
|
SELECT b+0, COUNT(DISTINCT a) FROM t1 GROUP BY b;
|
||||||
|
b+0 COUNT(DISTINCT a)
|
||||||
|
0 1
|
||||||
|
1 1
|
||||||
|
3 2
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (a INT, b BIT(2));
|
||||||
|
INSERT INTO t1 (b, a) VALUES (1, 1), (3, 2), (0, 3), (3, 4);
|
||||||
|
SELECT b+0, COUNT(DISTINCT a) FROM t1 GROUP BY b;
|
||||||
|
b+0 COUNT(DISTINCT a)
|
||||||
|
0 1
|
||||||
|
1 1
|
||||||
|
3 2
|
||||||
|
DROP TABLE t1;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
create table t1(a bit(7));
|
create table t1(a bit(7));
|
||||||
insert into t1 values(0x40);
|
insert into t1 values(0x40);
|
||||||
|
@ -444,7 +444,14 @@ set interactive_timeout=100;
|
|||||||
set join_buffer_size=100;
|
set join_buffer_size=100;
|
||||||
set last_insert_id=1;
|
set last_insert_id=1;
|
||||||
set global local_infile=1;
|
set global local_infile=1;
|
||||||
set long_query_time=100;
|
set long_query_time=0.000001;
|
||||||
|
select @@long_query_time;
|
||||||
|
@@long_query_time
|
||||||
|
0.000001
|
||||||
|
set long_query_time=100.000001;
|
||||||
|
select @@long_query_time;
|
||||||
|
@@long_query_time
|
||||||
|
100.000001
|
||||||
set low_priority_updates=1;
|
set low_priority_updates=1;
|
||||||
set max_allowed_packet=100;
|
set max_allowed_packet=100;
|
||||||
set global max_binlog_cache_size=100;
|
set global max_binlog_cache_size=100;
|
||||||
@ -516,6 +523,7 @@ set tmp_table_size=100;
|
|||||||
set tx_isolation="READ-COMMITTED";
|
set tx_isolation="READ-COMMITTED";
|
||||||
set wait_timeout=100;
|
set wait_timeout=100;
|
||||||
set log_warnings=1;
|
set log_warnings=1;
|
||||||
|
set global log_warnings=1;
|
||||||
select @@session.insert_id;
|
select @@session.insert_id;
|
||||||
@@session.insert_id
|
@@session.insert_id
|
||||||
1
|
1
|
||||||
|
@ -647,32 +647,32 @@ select extractValue('<a>a','/a');
|
|||||||
extractValue('<a>a','/a')
|
extractValue('<a>a','/a')
|
||||||
NULL
|
NULL
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1522 Incorrect XML value: 'parse error at line 1 pos 5: unexpected END-OF-INPUT'
|
Warning 1523 Incorrect XML value: 'parse error at line 1 pos 5: unexpected END-OF-INPUT'
|
||||||
select extractValue('<a>a<','/a');
|
select extractValue('<a>a<','/a');
|
||||||
extractValue('<a>a<','/a')
|
extractValue('<a>a<','/a')
|
||||||
NULL
|
NULL
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1522 Incorrect XML value: 'parse error at line 1 pos 6: END-OF-INPUT unexpected (ident or '/' wanted)'
|
Warning 1523 Incorrect XML value: 'parse error at line 1 pos 6: END-OF-INPUT unexpected (ident or '/' wanted)'
|
||||||
select extractValue('<a>a</','/a');
|
select extractValue('<a>a</','/a');
|
||||||
extractValue('<a>a</','/a')
|
extractValue('<a>a</','/a')
|
||||||
NULL
|
NULL
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1522 Incorrect XML value: 'parse error at line 1 pos 7: END-OF-INPUT unexpected (ident wanted)'
|
Warning 1523 Incorrect XML value: 'parse error at line 1 pos 7: END-OF-INPUT unexpected (ident wanted)'
|
||||||
select extractValue('<a>a</a','/a');
|
select extractValue('<a>a</a','/a');
|
||||||
extractValue('<a>a</a','/a')
|
extractValue('<a>a</a','/a')
|
||||||
NULL
|
NULL
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1522 Incorrect XML value: 'parse error at line 1 pos 8: END-OF-INPUT unexpected ('>' wanted)'
|
Warning 1523 Incorrect XML value: 'parse error at line 1 pos 8: END-OF-INPUT unexpected ('>' wanted)'
|
||||||
select extractValue('<a>a</a></b>','/a');
|
select extractValue('<a>a</a></b>','/a');
|
||||||
extractValue('<a>a</a></b>','/a')
|
extractValue('<a>a</a></b>','/a')
|
||||||
NULL
|
NULL
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1522 Incorrect XML value: 'parse error at line 1 pos 12: '</b>' unexpected (END-OF-INPUT wanted)'
|
Warning 1523 Incorrect XML value: 'parse error at line 1 pos 12: '</b>' unexpected (END-OF-INPUT wanted)'
|
||||||
select extractValue('<a b=>a</a>','/a');
|
select extractValue('<a b=>a</a>','/a');
|
||||||
extractValue('<a b=>a</a>','/a')
|
extractValue('<a b=>a</a>','/a')
|
||||||
NULL
|
NULL
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1522 Incorrect XML value: 'parse error at line 1 pos 7: '>' unexpected (ident or string wanted)'
|
Warning 1523 Incorrect XML value: 'parse error at line 1 pos 7: '>' unexpected (ident or string wanted)'
|
||||||
select extractValue('<e>1</e>','position()');
|
select extractValue('<e>1</e>','position()');
|
||||||
ERROR HY000: XPATH syntax error: ''
|
ERROR HY000: XPATH syntax error: ''
|
||||||
select extractValue('<e>1</e>','last()');
|
select extractValue('<e>1</e>','last()');
|
||||||
@ -723,17 +723,17 @@ select extractValue('<zot><tim0><01>10:39:15</01><02>140</02></tim0></zot>','//*
|
|||||||
extractValue('<zot><tim0><01>10:39:15</01><02>140</02></tim0></zot>','//*')
|
extractValue('<zot><tim0><01>10:39:15</01><02>140</02></tim0></zot>','//*')
|
||||||
NULL
|
NULL
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1522 Incorrect XML value: 'parse error at line 1 pos 13: unknown token unexpected (ident or '/' wanted)'
|
Warning 1523 Incorrect XML value: 'parse error at line 1 pos 13: unknown token unexpected (ident or '/' wanted)'
|
||||||
select extractValue('<.>test</.>','//*');
|
select extractValue('<.>test</.>','//*');
|
||||||
extractValue('<.>test</.>','//*')
|
extractValue('<.>test</.>','//*')
|
||||||
NULL
|
NULL
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1522 Incorrect XML value: 'parse error at line 1 pos 2: unknown token unexpected (ident or '/' wanted)'
|
Warning 1523 Incorrect XML value: 'parse error at line 1 pos 2: unknown token unexpected (ident or '/' wanted)'
|
||||||
select extractValue('<->test</->','//*');
|
select extractValue('<->test</->','//*');
|
||||||
extractValue('<->test</->','//*')
|
extractValue('<->test</->','//*')
|
||||||
NULL
|
NULL
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1522 Incorrect XML value: 'parse error at line 1 pos 2: unknown token unexpected (ident or '/' wanted)'
|
Warning 1523 Incorrect XML value: 'parse error at line 1 pos 2: unknown token unexpected (ident or '/' wanted)'
|
||||||
select extractValue('<:>test</:>','//*');
|
select extractValue('<:>test</:>','//*');
|
||||||
extractValue('<:>test</:>','//*')
|
extractValue('<:>test</:>','//*')
|
||||||
test
|
test
|
||||||
|
@ -34,13 +34,13 @@ col5 enum('PENDING', 'ACTIVE', 'DISABLED') not null,
|
|||||||
col6 int not null, to_be_deleted int) ENGINE=ndbcluster;
|
col6 int not null, to_be_deleted int) ENGINE=ndbcluster;
|
||||||
show table status;
|
show table status;
|
||||||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||||
t1 NDBCLUSTER 10 Dynamic 0 # # # 0 # 1 # # # latin1_swedish_ci NULL #
|
t1 ndbcluster 10 Dynamic 0 # # # 0 # 1 # # # latin1_swedish_ci NULL #
|
||||||
SET SQL_MODE=NO_AUTO_VALUE_ON_ZERO;
|
SET SQL_MODE=NO_AUTO_VALUE_ON_ZERO;
|
||||||
insert into t1 values
|
insert into t1 values
|
||||||
(0,4,3,5,"PENDING",1,7),(NULL,4,3,5,"PENDING",1,7),(31,4,3,5,"PENDING",1,7), (7,4,3,5,"PENDING",1,7), (NULL,4,3,5,"PENDING",1,7), (100,4,3,5,"PENDING",1,7), (99,4,3,5,"PENDING",1,7), (8,4,3,5,"PENDING",1,7), (NULL,4,3,5,"PENDING",1,7);
|
(0,4,3,5,"PENDING",1,7),(NULL,4,3,5,"PENDING",1,7),(31,4,3,5,"PENDING",1,7), (7,4,3,5,"PENDING",1,7), (NULL,4,3,5,"PENDING",1,7), (100,4,3,5,"PENDING",1,7), (99,4,3,5,"PENDING",1,7), (8,4,3,5,"PENDING",1,7), (NULL,4,3,5,"PENDING",1,7);
|
||||||
show table status;
|
show table status;
|
||||||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||||
t1 NDBCLUSTER 10 Dynamic 9 # # # 0 # 102 # # # latin1_swedish_ci NULL #
|
t1 ndbcluster 10 Dynamic 9 # # # 0 # 102 # # # latin1_swedish_ci NULL #
|
||||||
select * from t1 order by col1;
|
select * from t1 order by col1;
|
||||||
col1 col2 col3 col4 col5 col6 to_be_deleted
|
col1 col2 col3 col4 col5 col6 to_be_deleted
|
||||||
0 4 3 5 PENDING 1 7
|
0 4 3 5 PENDING 1 7
|
||||||
@ -60,7 +60,7 @@ change column col2 fourth varchar(30) not null after col3,
|
|||||||
modify column col6 int not null first;
|
modify column col6 int not null first;
|
||||||
show table status;
|
show table status;
|
||||||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||||
t1 NDBCLUSTER 10 Dynamic 9 # # # 0 # 102 # # # latin1_swedish_ci NULL #
|
t1 ndbcluster 10 Dynamic 9 # # # 0 # 102 # # # latin1_swedish_ci NULL #
|
||||||
select * from t1 order by col1;
|
select * from t1 order by col1;
|
||||||
col6 col1 col3 fourth col4 col4_5 col5 col7 col8
|
col6 col1 col3 fourth col4 col4_5 col5 col7 col8
|
||||||
1 0 3 4 5 PENDING 0000-00-00 00:00:00
|
1 0 3 4 5 PENDING 0000-00-00 00:00:00
|
||||||
@ -75,7 +75,7 @@ col6 col1 col3 fourth col4 col4_5 col5 col7 col8
|
|||||||
insert into t1 values (2, NULL,4,3,5,99,"PENDING","EXTRA",'2004-01-01 00:00:00');
|
insert into t1 values (2, NULL,4,3,5,99,"PENDING","EXTRA",'2004-01-01 00:00:00');
|
||||||
show table status;
|
show table status;
|
||||||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||||
t1 NDBCLUSTER 10 Dynamic 10 # # # 0 # 103 # # # latin1_swedish_ci NULL #
|
t1 ndbcluster 10 Dynamic 10 # # # 0 # 103 # # # latin1_swedish_ci NULL #
|
||||||
select * from t1 order by col1;
|
select * from t1 order by col1;
|
||||||
col6 col1 col3 fourth col4 col4_5 col5 col7 col8
|
col6 col1 col3 fourth col4 col4_5 col5 col7 col8
|
||||||
1 0 3 4 5 PENDING 0000-00-00 00:00:00
|
1 0 3 4 5 PENDING 0000-00-00 00:00:00
|
||||||
|
@ -5,20 +5,20 @@ INITIAL_SIZE 16M
|
|||||||
UNDO_BUFFER_SIZE = 1M
|
UNDO_BUFFER_SIZE = 1M
|
||||||
ENGINE=MYISAM;
|
ENGINE=MYISAM;
|
||||||
Warnings:
|
Warnings:
|
||||||
Error 1475 Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP'
|
Error 1476 Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP'
|
||||||
ALTER LOGFILE GROUP lg1
|
ALTER LOGFILE GROUP lg1
|
||||||
ADD UNDOFILE 'undofile02.dat'
|
ADD UNDOFILE 'undofile02.dat'
|
||||||
INITIAL_SIZE = 4M
|
INITIAL_SIZE = 4M
|
||||||
ENGINE=XYZ;
|
ENGINE=XYZ;
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1286 Unknown table engine 'XYZ'
|
Warning 1286 Unknown table engine 'XYZ'
|
||||||
Error 1475 Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP'
|
Error 1476 Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP'
|
||||||
CREATE TABLESPACE ts1
|
CREATE TABLESPACE ts1
|
||||||
ADD DATAFILE 'datafile.dat'
|
ADD DATAFILE 'datafile.dat'
|
||||||
USE LOGFILE GROUP lg1
|
USE LOGFILE GROUP lg1
|
||||||
INITIAL_SIZE 12M;
|
INITIAL_SIZE 12M;
|
||||||
Warnings:
|
Warnings:
|
||||||
Error 1475 Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP'
|
Error 1476 Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP'
|
||||||
set storage_engine=ndb;
|
set storage_engine=ndb;
|
||||||
CREATE LOGFILE GROUP lg1
|
CREATE LOGFILE GROUP lg1
|
||||||
ADD UNDOFILE 'undofile.dat'
|
ADD UNDOFILE 'undofile.dat'
|
||||||
|
@ -16,7 +16,7 @@ ERROR HY000: Failed to create LOGFILE GROUP
|
|||||||
SHOW WARNINGS;
|
SHOW WARNINGS;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
Error 1296 Got error 1514 'Currently there is a limit of one logfile group' from NDB
|
Error 1296 Got error 1514 'Currently there is a limit of one logfile group' from NDB
|
||||||
Error 1525 Failed to create LOGFILE GROUP
|
Error 1526 Failed to create LOGFILE GROUP
|
||||||
CREATE LOGFILE GROUP lg1
|
CREATE LOGFILE GROUP lg1
|
||||||
ADD UNDOFILE 'undofile.dat'
|
ADD UNDOFILE 'undofile.dat'
|
||||||
INITIAL_SIZE 1M
|
INITIAL_SIZE 1M
|
||||||
|
@ -463,7 +463,7 @@ drop table t1;
|
|||||||
End of 4.1 tests
|
End of 4.1 tests
|
||||||
CREATE TABLE t1 (name VARCHAR(100), square GEOMETRY);
|
CREATE TABLE t1 (name VARCHAR(100), square GEOMETRY);
|
||||||
Warnings:
|
Warnings:
|
||||||
Error 1475 Table storage engine 'ndbcluster' does not support the create option 'Binlog of table with BLOB attribute and no PK'
|
Error 1476 Table storage engine 'ndbcluster' does not support the create option 'Binlog of table with BLOB attribute and no PK'
|
||||||
INSERT INTO t1 VALUES("center", GeomFromText('POLYGON (( 0 0, 0 2, 2 2, 2 0, 0 0))'));
|
INSERT INTO t1 VALUES("center", GeomFromText('POLYGON (( 0 0, 0 2, 2 2, 2 0, 0 0))'));
|
||||||
INSERT INTO t1 VALUES("small", GeomFromText('POLYGON (( 0 0, 0 1, 1 1, 1 0, 0 0))'));
|
INSERT INTO t1 VALUES("small", GeomFromText('POLYGON (( 0 0, 0 1, 1 1, 1 0, 0 0))'));
|
||||||
INSERT INTO t1 VALUES("big", GeomFromText('POLYGON (( 0 0, 0 3, 3 3, 3 0, 0 0))'));
|
INSERT INTO t1 VALUES("big", GeomFromText('POLYGON (( 0 0, 0 3, 3 3, 3 0, 0 0))'));
|
||||||
@ -1013,7 +1013,7 @@ drop table t1;
|
|||||||
End of 4.1 tests
|
End of 4.1 tests
|
||||||
CREATE TABLE t1 (name VARCHAR(100), square GEOMETRY);
|
CREATE TABLE t1 (name VARCHAR(100), square GEOMETRY);
|
||||||
Warnings:
|
Warnings:
|
||||||
Error 1475 Table storage engine 'ndbcluster' does not support the create option 'Binlog of table with BLOB attribute and no PK'
|
Error 1476 Table storage engine 'ndbcluster' does not support the create option 'Binlog of table with BLOB attribute and no PK'
|
||||||
INSERT INTO t1 VALUES("center", GeomFromText('POLYGON (( 0 0, 0 2, 2 2, 2 0, 0 0))'));
|
INSERT INTO t1 VALUES("center", GeomFromText('POLYGON (( 0 0, 0 2, 2 2, 2 0, 0 0))'));
|
||||||
INSERT INTO t1 VALUES("small", GeomFromText('POLYGON (( 0 0, 0 1, 1 1, 1 0, 0 0))'));
|
INSERT INTO t1 VALUES("small", GeomFromText('POLYGON (( 0 0, 0 1, 1 1, 1 0, 0 0))'));
|
||||||
INSERT INTO t1 VALUES("big", GeomFromText('POLYGON (( 0 0, 0 3, 3 3, 3 0, 0 0))'));
|
INSERT INTO t1 VALUES("big", GeomFromText('POLYGON (( 0 0, 0 3, 3 3, 3 0, 0 0))'));
|
||||||
|
@ -8,7 +8,7 @@ ENGINE=NDB;
|
|||||||
ERROR HY000: Can't create table 'test.t1' (errno: 138)
|
ERROR HY000: Can't create table 'test.t1' (errno: 138)
|
||||||
SHOW WARNINGS;
|
SHOW WARNINGS;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
Error 1475 Table storage engine 'ndbcluster' does not support the create option 'Row format FIXED incompatible with variable sized attribute'
|
Error 1476 Table storage engine 'ndbcluster' does not support the create option 'Row format FIXED incompatible with variable sized attribute'
|
||||||
Error 1005 Can't create table 'test.t1' (errno: 138)
|
Error 1005 Can't create table 'test.t1' (errno: 138)
|
||||||
CREATE TABLE t1
|
CREATE TABLE t1
|
||||||
( a INT KEY,
|
( a INT KEY,
|
||||||
|
@ -11,7 +11,7 @@ ERROR HY000: Failed to create LOGFILE GROUP
|
|||||||
show warnings;
|
show warnings;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
Error 1296 Got error 299 'Operation not allowed or aborted due to single user mode' from NDB
|
Error 1296 Got error 299 'Operation not allowed or aborted due to single user mode' from NDB
|
||||||
Error 1525 Failed to create LOGFILE GROUP
|
Error 1526 Failed to create LOGFILE GROUP
|
||||||
create table t1 (a int key, b int unique, c int) engine ndb;
|
create table t1 (a int key, b int unique, c int) engine ndb;
|
||||||
CREATE LOGFILE GROUP lg1
|
CREATE LOGFILE GROUP lg1
|
||||||
ADD UNDOFILE 'undofile.dat'
|
ADD UNDOFILE 'undofile.dat'
|
||||||
@ -27,14 +27,14 @@ ERROR HY000: Failed to create TABLESPACE
|
|||||||
show warnings;
|
show warnings;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
Error 1296 Got error 299 'Operation not allowed or aborted due to single user mode' from NDB
|
Error 1296 Got error 299 'Operation not allowed or aborted due to single user mode' from NDB
|
||||||
Error 1525 Failed to create TABLESPACE
|
Error 1526 Failed to create TABLESPACE
|
||||||
DROP LOGFILE GROUP lg1
|
DROP LOGFILE GROUP lg1
|
||||||
ENGINE =NDB;
|
ENGINE =NDB;
|
||||||
ERROR HY000: Failed to drop LOGFILE GROUP
|
ERROR HY000: Failed to drop LOGFILE GROUP
|
||||||
show warnings;
|
show warnings;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
Error 1296 Got error 299 'Operation not allowed or aborted due to single user mode' from NDB
|
Error 1296 Got error 299 'Operation not allowed or aborted due to single user mode' from NDB
|
||||||
Error 1526 Failed to drop LOGFILE GROUP
|
Error 1527 Failed to drop LOGFILE GROUP
|
||||||
CREATE TABLESPACE ts1
|
CREATE TABLESPACE ts1
|
||||||
ADD DATAFILE 'datafile.dat'
|
ADD DATAFILE 'datafile.dat'
|
||||||
USE LOGFILE GROUP lg1
|
USE LOGFILE GROUP lg1
|
||||||
@ -47,7 +47,7 @@ ERROR HY000: Failed to alter: DROP DATAFILE
|
|||||||
show warnings;
|
show warnings;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
Error 1296 Got error 299 'Operation not allowed or aborted due to single user mode' from NDB
|
Error 1296 Got error 299 'Operation not allowed or aborted due to single user mode' from NDB
|
||||||
Error 1530 Failed to alter: DROP DATAFILE
|
Error 1531 Failed to alter: DROP DATAFILE
|
||||||
ALTER TABLESPACE ts1
|
ALTER TABLESPACE ts1
|
||||||
DROP DATAFILE 'datafile.dat'
|
DROP DATAFILE 'datafile.dat'
|
||||||
ENGINE NDB;
|
ENGINE NDB;
|
||||||
@ -57,7 +57,7 @@ ERROR HY000: Failed to drop TABLESPACE
|
|||||||
show warnings;
|
show warnings;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
Error 1296 Got error 299 'Operation not allowed or aborted due to single user mode' from NDB
|
Error 1296 Got error 299 'Operation not allowed or aborted due to single user mode' from NDB
|
||||||
Error 1526 Failed to drop TABLESPACE
|
Error 1527 Failed to drop TABLESPACE
|
||||||
DROP TABLESPACE ts1
|
DROP TABLESPACE ts1
|
||||||
ENGINE NDB;
|
ENGINE NDB;
|
||||||
DROP LOGFILE GROUP lg1
|
DROP LOGFILE GROUP lg1
|
||||||
|
@ -9,7 +9,7 @@ SET SESSION storage_engine=NDBCLUSTER;
|
|||||||
create table t1 (a int key);
|
create table t1 (a int key);
|
||||||
select engine from information_schema.tables where table_name = 't1';
|
select engine from information_schema.tables where table_name = 't1';
|
||||||
engine
|
engine
|
||||||
NDBCLUSTER
|
ndbcluster
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create temporary table t1 (a int key);
|
create temporary table t1 (a int key);
|
||||||
show create table t1;
|
show create table t1;
|
||||||
|
@ -139,7 +139,7 @@ Replicate_Do_Table
|
|||||||
Replicate_Ignore_Table #
|
Replicate_Ignore_Table #
|
||||||
Replicate_Wild_Do_Table
|
Replicate_Wild_Do_Table
|
||||||
Replicate_Wild_Ignore_Table
|
Replicate_Wild_Ignore_Table
|
||||||
Last_Errno 1532
|
Last_Errno 1533
|
||||||
Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3
|
Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3
|
||||||
Skip_Counter 0
|
Skip_Counter 0
|
||||||
Exec_Master_Log_Pos #
|
Exec_Master_Log_Pos #
|
||||||
@ -157,7 +157,7 @@ Seconds_Behind_Master #
|
|||||||
Master_SSL_Verify_Server_Cert No
|
Master_SSL_Verify_Server_Cert No
|
||||||
Last_IO_Errno #
|
Last_IO_Errno #
|
||||||
Last_IO_Error #
|
Last_IO_Error #
|
||||||
Last_SQL_Errno 1532
|
Last_SQL_Errno 1533
|
||||||
Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3
|
Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3
|
||||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||||
START SLAVE;
|
START SLAVE;
|
||||||
@ -201,7 +201,7 @@ Replicate_Do_Table
|
|||||||
Replicate_Ignore_Table #
|
Replicate_Ignore_Table #
|
||||||
Replicate_Wild_Do_Table
|
Replicate_Wild_Do_Table
|
||||||
Replicate_Wild_Ignore_Table
|
Replicate_Wild_Ignore_Table
|
||||||
Last_Errno 1532
|
Last_Errno 1533
|
||||||
Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3
|
Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3
|
||||||
Skip_Counter 0
|
Skip_Counter 0
|
||||||
Exec_Master_Log_Pos #
|
Exec_Master_Log_Pos #
|
||||||
@ -219,7 +219,7 @@ Seconds_Behind_Master #
|
|||||||
Master_SSL_Verify_Server_Cert No
|
Master_SSL_Verify_Server_Cert No
|
||||||
Last_IO_Errno #
|
Last_IO_Errno #
|
||||||
Last_IO_Error #
|
Last_IO_Error #
|
||||||
Last_SQL_Errno 1532
|
Last_SQL_Errno 1533
|
||||||
Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3
|
Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3
|
||||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||||
START SLAVE;
|
START SLAVE;
|
||||||
@ -263,7 +263,7 @@ Replicate_Do_Table
|
|||||||
Replicate_Ignore_Table #
|
Replicate_Ignore_Table #
|
||||||
Replicate_Wild_Do_Table
|
Replicate_Wild_Do_Table
|
||||||
Replicate_Wild_Ignore_Table
|
Replicate_Wild_Ignore_Table
|
||||||
Last_Errno 1532
|
Last_Errno 1533
|
||||||
Last_Error Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246
|
Last_Error Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246
|
||||||
Skip_Counter 0
|
Skip_Counter 0
|
||||||
Exec_Master_Log_Pos #
|
Exec_Master_Log_Pos #
|
||||||
@ -281,7 +281,7 @@ Seconds_Behind_Master #
|
|||||||
Master_SSL_Verify_Server_Cert No
|
Master_SSL_Verify_Server_Cert No
|
||||||
Last_IO_Errno #
|
Last_IO_Errno #
|
||||||
Last_IO_Error #
|
Last_IO_Error #
|
||||||
Last_SQL_Errno 1532
|
Last_SQL_Errno 1533
|
||||||
Last_SQL_Error Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246
|
Last_SQL_Error Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246
|
||||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||||
START SLAVE;
|
START SLAVE;
|
||||||
@ -324,7 +324,7 @@ Replicate_Do_Table
|
|||||||
Replicate_Ignore_Table #
|
Replicate_Ignore_Table #
|
||||||
Replicate_Wild_Do_Table
|
Replicate_Wild_Do_Table
|
||||||
Replicate_Wild_Ignore_Table
|
Replicate_Wild_Ignore_Table
|
||||||
Last_Errno 1532
|
Last_Errno 1533
|
||||||
Last_Error Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3
|
Last_Error Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3
|
||||||
Skip_Counter 0
|
Skip_Counter 0
|
||||||
Exec_Master_Log_Pos #
|
Exec_Master_Log_Pos #
|
||||||
@ -342,7 +342,7 @@ Seconds_Behind_Master #
|
|||||||
Master_SSL_Verify_Server_Cert No
|
Master_SSL_Verify_Server_Cert No
|
||||||
Last_IO_Errno #
|
Last_IO_Errno #
|
||||||
Last_IO_Error #
|
Last_IO_Error #
|
||||||
Last_SQL_Errno 1532
|
Last_SQL_Errno 1533
|
||||||
Last_SQL_Error Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3
|
Last_SQL_Error Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3
|
||||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=3;
|
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=3;
|
||||||
*** Drop t6 ***
|
*** Drop t6 ***
|
||||||
@ -436,7 +436,7 @@ Replicate_Do_Table
|
|||||||
Replicate_Ignore_Table #
|
Replicate_Ignore_Table #
|
||||||
Replicate_Wild_Do_Table
|
Replicate_Wild_Do_Table
|
||||||
Replicate_Wild_Ignore_Table
|
Replicate_Wild_Ignore_Table
|
||||||
Last_Errno 1532
|
Last_Errno 1533
|
||||||
Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5
|
Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5
|
||||||
Skip_Counter 0
|
Skip_Counter 0
|
||||||
Exec_Master_Log_Pos #
|
Exec_Master_Log_Pos #
|
||||||
@ -454,7 +454,7 @@ Seconds_Behind_Master #
|
|||||||
Master_SSL_Verify_Server_Cert No
|
Master_SSL_Verify_Server_Cert No
|
||||||
Last_IO_Errno #
|
Last_IO_Errno #
|
||||||
Last_IO_Error #
|
Last_IO_Error #
|
||||||
Last_SQL_Errno 1532
|
Last_SQL_Errno 1533
|
||||||
Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5
|
Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5
|
||||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||||
START SLAVE;
|
START SLAVE;
|
||||||
@ -497,7 +497,7 @@ Replicate_Do_Table
|
|||||||
Replicate_Ignore_Table #
|
Replicate_Ignore_Table #
|
||||||
Replicate_Wild_Do_Table
|
Replicate_Wild_Do_Table
|
||||||
Replicate_Wild_Ignore_Table
|
Replicate_Wild_Ignore_Table
|
||||||
Last_Errno 1532
|
Last_Errno 1533
|
||||||
Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252
|
Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252
|
||||||
Skip_Counter 0
|
Skip_Counter 0
|
||||||
Exec_Master_Log_Pos #
|
Exec_Master_Log_Pos #
|
||||||
@ -515,7 +515,7 @@ Seconds_Behind_Master #
|
|||||||
Master_SSL_Verify_Server_Cert No
|
Master_SSL_Verify_Server_Cert No
|
||||||
Last_IO_Errno #
|
Last_IO_Errno #
|
||||||
Last_IO_Error #
|
Last_IO_Error #
|
||||||
Last_SQL_Errno 1532
|
Last_SQL_Errno 1533
|
||||||
Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252
|
Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252
|
||||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||||
START SLAVE;
|
START SLAVE;
|
||||||
@ -822,7 +822,7 @@ Replicate_Do_Table
|
|||||||
Replicate_Ignore_Table #
|
Replicate_Ignore_Table #
|
||||||
Replicate_Wild_Do_Table
|
Replicate_Wild_Do_Table
|
||||||
Replicate_Wild_Ignore_Table
|
Replicate_Wild_Ignore_Table
|
||||||
Last_Errno 1532
|
Last_Errno 1533
|
||||||
Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2
|
Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2
|
||||||
Skip_Counter 0
|
Skip_Counter 0
|
||||||
Exec_Master_Log_Pos #
|
Exec_Master_Log_Pos #
|
||||||
@ -840,7 +840,7 @@ Seconds_Behind_Master #
|
|||||||
Master_SSL_Verify_Server_Cert No
|
Master_SSL_Verify_Server_Cert No
|
||||||
Last_IO_Errno #
|
Last_IO_Errno #
|
||||||
Last_IO_Error #
|
Last_IO_Error #
|
||||||
Last_SQL_Errno 1532
|
Last_SQL_Errno 1533
|
||||||
Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2
|
Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2
|
||||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||||
START SLAVE;
|
START SLAVE;
|
||||||
|
@ -139,7 +139,7 @@ Replicate_Do_Table
|
|||||||
Replicate_Ignore_Table #
|
Replicate_Ignore_Table #
|
||||||
Replicate_Wild_Do_Table
|
Replicate_Wild_Do_Table
|
||||||
Replicate_Wild_Ignore_Table
|
Replicate_Wild_Ignore_Table
|
||||||
Last_Errno 1532
|
Last_Errno 1533
|
||||||
Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3
|
Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3
|
||||||
Skip_Counter 0
|
Skip_Counter 0
|
||||||
Exec_Master_Log_Pos #
|
Exec_Master_Log_Pos #
|
||||||
@ -157,7 +157,7 @@ Seconds_Behind_Master #
|
|||||||
Master_SSL_Verify_Server_Cert No
|
Master_SSL_Verify_Server_Cert No
|
||||||
Last_IO_Errno #
|
Last_IO_Errno #
|
||||||
Last_IO_Error #
|
Last_IO_Error #
|
||||||
Last_SQL_Errno 1532
|
Last_SQL_Errno 1533
|
||||||
Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3
|
Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3
|
||||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||||
START SLAVE;
|
START SLAVE;
|
||||||
@ -201,7 +201,7 @@ Replicate_Do_Table
|
|||||||
Replicate_Ignore_Table #
|
Replicate_Ignore_Table #
|
||||||
Replicate_Wild_Do_Table
|
Replicate_Wild_Do_Table
|
||||||
Replicate_Wild_Ignore_Table
|
Replicate_Wild_Ignore_Table
|
||||||
Last_Errno 1532
|
Last_Errno 1533
|
||||||
Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3
|
Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3
|
||||||
Skip_Counter 0
|
Skip_Counter 0
|
||||||
Exec_Master_Log_Pos #
|
Exec_Master_Log_Pos #
|
||||||
@ -219,7 +219,7 @@ Seconds_Behind_Master #
|
|||||||
Master_SSL_Verify_Server_Cert No
|
Master_SSL_Verify_Server_Cert No
|
||||||
Last_IO_Errno #
|
Last_IO_Errno #
|
||||||
Last_IO_Error #
|
Last_IO_Error #
|
||||||
Last_SQL_Errno 1532
|
Last_SQL_Errno 1533
|
||||||
Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3
|
Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3
|
||||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||||
START SLAVE;
|
START SLAVE;
|
||||||
@ -263,7 +263,7 @@ Replicate_Do_Table
|
|||||||
Replicate_Ignore_Table #
|
Replicate_Ignore_Table #
|
||||||
Replicate_Wild_Do_Table
|
Replicate_Wild_Do_Table
|
||||||
Replicate_Wild_Ignore_Table
|
Replicate_Wild_Ignore_Table
|
||||||
Last_Errno 1532
|
Last_Errno 1533
|
||||||
Last_Error Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246
|
Last_Error Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246
|
||||||
Skip_Counter 0
|
Skip_Counter 0
|
||||||
Exec_Master_Log_Pos #
|
Exec_Master_Log_Pos #
|
||||||
@ -281,7 +281,7 @@ Seconds_Behind_Master #
|
|||||||
Master_SSL_Verify_Server_Cert No
|
Master_SSL_Verify_Server_Cert No
|
||||||
Last_IO_Errno #
|
Last_IO_Errno #
|
||||||
Last_IO_Error #
|
Last_IO_Error #
|
||||||
Last_SQL_Errno 1532
|
Last_SQL_Errno 1533
|
||||||
Last_SQL_Error Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246
|
Last_SQL_Error Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246
|
||||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||||
START SLAVE;
|
START SLAVE;
|
||||||
@ -324,7 +324,7 @@ Replicate_Do_Table
|
|||||||
Replicate_Ignore_Table #
|
Replicate_Ignore_Table #
|
||||||
Replicate_Wild_Do_Table
|
Replicate_Wild_Do_Table
|
||||||
Replicate_Wild_Ignore_Table
|
Replicate_Wild_Ignore_Table
|
||||||
Last_Errno 1532
|
Last_Errno 1533
|
||||||
Last_Error Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3
|
Last_Error Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3
|
||||||
Skip_Counter 0
|
Skip_Counter 0
|
||||||
Exec_Master_Log_Pos #
|
Exec_Master_Log_Pos #
|
||||||
@ -342,7 +342,7 @@ Seconds_Behind_Master #
|
|||||||
Master_SSL_Verify_Server_Cert No
|
Master_SSL_Verify_Server_Cert No
|
||||||
Last_IO_Errno #
|
Last_IO_Errno #
|
||||||
Last_IO_Error #
|
Last_IO_Error #
|
||||||
Last_SQL_Errno 1532
|
Last_SQL_Errno 1533
|
||||||
Last_SQL_Error Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3
|
Last_SQL_Error Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3
|
||||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=3;
|
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=3;
|
||||||
*** Drop t6 ***
|
*** Drop t6 ***
|
||||||
@ -436,7 +436,7 @@ Replicate_Do_Table
|
|||||||
Replicate_Ignore_Table #
|
Replicate_Ignore_Table #
|
||||||
Replicate_Wild_Do_Table
|
Replicate_Wild_Do_Table
|
||||||
Replicate_Wild_Ignore_Table
|
Replicate_Wild_Ignore_Table
|
||||||
Last_Errno 1532
|
Last_Errno 1533
|
||||||
Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5
|
Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5
|
||||||
Skip_Counter 0
|
Skip_Counter 0
|
||||||
Exec_Master_Log_Pos #
|
Exec_Master_Log_Pos #
|
||||||
@ -454,7 +454,7 @@ Seconds_Behind_Master #
|
|||||||
Master_SSL_Verify_Server_Cert No
|
Master_SSL_Verify_Server_Cert No
|
||||||
Last_IO_Errno #
|
Last_IO_Errno #
|
||||||
Last_IO_Error #
|
Last_IO_Error #
|
||||||
Last_SQL_Errno 1532
|
Last_SQL_Errno 1533
|
||||||
Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5
|
Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5
|
||||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||||
START SLAVE;
|
START SLAVE;
|
||||||
@ -497,7 +497,7 @@ Replicate_Do_Table
|
|||||||
Replicate_Ignore_Table #
|
Replicate_Ignore_Table #
|
||||||
Replicate_Wild_Do_Table
|
Replicate_Wild_Do_Table
|
||||||
Replicate_Wild_Ignore_Table
|
Replicate_Wild_Ignore_Table
|
||||||
Last_Errno 1532
|
Last_Errno 1533
|
||||||
Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252
|
Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252
|
||||||
Skip_Counter 0
|
Skip_Counter 0
|
||||||
Exec_Master_Log_Pos #
|
Exec_Master_Log_Pos #
|
||||||
@ -515,7 +515,7 @@ Seconds_Behind_Master #
|
|||||||
Master_SSL_Verify_Server_Cert No
|
Master_SSL_Verify_Server_Cert No
|
||||||
Last_IO_Errno #
|
Last_IO_Errno #
|
||||||
Last_IO_Error #
|
Last_IO_Error #
|
||||||
Last_SQL_Errno 1532
|
Last_SQL_Errno 1533
|
||||||
Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252
|
Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252
|
||||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||||
START SLAVE;
|
START SLAVE;
|
||||||
@ -822,7 +822,7 @@ Replicate_Do_Table
|
|||||||
Replicate_Ignore_Table #
|
Replicate_Ignore_Table #
|
||||||
Replicate_Wild_Do_Table
|
Replicate_Wild_Do_Table
|
||||||
Replicate_Wild_Ignore_Table
|
Replicate_Wild_Ignore_Table
|
||||||
Last_Errno 1532
|
Last_Errno 1533
|
||||||
Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2
|
Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2
|
||||||
Skip_Counter 0
|
Skip_Counter 0
|
||||||
Exec_Master_Log_Pos #
|
Exec_Master_Log_Pos #
|
||||||
@ -840,7 +840,7 @@ Seconds_Behind_Master #
|
|||||||
Master_SSL_Verify_Server_Cert No
|
Master_SSL_Verify_Server_Cert No
|
||||||
Last_IO_Errno #
|
Last_IO_Errno #
|
||||||
Last_IO_Error #
|
Last_IO_Error #
|
||||||
Last_SQL_Errno 1532
|
Last_SQL_Errno 1533
|
||||||
Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2
|
Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2
|
||||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||||
START SLAVE;
|
START SLAVE;
|
||||||
|
@ -44,7 +44,7 @@ Replicate_Do_Table
|
|||||||
Replicate_Ignore_Table
|
Replicate_Ignore_Table
|
||||||
Replicate_Wild_Do_Table
|
Replicate_Wild_Do_Table
|
||||||
Replicate_Wild_Ignore_Table
|
Replicate_Wild_Ignore_Table
|
||||||
Last_Errno 1587
|
Last_Errno 1588
|
||||||
Last_Error The incident LOST_EVENTS occured on the master. Message: <none>
|
Last_Error The incident LOST_EVENTS occured on the master. Message: <none>
|
||||||
Skip_Counter 0
|
Skip_Counter 0
|
||||||
Exec_Master_Log_Pos #
|
Exec_Master_Log_Pos #
|
||||||
@ -62,7 +62,7 @@ Seconds_Behind_Master #
|
|||||||
Master_SSL_Verify_Server_Cert No
|
Master_SSL_Verify_Server_Cert No
|
||||||
Last_IO_Errno 0
|
Last_IO_Errno 0
|
||||||
Last_IO_Error
|
Last_IO_Error
|
||||||
Last_SQL_Errno 1587
|
Last_SQL_Errno 1588
|
||||||
Last_SQL_Error The incident LOST_EVENTS occured on the master. Message: <none>
|
Last_SQL_Error The incident LOST_EVENTS occured on the master. Message: <none>
|
||||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
|
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
|
||||||
START SLAVE;
|
START SLAVE;
|
||||||
|
@ -65,7 +65,7 @@ Replicate_Do_Table
|
|||||||
Replicate_Ignore_Table #
|
Replicate_Ignore_Table #
|
||||||
Replicate_Wild_Do_Table
|
Replicate_Wild_Do_Table
|
||||||
Replicate_Wild_Ignore_Table
|
Replicate_Wild_Ignore_Table
|
||||||
Last_Errno 1590
|
Last_Errno 1591
|
||||||
Last_Error Fatal error: Not enough memory
|
Last_Error Fatal error: Not enough memory
|
||||||
Skip_Counter 0
|
Skip_Counter 0
|
||||||
Exec_Master_Log_Pos 325
|
Exec_Master_Log_Pos 325
|
||||||
@ -83,7 +83,7 @@ Seconds_Behind_Master #
|
|||||||
Master_SSL_Verify_Server_Cert No
|
Master_SSL_Verify_Server_Cert No
|
||||||
Last_IO_Errno #
|
Last_IO_Errno #
|
||||||
Last_IO_Error #
|
Last_IO_Error #
|
||||||
Last_SQL_Errno 1590
|
Last_SQL_Errno 1591
|
||||||
Last_SQL_Error Fatal error: Not enough memory
|
Last_SQL_Error Fatal error: Not enough memory
|
||||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
|
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
|
||||||
START SLAVE;
|
START SLAVE;
|
||||||
|
@ -214,7 +214,7 @@ Replicate_Do_Table
|
|||||||
Replicate_Ignore_Table
|
Replicate_Ignore_Table
|
||||||
Replicate_Wild_Do_Table
|
Replicate_Wild_Do_Table
|
||||||
Replicate_Wild_Ignore_Table
|
Replicate_Wild_Ignore_Table
|
||||||
Last_Errno 1532
|
Last_Errno 1533
|
||||||
Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 3, test.t4 has type 4
|
Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 3, test.t4 has type 4
|
||||||
Skip_Counter 0
|
Skip_Counter 0
|
||||||
Exec_Master_Log_Pos #
|
Exec_Master_Log_Pos #
|
||||||
@ -232,7 +232,7 @@ Seconds_Behind_Master #
|
|||||||
Master_SSL_Verify_Server_Cert No
|
Master_SSL_Verify_Server_Cert No
|
||||||
Last_IO_Errno 0
|
Last_IO_Errno 0
|
||||||
Last_IO_Error
|
Last_IO_Error
|
||||||
Last_SQL_Errno 1532
|
Last_SQL_Errno 1533
|
||||||
Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 3, test.t4 has type 4
|
Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 3, test.t4 has type 4
|
||||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||||
START SLAVE;
|
START SLAVE;
|
||||||
@ -257,7 +257,7 @@ Replicate_Do_Table
|
|||||||
Replicate_Ignore_Table
|
Replicate_Ignore_Table
|
||||||
Replicate_Wild_Do_Table
|
Replicate_Wild_Do_Table
|
||||||
Replicate_Wild_Ignore_Table
|
Replicate_Wild_Ignore_Table
|
||||||
Last_Errno 1532
|
Last_Errno 1533
|
||||||
Last_Error Table definition on master and slave does not match: Column 1 type mismatch - received type 3, test.t5 has type 4
|
Last_Error Table definition on master and slave does not match: Column 1 type mismatch - received type 3, test.t5 has type 4
|
||||||
Skip_Counter 0
|
Skip_Counter 0
|
||||||
Exec_Master_Log_Pos #
|
Exec_Master_Log_Pos #
|
||||||
@ -275,7 +275,7 @@ Seconds_Behind_Master #
|
|||||||
Master_SSL_Verify_Server_Cert No
|
Master_SSL_Verify_Server_Cert No
|
||||||
Last_IO_Errno 0
|
Last_IO_Errno 0
|
||||||
Last_IO_Error
|
Last_IO_Error
|
||||||
Last_SQL_Errno 1532
|
Last_SQL_Errno 1533
|
||||||
Last_SQL_Error Table definition on master and slave does not match: Column 1 type mismatch - received type 3, test.t5 has type 4
|
Last_SQL_Error Table definition on master and slave does not match: Column 1 type mismatch - received type 3, test.t5 has type 4
|
||||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||||
START SLAVE;
|
START SLAVE;
|
||||||
@ -300,7 +300,7 @@ Replicate_Do_Table
|
|||||||
Replicate_Ignore_Table
|
Replicate_Ignore_Table
|
||||||
Replicate_Wild_Do_Table
|
Replicate_Wild_Do_Table
|
||||||
Replicate_Wild_Ignore_Table
|
Replicate_Wild_Ignore_Table
|
||||||
Last_Errno 1532
|
Last_Errno 1533
|
||||||
Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 3, test.t6 has type 4
|
Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 3, test.t6 has type 4
|
||||||
Skip_Counter 0
|
Skip_Counter 0
|
||||||
Exec_Master_Log_Pos #
|
Exec_Master_Log_Pos #
|
||||||
@ -318,7 +318,7 @@ Seconds_Behind_Master #
|
|||||||
Master_SSL_Verify_Server_Cert No
|
Master_SSL_Verify_Server_Cert No
|
||||||
Last_IO_Errno 0
|
Last_IO_Errno 0
|
||||||
Last_IO_Error
|
Last_IO_Error
|
||||||
Last_SQL_Errno 1532
|
Last_SQL_Errno 1533
|
||||||
Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 3, test.t6 has type 4
|
Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 3, test.t6 has type 4
|
||||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||||
START SLAVE;
|
START SLAVE;
|
||||||
|
@ -214,7 +214,7 @@ Replicate_Do_Table
|
|||||||
Replicate_Ignore_Table
|
Replicate_Ignore_Table
|
||||||
Replicate_Wild_Do_Table
|
Replicate_Wild_Do_Table
|
||||||
Replicate_Wild_Ignore_Table
|
Replicate_Wild_Ignore_Table
|
||||||
Last_Errno 1532
|
Last_Errno 1533
|
||||||
Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 3, test.t4 has type 4
|
Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 3, test.t4 has type 4
|
||||||
Skip_Counter 0
|
Skip_Counter 0
|
||||||
Exec_Master_Log_Pos #
|
Exec_Master_Log_Pos #
|
||||||
@ -232,7 +232,7 @@ Seconds_Behind_Master #
|
|||||||
Master_SSL_Verify_Server_Cert No
|
Master_SSL_Verify_Server_Cert No
|
||||||
Last_IO_Errno 0
|
Last_IO_Errno 0
|
||||||
Last_IO_Error
|
Last_IO_Error
|
||||||
Last_SQL_Errno 1532
|
Last_SQL_Errno 1533
|
||||||
Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 3, test.t4 has type 4
|
Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 3, test.t4 has type 4
|
||||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||||
START SLAVE;
|
START SLAVE;
|
||||||
@ -257,7 +257,7 @@ Replicate_Do_Table
|
|||||||
Replicate_Ignore_Table
|
Replicate_Ignore_Table
|
||||||
Replicate_Wild_Do_Table
|
Replicate_Wild_Do_Table
|
||||||
Replicate_Wild_Ignore_Table
|
Replicate_Wild_Ignore_Table
|
||||||
Last_Errno 1532
|
Last_Errno 1533
|
||||||
Last_Error Table definition on master and slave does not match: Column 1 type mismatch - received type 3, test.t5 has type 4
|
Last_Error Table definition on master and slave does not match: Column 1 type mismatch - received type 3, test.t5 has type 4
|
||||||
Skip_Counter 0
|
Skip_Counter 0
|
||||||
Exec_Master_Log_Pos #
|
Exec_Master_Log_Pos #
|
||||||
@ -275,7 +275,7 @@ Seconds_Behind_Master #
|
|||||||
Master_SSL_Verify_Server_Cert No
|
Master_SSL_Verify_Server_Cert No
|
||||||
Last_IO_Errno 0
|
Last_IO_Errno 0
|
||||||
Last_IO_Error
|
Last_IO_Error
|
||||||
Last_SQL_Errno 1532
|
Last_SQL_Errno 1533
|
||||||
Last_SQL_Error Table definition on master and slave does not match: Column 1 type mismatch - received type 3, test.t5 has type 4
|
Last_SQL_Error Table definition on master and slave does not match: Column 1 type mismatch - received type 3, test.t5 has type 4
|
||||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||||
START SLAVE;
|
START SLAVE;
|
||||||
@ -300,7 +300,7 @@ Replicate_Do_Table
|
|||||||
Replicate_Ignore_Table
|
Replicate_Ignore_Table
|
||||||
Replicate_Wild_Do_Table
|
Replicate_Wild_Do_Table
|
||||||
Replicate_Wild_Ignore_Table
|
Replicate_Wild_Ignore_Table
|
||||||
Last_Errno 1532
|
Last_Errno 1533
|
||||||
Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 3, test.t6 has type 4
|
Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 3, test.t6 has type 4
|
||||||
Skip_Counter 0
|
Skip_Counter 0
|
||||||
Exec_Master_Log_Pos #
|
Exec_Master_Log_Pos #
|
||||||
@ -318,7 +318,7 @@ Seconds_Behind_Master #
|
|||||||
Master_SSL_Verify_Server_Cert No
|
Master_SSL_Verify_Server_Cert No
|
||||||
Last_IO_Errno 0
|
Last_IO_Errno 0
|
||||||
Last_IO_Error
|
Last_IO_Error
|
||||||
Last_SQL_Errno 1532
|
Last_SQL_Errno 1533
|
||||||
Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 3, test.t6 has type 4
|
Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 3, test.t6 has type 4
|
||||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||||
START SLAVE;
|
START SLAVE;
|
||||||
|
@ -105,3 +105,21 @@ t n
|
|||||||
2005-01-01 08:00:00 17
|
2005-01-01 08:00:00 17
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
set global time_zone= @my_time_zone;
|
set global time_zone= @my_time_zone;
|
||||||
|
End of 4.1 tests
|
||||||
|
CREATE TABLE t1 (a INT, b TIMESTAMP);
|
||||||
|
INSERT INTO t1 VALUES (1, NOW());
|
||||||
|
SET @@session.time_zone='Japan';
|
||||||
|
UPDATE t1 SET b= '1970-01-01 08:59:59' WHERE a= 1;
|
||||||
|
Warnings:
|
||||||
|
Warning 1264 Out of range value for column 'b' at row 1
|
||||||
|
SELECT * FROM t1 ORDER BY a;
|
||||||
|
a b
|
||||||
|
1 0000-00-00 00:00:00
|
||||||
|
SET @@session.time_zone='Japan';
|
||||||
|
SELECT * FROM t1 ORDER BY a;
|
||||||
|
a b
|
||||||
|
1 0000-00-00 00:00:00
|
||||||
|
SET @@session.time_zone = default;
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET @@session.time_zone = default;
|
||||||
|
End of 5.0 tests
|
||||||
|
@ -182,19 +182,19 @@ CREATE TABLE t1(sum INT, price FLOAT(24)) ENGINE=MyISAM;
|
|||||||
affected rows: 0
|
affected rows: 0
|
||||||
INSERT INTO t1 VALUES(myfunc_int(100), myfunc_double(50.00));
|
INSERT INTO t1 VALUES(myfunc_int(100), myfunc_double(50.00));
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1589 Statement is not safe to log in statement format.
|
Warning 1590 Statement is not safe to log in statement format.
|
||||||
affected rows: 1
|
affected rows: 1
|
||||||
INSERT INTO t1 VALUES(myfunc_int(10), myfunc_double(5.00));
|
INSERT INTO t1 VALUES(myfunc_int(10), myfunc_double(5.00));
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1589 Statement is not safe to log in statement format.
|
Warning 1590 Statement is not safe to log in statement format.
|
||||||
affected rows: 1
|
affected rows: 1
|
||||||
INSERT INTO t1 VALUES(myfunc_int(200), myfunc_double(25.00));
|
INSERT INTO t1 VALUES(myfunc_int(200), myfunc_double(25.00));
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1589 Statement is not safe to log in statement format.
|
Warning 1590 Statement is not safe to log in statement format.
|
||||||
affected rows: 1
|
affected rows: 1
|
||||||
INSERT INTO t1 VALUES(myfunc_int(1), myfunc_double(500.00));
|
INSERT INTO t1 VALUES(myfunc_int(1), myfunc_double(500.00));
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1589 Statement is not safe to log in statement format.
|
Warning 1590 Statement is not safe to log in statement format.
|
||||||
affected rows: 1
|
affected rows: 1
|
||||||
SELECT * FROM t1 ORDER BY sum;
|
SELECT * FROM t1 ORDER BY sum;
|
||||||
sum price
|
sum price
|
||||||
|
@ -14,6 +14,22 @@ connection slave;
|
|||||||
reset slave;
|
reset slave;
|
||||||
start slave io_thread;
|
start slave io_thread;
|
||||||
# Give the I/O thread time to block.
|
# Give the I/O thread time to block.
|
||||||
|
let $run= 1;
|
||||||
|
let $counter= 300;
|
||||||
|
while ($run)
|
||||||
|
{
|
||||||
|
let $io_state= query_get_value("SHOW SLAVE STATUS", Slave_IO_State, 1);
|
||||||
|
if (`SELECT '$io_state' = 'Waiting for the slave SQL thread to free enough relay log space'`){
|
||||||
|
let $run= 0;
|
||||||
|
}
|
||||||
|
sleep 0.1;
|
||||||
|
if (!$counter){
|
||||||
|
--echo "Failed while waiting for slave IO thread block"
|
||||||
|
SHOW SLAVE STATUS;
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
dec $counter;
|
||||||
|
}
|
||||||
sleep 2;
|
sleep 2;
|
||||||
# A bug caused the I/O thread to refuse stopping.
|
# A bug caused the I/O thread to refuse stopping.
|
||||||
stop slave io_thread;
|
stop slave io_thread;
|
||||||
|
@ -140,3 +140,30 @@ sync_slave_with_master;
|
|||||||
# Restore original timezone
|
# Restore original timezone
|
||||||
connection master;
|
connection master;
|
||||||
set global time_zone= @my_time_zone;
|
set global time_zone= @my_time_zone;
|
||||||
|
|
||||||
|
--echo End of 4.1 tests
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #29536: timestamp inconsistent in replication around 1970
|
||||||
|
#
|
||||||
|
connection master;
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a INT, b TIMESTAMP);
|
||||||
|
INSERT INTO t1 VALUES (1, NOW());
|
||||||
|
|
||||||
|
SET @@session.time_zone='Japan';
|
||||||
|
UPDATE t1 SET b= '1970-01-01 08:59:59' WHERE a= 1;
|
||||||
|
SELECT * FROM t1 ORDER BY a;
|
||||||
|
|
||||||
|
sync_slave_with_master;
|
||||||
|
SET @@session.time_zone='Japan';
|
||||||
|
# must procdure the same result as the SELECT on the master
|
||||||
|
SELECT * FROM t1 ORDER BY a;
|
||||||
|
|
||||||
|
SET @@session.time_zone = default;
|
||||||
|
connection master;
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET @@session.time_zone = default;
|
||||||
|
|
||||||
|
|
||||||
|
--echo End of 5.0 tests
|
||||||
|
@ -139,7 +139,7 @@ Replicate_Do_Table
|
|||||||
Replicate_Ignore_Table #
|
Replicate_Ignore_Table #
|
||||||
Replicate_Wild_Do_Table
|
Replicate_Wild_Do_Table
|
||||||
Replicate_Wild_Ignore_Table
|
Replicate_Wild_Ignore_Table
|
||||||
Last_Errno 1532
|
Last_Errno 1533
|
||||||
Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3
|
Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3
|
||||||
Skip_Counter 0
|
Skip_Counter 0
|
||||||
Exec_Master_Log_Pos #
|
Exec_Master_Log_Pos #
|
||||||
@ -157,7 +157,7 @@ Seconds_Behind_Master #
|
|||||||
Master_SSL_Verify_Server_Cert No
|
Master_SSL_Verify_Server_Cert No
|
||||||
Last_IO_Errno #
|
Last_IO_Errno #
|
||||||
Last_IO_Error #
|
Last_IO_Error #
|
||||||
Last_SQL_Errno 1532
|
Last_SQL_Errno 1533
|
||||||
Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3
|
Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3
|
||||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||||
START SLAVE;
|
START SLAVE;
|
||||||
@ -201,7 +201,7 @@ Replicate_Do_Table
|
|||||||
Replicate_Ignore_Table #
|
Replicate_Ignore_Table #
|
||||||
Replicate_Wild_Do_Table
|
Replicate_Wild_Do_Table
|
||||||
Replicate_Wild_Ignore_Table
|
Replicate_Wild_Ignore_Table
|
||||||
Last_Errno 1532
|
Last_Errno 1533
|
||||||
Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3
|
Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3
|
||||||
Skip_Counter 0
|
Skip_Counter 0
|
||||||
Exec_Master_Log_Pos #
|
Exec_Master_Log_Pos #
|
||||||
@ -219,7 +219,7 @@ Seconds_Behind_Master #
|
|||||||
Master_SSL_Verify_Server_Cert No
|
Master_SSL_Verify_Server_Cert No
|
||||||
Last_IO_Errno #
|
Last_IO_Errno #
|
||||||
Last_IO_Error #
|
Last_IO_Error #
|
||||||
Last_SQL_Errno 1532
|
Last_SQL_Errno 1533
|
||||||
Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3
|
Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3
|
||||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||||
START SLAVE;
|
START SLAVE;
|
||||||
@ -263,7 +263,7 @@ Replicate_Do_Table
|
|||||||
Replicate_Ignore_Table #
|
Replicate_Ignore_Table #
|
||||||
Replicate_Wild_Do_Table
|
Replicate_Wild_Do_Table
|
||||||
Replicate_Wild_Ignore_Table
|
Replicate_Wild_Ignore_Table
|
||||||
Last_Errno 1532
|
Last_Errno 1533
|
||||||
Last_Error Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246
|
Last_Error Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246
|
||||||
Skip_Counter 0
|
Skip_Counter 0
|
||||||
Exec_Master_Log_Pos #
|
Exec_Master_Log_Pos #
|
||||||
@ -281,7 +281,7 @@ Seconds_Behind_Master #
|
|||||||
Master_SSL_Verify_Server_Cert No
|
Master_SSL_Verify_Server_Cert No
|
||||||
Last_IO_Errno #
|
Last_IO_Errno #
|
||||||
Last_IO_Error #
|
Last_IO_Error #
|
||||||
Last_SQL_Errno 1532
|
Last_SQL_Errno 1533
|
||||||
Last_SQL_Error Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246
|
Last_SQL_Error Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246
|
||||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||||
START SLAVE;
|
START SLAVE;
|
||||||
@ -324,7 +324,7 @@ Replicate_Do_Table
|
|||||||
Replicate_Ignore_Table #
|
Replicate_Ignore_Table #
|
||||||
Replicate_Wild_Do_Table
|
Replicate_Wild_Do_Table
|
||||||
Replicate_Wild_Ignore_Table
|
Replicate_Wild_Ignore_Table
|
||||||
Last_Errno 1532
|
Last_Errno 1533
|
||||||
Last_Error Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3
|
Last_Error Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3
|
||||||
Skip_Counter 0
|
Skip_Counter 0
|
||||||
Exec_Master_Log_Pos #
|
Exec_Master_Log_Pos #
|
||||||
@ -342,7 +342,7 @@ Seconds_Behind_Master #
|
|||||||
Master_SSL_Verify_Server_Cert No
|
Master_SSL_Verify_Server_Cert No
|
||||||
Last_IO_Errno #
|
Last_IO_Errno #
|
||||||
Last_IO_Error #
|
Last_IO_Error #
|
||||||
Last_SQL_Errno 1532
|
Last_SQL_Errno 1533
|
||||||
Last_SQL_Error Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3
|
Last_SQL_Error Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3
|
||||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=3;
|
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=3;
|
||||||
*** Drop t6 ***
|
*** Drop t6 ***
|
||||||
@ -436,7 +436,7 @@ Replicate_Do_Table
|
|||||||
Replicate_Ignore_Table #
|
Replicate_Ignore_Table #
|
||||||
Replicate_Wild_Do_Table
|
Replicate_Wild_Do_Table
|
||||||
Replicate_Wild_Ignore_Table
|
Replicate_Wild_Ignore_Table
|
||||||
Last_Errno 1532
|
Last_Errno 1533
|
||||||
Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5
|
Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5
|
||||||
Skip_Counter 0
|
Skip_Counter 0
|
||||||
Exec_Master_Log_Pos #
|
Exec_Master_Log_Pos #
|
||||||
@ -454,7 +454,7 @@ Seconds_Behind_Master #
|
|||||||
Master_SSL_Verify_Server_Cert No
|
Master_SSL_Verify_Server_Cert No
|
||||||
Last_IO_Errno #
|
Last_IO_Errno #
|
||||||
Last_IO_Error #
|
Last_IO_Error #
|
||||||
Last_SQL_Errno 1532
|
Last_SQL_Errno 1533
|
||||||
Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5
|
Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5
|
||||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||||
START SLAVE;
|
START SLAVE;
|
||||||
@ -497,7 +497,7 @@ Replicate_Do_Table
|
|||||||
Replicate_Ignore_Table #
|
Replicate_Ignore_Table #
|
||||||
Replicate_Wild_Do_Table
|
Replicate_Wild_Do_Table
|
||||||
Replicate_Wild_Ignore_Table
|
Replicate_Wild_Ignore_Table
|
||||||
Last_Errno 1532
|
Last_Errno 1533
|
||||||
Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252
|
Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252
|
||||||
Skip_Counter 0
|
Skip_Counter 0
|
||||||
Exec_Master_Log_Pos #
|
Exec_Master_Log_Pos #
|
||||||
@ -515,7 +515,7 @@ Seconds_Behind_Master #
|
|||||||
Master_SSL_Verify_Server_Cert No
|
Master_SSL_Verify_Server_Cert No
|
||||||
Last_IO_Errno #
|
Last_IO_Errno #
|
||||||
Last_IO_Error #
|
Last_IO_Error #
|
||||||
Last_SQL_Errno 1532
|
Last_SQL_Errno 1533
|
||||||
Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252
|
Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252
|
||||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||||
START SLAVE;
|
START SLAVE;
|
||||||
@ -823,7 +823,7 @@ Replicate_Do_Table
|
|||||||
Replicate_Ignore_Table #
|
Replicate_Ignore_Table #
|
||||||
Replicate_Wild_Do_Table
|
Replicate_Wild_Do_Table
|
||||||
Replicate_Wild_Ignore_Table
|
Replicate_Wild_Ignore_Table
|
||||||
Last_Errno 1532
|
Last_Errno 1533
|
||||||
Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2
|
Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2
|
||||||
Skip_Counter 0
|
Skip_Counter 0
|
||||||
Exec_Master_Log_Pos #
|
Exec_Master_Log_Pos #
|
||||||
@ -841,7 +841,7 @@ Seconds_Behind_Master #
|
|||||||
Master_SSL_Verify_Server_Cert No
|
Master_SSL_Verify_Server_Cert No
|
||||||
Last_IO_Errno #
|
Last_IO_Errno #
|
||||||
Last_IO_Error #
|
Last_IO_Error #
|
||||||
Last_SQL_Errno 1532
|
Last_SQL_Errno 1533
|
||||||
Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2
|
Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2
|
||||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||||
START SLAVE;
|
START SLAVE;
|
||||||
|
@ -97,7 +97,7 @@ explain SELECT t1.a from t1 group by a order by a desc;
|
|||||||
explain SELECT distinct t1.a from t1 order by a desc limit 1;
|
explain SELECT distinct t1.a from t1 order by a desc limit 1;
|
||||||
explain SELECT distinct a from t3 order by a desc limit 2;
|
explain SELECT distinct a from t3 order by a desc limit 2;
|
||||||
explain SELECT distinct a,b from t3 order by a+1;
|
explain SELECT distinct a,b from t3 order by a+1;
|
||||||
explain SELECT distinct a,b from t3 order by a limit 10;
|
explain SELECT distinct a,b from t3 order by a limit 2;
|
||||||
explain SELECT a,b from t3 group by a,b order by a+1;
|
explain SELECT a,b from t3 group by a,b order by a+1;
|
||||||
|
|
||||||
drop table t1,t2,t3,t4;
|
drop table t1,t2,t3,t4;
|
||||||
|
@ -58,7 +58,7 @@ TRUNCATE mysql.slow_log;
|
|||||||
SELECT user_host, query_time, db, sql_text FROM mysql.slow_log;
|
SELECT user_host, query_time, db, sql_text FROM mysql.slow_log;
|
||||||
--echo "Set new values"
|
--echo "Set new values"
|
||||||
SET GLOBAL long_query_time=4;
|
SET GLOBAL long_query_time=4;
|
||||||
SET SESSION long_query_time=1;
|
SET SESSION long_query_time=0.5;
|
||||||
--echo "Check that logging is working"
|
--echo "Check that logging is working"
|
||||||
SELECT SLEEP(2);
|
SELECT SLEEP(2);
|
||||||
--replace_column 1 USER_HOST 2 SLEEPVAL
|
--replace_column 1 USER_HOST 2 SLEEPVAL
|
||||||
|
@ -1725,6 +1725,20 @@ drop table federated.t1;
|
|||||||
connection slave;
|
connection slave;
|
||||||
drop table federated.t1;
|
drop table federated.t1;
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo Bug#18287 create federated table always times out, error 1159 ' '
|
||||||
|
--echo
|
||||||
|
--echo Test that self-references work
|
||||||
|
--echo
|
||||||
|
connection slave;
|
||||||
|
create table federated.t1 (a int primary key);
|
||||||
|
--replace_result $SLAVE_MYPORT SLAVE_PORT
|
||||||
|
eval create table federated.t2 (a int primary key)
|
||||||
|
ENGINE=FEDERATED
|
||||||
|
connection='mysql://root@127.0.0.1:$SLAVE_MYPORT/federated/t1';
|
||||||
|
insert into federated.t1 (a) values (1);
|
||||||
|
select * from federated.t2;
|
||||||
|
drop table federated.t1, federated.t2;
|
||||||
|
|
||||||
#
|
#
|
||||||
# BUG#29875 Disable support for transactions
|
# BUG#29875 Disable support for transactions
|
||||||
|
@ -1100,4 +1100,24 @@ SELECT variable_name FROM server_status;
|
|||||||
DROP TABLE server_status;
|
DROP TABLE server_status;
|
||||||
SET GLOBAL event_scheduler=0;
|
SET GLOBAL event_scheduler=0;
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# WL#3732 Information schema optimization
|
||||||
|
#
|
||||||
|
|
||||||
|
explain select table_name from information_schema.views where
|
||||||
|
table_schema='test' and table_name='v1';
|
||||||
|
|
||||||
|
explain select * from information_schema.tables;
|
||||||
|
explain select * from information_schema.collations;
|
||||||
|
|
||||||
|
explain select * from information_schema.tables where
|
||||||
|
table_schema='test' and table_name= 't1';
|
||||||
|
explain select table_name, table_type from information_schema.tables
|
||||||
|
where table_schema='test';
|
||||||
|
|
||||||
|
explain select b.table_name
|
||||||
|
from information_schema.tables a, information_schema.columns b
|
||||||
|
where a.table_name='t1' and a.table_schema='test' and b.table_name=a.table_name;
|
||||||
|
|
||||||
--echo End of 5.1 tests.
|
--echo End of 5.1 tests.
|
||||||
|
@ -148,5 +148,70 @@ LOCK TABLES mysql.time_zone READ, mysql.proc WRITE;
|
|||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo Bug#5719 impossible to lock VIEW
|
||||||
|
--echo
|
||||||
|
--echo Just covering existing behaviour with tests.
|
||||||
|
--echo Consistency has not been found here.
|
||||||
|
--echo
|
||||||
|
--disable_warnings
|
||||||
|
drop view if exists v_bug5719;
|
||||||
|
drop table if exists t1, t2, t3;
|
||||||
|
--enable_warnings
|
||||||
|
create table t1 (a int);
|
||||||
|
create temporary table t2 (a int);
|
||||||
|
create table t3 (a int);
|
||||||
|
create view v_bug5719 as select 1;
|
||||||
|
lock table v_bug5719 write;
|
||||||
|
--error ER_TABLE_NOT_LOCKED
|
||||||
|
select * from t1;
|
||||||
|
--echo
|
||||||
|
--echo Allowed to select from a temporary talbe under LOCK TABLES
|
||||||
|
--echo
|
||||||
|
select * from t2;
|
||||||
|
--error ER_TABLE_NOT_LOCKED
|
||||||
|
select * from t3;
|
||||||
|
select * from v_bug5719;
|
||||||
|
drop view v_bug5719;
|
||||||
|
--echo
|
||||||
|
--echo sic: did not left LOCK TABLES mode automatically
|
||||||
|
--echo
|
||||||
|
--error ER_TABLE_NOT_LOCKED
|
||||||
|
select * from t1;
|
||||||
|
unlock tables;
|
||||||
|
create view v_bug5719 as select * from t1;
|
||||||
|
lock tables v_bug5719 write;
|
||||||
|
select * from v_bug5719;
|
||||||
|
--echo
|
||||||
|
--echo Allowed to use an underlying table under LOCK TABLES <view>
|
||||||
|
--echo
|
||||||
|
select * from t1;
|
||||||
|
--echo
|
||||||
|
--echo Allowed to select from a temporary table under LOCK TABLES
|
||||||
|
--echo
|
||||||
|
select * from t2;
|
||||||
|
--error ER_TABLE_NOT_LOCKED
|
||||||
|
select * from t3;
|
||||||
|
drop table t1;
|
||||||
|
--echo
|
||||||
|
--echo sic: left LOCK TABLES mode
|
||||||
|
--echo
|
||||||
|
select * from t3;
|
||||||
|
--error ER_VIEW_INVALID
|
||||||
|
select * from v_bug5719;
|
||||||
|
unlock tables;
|
||||||
|
drop view v_bug5719;
|
||||||
|
--echo
|
||||||
|
--echo When limitation to use temporary tables in views is removed, please
|
||||||
|
--echo add a test that shows what happens under LOCK TABLES when a view
|
||||||
|
--echo references a temporary table, is locked, and the underlying table
|
||||||
|
--echo is dropped.
|
||||||
|
--echo
|
||||||
|
--error ER_VIEW_SELECT_TMPTABLE
|
||||||
|
create view v_bug5719 as select * from t2;
|
||||||
|
--echo
|
||||||
|
--echo Cleanup.
|
||||||
|
--echo
|
||||||
|
drop table t2, t3;
|
||||||
|
|
||||||
--echo End of 5.1 tests.
|
--echo End of 5.1 tests.
|
||||||
|
@ -270,3 +270,38 @@ drop table t1;
|
|||||||
|
|
||||||
# End of 5.0 tests
|
# End of 5.0 tests
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #21281 "Pending write lock is incorrectly removed when its
|
||||||
|
# statement being KILLed"
|
||||||
|
#
|
||||||
|
create table t1 (i int);
|
||||||
|
connection locker;
|
||||||
|
lock table t1 read;
|
||||||
|
connection writer;
|
||||||
|
--send update t1 set i= 10;
|
||||||
|
connection reader;
|
||||||
|
let $wait_condition=
|
||||||
|
select count(*) = 1 from information_schema.processlist
|
||||||
|
where state = "Locked" and info = "update t1 set i= 10";
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
--send select * from t1;
|
||||||
|
connection default;
|
||||||
|
let $wait_condition=
|
||||||
|
select count(*) = 1 from information_schema.processlist
|
||||||
|
where state = "Locked" and info = "select * from t1";
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
let $ID= `select id from information_schema.processlist where state = "Locked" and info = "update t1 set i= 10"`;
|
||||||
|
--replace_result $ID ID
|
||||||
|
eval kill query $ID;
|
||||||
|
connection reader;
|
||||||
|
--reap
|
||||||
|
connection writer;
|
||||||
|
--error ER_QUERY_INTERRUPTED
|
||||||
|
--reap
|
||||||
|
connection locker;
|
||||||
|
unlock tables;
|
||||||
|
connection default;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
|
--echo End of 5.1 tests
|
||||||
|
@ -28,7 +28,7 @@ connection con1;
|
|||||||
set session long_query_time=1;
|
set session long_query_time=1;
|
||||||
select sleep(2);
|
select sleep(2);
|
||||||
--replace_column 1 TIMESTAMP 2 USER_HOST 3 QUERY_TIME
|
--replace_column 1 TIMESTAMP 2 USER_HOST 3 QUERY_TIME
|
||||||
select * from mysql.slow_log;
|
select * from mysql.slow_log where sql_text NOT LIKE '%slow_log%';
|
||||||
connection default;
|
connection default;
|
||||||
|
|
||||||
set global slow_query_log= ON;
|
set global slow_query_log= ON;
|
||||||
@ -36,7 +36,7 @@ connection con1;
|
|||||||
set session long_query_time=1;
|
set session long_query_time=1;
|
||||||
select sleep(2);
|
select sleep(2);
|
||||||
--replace_column 1 TIMESTAMP 2 USER_HOST 3 QUERY_TIME
|
--replace_column 1 TIMESTAMP 2 USER_HOST 3 QUERY_TIME
|
||||||
select * from mysql.slow_log;
|
select * from mysql.slow_log where sql_text NOT LIKE '%slow_log%';
|
||||||
connection default;
|
connection default;
|
||||||
show global variables
|
show global variables
|
||||||
where Variable_name = 'log' or Variable_name = 'log_slow_queries' or
|
where Variable_name = 'log' or Variable_name = 'log_slow_queries' or
|
||||||
|
@ -275,3 +275,10 @@ EOF
|
|||||||
--exec $MYSQL --character-sets-dir="540bytelengthstringxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" -e "select 1" 2>&1
|
--exec $MYSQL --character-sets-dir="540bytelengthstringxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" -e "select 1" 2>&1
|
||||||
|
|
||||||
--echo End of 5.0 tests
|
--echo End of 5.0 tests
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #29903: The CMake build method does not produce the embedded library.
|
||||||
|
#
|
||||||
|
--disable_query_log
|
||||||
|
--exec $MYSQL --server-arg=no-defaults test -e "quit"
|
||||||
|
--enable_query_log
|
||||||
|
@ -739,3 +739,43 @@ INSERT INTO t2 VALUES (1,1),(1,2),(2,1),(2,2);
|
|||||||
EXPLAIN SELECT 1 FROM t1,t2 WHERE t1.b=2 AND t1.a=t2.a ORDER BY t2.b;
|
EXPLAIN SELECT 1 FROM t1,t2 WHERE t1.b=2 AND t1.a=t2.a ORDER BY t2.b;
|
||||||
|
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
|
||||||
|
# End of 5.0
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #28404: query with ORDER BY and ref access
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE t1(
|
||||||
|
id int auto_increment PRIMARY KEY, c2 int, c3 int, INDEX k2(c2), INDEX k3(c3));
|
||||||
|
|
||||||
|
INSERT INTO t1 (c2,c3) VALUES
|
||||||
|
(31,34),(35,38),(34,31),(32,35),(31,39),
|
||||||
|
(11,14),(15,18),(14,11),(12,15),(11,19);
|
||||||
|
|
||||||
|
INSERT INTO t1 (c2,c3) SELECT c2,c3 FROM t1;
|
||||||
|
INSERT INTO t1 (c2,c3) SELECT c2,c3 FROM t1;
|
||||||
|
INSERT INTO t1 (c2,c3) SELECT c2,c3 FROM t1;
|
||||||
|
INSERT INTO t1 (c2,c3) SELECT c2,c3 FROM t1;
|
||||||
|
INSERT INTO t1 (c2,c3) SELECT c2,c3 FROM t1;
|
||||||
|
INSERT INTO t1 (c2,c3) SELECT c2,c3 FROM t1;
|
||||||
|
INSERT INTO t1 (c2,c3) SELECT c2,c3 FROM t1;
|
||||||
|
INSERT INTO t1 (c2,c3) SELECT c2,c3 FROM t1;
|
||||||
|
INSERT INTO t1 (c2,c3) SELECT c2,c3 FROM t1;
|
||||||
|
INSERT INTO t1 (c2,c3) SELECT c2,c3 FROM t1;
|
||||||
|
INSERT INTO t1 (c2,c3) SELECT c2,c3 FROM t1;
|
||||||
|
INSERT INTO t1 (c2,c3) SELECT c2,c3 FROM t1;
|
||||||
|
UPDATE t1 SET c2=20 WHERE id%100 = 0;
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
|
||||||
|
CREATE TABLE t2 LIKE t1;
|
||||||
|
INSERT INTO t2 SELECT * FROM t1 ORDER BY id;
|
||||||
|
|
||||||
|
EXPLAIN SELECT id,c3 FROM t2 WHERE c2=11 ORDER BY c3 LIMIT 20;
|
||||||
|
EXPLAIN SELECT id,c3 FROM t2 WHERE c2=11 ORDER BY c3 LIMIT 4000;
|
||||||
|
EXPLAIN SELECT id,c3 FROM t2 WHERE c2 BETWEEN 10 AND 12 ORDER BY c3 LIMIT 20;
|
||||||
|
EXPLAIN SELECT id,c3 FROM t2 WHERE c2 BETWEEN 20 AND 30 ORDER BY c3 LIMIT 4000;
|
||||||
|
|
||||||
|
SELECT id,c3 FROM t2 WHERE c2=11 ORDER BY c3 LIMIT 20;
|
||||||
|
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
@ -3359,4 +3359,34 @@ EXPLAIN SELECT COUNT(*) FROM t1 f1 INNER JOIN t1 f2
|
|||||||
WHERE 1 AND f1.b NOT IN (100,2232,3343,51111);
|
WHERE 1 AND f1.b NOT IN (100,2232,3343,51111);
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #27352: Incorrect result of nested selects instead of error reporting
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE t1 (c1 INT, c2 INT);
|
||||||
|
INSERT INTO t1 VALUES (1,11), (2,22), (2,22);
|
||||||
|
|
||||||
|
let $n= 31;
|
||||||
|
let $q= COUNT(c2);
|
||||||
|
while ($n)
|
||||||
|
{
|
||||||
|
let $q= (SELECT $q);
|
||||||
|
dec $n;
|
||||||
|
}
|
||||||
|
--disable_warnings
|
||||||
|
eval EXPLAIN SELECT c1 FROM t1 WHERE $q > 0;
|
||||||
|
--enable_warnings
|
||||||
|
|
||||||
|
let $n= 64;
|
||||||
|
let $q= COUNT(c2);
|
||||||
|
while ($n)
|
||||||
|
{
|
||||||
|
let $q= (SELECT $q);
|
||||||
|
dec $n;
|
||||||
|
}
|
||||||
|
--error ER_TOO_HIGH_LEVEL_OF_NESTING_FOR_SELECT
|
||||||
|
eval EXPLAIN SELECT c1 FROM t1 WHERE $q > 0;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
--echo End of 5.0 tests
|
--echo End of 5.0 tests
|
||||||
|
@ -272,6 +272,25 @@ handler t1 read a=(1);
|
|||||||
handler t1 close;
|
handler t1 close;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #30219: GROUP BY a column of the BIT type
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE t1 (b BIT(2), a VARCHAR(5));
|
||||||
|
INSERT INTO t1 (b, a) VALUES (1, "x"), (3, "zz"), (0, "y"), (3, "z");
|
||||||
|
SELECT b+0, COUNT(DISTINCT a) FROM t1 GROUP BY b;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a CHAR(5), b BIT(2));
|
||||||
|
INSERT INTO t1 (b, a) VALUES (1, "x"), (3, "zz"), (0, "y"), (3, "z");
|
||||||
|
SELECT b+0, COUNT(DISTINCT a) FROM t1 GROUP BY b;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a INT, b BIT(2));
|
||||||
|
INSERT INTO t1 (b, a) VALUES (1, 1), (3, 2), (0, 3), (3, 4);
|
||||||
|
SELECT b+0, COUNT(DISTINCT a) FROM t1 GROUP BY b;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
--echo End of 5.0 tests
|
--echo End of 5.0 tests
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -268,7 +268,10 @@ set interactive_timeout=100;
|
|||||||
set join_buffer_size=100;
|
set join_buffer_size=100;
|
||||||
set last_insert_id=1;
|
set last_insert_id=1;
|
||||||
set global local_infile=1;
|
set global local_infile=1;
|
||||||
set long_query_time=100;
|
set long_query_time=0.000001;
|
||||||
|
select @@long_query_time;
|
||||||
|
set long_query_time=100.000001;
|
||||||
|
select @@long_query_time;
|
||||||
set low_priority_updates=1;
|
set low_priority_updates=1;
|
||||||
set max_allowed_packet=100;
|
set max_allowed_packet=100;
|
||||||
set global max_binlog_cache_size=100;
|
set global max_binlog_cache_size=100;
|
||||||
@ -327,6 +330,7 @@ set tmp_table_size=100;
|
|||||||
set tx_isolation="READ-COMMITTED";
|
set tx_isolation="READ-COMMITTED";
|
||||||
set wait_timeout=100;
|
set wait_timeout=100;
|
||||||
set log_warnings=1;
|
set log_warnings=1;
|
||||||
|
set global log_warnings=1;
|
||||||
|
|
||||||
#
|
#
|
||||||
# Bugs: #20392: INSERT_ID session variable has weird value
|
# Bugs: #20392: INSERT_ID session variable has weird value
|
||||||
|
23
mysys/CMakeLists.txt
Normal file → Executable file
23
mysys/CMakeLists.txt
Normal file → Executable file
@ -13,18 +13,23 @@
|
|||||||
# along with this program; if not, write to the Free Software
|
# along with this program; if not, write to the Free Software
|
||||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
|
||||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||||
|
|
||||||
# Need to set USE_TLS, since mysys is linked into libmysql.dll and
|
# Only the server link with this library, the client libraries and the client
|
||||||
# libmysqld.dll, and __declspec(thread) approach to thread local storage does
|
# executables all link with recompiles of source found in the "mysys" directory.
|
||||||
# not work properly in DLLs.
|
# So we only need to create one version of this library, with the "static"
|
||||||
# Currently, USE_TLS crashes in Debug builds, so until that is fixed Debug
|
# Thread Local Storage model.
|
||||||
# .dlls cannot be loaded at runtime.
|
#
|
||||||
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DUSE_TLS")
|
# Exception is the embedded server that needs this library compiled with
|
||||||
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DUSE_TLS")
|
# dynamic TLS, i.e. define USE_TLS
|
||||||
|
|
||||||
|
IF(EMBEDDED_ONLY)
|
||||||
|
ADD_DEFINITIONS(-DUSE_TLS)
|
||||||
|
ADD_DEFINITIONS(-DEMBEDDED_LIBRARY)
|
||||||
|
ENDIF(EMBEDDED_ONLY)
|
||||||
|
|
||||||
|
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/zlib ${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/mysys)
|
||||||
|
|
||||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/zlib ${CMAKE_SOURCE_DIR}/include)
|
|
||||||
ADD_LIBRARY(mysys array.c charset-def.c charset.c checksum.c default.c default_modify.c
|
ADD_LIBRARY(mysys array.c charset-def.c charset.c checksum.c default.c default_modify.c
|
||||||
errors.c hash.c list.c md5.c mf_brkhant.c mf_cache.c mf_dirname.c mf_fn_ext.c
|
errors.c hash.c list.c md5.c mf_brkhant.c mf_cache.c mf_dirname.c mf_fn_ext.c
|
||||||
mf_format.c mf_getdate.c mf_iocache.c mf_iocache2.c mf_keycache.c
|
mf_format.c mf_getdate.c mf_iocache.c mf_iocache2.c mf_keycache.c
|
||||||
|
@ -326,14 +326,14 @@ static int charset_initialized=0;
|
|||||||
|
|
||||||
static my_bool my_read_charset_file(const char *filename, myf myflags)
|
static my_bool my_read_charset_file(const char *filename, myf myflags)
|
||||||
{
|
{
|
||||||
char *buf;
|
uchar *buf;
|
||||||
int fd;
|
int fd;
|
||||||
uint len, tmp_len;
|
uint len, tmp_len;
|
||||||
MY_STAT stat_info;
|
MY_STAT stat_info;
|
||||||
|
|
||||||
if (!my_stat(filename, &stat_info, MYF(myflags)) ||
|
if (!my_stat(filename, &stat_info, MYF(myflags)) ||
|
||||||
((len= (uint)stat_info.st_size) > MY_MAX_ALLOWED_BUF) ||
|
((len= (uint)stat_info.st_size) > MY_MAX_ALLOWED_BUF) ||
|
||||||
!(buf= (char *)my_malloc(len,myflags)))
|
!(buf= (uchar*) my_malloc(len,myflags)))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
if ((fd=my_open(filename,O_RDONLY,myflags)) < 0)
|
if ((fd=my_open(filename,O_RDONLY,myflags)) < 0)
|
||||||
@ -343,7 +343,7 @@ static my_bool my_read_charset_file(const char *filename, myf myflags)
|
|||||||
if (tmp_len != len)
|
if (tmp_len != len)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
if (my_parse_charset_xml(buf,len,add_collation))
|
if (my_parse_charset_xml((char*) buf,len,add_collation))
|
||||||
{
|
{
|
||||||
#ifdef NOT_YET
|
#ifdef NOT_YET
|
||||||
printf("ERROR at line %d pos %d '%s'\n",
|
printf("ERROR at line %d pos %d '%s'\n",
|
||||||
@ -353,7 +353,7 @@ static my_bool my_read_charset_file(const char *filename, myf myflags)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
my_free(buf, myflags);
|
my_free(buf, myflags);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
|
@ -218,7 +218,7 @@ int modify_defaults_file(const char *file_location, const char *option,
|
|||||||
if (my_chsize(fileno(cnf_file), (my_off_t) (dst_ptr - file_buffer), 0,
|
if (my_chsize(fileno(cnf_file), (my_off_t) (dst_ptr - file_buffer), 0,
|
||||||
MYF(MY_WME)) ||
|
MYF(MY_WME)) ||
|
||||||
my_fseek(cnf_file, 0, MY_SEEK_SET, MYF(0)) ||
|
my_fseek(cnf_file, 0, MY_SEEK_SET, MYF(0)) ||
|
||||||
my_fwrite(cnf_file, file_buffer, (size_t) (dst_ptr - file_buffer),
|
my_fwrite(cnf_file, (uchar*) file_buffer, (size_t) (dst_ptr - file_buffer),
|
||||||
MYF(MY_NABP)))
|
MYF(MY_NABP)))
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
20
mysys/hash.c
20
mysys/hash.c
@ -137,7 +137,7 @@ void my_hash_reset(HASH *hash)
|
|||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* some helper functions */
|
/* some helper functions */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
This function is char* instead of uchar* as HPUX11 compiler can't
|
This function is char* instead of uchar* as HPUX11 compiler can't
|
||||||
@ -149,9 +149,9 @@ hash_key(const HASH *hash, const uchar *record, size_t *length,
|
|||||||
my_bool first)
|
my_bool first)
|
||||||
{
|
{
|
||||||
if (hash->get_key)
|
if (hash->get_key)
|
||||||
return (*hash->get_key)(record,length,first);
|
return (char*) (*hash->get_key)(record,length,first);
|
||||||
*length=hash->key_length;
|
*length=hash->key_length;
|
||||||
return (uchar*) record+hash->key_offset;
|
return (char*) record+hash->key_offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Calculate pos according to keys */
|
/* Calculate pos according to keys */
|
||||||
@ -313,12 +313,14 @@ my_bool my_hash_insert(HASH *info,const uchar *record)
|
|||||||
uchar *ptr_to_rec,*ptr_to_rec2;
|
uchar *ptr_to_rec,*ptr_to_rec2;
|
||||||
HASH_LINK *data,*empty,*gpos,*gpos2,*pos;
|
HASH_LINK *data,*empty,*gpos,*gpos2,*pos;
|
||||||
|
|
||||||
LINT_INIT(gpos); LINT_INIT(gpos2);
|
LINT_INIT(gpos);
|
||||||
LINT_INIT(ptr_to_rec); LINT_INIT(ptr_to_rec2);
|
LINT_INIT(gpos2);
|
||||||
|
LINT_INIT(ptr_to_rec);
|
||||||
|
LINT_INIT(ptr_to_rec2);
|
||||||
|
|
||||||
if (HASH_UNIQUE & info->flags)
|
if (HASH_UNIQUE & info->flags)
|
||||||
{
|
{
|
||||||
char *key= (char*) hash_key(info, record, &idx, 1);
|
uchar *key= (uchar*) hash_key(info, record, &idx, 1);
|
||||||
if (hash_search(info, key, idx))
|
if (hash_search(info, key, idx))
|
||||||
return(TRUE); /* Duplicate entry */
|
return(TRUE); /* Duplicate entry */
|
||||||
}
|
}
|
||||||
@ -544,14 +546,16 @@ my_bool hash_update(HASH *hash, uchar *record, uchar *old_key,
|
|||||||
if (HASH_UNIQUE & hash->flags)
|
if (HASH_UNIQUE & hash->flags)
|
||||||
{
|
{
|
||||||
HASH_SEARCH_STATE state;
|
HASH_SEARCH_STATE state;
|
||||||
char *found, *new_key= hash_key(hash, record, &idx, 1);
|
uchar *found, *new_key= (uchar*) hash_key(hash, record, &idx, 1);
|
||||||
if ((found= hash_first(hash, new_key, idx, &state)))
|
if ((found= hash_first(hash, new_key, idx, &state)))
|
||||||
|
{
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
if (found != (char*) record)
|
if (found != record)
|
||||||
DBUG_RETURN(1); /* Duplicate entry */
|
DBUG_RETURN(1); /* Duplicate entry */
|
||||||
}
|
}
|
||||||
while ((found= hash_next(hash, new_key, idx, &state)));
|
while ((found= hash_next(hash, new_key, idx, &state)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
data=dynamic_element(&hash->array,0,HASH_LINK*);
|
data=dynamic_element(&hash->array,0,HASH_LINK*);
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user