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_uniq.cc
|
||||
libmysqld/key.cc
|
||||
libmysqld/lex_hash.h
|
||||
libmysqld/lib_sql.cpp
|
||||
libmysqld/libmysql.c
|
||||
libmysqld/link_sources
|
||||
@ -1107,6 +1108,8 @@ libmysqld/log.cc
|
||||
libmysqld/log_event.cc
|
||||
libmysqld/log_event_old.cc
|
||||
libmysqld/md5.c
|
||||
libmysqld/message.h
|
||||
libmysqld/message.rc
|
||||
libmysqld/mf_iocache.cc
|
||||
libmysqld/mini_client.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.server
|
||||
support-files/mysql.spec
|
||||
support-files/mysqld_multi.server
|
||||
support-files/ndb-config-2-node.ini
|
||||
tags
|
||||
test/ndbapi/bank/bankCreator
|
||||
@ -2947,6 +2951,7 @@ tests/.deps/thread_test.Po
|
||||
tests/.libs -prune
|
||||
tests/.libs/lt-mysql_client_test
|
||||
tests/.libs/mysql_client_test
|
||||
tests/bug25714
|
||||
tests/client_test
|
||||
tests/connect_test
|
||||
tests/mysql_client_test
|
||||
|
@ -6,6 +6,6 @@ make -k clean || true
|
||||
path=`dirname $0`
|
||||
. "$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
|
||||
|
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.
|
||||
INCLUDE(win/configure.data)
|
||||
|
||||
# By default, CMake will create Release, Debug, RelWithDebInfo and MinSizeRel
|
||||
# configurations. The EMBEDDED_ONLY build parameter is necessary because CMake
|
||||
# doesn't support custom build configurations for VS2005. Since the Debug
|
||||
# configuration does not work properly with USE_TLS defined
|
||||
# (see mysys/CMakeLists.txt) the easiest way to debug the Embedded Server is to
|
||||
# use the RelWithDebInfo configuration without optimizations.
|
||||
#
|
||||
# Debug default CXX_FLAGS "/D_DEBUG /MDd /Zi /Ob0 /Od /RTC1"
|
||||
# RelWithDebInfo default CXX_FLAGS "/MD /Zi /O2 /Ob1 /D NDEBUG"
|
||||
#
|
||||
IF(NOT EMBEDDED_ONLY)
|
||||
# Hardcode support for CSV storage engine
|
||||
SET(WITH_CSV_STORAGE_ENGINE TRUE)
|
||||
ELSE(NOT EMBEDDED_ONLY)
|
||||
# Hardcode support for CSV storage engine
|
||||
SET(WITH_CSV_STORAGE_ENGINE TRUE)
|
||||
|
||||
# CMAKE will not allow custom VS7+ configurations. mysqld and libmysqld
|
||||
# cannot be built at the same time as they require different configurations
|
||||
IF(EMBEDDED_ONLY)
|
||||
ADD_DEFINITIONS(-DEMBEDDED_LIBRARY)
|
||||
# By default, CMake will create Release, Debug, RelWithDebInfo and MinSizeRel
|
||||
# configurations. The EMBEDDED_ONLY build parameter is necessary because CMake
|
||||
# doesn't support custom build configurations for VS2005. Since the Debug
|
||||
# configuration does not work properly with USE_TLS defined
|
||||
# (see mysys/CMakeLists.txt) the easiest way to debug the Embedded Server is to
|
||||
# use the RelWithDebInfo configuration without optimizations.
|
||||
#
|
||||
# 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)
|
||||
ENDIF(NOT EMBEDDED_ONLY)
|
||||
ENDIF(EMBEDDED_ONLY)
|
||||
|
||||
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/include/mysql_version.h.in
|
||||
${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)
|
||||
ADD_DEFINITIONS(-DWITH_HEAP_STORAGE_ENGINE)
|
||||
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_heap_plugin")
|
||||
@ -103,49 +114,43 @@ ENDIF(CYBOZU)
|
||||
|
||||
# in some places we use DBUG_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_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -DDBUG_OFF")
|
||||
|
||||
IF(CMAKE_GENERATOR MATCHES "Visual Studio 8")
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /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_RELEASE "${CMAKE_C_FLAGS_RELEASE} /wd4996")
|
||||
SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} /wd4996")
|
||||
ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 8")
|
||||
|
||||
IF(CMAKE_GENERATOR MATCHES "Visual Studio 7" OR
|
||||
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
|
||||
${CMAKE_CXX_FLAGS_RELWITHDEBINFO})
|
||||
STRING(REPLACE "/MD" "/MT" CMAKE_C_FLAGS_RELWITHDEBINFO
|
||||
${CMAKE_C_FLAGS_RELWITHDEBINFO})
|
||||
# replace /MDd with /MTd
|
||||
STRING(REPLACE "/MD" "/MT" CMAKE_C_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE})
|
||||
STRING(REPLACE "/MD" "/MT" 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
|
||||
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MAP /MAPINFO:EXPORTS")
|
||||
STRING(REPLACE "/MD" "/MT" CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE})
|
||||
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)
|
||||
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:1048576")
|
||||
# generate map files, set stack size (see bug#20815)
|
||||
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
|
||||
CMAKE_GENERATOR MATCHES "Visual Studio 8")
|
||||
|
||||
@ -209,6 +214,8 @@ IF(EMBED_MANIFESTS)
|
||||
ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64")
|
||||
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(dbug)
|
||||
ADD_SUBDIRECTORY(strings)
|
||||
@ -241,16 +248,13 @@ ENDIF(WITH_FEDERATED_STORAGE_ENGINE)
|
||||
IF(WITH_INNOBASE_STORAGE_ENGINE)
|
||||
ADD_SUBDIRECTORY(storage/innobase)
|
||||
ENDIF(WITH_INNOBASE_STORAGE_ENGINE)
|
||||
# CMAKE will not allow custom VS7+ configurations. mysqld and libmysqld
|
||||
# cannot be built at the same time as they require different configurations
|
||||
ADD_SUBDIRECTORY(libmysql)
|
||||
IF(EMBEDDED_ONLY)
|
||||
ADD_DEFINITIONS(-DEMBEDDED_LIBRARY)
|
||||
ADD_SUBDIRECTORY(libmysqld)
|
||||
ADD_SUBDIRECTORY(libmysqld/examples)
|
||||
ELSE(EMBEDDED_ONLY)
|
||||
ADD_SUBDIRECTORY(client)
|
||||
ADD_SUBDIRECTORY(sql)
|
||||
ADD_SUBDIRECTORY(server-tools/instance-manager)
|
||||
ADD_SUBDIRECTORY(libmysql)
|
||||
ADD_SUBDIRECTORY(tests)
|
||||
ENDIF(EMBEDDED_ONLY)
|
||||
|
119
client/CMakeLists.txt
Normal file → Executable file
119
client/CMakeLists.txt
Normal file → Executable file
@ -14,126 +14,54 @@
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
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_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
|
||||
# The old Windows build method used renamed (.cc -> .cpp) source files, fails
|
||||
# in #include in mysqlbinlog.cc. So disable that using the USING_CMAKE define.
|
||||
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/taocrypt/include
|
||||
${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/mySTL
|
||||
${CMAKE_SOURCE_DIR}/libmysql
|
||||
${CMAKE_SOURCE_DIR}/regex
|
||||
${CMAKE_SOURCE_DIR}/sql
|
||||
${CMAKE_SOURCE_DIR}/strings)
|
||||
|
||||
SET(YASSL_SOURCES ../extra/yassl/src/buffer.cpp
|
||||
../extra/yassl/src/cert_wrapper.cpp
|
||||
../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)
|
||||
ADD_EXECUTABLE(mysql completion_hash.cc mysql.cc readline.cc sql_string.cc ../mysys/my_conio.c)
|
||||
TARGET_LINK_LIBRARIES(mysql mysqlclient_notls wsock32)
|
||||
|
||||
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_LIBRARY(mysqlclient ../mysys/array.c ../strings/bchange.c ../strings/bmove.c
|
||||
../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(mysqltest mysqltest.c ../mysys/my_getsystime.c ../mysys/my_copy.c)
|
||||
TARGET_LINK_LIBRARIES(mysqltest mysqlclient_notls regex wsock32)
|
||||
|
||||
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)
|
||||
TARGET_LINK_LIBRARIES(mysqldump mysqlclient mysys dbug zlib wsock32)
|
||||
ADD_EXECUTABLE(mysqldump mysqldump.c ../sql-common/my_user.c ../mysys/mf_getdate.c)
|
||||
TARGET_LINK_LIBRARIES(mysqldump mysqlclient_notls wsock32)
|
||||
|
||||
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)
|
||||
TARGET_LINK_LIBRARIES(mysql_upgrade mysqlclient dbug zlib wsock32)
|
||||
TARGET_LINK_LIBRARIES(mysql_upgrade mysqlclient_notls wsock32)
|
||||
ADD_DEPENDENCIES(mysql_upgrade GenFixPrivs)
|
||||
|
||||
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
|
||||
../mysys/my_bit.c ../mysys/my_bitmap.c ../mysys/my_vle.c
|
||||
../mysys/base64.c)
|
||||
TARGET_LINK_LIBRARIES(mysqlbinlog mysqlclient dbug zlib wsock32)
|
||||
ADD_EXECUTABLE(mysqlbinlog mysqlbinlog.cc
|
||||
../mysys/mf_tempdir.c
|
||||
../mysys/my_new.cc
|
||||
../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)
|
||||
TARGET_LINK_LIBRARIES(mysqladmin mysqlclient mysys dbug zlib wsock32)
|
||||
TARGET_LINK_LIBRARIES(mysqladmin mysqlclient_notls wsock32)
|
||||
|
||||
ADD_EXECUTABLE(mysqlslap mysqlslap.c)
|
||||
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("echo" "asInvoker")
|
||||
ENDIF(EMBED_MANIFESTS)
|
||||
|
||||
|
@ -48,7 +48,7 @@ enum options_client
|
||||
OPT_PROMPT, OPT_IGN_LINES,OPT_TRANSACTION,OPT_MYSQL_PROTOCOL,
|
||||
OPT_SHARED_MEMORY_BASE_NAME, OPT_FRM, OPT_SKIP_OPTIMIZATION,
|
||||
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_SIGINT_IGNORE, OPT_HEXBLOB, OPT_ORDER_BY_PRIMARY, OPT_COUNT,
|
||||
#ifdef HAVE_NDBCLUSTER_DB
|
||||
@ -79,6 +79,6 @@ enum options_client
|
||||
OPT_SLAP_DETACH,
|
||||
OPT_MYSQL_REPLACE_INTO, OPT_BASE64_OUTPUT, OPT_SERVER_ID,
|
||||
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_MAX_CLIENT_OPTION
|
||||
OPT_DEBUG_INFO, OPT_DEBUG_CHECK, OPT_COLUMN_TYPES, OPT_ERROR_LOG_FILE,
|
||||
OPT_WRITE_BINLOG, OPT_MAX_CLIENT_OPTION
|
||||
};
|
||||
|
@ -43,7 +43,7 @@
|
||||
#include <locale.h>
|
||||
#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 */
|
||||
#define MAX_COLUMN_LENGTH 1024
|
||||
@ -51,6 +51,9 @@ const char *VER= "14.13";
|
||||
/* Buffer to hold 'version' and 'version_comment' */
|
||||
#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_element_free(void *ptr);
|
||||
#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;
|
||||
|
||||
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,
|
||||
opt_rehash=1,skip_updates=0,safe_updates=0,one_database=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_pager_set= 0, opt_sigint_ignore= 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 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 my_end_arg;
|
||||
static char * opt_mysql_unix_port=0;
|
||||
static int connect_flag=CLIENT_INTERACTIVE;
|
||||
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 *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 };
|
||||
|
||||
#ifdef HAVE_READLINE
|
||||
@ -347,15 +355,6 @@ static sig_handler handle_sigint(int sig);
|
||||
int main(int argc,char *argv[])
|
||||
{
|
||||
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]);
|
||||
DBUG_ENTER("main");
|
||||
@ -416,7 +415,8 @@ int main(int argc,char *argv[])
|
||||
my_end(0);
|
||||
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);
|
||||
my_end(0);
|
||||
@ -539,9 +539,11 @@ sig_handler mysql_end(int sig)
|
||||
my_free(shared_memory_base_name,MYF(MY_ALLOW_ZERO_PTR));
|
||||
#endif
|
||||
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();
|
||||
free_defaults(defaults_argv);
|
||||
my_end(info_flag ? MY_CHECK_ERROR : 0);
|
||||
my_end(my_end_arg);
|
||||
exit(status.exit_status);
|
||||
}
|
||||
|
||||
@ -611,8 +613,11 @@ static struct my_option my_long_options[] =
|
||||
{"debug", '#', "Output debug log", (uchar**) &default_dbug_option,
|
||||
(uchar**) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#endif
|
||||
{"debug-info", 'T', "Print some debug info at exit.", (uchar**) &info_flag,
|
||||
(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", '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,
|
||||
(uchar**) ¤t_db, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"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"
|
||||
" 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},
|
||||
{"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.",
|
||||
(uchar**) &show_warnings, (uchar**) &show_warnings, 0, GET_BOOL, NO_ARG,
|
||||
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->name);
|
||||
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':
|
||||
opt_rehash= 0;
|
||||
break;
|
||||
@ -927,7 +956,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
break;
|
||||
case '#':
|
||||
DBUG_PUSH(argument ? argument : default_dbug_option);
|
||||
info_flag= 1;
|
||||
debug_info_flag= 1;
|
||||
break;
|
||||
case 's':
|
||||
if (argument == disabled_my_option)
|
||||
@ -1021,6 +1050,10 @@ static int get_options(int argc, char **argv)
|
||||
}
|
||||
if (tty_password)
|
||||
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);
|
||||
}
|
||||
|
||||
@ -3288,7 +3321,7 @@ sql_real_connect(char *host,char *database,char *user,char *password,
|
||||
}
|
||||
connected=1;
|
||||
#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
|
||||
mysql.reconnect= 1;
|
||||
#endif
|
||||
|
@ -17,6 +17,8 @@
|
||||
#include <sslopt-vars.h>
|
||||
#include "../scripts/mysql_fix_privilege_tables_sql.c"
|
||||
|
||||
#define VER "1.1"
|
||||
|
||||
#ifdef HAVE_SYS_WAIT_H
|
||||
#include <sys/wait.h>
|
||||
#endif
|
||||
@ -32,7 +34,8 @@
|
||||
static char mysql_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 DYNAMIC_STRING ds_args;
|
||||
@ -56,6 +59,11 @@ static struct my_option my_long_options[]=
|
||||
NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"basedir", 'b', "Not used by mysql_upgrade. Only for backward compatibilty",
|
||||
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',
|
||||
"Not used by mysql_upgrade. Only for backward compatibilty",
|
||||
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,
|
||||
(uchar* *) & default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#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,
|
||||
"Set the default character set.", 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 "
|
||||
"has already been executed for the current version of MySQL.",
|
||||
(uchar**)&opt_force, (uchar**)&opt_force, 0,
|
||||
@ -138,7 +146,7 @@ static void die(const char *fmt, ...)
|
||||
va_end(args);
|
||||
|
||||
free_used_memory();
|
||||
my_end(MY_CHECK_ERROR);
|
||||
my_end(my_end_arg);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@ -200,8 +208,9 @@ get_one_option(int optid, const struct my_option *opt,
|
||||
switch (optid) {
|
||||
|
||||
case '?':
|
||||
printf("MySQL utility for upgrading database to MySQL version %s\n",
|
||||
MYSQL_SERVER_VERSION);
|
||||
printf("%s Ver %s Distrib %s, for %s (%s)\n",
|
||||
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);
|
||||
exit(0);
|
||||
break;
|
||||
@ -209,6 +218,7 @@ get_one_option(int optid, const struct my_option *opt,
|
||||
case '#':
|
||||
DBUG_PUSH(argument ? argument : default_dbug_option);
|
||||
add_option= FALSE;
|
||||
debug_check_flag= 1;
|
||||
break;
|
||||
|
||||
case 'p':
|
||||
@ -732,6 +742,10 @@ int main(int argc, char **argv)
|
||||
|
||||
if (handle_options(&argc, &argv, my_long_options, get_one_option))
|
||||
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)
|
||||
{
|
||||
@ -780,7 +794,7 @@ int main(int argc, char **argv)
|
||||
create_mysql_upgrade_info_file();
|
||||
|
||||
free_used_memory();
|
||||
my_end(MY_CHECK_ERROR);
|
||||
my_end(my_end_arg);
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
@ -40,9 +40,10 @@ ulonglong last_values[MAX_MYSQL_VAR];
|
||||
static int interval=0;
|
||||
static my_bool option_force=0,interrupted=0,new_line=0,
|
||||
opt_compress=0, opt_relative=0, opt_verbose=0, opt_vertical=0,
|
||||
tty_password= 0, info_flag= 0, opt_nobeep;
|
||||
static uint tcp_port = 0, option_wait = 0, option_silent=0, nr_iterations,
|
||||
opt_count_iterations= 0;
|
||||
tty_password= 0, opt_nobeep;
|
||||
static my_bool debug_info_flag= 0, debug_check_flag= 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 char * unix_port=0;
|
||||
#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.",
|
||||
(uchar**) &nr_iterations, (uchar**) &nr_iterations, 0, GET_UINT,
|
||||
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#ifndef DBUG_OFF
|
||||
{"debug", '#', "Output debug log. Often this is 'd:t:o,filename'.",
|
||||
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,
|
||||
(uchar**) &info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#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},
|
||||
{"force", 'f',
|
||||
"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,
|
||||
@ -315,6 +322,10 @@ int main(int argc,char *argv[])
|
||||
free_defaults(save_argv);
|
||||
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)
|
||||
{
|
||||
@ -413,7 +424,7 @@ int main(int argc,char *argv[])
|
||||
my_free(shared_memory_base_name,MYF(MY_ALLOW_ZERO_PTR));
|
||||
#endif
|
||||
free_defaults(save_argv);
|
||||
my_end(info_flag ? MY_CHECK_ERROR : 0);
|
||||
my_end(my_end_arg);
|
||||
exit(error ? 1 : 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_base64_output= 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 ulonglong offset = 0;
|
||||
static const char* host = 0;
|
||||
static int port= 0;
|
||||
static uint my_end_arg;
|
||||
static const char* sock= 0;
|
||||
static const char* user = 0;
|
||||
static char* pass = 0;
|
||||
@ -727,8 +729,12 @@ static struct my_option my_long_options[] =
|
||||
{"debug", '#', "Output debug log.", (uchar**) &default_dbug_option,
|
||||
(uchar**) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#endif
|
||||
{"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.", (uchar**) &info_flag,
|
||||
(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},
|
||||
{"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. "
|
||||
"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);
|
||||
cleanup();
|
||||
/* 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);
|
||||
}
|
||||
|
||||
@ -868,7 +874,7 @@ static void die(const char* fmt, ...)
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
@ -984,7 +990,10 @@ static int parse_args(int *argc, char*** argv)
|
||||
load_defaults("my",load_default_groups,argc,argv);
|
||||
if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option)))
|
||||
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;
|
||||
}
|
||||
|
||||
@ -1078,6 +1087,7 @@ static int check_master_version(MYSQL *mysql_arg,
|
||||
break;
|
||||
case '4':
|
||||
*description_event= new Format_description_log_event(3);
|
||||
break;
|
||||
case '5':
|
||||
/*
|
||||
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);
|
||||
my_b_seek(file, (my_off_t)0);
|
||||
if (my_b_read(file, header, sizeof(header)))
|
||||
{
|
||||
delete *description_event;
|
||||
die("Failed reading header; Probably an empty file");
|
||||
}
|
||||
if (memcmp(header, BINLOG_MAGIC, sizeof(header)))
|
||||
{
|
||||
delete *description_event;
|
||||
die("File is not a binary log file");
|
||||
}
|
||||
|
||||
/*
|
||||
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 (file->error)
|
||||
{
|
||||
delete *description_event;
|
||||
die("\
|
||||
Could not read entry at offset %lu : Error in log format or read error",
|
||||
tmp_pos);
|
||||
}
|
||||
/*
|
||||
Otherwise this is just EOF : this log currently contains 0-2
|
||||
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;
|
||||
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 */
|
||||
if (!(*description_event= (Format_description_log_event*)
|
||||
if (!(new_description_event= (Format_description_log_event*)
|
||||
Log_event::read_log_event(file, *description_event)))
|
||||
/* 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 \
|
||||
at offset %lu ; this could be a log format error or read error",
|
||||
tmp_pos);
|
||||
}
|
||||
delete *description_event;
|
||||
*description_event= new_description_event;
|
||||
DBUG_PRINT("info",("Setting description_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 */
|
||||
if (!(ev= Log_event::read_log_event(file, *description_event)))
|
||||
/* 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 ;"
|
||||
" this could be a log format error or read error", tmp_pos);
|
||||
}
|
||||
delete ev;
|
||||
}
|
||||
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())
|
||||
{
|
||||
delete glob_description_event;
|
||||
die("Invalid Format_description log event; could be out of memory");
|
||||
}
|
||||
|
||||
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();
|
||||
load_processor.destroy();
|
||||
/* 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)
|
||||
{
|
||||
@ -1617,17 +1648,9 @@ int main(int argc, char** argv)
|
||||
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 "decimal.c"
|
||||
#include "my_decimal.cc"
|
||||
#include "log_event.cc"
|
||||
#include "log_event_old.cc"
|
||||
#endif
|
||||
|
||||
|
@ -15,7 +15,7 @@
|
||||
|
||||
/* 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 <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_medium_check = 0, opt_quick = 0, opt_all_in_1 = 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_write_binlog= 1;
|
||||
static uint verbose = 0, opt_mysql_port=0;
|
||||
static int my_end_arg;
|
||||
static char * opt_mysql_unix_port = 0;
|
||||
static char *opt_password = 0, *current_user = 0,
|
||||
*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'.",
|
||||
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#endif
|
||||
{"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.", (uchar**) &info_flag,
|
||||
(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},
|
||||
{"default-character-set", OPT_DEFAULT_CHARSET,
|
||||
"Set the default character set.", (uchar**) &default_charset,
|
||||
(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;
|
||||
case '#':
|
||||
DBUG_PUSH(argument ? argument : "d:t:o");
|
||||
debug_check_flag= 1;
|
||||
break;
|
||||
#include <sslopt-case.h>
|
||||
case OPT_TABLES:
|
||||
@ -375,6 +381,10 @@ static int get_options(int *argc, char ***argv)
|
||||
}
|
||||
if (tty_password)
|
||||
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);
|
||||
} /* get_options */
|
||||
|
||||
@ -762,7 +772,7 @@ int main(int argc, char **argv)
|
||||
*/
|
||||
if (get_options(&argc, &argv))
|
||||
{
|
||||
my_end(info_flag ? MY_CHECK_ERROR : 0);
|
||||
my_end(my_end_arg);
|
||||
exit(EX_USAGE);
|
||||
}
|
||||
if (dbConnect(current_host, current_user, opt_password))
|
||||
@ -804,6 +814,6 @@ int main(int argc, char **argv)
|
||||
#ifdef HAVE_SMEM
|
||||
my_free(shared_memory_base_name,MYF(MY_ALLOW_ZERO_PTR));
|
||||
#endif
|
||||
my_end(info_flag ? MY_CHECK_ERROR : 0);
|
||||
my_end(my_end_arg);
|
||||
return(first_error!=0);
|
||||
} /* main */
|
||||
|
@ -36,7 +36,7 @@
|
||||
** 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_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_events= 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 MYSQL mysql_connection,*mysql=0;
|
||||
static my_bool insert_pat_inited= 0, info_flag;
|
||||
static DYNAMIC_STRING insert_pat;
|
||||
static char *opt_password=0,*current_user=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;
|
||||
#define MYSQL_OPT_MASTER_DATA_EFFECTIVE_SQL 1
|
||||
#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 int first_error=0;
|
||||
static DYNAMIC_STRING extended_row;
|
||||
@ -242,8 +243,12 @@ static struct my_option my_long_options[] =
|
||||
{"debug", '#', "Output debug log", (uchar**) &default_dbug_option,
|
||||
(uchar**) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#endif
|
||||
{"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.", (uchar**) &info_flag,
|
||||
(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},
|
||||
{"default-character-set", OPT_DEFAULT_CHARSET,
|
||||
"Set the default character set.", (uchar**) &default_charset,
|
||||
(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;
|
||||
case '#':
|
||||
DBUG_PUSH(argument ? argument : default_dbug_option);
|
||||
info_flag= 1;
|
||||
debug_check_flag= 1;
|
||||
break;
|
||||
#include <sslopt-case.h>
|
||||
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_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)
|
||||
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);
|
||||
}
|
||||
|
||||
/**
|
||||
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
|
||||
|
||||
@ -1262,7 +1390,7 @@ static void free_resources()
|
||||
dynstr_free(&insert_pat);
|
||||
if (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;
|
||||
|
||||
char db_cl_name[MY_CS_NAME_SIZE];
|
||||
int db_cl_altered;
|
||||
int db_cl_altered= FALSE;
|
||||
|
||||
DBUG_ENTER("dump_events_for_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);
|
||||
|
||||
if (switch_db_collation(sql_file, db_name_buff, delimiter, db_cl_name,
|
||||
row[6], &db_cl_altered))
|
||||
if (mysql_num_fields(event_res) >= 7)
|
||||
{
|
||||
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,
|
||||
row[4], /* character_set_client */
|
||||
row[4], /* character_set_results */
|
||||
row[5]); /* collation_connection */
|
||||
switch_cs_variables(sql_file, delimiter,
|
||||
row[4], /* character_set_client */
|
||||
row[4], /* character_set_results */
|
||||
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]);
|
||||
|
||||
@ -1788,13 +1936,17 @@ static uint dump_events_for_db(char *db)
|
||||
|
||||
restore_time_zone(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,
|
||||
db_cl_name))
|
||||
DBUG_RETURN(1);
|
||||
restore_cs_variables(sql_file, delimiter);
|
||||
|
||||
if (db_cl_altered)
|
||||
{
|
||||
if (restore_db_collation(sql_file, db_name_buff, delimiter,
|
||||
db_cl_name))
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
} /* end of event printing */
|
||||
@ -1862,7 +2014,7 @@ static uint dump_routines_for_db(char *db)
|
||||
MYSQL_ROW row, routine_list_row;
|
||||
|
||||
char db_cl_name[MY_CS_NAME_SIZE];
|
||||
int db_cl_altered;
|
||||
int db_cl_altered= FALSE;
|
||||
|
||||
DBUG_ENTER("dump_routines_for_db");
|
||||
DBUG_PRINT("enter", ("db: '%s'", db));
|
||||
@ -1929,74 +2081,45 @@ static uint dump_routines_for_db(char *db)
|
||||
}
|
||||
else if (strlen(row[2]))
|
||||
{
|
||||
char *query_str= NULL;
|
||||
char *definer_begin;
|
||||
|
||||
char *query_str;
|
||||
if (opt_drop)
|
||||
fprintf(sql_file, "/*!50003 DROP %s IF EXISTS %s */;\n",
|
||||
routine_type[i], routine_name);
|
||||
|
||||
/*
|
||||
Cover DEFINER-clause in version-specific comments.
|
||||
query_str= cover_definer_clause_in_sp(row[2], strlen(row[2]));
|
||||
|
||||
TODO: this is definitely a BAD IDEA to parse SHOW CREATE output.
|
||||
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)
|
||||
if (mysql_num_fields(routine_res) >= 6)
|
||||
{
|
||||
char *definer_end= my_case_str(definer_begin,
|
||||
strlen(definer_begin),
|
||||
C_STRING_WITH_LEN(" PROCEDURE"));
|
||||
|
||||
if (!definer_end)
|
||||
if (switch_db_collation(sql_file, db_name_buff, ";",
|
||||
db_cl_name, row[5], &db_cl_altered))
|
||||
{
|
||||
definer_end= my_case_str(definer_begin, strlen(definer_begin),
|
||||
C_STRING_WITH_LEN(" FUNCTION"));
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
|
||||
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, "*/ /*!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);
|
||||
}
|
||||
switch_cs_variables(sql_file, ";",
|
||||
row[3], /* character_set_client */
|
||||
row[3], /* character_set_results */
|
||||
row[4]); /* collation_connection */
|
||||
}
|
||||
|
||||
/*
|
||||
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))
|
||||
else
|
||||
{
|
||||
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]);
|
||||
|
||||
@ -2007,12 +2130,16 @@ static uint dump_routines_for_db(char *db)
|
||||
(const char *) (query_str != NULL ? query_str : row[2]));
|
||||
|
||||
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))
|
||||
DBUG_RETURN(1);
|
||||
restore_cs_variables(sql_file, ";");
|
||||
|
||||
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));
|
||||
@ -2061,7 +2188,6 @@ static uint get_table_structure(char *table, char *db, char *table_type,
|
||||
int len;
|
||||
MYSQL_RES *result;
|
||||
MYSQL_ROW row;
|
||||
|
||||
DBUG_ENTER("get_table_structure");
|
||||
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 */
|
||||
check_io(sql_file);
|
||||
}
|
||||
mysql_free_result(result);
|
||||
if (!opt_xml)
|
||||
{
|
||||
if (keynr)
|
||||
@ -2551,153 +2678,211 @@ continue_xml:
|
||||
DBUG_RETURN((uint) num_fields);
|
||||
} /* 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
|
||||
the tables have been dumped in case a trigger depends on the existence
|
||||
of a table
|
||||
DBUG_ENTER("dump_trigger_old");
|
||||
|
||||
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], table_buff[NAME_LEN*2+3];
|
||||
char name_buff[NAME_LEN*4+3];
|
||||
char query_buff[QUERY_LENGTH];
|
||||
uint old_opt_compatible_mode=opt_compatible_mode;
|
||||
FILE *sql_file= md_result_file;
|
||||
MYSQL_RES *result;
|
||||
uint old_opt_compatible_mode= opt_compatible_mode;
|
||||
MYSQL_RES *show_triggers_rs;
|
||||
MYSQL_ROW row;
|
||||
|
||||
char db_cl_name[MY_CS_NAME_SIZE];
|
||||
int db_cl_altered;
|
||||
|
||||
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 */
|
||||
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. */
|
||||
|
||||
if (fetch_db_collation(db_name, db_cl_name, sizeof (db_cl_name)))
|
||||
DBUG_VOID_RETURN;
|
||||
|
||||
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. */
|
||||
|
||||
while ((row= mysql_fetch_row(result)))
|
||||
while ((row= mysql_fetch_row(show_triggers_rs)))
|
||||
{
|
||||
MYSQL_RES *res2;
|
||||
|
||||
my_snprintf(query_buff, sizeof (query_buff),
|
||||
"SHOW CREATE TRIGGER %s",
|
||||
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.
|
||||
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.
|
||||
NOTE: the dump may be incorrect, as old SHOW TRIGGERS does not
|
||||
provide all the necessary information to restore trigger properly.
|
||||
*/
|
||||
|
||||
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, 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));
|
||||
dump_trigger_old(show_triggers_rs, &row, table_name);
|
||||
}
|
||||
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))
|
||||
DBUG_VOID_RETURN;
|
||||
DBUG_RETURN(TRUE);
|
||||
|
||||
/*
|
||||
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;
|
||||
|
||||
DBUG_VOID_RETURN;
|
||||
DBUG_RETURN(FALSE);
|
||||
}
|
||||
|
||||
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.
|
||||
*/
|
||||
if (strcmp (table_type, "VIEW") == 0)
|
||||
if (strcmp(table_type, "VIEW") == 0)
|
||||
DBUG_VOID_RETURN;
|
||||
|
||||
/* 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))
|
||||
{
|
||||
DB_error(mysql, "when executing 'SELECT INTO OUTFILE'");
|
||||
dynstr_free(&query_string);
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
}
|
||||
@ -3266,8 +3452,8 @@ static void dump_table(char *table, char *db)
|
||||
check_io(md_result_file);
|
||||
}
|
||||
mysql_free_result(res);
|
||||
dynstr_free(&query_string);
|
||||
}
|
||||
dynstr_free(&query_string);
|
||||
DBUG_VOID_RETURN;
|
||||
|
||||
err:
|
||||
@ -3388,6 +3574,7 @@ static int dump_tablespaces(char* ts_where)
|
||||
char extra_format[]= "UNDO_BUFFER_SIZE=";
|
||||
char *ubs;
|
||||
char *endsemi;
|
||||
DBUG_ENTER("dump_tablespaces");
|
||||
|
||||
init_dynamic_string_checked(&sqlbuf,
|
||||
"SELECT LOGFILE_GROUP_NAME,"
|
||||
@ -3419,6 +3606,7 @@ static int dump_tablespaces(char* ts_where)
|
||||
if (mysql_query(mysql, sqlbuf.str) ||
|
||||
!(tableres = mysql_store_result(mysql)))
|
||||
{
|
||||
dynstr_free(&sqlbuf);
|
||||
if (mysql_errno(mysql) == ER_BAD_TABLE_ERROR ||
|
||||
mysql_errno(mysql) == ER_BAD_DB_ERROR ||
|
||||
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"
|
||||
" table on this server\n--\n");
|
||||
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));
|
||||
return 1;
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
|
||||
buf[0]= 0;
|
||||
@ -3484,6 +3672,7 @@ static int dump_tablespaces(char* ts_where)
|
||||
}
|
||||
}
|
||||
dynstr_free(&sqlbuf);
|
||||
mysql_free_result(tableres);
|
||||
init_dynamic_string_checked(&sqlbuf,
|
||||
"SELECT DISTINCT TABLESPACE_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");
|
||||
|
||||
if (mysql_query_with_error_report(mysql, &tableres, sqlbuf.str))
|
||||
return 1;
|
||||
{
|
||||
dynstr_free(&sqlbuf);
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
|
||||
buf[0]= 0;
|
||||
while ((row= mysql_fetch_row(tableres)))
|
||||
@ -3547,8 +3739,9 @@ static int dump_tablespaces(char* ts_where)
|
||||
}
|
||||
}
|
||||
|
||||
mysql_free_result(tableres);
|
||||
dynstr_free(&sqlbuf);
|
||||
return 0;
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
||||
static int dump_all_databases()
|
||||
@ -3635,8 +3828,11 @@ RETURN VALUES
|
||||
0 Success.
|
||||
1 Failure.
|
||||
*/
|
||||
|
||||
int init_dumping_tables(char *qdatabase)
|
||||
{
|
||||
DBUG_ENTER("init_dumping_tables");
|
||||
|
||||
if (!opt_create_db)
|
||||
{
|
||||
char qbuf[256];
|
||||
@ -3669,10 +3865,10 @@ int init_dumping_tables(char *qdatabase)
|
||||
{
|
||||
fprintf(md_result_file,"\n%s;\n",row[1]);
|
||||
}
|
||||
mysql_free_result(dbinfo);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
DBUG_RETURN(0);
|
||||
} /* 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 */
|
||||
|
||||
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);
|
||||
}
|
||||
@ -3775,7 +3971,14 @@ static int dump_all_tables_in_db(char *database)
|
||||
order_by= 0;
|
||||
if (opt_dump_triggers && ! opt_xml &&
|
||||
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 &&
|
||||
@ -3955,8 +4158,13 @@ static int dump_selected_tables(char *db, char **table_names, int tables)
|
||||
}
|
||||
else
|
||||
{
|
||||
maybe_die(EX_ILLEGAL_TABLE, "Couldn't find table: \"%s\"", *table_names);
|
||||
/* We shall countinue here, if --force was given */
|
||||
if (!ignore_errors)
|
||||
{
|
||||
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;
|
||||
@ -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,
|
||||
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");
|
||||
/* We shall countinue here, if --force was given */
|
||||
}
|
||||
}
|
||||
dynstr_free(&lock_tables_query);
|
||||
if (flush_logs)
|
||||
{
|
||||
if (mysql_refresh(mysql, REFRESH_LOG))
|
||||
{
|
||||
if (!ignore_errors)
|
||||
free_root(&root, MYF(0));
|
||||
DB_error(mysql, "when doing refresh");
|
||||
}
|
||||
/* We shall countinue here, if --force was given */
|
||||
}
|
||||
if (opt_xml)
|
||||
@ -3985,7 +4204,14 @@ static int dump_selected_tables(char *db, char **table_names, int tables)
|
||||
dump_table(*pos, db);
|
||||
if (opt_dump_triggers &&
|
||||
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 */
|
||||
@ -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 (!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;
|
||||
}
|
||||
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)) ||
|
||||
!(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.");
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
|
@ -24,7 +24,7 @@
|
||||
** * *
|
||||
** *************************
|
||||
*/
|
||||
#define IMPORT_VERSION "3.6"
|
||||
#define IMPORT_VERSION "3.7"
|
||||
|
||||
#include "client_priv.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,
|
||||
replace=0,silent=0,ignore=0,opt_compress=0,
|
||||
opt_low_priority= 0, tty_password= 0;
|
||||
static my_bool info_flag= 0;
|
||||
static uint opt_use_threads=0, opt_local_file=0;
|
||||
static my_bool debug_info_flag= 0, debug_check_flag= 0;
|
||||
static uint opt_use_threads=0, opt_local_file=0, my_end_arg= 0;
|
||||
static char *opt_password=0, *current_user=0,
|
||||
*current_host=0, *current_db=0, *fields_terminated=0,
|
||||
*lines_terminated=0, *enclosed=0, *opt_enclosed=0,
|
||||
@ -87,8 +87,12 @@ static struct my_option my_long_options[] =
|
||||
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},
|
||||
{"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.", (uchar**) &info_flag,
|
||||
(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},
|
||||
{"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},
|
||||
{"fields-terminated-by", OPT_FTB,
|
||||
@ -236,6 +240,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
break;
|
||||
case '#':
|
||||
DBUG_PUSH(argument ? argument : "d:t:o");
|
||||
debug_check_flag= 1;
|
||||
break;
|
||||
#include <sslopt-case.h>
|
||||
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)))
|
||||
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)
|
||||
{
|
||||
@ -659,6 +668,6 @@ int main(int argc, char **argv)
|
||||
my_free(shared_memory_base_name,MYF(MY_ALLOW_ZERO_PTR));
|
||||
#endif
|
||||
free_defaults(argv_to_free);
|
||||
my_end(info_flag ? MY_CHECK_ERROR : 0);
|
||||
my_end(my_end_arg);
|
||||
return(exitcode);
|
||||
}
|
||||
|
@ -15,7 +15,7 @@
|
||||
|
||||
/* Show databases, tables or columns */
|
||||
|
||||
#define SHOW_VERSION "9.6"
|
||||
#define SHOW_VERSION "9.10"
|
||||
|
||||
#include "client_priv.h"
|
||||
#include <my_sys.h>
|
||||
@ -28,7 +28,9 @@
|
||||
|
||||
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 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 char *default_charset= (char*) MYSQL_DEFAULT_CHARSET_NAME;
|
||||
|
||||
@ -150,7 +152,7 @@ int main(int argc, char **argv)
|
||||
#ifdef HAVE_SMEM
|
||||
my_free(shared_memory_base_name,MYF(MY_ALLOW_ZERO_PTR));
|
||||
#endif
|
||||
my_end(info_flag ? MY_CHECK_ERROR : 0);
|
||||
my_end(my_end_arg);
|
||||
exit(error ? 1 : 0);
|
||||
return 0; /* No compiler warnings */
|
||||
}
|
||||
@ -176,8 +178,12 @@ static struct my_option my_long_options[] =
|
||||
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},
|
||||
{"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.", (uchar**) &info_flag,
|
||||
(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},
|
||||
{"help", '?', "Display this help and exit.", 0, 0, 0, GET_NO_ARG, NO_ARG,
|
||||
0, 0, 0, 0, 0, 0},
|
||||
{"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;
|
||||
case '#':
|
||||
DBUG_PUSH(argument ? argument : "d:t:o");
|
||||
debug_check_flag= 1;
|
||||
break;
|
||||
#include <sslopt-case.h>
|
||||
case 'V':
|
||||
@ -326,6 +333,10 @@ get_options(int *argc,char ***argv)
|
||||
*/
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -69,7 +69,7 @@ TODO:
|
||||
|
||||
*/
|
||||
|
||||
#define SHOW_VERSION "0.9"
|
||||
#define SLAP_VERSION "1.0"
|
||||
|
||||
#define HUGE_STRING_LENGTH 8196
|
||||
#define RAND_STRING_SIZE 126
|
||||
@ -131,10 +131,8 @@ const char *delimiter= "\n";
|
||||
|
||||
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_compress= FALSE, tty_password= FALSE,
|
||||
opt_silent= FALSE,
|
||||
auto_generate_sql_autoincrement= FALSE,
|
||||
@ -149,13 +147,14 @@ static uint commit_rate;
|
||||
static uint detach_rate;
|
||||
const char *num_int_cols_opt;
|
||||
const char *num_char_cols_opt;
|
||||
|
||||
/* Yes, we do set defaults here */
|
||||
static unsigned int num_int_cols= 1;
|
||||
static unsigned int num_char_cols= 1;
|
||||
static unsigned int num_int_cols_index= 0;
|
||||
static unsigned int num_char_cols_index= 0;
|
||||
|
||||
static unsigned int iterations;
|
||||
static uint my_end_arg= 0;
|
||||
static char *default_charset= (char*) MYSQL_DEFAULT_CHARSET_NAME;
|
||||
static ulonglong actual_queries= 0;
|
||||
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));
|
||||
#endif
|
||||
free_defaults(defaults_argv);
|
||||
my_end(0);
|
||||
my_end(my_end_arg);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -569,6 +568,11 @@ static struct my_option my_long_options[] =
|
||||
{"debug", '#', "Output debug log. Often this is 'd:t:o,filename'.",
|
||||
(uchar**) &default_dbug_option, (uchar**) &default_dbug_option, 0, GET_STR,
|
||||
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 to use in SQL statements supplied in file or command line.",
|
||||
(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)
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
@ -731,6 +735,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
break;
|
||||
case '#':
|
||||
DBUG_PUSH(argument ? argument : default_dbug_option);
|
||||
debug_check_flag= 1;
|
||||
break;
|
||||
#include <sslopt-case.h>
|
||||
case 'V':
|
||||
@ -1126,6 +1131,10 @@ get_options(int *argc,char ***argv)
|
||||
DBUG_ENTER("get_options");
|
||||
if ((ho_error= handle_options(argc, argv, my_long_options, get_one_option)))
|
||||
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)
|
||||
user= (char *)"root";
|
||||
|
@ -31,7 +31,7 @@
|
||||
Holyfoot
|
||||
*/
|
||||
|
||||
#define MTEST_VERSION "3.2"
|
||||
#define MTEST_VERSION "3.3"
|
||||
|
||||
#include "client_priv.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_max_connect_retries;
|
||||
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 opt_mark_progress= 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 uint start_lineno= 0; /* Start line of current command */
|
||||
static uint my_end_arg= 0;
|
||||
|
||||
static char delimiter[MAX_DELIMITER_LENGTH]= ";";
|
||||
static uint delimiter_length= 1;
|
||||
@ -807,12 +809,10 @@ void free_used_memory()
|
||||
static void cleanup_and_exit(int exit_code)
|
||||
{
|
||||
free_used_memory();
|
||||
my_end(MY_CHECK_ERROR);
|
||||
my_end(my_end_arg);
|
||||
|
||||
if (!silent)
|
||||
{
|
||||
switch (exit_code)
|
||||
{
|
||||
if (!silent) {
|
||||
switch (exit_code) {
|
||||
case 1:
|
||||
printf("not ok\n");
|
||||
break;
|
||||
@ -1084,8 +1084,7 @@ void check_result(DYNAMIC_STRING* ds)
|
||||
DBUG_ENTER("check_result");
|
||||
DBUG_ASSERT(result_file_name);
|
||||
|
||||
switch (dyn_string_cmp(ds, result_file_name))
|
||||
{
|
||||
switch (dyn_string_cmp(ds, result_file_name)) {
|
||||
case RESULT_OK:
|
||||
break; /* ok */
|
||||
case RESULT_LENGTH_MISMATCH:
|
||||
@ -1929,7 +1928,10 @@ void do_exec(struct st_command *command)
|
||||
command->first_argument, ds_cmd.str));
|
||||
|
||||
if (!(res_file= my_popen(&ds_cmd, "r")) && command->abort_on_error)
|
||||
{
|
||||
dynstr_free(&ds_cmd);
|
||||
die("popen(\"%s\", \"r\") failed", command->first_argument);
|
||||
}
|
||||
|
||||
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",
|
||||
ds_cmd.str, error, status, errno);
|
||||
dynstr_free(&ds_cmd);
|
||||
die("command \"%s\" failed", command->first_argument);
|
||||
}
|
||||
|
||||
@ -1971,8 +1974,11 @@ void do_exec(struct st_command *command)
|
||||
}
|
||||
}
|
||||
if (!ok)
|
||||
{
|
||||
dynstr_free(&ds_cmd);
|
||||
die("command \"%s\" failed with wrong error: %d",
|
||||
command->first_argument, status);
|
||||
}
|
||||
}
|
||||
else if (command->expected_errors.err[0].type == ERR_ERRNO &&
|
||||
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 */
|
||||
log_msg("exec of '%s failed, error: %d, errno: %d",
|
||||
ds_cmd.str, error, errno);
|
||||
dynstr_free(&ds_cmd);
|
||||
die("command \"%s\" succeeded - should have failed with errno %d...",
|
||||
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'.",
|
||||
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#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,
|
||||
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"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 '#':
|
||||
#ifndef DBUG_OFF
|
||||
DBUG_PUSH(argument ? argument : "d:t:S:i:O,/tmp/mysqltest.trace");
|
||||
debug_check_flag= 1;
|
||||
#endif
|
||||
break;
|
||||
case 'r':
|
||||
@ -4724,6 +4738,10 @@ int parse_args(int argc, char **argv)
|
||||
opt_db= *argv;
|
||||
if (tty_password)
|
||||
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;
|
||||
}
|
||||
@ -5377,11 +5395,8 @@ end:
|
||||
ds - dynamic string which is used for output buffer
|
||||
|
||||
NOTE
|
||||
If there is an unexpected error this function will abort mysqltest
|
||||
immediately.
|
||||
|
||||
RETURN VALUE
|
||||
error - function will not return
|
||||
If there is an unexpected error this function will abort mysqltest
|
||||
immediately.
|
||||
*/
|
||||
|
||||
void handle_error(struct st_command *command,
|
||||
|
@ -10,13 +10,13 @@ AC_CANONICAL_SYSTEM
|
||||
#
|
||||
# When changing major version number please also check switch statement
|
||||
# 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])
|
||||
|
||||
PROTOCOL_VERSION=10
|
||||
DOT_FRM_VERSION=6
|
||||
# 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
|
||||
NDB_SHARED_LIB_MAJOR_VERSION=3
|
||||
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 \
|
||||
fconvert fdatasync finite fpresetsticky fpsetmask fsync ftruncate \
|
||||
getcwd gethostbyaddr_r gethostbyname_r getpass getpassphrase getpwnam \
|
||||
getpwuid getrlimit getrusage getwd gmtime_r index initgroups isnan \
|
||||
localtime_r locking longjmp lrand48 madvise mallinfo memcpy memmove \
|
||||
getpwuid getrlimit getrusage getwd index initgroups isnan \
|
||||
localtime_r gethrtime gmtime_r \
|
||||
locking longjmp lrand48 madvise mallinfo memcpy memmove \
|
||||
mkstemp mlockall perror poll pread pthread_attr_create mmap mmap64 getpagesize \
|
||||
pthread_attr_getstacksize pthread_attr_setprio pthread_attr_setschedparam \
|
||||
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
|
||||
# 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__")
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/dbug)
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
|
||||
ADD_LIBRARY(dbug dbug.c factorial.c sanity.c)
|
||||
SET(DBUG_SOURCES 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);
|
||||
}
|
||||
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);
|
||||
|
||||
pos=0;
|
||||
@ -1449,6 +1449,7 @@ static void FreeState(CODE_STATE *cs, struct settings *state, int free_state)
|
||||
FreeList(state->p_functions);
|
||||
if (!is_shared(state, out_file))
|
||||
DBUGCloseFile(cs, state->out_file);
|
||||
(void) fflush(cs->stack->out_file);
|
||||
if (state->prof_file)
|
||||
DBUGCloseFile(cs, state->prof_file);
|
||||
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);
|
||||
perror("");
|
||||
dbug_flush(0);
|
||||
(void) Delay(cs->stack->delay);
|
||||
}
|
||||
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);
|
||||
perror("");
|
||||
dbug_flush(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1931,7 +1930,7 @@ static void DBUGCloseFile(CODE_STATE *cs, FILE *fp)
|
||||
pthread_mutex_lock(&THR_LOCK_dbug);
|
||||
(void) fprintf(cs->stack->out_file, ERR_CLOSE, cs->process);
|
||||
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)
|
||||
|
||||
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)
|
||||
|
||||
@ -39,13 +39,13 @@ ADD_CUSTOM_TARGET(GenError
|
||||
DEPENDS ${PROJECT_SOURCE_DIR}/include/mysqld_error.h)
|
||||
|
||||
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)
|
||||
TARGET_LINK_LIBRARIES(perror strings mysys dbug wsock32)
|
||||
TARGET_LINK_LIBRARIES(perror strings mysys debug dbug wsock32)
|
||||
|
||||
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)
|
||||
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
|
||||
# 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_LIBRARY(yassl src/buffer.cpp src/cert_wrapper.cpp src/crypto_wrapper.cpp src/handshake.cpp src/lock.cpp
|
||||
ADD_DEFINITIONS("-D_LIB -DYASSL_PREFIX")
|
||||
|
||||
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/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
|
||||
# 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/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
|
||||
@ -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/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)
|
||||
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 auto_increment;
|
||||
my_bool with_auto_increment;
|
||||
my_bool internal_table;
|
||||
} HP_CREATE_INFO;
|
||||
|
||||
/* Prototypes for heap-functions */
|
||||
|
||||
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_write(HP_INFO *info,const uchar *buff);
|
||||
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_create(const char *name, uint keys, HP_KEYDEF *keydef,
|
||||
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 void heap_drop_table(HP_INFO *info);
|
||||
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 resize_in_flush; /* true during flush of resize operation */
|
||||
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 */
|
||||
ulong min_warm_blocks; /* min number of warm 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 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);
|
||||
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);
|
||||
extern void change_key_cache_param(KEY_CACHE *keycache, uint division_limit,
|
||||
uint age_threshold);
|
||||
|
@ -48,6 +48,8 @@
|
||||
#define HA_OPEN_FOR_REPAIR 32 /* open even if crashed */
|
||||
#define HA_OPEN_FROM_SQL_LAYER 64
|
||||
#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 */
|
||||
|
||||
|
@ -31,6 +31,7 @@ C_MODE_START
|
||||
#define GET_DISABLED 11
|
||||
#define GET_ENUM 12
|
||||
#define GET_SET 13
|
||||
#define GET_DOUBLE 14
|
||||
|
||||
#define GET_ASK_ADDR 128
|
||||
#define GET_TYPE_MASK 127
|
||||
|
@ -150,7 +150,7 @@ extern ulonglong sf_malloc_mem_limit;
|
||||
#else
|
||||
#define my_checkmalloc()
|
||||
#undef TERMINATE
|
||||
#define TERMINATE(A) {}
|
||||
#define TERMINATE(A,B) {}
|
||||
#define QUICK_SAFEMALLOC
|
||||
#define NORMAL_SAFEMALLOC
|
||||
extern void *my_malloc(size_t Size,myf MyFlags);
|
||||
@ -618,7 +618,7 @@ extern int nt_share_delete(const char *name,myf MyFlags);
|
||||
#endif
|
||||
|
||||
#ifndef TERMINATE
|
||||
extern void TERMINATE(FILE *file);
|
||||
extern void TERMINATE(FILE *file, uint flag);
|
||||
#endif
|
||||
extern void init_glob_errs(void);
|
||||
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 uchar *my_compress_alloc(const uchar *packet, size_t *len,
|
||||
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 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);
|
||||
void my_free_open_file_info(void);
|
||||
|
||||
extern time_t my_time(myf flags);
|
||||
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 int my_getncpus();
|
||||
|
||||
|
@ -113,6 +113,7 @@ typedef struct st_mysql_field {
|
||||
unsigned int decimals; /* Number of decimals in field */
|
||||
unsigned int charsetnr; /* Character set */
|
||||
enum enum_field_types type; /* Type of field. See mysql_com.h for types */
|
||||
void *extension;
|
||||
} MYSQL_FIELD;
|
||||
|
||||
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 st_mysql_data {
|
||||
MYSQL_ROWS *data;
|
||||
struct embedded_query_result *embedded_info;
|
||||
MEM_ROOT alloc;
|
||||
my_ulonglong rows;
|
||||
unsigned int fields;
|
||||
MYSQL_ROWS *data;
|
||||
MEM_ROOT alloc;
|
||||
/* extra info for embedded library */
|
||||
struct embedded_query_result *embedded_info;
|
||||
void *extension;
|
||||
} MYSQL_DATA;
|
||||
|
||||
enum mysql_option
|
||||
@ -215,6 +217,7 @@ struct st_mysql_options {
|
||||
void (*local_infile_end)(void *);
|
||||
int (*local_infile_error)(void *, char *, unsigned int);
|
||||
void *local_infile_userdata;
|
||||
void *extension;
|
||||
};
|
||||
|
||||
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.
|
||||
*/
|
||||
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' */
|
||||
char *info_buffer;
|
||||
#endif
|
||||
void *extension;
|
||||
} MYSQL;
|
||||
|
||||
|
||||
typedef struct st_mysql_res {
|
||||
my_ulonglong row_count;
|
||||
my_ulonglong row_count;
|
||||
MYSQL_FIELD *fields;
|
||||
MYSQL_DATA *data;
|
||||
MYSQL_ROWS *data_cursor;
|
||||
unsigned long *lengths; /* column lengths of current row */
|
||||
MYSQL *handle; /* for unbuffered reads */
|
||||
MEM_ROOT field_alloc;
|
||||
unsigned int field_count, current_field;
|
||||
const struct st_mysql_methods *methods;
|
||||
MYSQL_ROW row; /* If unbuffered read */
|
||||
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 */
|
||||
/* mysql_stmt_close() had to cancel this result */
|
||||
my_bool unbuffered_fetch_cancelled;
|
||||
const struct st_mysql_methods *methods;
|
||||
void *extension;
|
||||
} MYSQL_RES;
|
||||
|
||||
#define MAX_MYSQL_MANAGER_ERR 256
|
||||
@ -344,21 +348,23 @@ typedef struct st_mysql_res {
|
||||
typedef struct st_mysql_manager
|
||||
{
|
||||
NET net;
|
||||
char *host,*user,*passwd;
|
||||
char *host, *user, *passwd;
|
||||
char *net_buf, *net_buf_pos, *net_data_end;
|
||||
unsigned int port;
|
||||
my_bool free_me;
|
||||
my_bool eof;
|
||||
int cmd_status;
|
||||
int last_errno;
|
||||
char* net_buf,*net_buf_pos,*net_data_end;
|
||||
int net_buf_size;
|
||||
my_bool free_me;
|
||||
my_bool eof;
|
||||
char last_error[MAX_MYSQL_MANAGER_ERR];
|
||||
void *extension;
|
||||
} MYSQL_MANAGER;
|
||||
|
||||
typedef struct st_mysql_parameters
|
||||
{
|
||||
unsigned long *p_max_allowed_packet;
|
||||
unsigned long *p_net_buffer_length;
|
||||
void *extension;
|
||||
} MYSQL_PARAMETERS;
|
||||
|
||||
#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);
|
||||
void STDCALL mysql_server_end(void);
|
||||
|
||||
/*
|
||||
mysql_server_init/end need to be called when using libmysqld or
|
||||
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 */
|
||||
/* set this if you want to track data truncations happened during fetch */
|
||||
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 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 (*fetch_result)(struct st_mysql_bind *, MYSQL_FIELD *,
|
||||
unsigned char **row);
|
||||
void (*skip_result)(struct st_mysql_bind *, MYSQL_FIELD *,
|
||||
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;
|
||||
|
||||
|
||||
@ -692,15 +700,15 @@ typedef struct st_mysql_stmt
|
||||
MYSQL_FIELD *fields; /* result set metadata */
|
||||
MYSQL_DATA result; /* cached result set */
|
||||
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
|
||||
for buffered, unbuffered and cursor fetch).
|
||||
*/
|
||||
int (*read_row_func)(struct st_mysql_stmt *stmt,
|
||||
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 flags; /* i.e. type of cursor to open */
|
||||
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.
|
||||
*/
|
||||
my_bool update_max_length;
|
||||
void *extension;
|
||||
} MYSQL_STMT;
|
||||
|
||||
enum enum_stmt_attr_type
|
||||
|
@ -110,7 +110,7 @@ enum enum_mysql_show_type
|
||||
{
|
||||
SHOW_UNDEF, SHOW_BOOL, SHOW_INT, SHOW_LONG,
|
||||
SHOW_LONGLONG, SHOW_CHAR, SHOW_CHAR_PTR,
|
||||
SHOW_ARRAY, SHOW_FUNC
|
||||
SHOW_ARRAY, SHOW_FUNC, SHOW_DOUBLE
|
||||
};
|
||||
|
||||
struct st_mysql_show_var {
|
||||
|
@ -186,25 +186,25 @@ typedef struct st_vio Vio;
|
||||
|
||||
typedef struct st_net {
|
||||
#if !defined(CHECK_EMBEDDED_DIFFERENCES) || !defined(EMBEDDED_LIBRARY)
|
||||
Vio* vio;
|
||||
Vio *vio;
|
||||
unsigned char *buff,*buff_end,*write_pos,*read_pos;
|
||||
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
|
||||
command ( as in LOAD TABLE ... FROM MASTER ),
|
||||
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 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 char reading_or_writing;
|
||||
char save_char;
|
||||
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 compress;
|
||||
/*
|
||||
Set if OK packet is already sent, and we do not need to send error
|
||||
messages
|
||||
@ -215,20 +215,20 @@ typedef struct st_net {
|
||||
queries in cache that have not stored its results yet
|
||||
*/
|
||||
#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
|
||||
functions and methods to maintain proper locking.
|
||||
*/
|
||||
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 return_errno;
|
||||
char last_error[MYSQL_ERRMSG_SIZE], sqlstate[SQLSTATE_LENGTH+1];
|
||||
void *extension;
|
||||
} NET;
|
||||
|
||||
|
||||
#define packet_error (~(unsigned long) 0)
|
||||
|
||||
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 **attributes; /* Pointer to attribute name */
|
||||
unsigned long *attribute_lengths; /* Length of attribute arguments */
|
||||
void *extension;
|
||||
} UDF_ARGS;
|
||||
|
||||
/* This holds information about the result */
|
||||
@ -399,7 +400,9 @@ typedef struct st_udf_init
|
||||
unsigned int decimals; /* for real functions */
|
||||
unsigned long max_length; /* For string functions */
|
||||
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;
|
||||
|
||||
/* 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
|
||||
# along with this program; if not, write to the Free Software
|
||||
# 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")
|
||||
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX -DUSE_TLS")
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_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")
|
||||
|
||||
# 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
|
||||
${CMAKE_SOURCE_DIR}/zlib
|
||||
${CMAKE_SOURCE_DIR}/extra/yassl/include
|
||||
${CMAKE_SOURCE_DIR}/libmysql
|
||||
${CMAKE_SOURCE_DIR}/regex
|
||||
${CMAKE_SOURCE_DIR}/sql
|
||||
${CMAKE_SOURCE_DIR}/strings)
|
||||
|
||||
ADD_LIBRARY(libmysql SHARED dll.c libmysql.def
|
||||
../mysys/array.c ../strings/bchange.c ../strings/bmove.c
|
||||
# We include the source file listing instead of referencing the
|
||||
# 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
|
||||
../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
|
||||
@ -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-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/default.c errmsg.c ../mysys/errors.c
|
||||
../mysys/hash.c ../mysys/my_sleep.c ../mysys/default_modify.c
|
||||
get_password.c ../strings/int2str.c ../strings/is_prefix.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_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
|
||||
@ -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/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)
|
||||
ADD_DEPENDENCIES(libmysql dbug vio mysys strings GenError zlib yassl taocrypt)
|
||||
TARGET_LINK_LIBRARIES(libmysql mysys strings wsock32)
|
||||
../vio/viossl.c ../vio/viosslfactories.c ../strings/xml.c
|
||||
../mysys/my_getsystime.c ${LIB_SOURCES})
|
||||
|
||||
ADD_EXECUTABLE(myTest mytest.c)
|
||||
TARGET_LINK_LIBRARIES(myTest libmysql)
|
||||
# Need to set USE_TLS for building the DLL, since __declspec(thread)
|
||||
# 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)
|
||||
MYSQL_EMBED_MANIFEST("myTest" "asInvoker")
|
||||
ENDIF(EMBED_MANIFESTS)
|
||||
ADD_LIBRARY(mysqlclient STATIC ${CLIENT_SOURCES})
|
||||
ADD_DEPENDENCIES(mysqlclient GenError)
|
||||
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 \
|
||||
my_pread.lo mf_cache.lo md5.lo sha1.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
|
||||
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=
|
||||
{&max_allowed_packet, &net_buffer_length};
|
||||
{&max_allowed_packet, &net_buffer_length, 0};
|
||||
|
||||
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.
|
||||
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
|
||||
${CMAKE_SOURCE_DIR}/libmysqld
|
||||
${CMAKE_SOURCE_DIR}/libmysql
|
||||
${CMAKE_SOURCE_DIR}/libmysqld
|
||||
${CMAKE_SOURCE_DIR}/libmysql
|
||||
${CMAKE_SOURCE_DIR}/sql
|
||||
${CMAKE_SOURCE_DIR}/regex
|
||||
${CMAKE_SOURCE_DIR}/extra/yassl/include
|
||||
${CMAKE_SOURCE_DIR}/zlib
|
||||
)
|
||||
|
||||
SET_SOURCE_FILES_PROPERTIES(${PROJECT_SOURCE_DIR}/sql/sql_yacc.cc
|
||||
${PROJECT_SOURCE_DIR}/sql/sql_yacc.h
|
||||
SET_SOURCE_FILES_PROPERTIES(sql_yacc.cc
|
||||
sql_yacc.h
|
||||
message.h
|
||||
message.rc
|
||||
${CMAKE_SOURCE_DIR}/sql/sql_builtin.cc
|
||||
lex_hash.h
|
||||
PROPERTIES GENERATED 1)
|
||||
|
||||
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
|
||||
../vio/vio.c ../vio/viosocket.c ../vio/viossl.c
|
||||
../vio/viosslfactories.c
|
||||
${PROJECT_SOURCE_DIR}/sql/sql_yacc.cc
|
||||
${PROJECT_SOURCE_DIR}/sql/sql_yacc.h)
|
||||
sql_yacc.cc
|
||||
sql_yacc.h
|
||||
message.h
|
||||
message.rc
|
||||
lex_hash.h)
|
||||
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
|
||||
# dummy empty file
|
||||
FILE(WRITE cmake_dummy.c " ")
|
||||
@ -120,3 +164,6 @@ ENDIF(WITH_ARCHIVE_STORAGE_ENGINE)
|
||||
IF(WITH_BLACKHOLE_STORAGE_ENGINE)
|
||||
TARGET_LINK_LIBRARIES(libmysqld blackhole)
|
||||
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)
|
||||
MYSQLLIBdir= $(libdir)
|
||||
|
||||
EXTRA_DIST = libmysqld.def
|
||||
EXTRA_DIST = libmysqld.def CMakeLists.txt
|
||||
DEFS = -DEMBEDDED_LIBRARY -DMYSQL_SERVER \
|
||||
-DDEFAULT_MYSQL_HOME="\"$(MYSQLBASEdir)\"" \
|
||||
-DDATADIR="\"$(MYSQLDATAdir)\"" \
|
||||
|
@ -23,11 +23,11 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
|
||||
# Currently does not work with DBUG, there are missing symbols reported.
|
||||
ADD_DEFINITIONS(-DDBUG_OFF)
|
||||
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/sql_string.cc)
|
||||
TARGET_LINK_LIBRARIES(test_libmysqld mysys yassl taocrypt zlib dbug regex strings wsock32)
|
||||
ADD_DEPENDENCIES(test_libmysqld libmysqld)
|
||||
TARGET_LINK_LIBRARIES(mysql_embedded mysys yassl taocrypt zlib dbug regex strings wsock32)
|
||||
ADD_DEPENDENCIES(mysql_embedded libmysqld)
|
||||
|
||||
ADD_EXECUTABLE(mysqltest_embedded ../../client/mysqltest.c)
|
||||
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)
|
||||
BUILT_SOURCES = link_sources
|
||||
CLEANFILES = $(client_sources) $(tests_sources) $(BUILT_SOURCES)
|
||||
EXTRA_DIST = CMakeLists.txt
|
||||
|
||||
link_sources:
|
||||
for f in $(client_sources); do \
|
||||
|
@ -28,11 +28,7 @@ extern "C"
|
||||
extern unsigned long max_allowed_packet, net_buffer_length;
|
||||
}
|
||||
|
||||
#if defined(__WIN__) && !defined(USING_CMAKE)
|
||||
#include "../sql/mysqld.cpp"
|
||||
#else
|
||||
#include "../sql/mysqld.cc"
|
||||
#endif
|
||||
|
||||
C_MODE_START
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
LIBRARY LIBMYSQLD
|
||||
DESCRIPTION 'MySQL 5.0 Embedded Server Library'
|
||||
VERSION 5.0
|
||||
DESCRIPTION 'MySQL 5.1 Embedded Server Library'
|
||||
VERSION 5.1
|
||||
EXPORTS
|
||||
_dig_vec_upper
|
||||
_dig_vec_lower
|
||||
@ -48,6 +48,7 @@ EXPORTS
|
||||
mysql_errno
|
||||
mysql_error
|
||||
mysql_escape_string
|
||||
mysql_hex_string
|
||||
mysql_fetch_field
|
||||
mysql_fetch_field_direct
|
||||
mysql_fetch_fields
|
||||
@ -62,11 +63,13 @@ EXPORTS
|
||||
mysql_get_host_info
|
||||
mysql_get_proto_info
|
||||
mysql_get_server_info
|
||||
mysql_get_client_version
|
||||
mysql_get_ssl_cipher
|
||||
mysql_info
|
||||
mysql_init
|
||||
mysql_insert_id
|
||||
mysql_kill
|
||||
mysql_set_server_option
|
||||
mysql_list_dbs
|
||||
mysql_list_fields
|
||||
mysql_list_processes
|
||||
@ -172,4 +175,3 @@ EXPORTS
|
||||
my_charset_bin
|
||||
my_charset_same
|
||||
modify_defaults_file
|
||||
mysql_set_server_option
|
||||
|
@ -693,6 +693,37 @@ sub command_line_setup () {
|
||||
|
||||
$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
|
||||
# number as early as possible
|
||||
@ -717,6 +748,7 @@ sub command_line_setup () {
|
||||
if (!$opt_extern)
|
||||
{
|
||||
$exe_mysqld= mtr_exe_exists (vs_config_dirs('sql', 'mysqld'),
|
||||
vs_config_dirs('sql', 'mysqld-debug'),
|
||||
"$glob_basedir/sql/mysqld",
|
||||
"$path_client_bindir/mysqld-max-nt",
|
||||
"$path_client_bindir/mysqld-max",
|
||||
@ -1662,7 +1694,7 @@ sub generate_cmdline_mysqldump ($) {
|
||||
my($mysqld) = @_;
|
||||
return
|
||||
mtr_native_path($exe_mysqldump) .
|
||||
" --no-defaults -uroot --debug-info " .
|
||||
" --no-defaults -uroot --debug-check " .
|
||||
"--port=$mysqld->{'port'} " .
|
||||
"--socket=$mysqld->{'path_sock'} --password=";
|
||||
}
|
||||
@ -1915,7 +1947,7 @@ sub environment_setup () {
|
||||
# ----------------------------------------------------
|
||||
my $cmdline_mysqlcheck=
|
||||
mtr_native_path($exe_mysqlcheck) .
|
||||
" --no-defaults --debug-info -uroot " .
|
||||
" --no-defaults --debug-check -uroot " .
|
||||
"--port=$master->[0]->{'port'} " .
|
||||
"--socket=$master->[0]->{'path_sock'} --password=";
|
||||
|
||||
@ -1967,7 +1999,7 @@ sub environment_setup () {
|
||||
# ----------------------------------------------------
|
||||
my $cmdline_mysqlimport=
|
||||
mtr_native_path($exe_mysqlimport) .
|
||||
" -uroot --debug-info " .
|
||||
" -uroot --debug-check " .
|
||||
"--port=$master->[0]->{'port'} " .
|
||||
"--socket=$master->[0]->{'path_sock'} --password=";
|
||||
|
||||
@ -1984,7 +2016,7 @@ sub environment_setup () {
|
||||
# ----------------------------------------------------
|
||||
my $cmdline_mysqlshow=
|
||||
mtr_native_path($exe_mysqlshow) .
|
||||
" -uroot --debug-info " .
|
||||
" -uroot --debug-check " .
|
||||
"--port=$master->[0]->{'port'} " .
|
||||
"--socket=$master->[0]->{'path_sock'} --password=";
|
||||
|
||||
@ -2000,7 +2032,7 @@ sub environment_setup () {
|
||||
# ----------------------------------------------------
|
||||
my $cmdline_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 )
|
||||
{
|
||||
$cmdline_mysqlbinlog .=" --character-sets-dir=$path_charsetsdir";
|
||||
@ -2018,7 +2050,7 @@ sub environment_setup () {
|
||||
# ----------------------------------------------------
|
||||
my $cmdline_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'} " .
|
||||
"--socket=$master->[0]->{'path_sock'} ".
|
||||
"--character-sets-dir=$path_charsetsdir";
|
||||
@ -2449,6 +2481,7 @@ sub vs_config_dirs ($$) {
|
||||
}
|
||||
|
||||
return ("$glob_basedir/$path_part/release/$exe",
|
||||
"$glob_basedir/$path_part/relwithdebinfo/$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;
|
||||
INSERT INTO t1 SELECT UUID();
|
||||
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;
|
||||
Level Warning
|
||||
Code 1589
|
||||
Code 1590
|
||||
Message Statement is not safe to log in statement format.
|
||||
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
|
||||
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
|
||||
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;
|
||||
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;
|
||||
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
|
||||
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
|
||||
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;
|
||||
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
|
||||
|
@ -154,7 +154,7 @@ teststring
|
||||
teststring
|
||||
explain select * from t1 order by text1;
|
||||
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;
|
||||
select * from t1 order by text1;
|
||||
text1
|
||||
|
@ -31,7 +31,7 @@ create event e_55 on schedule at 10000101000000 do drop table t;
|
||||
ERROR HY000: Incorrect AT value: '10000101000000'
|
||||
create event e_55 on schedule at 20000101000000 do drop table t;
|
||||
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;
|
||||
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;
|
||||
@ -457,22 +457,22 @@ CREATE EVENT e4 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00'
|
||||
DO
|
||||
SELECT 1;
|
||||
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'
|
||||
ENDS '1999-01-02 00:00:00' DISABLE
|
||||
DO
|
||||
SELECT 1;
|
||||
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
|
||||
SELECT 1;
|
||||
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
|
||||
DO
|
||||
SELECT 1;
|
||||
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;
|
||||
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
|
||||
@ -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'
|
||||
ENDS '1999-01-02 00:00:00' ON COMPLETION PRESERVE;
|
||||
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'
|
||||
ENDS '1999-01-02 00:00:00' ON COMPLETION PRESERVE
|
||||
DO
|
||||
SELECT 1;
|
||||
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'
|
||||
ON COMPLETION PRESERVE
|
||||
DO
|
||||
SELECT 1;
|
||||
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.
|
||||
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'
|
||||
|
@ -41,7 +41,7 @@ SELECT user_host, query_time, db, sql_text FROM mysql.slow_log;
|
||||
user_host query_time db sql_text
|
||||
"Set new values"
|
||||
SET GLOBAL long_query_time=4;
|
||||
SET SESSION long_query_time=1;
|
||||
SET SESSION long_query_time=0.5;
|
||||
"Check that logging is working"
|
||||
SELECT SLEEP(2);
|
||||
SLEEP(2)
|
||||
|
@ -63,7 +63,7 @@ begin work;
|
||||
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;
|
||||
Warnings:
|
||||
Note 1534 Event 'e1' already exists
|
||||
Note 1535 Event 'e1' already exists
|
||||
rollback work;
|
||||
select * from t1;
|
||||
a
|
||||
|
@ -1920,6 +1920,20 @@ a b
|
||||
2 Curly
|
||||
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)
|
||||
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);
|
||||
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
|
||||
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;
|
||||
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
|
||||
|
@ -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
|
||||
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
|
||||
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;
|
||||
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:
|
||||
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;
|
||||
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:
|
||||
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;
|
||||
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;
|
||||
a1
|
||||
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);
|
||||
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
|
||||
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
|
||||
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
|
||||
|
@ -289,8 +289,8 @@ explain select a.ROUTINE_NAME from information_schema.ROUTINES a,
|
||||
information_schema.SCHEMATA b where
|
||||
a.ROUTINE_SCHEMA = b.SCHEMA_NAME;
|
||||
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 2 Using where; Using join buffer
|
||||
1 SIMPLE # ALL NULL NULL NULL NULL NULL
|
||||
1 SIMPLE # ALL NULL NULL NULL NULL NULL Using where; Using join buffer
|
||||
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;
|
||||
ROUTINE_NAME name
|
||||
@ -355,7 +355,7 @@ mysql
|
||||
test
|
||||
explain select * from v0;
|
||||
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
|
||||
where table_name="v1";
|
||||
select * from v1;
|
||||
@ -679,17 +679,11 @@ where table_schema='test';
|
||||
table_name
|
||||
v2
|
||||
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
|
||||
where table_schema='test';
|
||||
table_name
|
||||
v2
|
||||
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
|
||||
where table_schema='test';
|
||||
column_name
|
||||
@ -1337,11 +1331,11 @@ from information_schema.tables
|
||||
order by object_schema;
|
||||
explain select * from v1;
|
||||
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;
|
||||
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
|
||||
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;
|
||||
create table t1 (f1 int(11));
|
||||
create table t2 (f1 int(11), f2 int(11));
|
||||
@ -1445,4 +1439,28 @@ ABORTED_CONNECTS
|
||||
BINLOG_CACHE_DISK_USE
|
||||
DROP TABLE server_status;
|
||||
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.
|
||||
|
@ -74,11 +74,11 @@ drop table t1;
|
||||
select table_name, table_type, table_comment from information_schema.tables
|
||||
where table_schema='inf%' and func2();
|
||||
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
|
||||
where table_schema='inf%' and func2();
|
||||
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 function func1;
|
||||
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 #
|
||||
explain select * from t1 order by b;
|
||||
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;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
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
|
||||
select_type SIMPLE
|
||||
table t1
|
||||
type range
|
||||
type index
|
||||
possible_keys bkey
|
||||
key bkey
|
||||
key_len 5
|
||||
key PRIMARY
|
||||
key_len 4
|
||||
ref NULL
|
||||
rows 16
|
||||
Extra Using where; Using index; Using filesort
|
||||
rows 32
|
||||
Extra Using where
|
||||
SELECT * FROM t1 WHERE b BETWEEN 1 AND 2 ORDER BY a;
|
||||
a b
|
||||
1 2
|
||||
@ -974,13 +974,13 @@ EXPLAIN SELECT * FROM t2 WHERE b=1 ORDER BY a;
|
||||
id 1
|
||||
select_type SIMPLE
|
||||
table t2
|
||||
type ref
|
||||
type index
|
||||
possible_keys bkey
|
||||
key bkey
|
||||
key_len 5
|
||||
ref const
|
||||
rows 8
|
||||
Extra Using where; Using index; Using filesort
|
||||
key PRIMARY
|
||||
key_len 4
|
||||
ref NULL
|
||||
rows 16
|
||||
Extra Using where; Using index
|
||||
SELECT * FROM t2 WHERE b=1 ORDER BY a;
|
||||
a b c
|
||||
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;
|
||||
ERROR HY000: You can't combine write-locking of system tables with other tables or lock types
|
||||
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.
|
||||
|
@ -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; //
|
||||
unlock tables;
|
||||
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);
|
||||
sleep(2)
|
||||
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
|
||||
set global slow_query_log= ON;
|
||||
set session long_query_time=1;
|
||||
select sleep(2);
|
||||
sleep(2)
|
||||
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
|
||||
TIMESTAMP USER_HOST QUERY_TIME 00:00:00 1 0 test 0 0 1 select sleep(2)
|
||||
show global variables
|
||||
|
@ -86,7 +86,7 @@ a b
|
||||
19 Testing
|
||||
explain select a from t3 order by a desc limit 10;
|
||||
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;
|
||||
a
|
||||
699
|
||||
|
@ -177,3 +177,4 @@ ERROR at line 1: DELIMITER cannot contain a backslash character
|
||||
1
|
||||
1
|
||||
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 t2 ref a a 5 const 2 Using where; Using index
|
||||
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 f2 ref inx inx 5 test.f1.b 1 Using where; Using index
|
||||
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
|
||||
|
@ -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;
|
||||
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 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;
|
||||
email
|
||||
email1
|
||||
|
@ -5670,7 +5670,7 @@ drop function if exists pi;
|
||||
create function pi() returns varchar(50)
|
||||
return "pie, my favorite desert.";
|
||||
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 SQL_MODE='IGNORE_SPACE';
|
||||
select pi(), pi ();
|
||||
@ -5719,15 +5719,15 @@ use test;
|
||||
create function `database`() returns varchar(50)
|
||||
return "Stored function database";
|
||||
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)
|
||||
return "Stored function current_user";
|
||||
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)
|
||||
return "Stored function md5";
|
||||
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';
|
||||
select database(), database ();
|
||||
database() database ()
|
||||
|
@ -7,11 +7,11 @@ return 1;
|
||||
create function x() returns int
|
||||
return 2;
|
||||
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
|
||||
return 3;
|
||||
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();
|
||||
a()
|
||||
1
|
||||
|
@ -3419,7 +3419,7 @@ EXPLAIN
|
||||
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
|
||||
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;
|
||||
create table t1( f1 int,f2 int);
|
||||
insert into t1 values (1,1),(2,2);
|
||||
|
@ -618,6 +618,30 @@ bit_field int_field
|
||||
2
|
||||
handler t1 close;
|
||||
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
|
||||
create table t1(a bit(7));
|
||||
insert into t1 values(0x40);
|
||||
|
@ -444,7 +444,14 @@ set interactive_timeout=100;
|
||||
set join_buffer_size=100;
|
||||
set last_insert_id=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 max_allowed_packet=100;
|
||||
set global max_binlog_cache_size=100;
|
||||
@ -516,6 +523,7 @@ set tmp_table_size=100;
|
||||
set tx_isolation="READ-COMMITTED";
|
||||
set wait_timeout=100;
|
||||
set log_warnings=1;
|
||||
set global log_warnings=1;
|
||||
select @@session.insert_id;
|
||||
@@session.insert_id
|
||||
1
|
||||
|
@ -647,32 +647,32 @@ select extractValue('<a>a','/a');
|
||||
extractValue('<a>a','/a')
|
||||
NULL
|
||||
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');
|
||||
extractValue('<a>a<','/a')
|
||||
NULL
|
||||
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');
|
||||
extractValue('<a>a</','/a')
|
||||
NULL
|
||||
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');
|
||||
extractValue('<a>a</a','/a')
|
||||
NULL
|
||||
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');
|
||||
extractValue('<a>a</a></b>','/a')
|
||||
NULL
|
||||
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');
|
||||
extractValue('<a b=>a</a>','/a')
|
||||
NULL
|
||||
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()');
|
||||
ERROR HY000: XPATH syntax error: ''
|
||||
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>','//*')
|
||||
NULL
|
||||
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</.>','//*');
|
||||
extractValue('<.>test</.>','//*')
|
||||
NULL
|
||||
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</->','//*');
|
||||
extractValue('<->test</->','//*')
|
||||
NULL
|
||||
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</:>','//*');
|
||||
extractValue('<:>test</:>','//*')
|
||||
test
|
||||
|
@ -34,13 +34,13 @@ col5 enum('PENDING', 'ACTIVE', 'DISABLED') not null,
|
||||
col6 int not null, to_be_deleted int) ENGINE=ndbcluster;
|
||||
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
|
||||
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;
|
||||
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);
|
||||
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
|
||||
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;
|
||||
col1 col2 col3 col4 col5 col6 to_be_deleted
|
||||
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;
|
||||
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
|
||||
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;
|
||||
col6 col1 col3 fourth col4 col4_5 col5 col7 col8
|
||||
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');
|
||||
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
|
||||
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;
|
||||
col6 col1 col3 fourth col4 col4_5 col5 col7 col8
|
||||
1 0 3 4 5 PENDING 0000-00-00 00:00:00
|
||||
|
@ -5,20 +5,20 @@ INITIAL_SIZE 16M
|
||||
UNDO_BUFFER_SIZE = 1M
|
||||
ENGINE=MYISAM;
|
||||
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
|
||||
ADD UNDOFILE 'undofile02.dat'
|
||||
INITIAL_SIZE = 4M
|
||||
ENGINE=XYZ;
|
||||
Warnings:
|
||||
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
|
||||
ADD DATAFILE 'datafile.dat'
|
||||
USE LOGFILE GROUP lg1
|
||||
INITIAL_SIZE 12M;
|
||||
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;
|
||||
CREATE LOGFILE GROUP lg1
|
||||
ADD UNDOFILE 'undofile.dat'
|
||||
|
@ -16,7 +16,7 @@ ERROR HY000: Failed to create LOGFILE GROUP
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
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
|
||||
ADD UNDOFILE 'undofile.dat'
|
||||
INITIAL_SIZE 1M
|
||||
|
@ -463,7 +463,7 @@ drop table t1;
|
||||
End of 4.1 tests
|
||||
CREATE TABLE t1 (name VARCHAR(100), square GEOMETRY);
|
||||
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("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))'));
|
||||
@ -1013,7 +1013,7 @@ drop table t1;
|
||||
End of 4.1 tests
|
||||
CREATE TABLE t1 (name VARCHAR(100), square GEOMETRY);
|
||||
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("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))'));
|
||||
|
@ -8,7 +8,7 @@ ENGINE=NDB;
|
||||
ERROR HY000: Can't create table 'test.t1' (errno: 138)
|
||||
SHOW WARNINGS;
|
||||
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)
|
||||
CREATE TABLE t1
|
||||
( a INT KEY,
|
||||
|
@ -11,7 +11,7 @@ ERROR HY000: Failed to create LOGFILE GROUP
|
||||
show warnings;
|
||||
Level Code Message
|
||||
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 LOGFILE GROUP lg1
|
||||
ADD UNDOFILE 'undofile.dat'
|
||||
@ -27,14 +27,14 @@ ERROR HY000: Failed to create TABLESPACE
|
||||
show warnings;
|
||||
Level Code Message
|
||||
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
|
||||
ENGINE =NDB;
|
||||
ERROR HY000: Failed to drop LOGFILE GROUP
|
||||
show warnings;
|
||||
Level Code Message
|
||||
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
|
||||
ADD DATAFILE 'datafile.dat'
|
||||
USE LOGFILE GROUP lg1
|
||||
@ -47,7 +47,7 @@ ERROR HY000: Failed to alter: DROP DATAFILE
|
||||
show warnings;
|
||||
Level Code Message
|
||||
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
|
||||
DROP DATAFILE 'datafile.dat'
|
||||
ENGINE NDB;
|
||||
@ -57,7 +57,7 @@ ERROR HY000: Failed to drop TABLESPACE
|
||||
show warnings;
|
||||
Level Code Message
|
||||
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
|
||||
ENGINE NDB;
|
||||
DROP LOGFILE GROUP lg1
|
||||
|
@ -9,7 +9,7 @@ SET SESSION storage_engine=NDBCLUSTER;
|
||||
create table t1 (a int key);
|
||||
select engine from information_schema.tables where table_name = 't1';
|
||||
engine
|
||||
NDBCLUSTER
|
||||
ndbcluster
|
||||
drop table t1;
|
||||
create temporary table t1 (a int key);
|
||||
show create table t1;
|
||||
|
@ -139,7 +139,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table #
|
||||
Replicate_Wild_Do_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
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -157,7 +157,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno #
|
||||
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
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -201,7 +201,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table #
|
||||
Replicate_Wild_Do_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
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -219,7 +219,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno #
|
||||
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
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -263,7 +263,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table #
|
||||
Replicate_Wild_Do_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
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -281,7 +281,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno #
|
||||
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
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -324,7 +324,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table #
|
||||
Replicate_Wild_Do_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
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -342,7 +342,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno #
|
||||
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
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=3;
|
||||
*** Drop t6 ***
|
||||
@ -436,7 +436,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table #
|
||||
Replicate_Wild_Do_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
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -454,7 +454,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno #
|
||||
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
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -497,7 +497,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table #
|
||||
Replicate_Wild_Do_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
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -515,7 +515,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno #
|
||||
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
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -822,7 +822,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table #
|
||||
Replicate_Wild_Do_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
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -840,7 +840,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno #
|
||||
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
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
|
@ -139,7 +139,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table #
|
||||
Replicate_Wild_Do_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
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -157,7 +157,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno #
|
||||
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
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -201,7 +201,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table #
|
||||
Replicate_Wild_Do_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
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -219,7 +219,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno #
|
||||
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
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -263,7 +263,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table #
|
||||
Replicate_Wild_Do_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
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -281,7 +281,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno #
|
||||
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
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -324,7 +324,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table #
|
||||
Replicate_Wild_Do_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
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -342,7 +342,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno #
|
||||
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
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=3;
|
||||
*** Drop t6 ***
|
||||
@ -436,7 +436,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table #
|
||||
Replicate_Wild_Do_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
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -454,7 +454,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno #
|
||||
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
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -497,7 +497,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table #
|
||||
Replicate_Wild_Do_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
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -515,7 +515,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno #
|
||||
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
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -822,7 +822,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table #
|
||||
Replicate_Wild_Do_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
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -840,7 +840,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno #
|
||||
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
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
|
@ -44,7 +44,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 1587
|
||||
Last_Errno 1588
|
||||
Last_Error The incident LOST_EVENTS occured on the master. Message: <none>
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -62,7 +62,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno 0
|
||||
Last_IO_Error
|
||||
Last_SQL_Errno 1587
|
||||
Last_SQL_Errno 1588
|
||||
Last_SQL_Error The incident LOST_EVENTS occured on the master. Message: <none>
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
|
||||
START SLAVE;
|
||||
|
@ -65,7 +65,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table #
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 1590
|
||||
Last_Errno 1591
|
||||
Last_Error Fatal error: Not enough memory
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos 325
|
||||
@ -83,7 +83,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno #
|
||||
Last_IO_Error #
|
||||
Last_SQL_Errno 1590
|
||||
Last_SQL_Errno 1591
|
||||
Last_SQL_Error Fatal error: Not enough memory
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
|
||||
START SLAVE;
|
||||
|
@ -214,7 +214,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_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
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -232,7 +232,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno 0
|
||||
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
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -257,7 +257,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_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
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -275,7 +275,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno 0
|
||||
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
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -300,7 +300,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_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
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -318,7 +318,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno 0
|
||||
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
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
|
@ -214,7 +214,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_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
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -232,7 +232,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno 0
|
||||
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
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -257,7 +257,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_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
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -275,7 +275,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno 0
|
||||
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
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -300,7 +300,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_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
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -318,7 +318,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno 0
|
||||
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
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
|
@ -105,3 +105,21 @@ t n
|
||||
2005-01-01 08:00:00 17
|
||||
drop table t1, t2;
|
||||
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
|
||||
INSERT INTO t1 VALUES(myfunc_int(100), myfunc_double(50.00));
|
||||
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
|
||||
INSERT INTO t1 VALUES(myfunc_int(10), myfunc_double(5.00));
|
||||
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
|
||||
INSERT INTO t1 VALUES(myfunc_int(200), myfunc_double(25.00));
|
||||
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
|
||||
INSERT INTO t1 VALUES(myfunc_int(1), myfunc_double(500.00));
|
||||
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
|
||||
SELECT * FROM t1 ORDER BY sum;
|
||||
sum price
|
||||
|
@ -14,6 +14,22 @@ connection slave;
|
||||
reset slave;
|
||||
start slave io_thread;
|
||||
# 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;
|
||||
# A bug caused the I/O thread to refuse stopping.
|
||||
stop slave io_thread;
|
||||
|
@ -140,3 +140,30 @@ sync_slave_with_master;
|
||||
# Restore original timezone
|
||||
connection master;
|
||||
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_Wild_Do_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
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -157,7 +157,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno #
|
||||
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
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -201,7 +201,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table #
|
||||
Replicate_Wild_Do_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
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -219,7 +219,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno #
|
||||
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
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -263,7 +263,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table #
|
||||
Replicate_Wild_Do_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
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -281,7 +281,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno #
|
||||
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
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -324,7 +324,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table #
|
||||
Replicate_Wild_Do_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
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -342,7 +342,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno #
|
||||
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
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=3;
|
||||
*** Drop t6 ***
|
||||
@ -436,7 +436,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table #
|
||||
Replicate_Wild_Do_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
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -454,7 +454,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno #
|
||||
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
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -497,7 +497,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table #
|
||||
Replicate_Wild_Do_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
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -515,7 +515,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno #
|
||||
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
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
START SLAVE;
|
||||
@ -823,7 +823,7 @@ Replicate_Do_Table
|
||||
Replicate_Ignore_Table #
|
||||
Replicate_Wild_Do_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
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
@ -841,7 +841,7 @@ Seconds_Behind_Master #
|
||||
Master_SSL_Verify_Server_Cert No
|
||||
Last_IO_Errno #
|
||||
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
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||
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 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 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;
|
||||
|
||||
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;
|
||||
--echo "Set new values"
|
||||
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"
|
||||
SELECT SLEEP(2);
|
||||
--replace_column 1 USER_HOST 2 SLEEPVAL
|
||||
|
@ -1725,6 +1725,20 @@ drop table federated.t1;
|
||||
connection slave;
|
||||
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
|
||||
|
@ -1100,4 +1100,24 @@ SELECT variable_name FROM server_status;
|
||||
DROP TABLE server_status;
|
||||
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.
|
||||
|
@ -148,5 +148,70 @@ LOCK TABLES mysql.time_zone READ, mysql.proc WRITE;
|
||||
|
||||
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.
|
||||
|
@ -270,3 +270,38 @@ drop table t1;
|
||||
|
||||
# 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;
|
||||
select sleep(2);
|
||||
--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;
|
||||
|
||||
set global slow_query_log= ON;
|
||||
@ -36,7 +36,7 @@ connection con1;
|
||||
set session long_query_time=1;
|
||||
select sleep(2);
|
||||
--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;
|
||||
show global variables
|
||||
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
|
||||
|
||||
--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;
|
||||
|
||||
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);
|
||||
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
|
||||
|
@ -272,6 +272,25 @@ handler t1 read a=(1);
|
||||
handler t1 close;
|
||||
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
|
||||
|
||||
#
|
||||
|
@ -268,7 +268,10 @@ set interactive_timeout=100;
|
||||
set join_buffer_size=100;
|
||||
set last_insert_id=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 max_allowed_packet=100;
|
||||
set global max_binlog_cache_size=100;
|
||||
@ -327,6 +330,7 @@ set tmp_table_size=100;
|
||||
set tx_isolation="READ-COMMITTED";
|
||||
set wait_timeout=100;
|
||||
set log_warnings=1;
|
||||
set global log_warnings=1;
|
||||
|
||||
#
|
||||
# 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
|
||||
# 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")
|
||||
|
||||
# Need to set USE_TLS, since mysys is linked into libmysql.dll and
|
||||
# libmysqld.dll, and __declspec(thread) approach to thread local storage does
|
||||
# not work properly in DLLs.
|
||||
# Currently, USE_TLS crashes in Debug builds, so until that is fixed Debug
|
||||
# .dlls cannot be loaded at runtime.
|
||||
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DUSE_TLS")
|
||||
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DUSE_TLS")
|
||||
# Only the server link with this library, the client libraries and the client
|
||||
# executables all link with recompiles of source found in the "mysys" directory.
|
||||
# So we only need to create one version of this library, with the "static"
|
||||
# Thread Local Storage model.
|
||||
#
|
||||
# Exception is the embedded server that needs this library compiled with
|
||||
# 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
|
||||
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
|
||||
|
@ -326,14 +326,14 @@ static int charset_initialized=0;
|
||||
|
||||
static my_bool my_read_charset_file(const char *filename, myf myflags)
|
||||
{
|
||||
char *buf;
|
||||
uchar *buf;
|
||||
int fd;
|
||||
uint len, tmp_len;
|
||||
MY_STAT stat_info;
|
||||
|
||||
if (!my_stat(filename, &stat_info, MYF(myflags)) ||
|
||||
((len= (uint)stat_info.st_size) > MY_MAX_ALLOWED_BUF) ||
|
||||
!(buf= (char *)my_malloc(len,myflags)))
|
||||
!(buf= (uchar*) my_malloc(len,myflags)))
|
||||
return TRUE;
|
||||
|
||||
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)
|
||||
goto error;
|
||||
|
||||
if (my_parse_charset_xml(buf,len,add_collation))
|
||||
if (my_parse_charset_xml((char*) buf,len,add_collation))
|
||||
{
|
||||
#ifdef NOT_YET
|
||||
printf("ERROR at line %d pos %d '%s'\n",
|
||||
|
@ -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,
|
||||
MYF(MY_WME)) ||
|
||||
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)))
|
||||
goto err;
|
||||
}
|
||||
|
20
mysys/hash.c
20
mysys/hash.c
@ -137,7 +137,7 @@ void my_hash_reset(HASH *hash)
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
/* some helper functions */
|
||||
/* some helper functions */
|
||||
|
||||
/*
|
||||
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)
|
||||
{
|
||||
if (hash->get_key)
|
||||
return (*hash->get_key)(record,length,first);
|
||||
return (char*) (*hash->get_key)(record,length,first);
|
||||
*length=hash->key_length;
|
||||
return (uchar*) record+hash->key_offset;
|
||||
return (char*) record+hash->key_offset;
|
||||
}
|
||||
|
||||
/* 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;
|
||||
HASH_LINK *data,*empty,*gpos,*gpos2,*pos;
|
||||
|
||||
LINT_INIT(gpos); LINT_INIT(gpos2);
|
||||
LINT_INIT(ptr_to_rec); LINT_INIT(ptr_to_rec2);
|
||||
LINT_INIT(gpos);
|
||||
LINT_INIT(gpos2);
|
||||
LINT_INIT(ptr_to_rec);
|
||||
LINT_INIT(ptr_to_rec2);
|
||||
|
||||
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))
|
||||
return(TRUE); /* Duplicate entry */
|
||||
}
|
||||
@ -544,14 +546,16 @@ my_bool hash_update(HASH *hash, uchar *record, uchar *old_key,
|
||||
if (HASH_UNIQUE & hash->flags)
|
||||
{
|
||||
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)))
|
||||
{
|
||||
do
|
||||
{
|
||||
if (found != (char*) record)
|
||||
if (found != record)
|
||||
DBUG_RETURN(1); /* Duplicate entry */
|
||||
}
|
||||
while ((found= hash_next(hash, new_key, idx, &state)));
|
||||
}
|
||||
}
|
||||
|
||||
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