Merge synthia.local:/home/mydev/mysql-5.0-amain
into synthia.local:/home/mydev/mysql-5.0-axmrg
This commit is contained in:
commit
f0c883f3fb
112
CMakeLists.txt
112
CMakeLists.txt
@ -22,53 +22,38 @@ CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/include/mysql_version.h.in
|
||||
${CMAKE_SOURCE_DIR}/include/mysql_version.h @ONLY)
|
||||
|
||||
# Set standard options
|
||||
ADD_DEFINITIONS(-D WITH_MYISAM_STORAGE_ENGINE)
|
||||
ADD_DEFINITIONS(-D CMAKE_BUILD)
|
||||
ADD_DEFINITIONS(-D HAVE_YASSL)
|
||||
ADD_DEFINITIONS(-DCMAKE_BUILD)
|
||||
ADD_DEFINITIONS(-DHAVE_YASSL)
|
||||
|
||||
# Set debug options
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DFORCE_INIT_OF_VARS")
|
||||
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DFORCE_INIT_OF_VARS")
|
||||
|
||||
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_myisam_plugin")
|
||||
|
||||
# Note that some engines are always compiled in, MyISAM, MyISAMMRG, HEAP
|
||||
|
||||
IF(WITH_ARCHIVE_STORAGE_ENGINE)
|
||||
ADD_DEFINITIONS(-D HAVE_ARCHIVE_DB)
|
||||
ADD_DEFINITIONS(-DHAVE_ARCHIVE_DB)
|
||||
ENDIF(WITH_ARCHIVE_STORAGE_ENGINE)
|
||||
|
||||
IF (WITH_HEAP_STORAGE_ENGINE)
|
||||
ADD_DEFINITIONS(-D WITH_HEAP_STORAGE_ENGINE)
|
||||
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_heap_plugin")
|
||||
ENDIF (WITH_HEAP_STORAGE_ENGINE)
|
||||
|
||||
IF (WITH_MYISAMMRG_STORAGE_ENGINE)
|
||||
ADD_DEFINITIONS(-D WITH_MYISAMMRG_STORAGE_ENGINE)
|
||||
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_myisammrg_plugin")
|
||||
ENDIF (WITH_MYISAMMRG_STORAGE_ENGINE)
|
||||
|
||||
IF(WITH_INNOBASE_STORAGE_ENGINE)
|
||||
ADD_DEFINITIONS(-D HAVE_INNOBASE_DB)
|
||||
ADD_DEFINITIONS(-D WITH_INNOBASE_STORAGE_ENGINE)
|
||||
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_innobase_plugin")
|
||||
ENDIF(WITH_INNOBASE_STORAGE_ENGINE)
|
||||
|
||||
IF(WITH_FEDERATED_STORAGE_ENGINE)
|
||||
ADD_DEFINITIONS(-D HAVE_FEDERATED_DB)
|
||||
ADD_DEFINITIONS(-D WITH_FEDERATED_STORAGE_ENGINE)
|
||||
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_federated_plugin")
|
||||
ENDIF(WITH_FEDERATED_STORAGE_ENGINE)
|
||||
|
||||
IF(WITH_BERKELEY_STORAGE_ENGINE)
|
||||
ADD_DEFINITIONS(-D HAVE_BERKELEY_DB)
|
||||
ADD_DEFINITIONS(-D WITH_BERKELEY_STORAGE_ENGINE)
|
||||
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_berkeley_plugin")
|
||||
ADD_DEFINITIONS(-DHAVE_BERKELEY_DB)
|
||||
ENDIF(WITH_BERKELEY_STORAGE_ENGINE)
|
||||
|
||||
IF (WITH_BLACKHOLE_STORAGE_ENGINE)
|
||||
ADD_DEFINITIONS(-D HAVE_BLACKHOLE_DB)
|
||||
ADD_DEFINITIONS(-DHAVE_BLACKHOLE_DB)
|
||||
ENDIF (WITH_BLACKHOLE_STORAGE_ENGINE)
|
||||
|
||||
IF(WITH_EXAMPLE_STORAGE_ENGINE)
|
||||
ADD_DEFINITIONS(-DHAVE_EXAMPLE_DB)
|
||||
ENDIF(WITH_EXAMPLE_STORAGE_ENGINE)
|
||||
|
||||
IF(WITH_FEDERATED_STORAGE_ENGINE)
|
||||
ADD_DEFINITIONS(-DHAVE_FEDERATED_DB)
|
||||
ENDIF(WITH_FEDERATED_STORAGE_ENGINE)
|
||||
|
||||
IF(WITH_INNOBASE_STORAGE_ENGINE)
|
||||
ADD_DEFINITIONS(-DHAVE_INNOBASE_DB)
|
||||
ENDIF(WITH_INNOBASE_STORAGE_ENGINE)
|
||||
|
||||
SET(localstatedir "C:\\mysql\\data")
|
||||
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/support-files/my-huge.cnf.sh
|
||||
${CMAKE_SOURCE_DIR}/support-files/my-huge.ini @ONLY)
|
||||
@ -82,14 +67,14 @@ CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/support-files/my-small.cnf.sh
|
||||
${CMAKE_SOURCE_DIR}/support-files/my-small.ini @ONLY)
|
||||
|
||||
IF(__NT__)
|
||||
ADD_DEFINITIONS(-D __NT__)
|
||||
ADD_DEFINITIONS(-D__NT__)
|
||||
ENDIF(__NT__)
|
||||
|
||||
# in some places we use DBUG_OFF
|
||||
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -D DBUG_OFF")
|
||||
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -D DBUG_OFF")
|
||||
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -D DBUG_OFF")
|
||||
SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -D 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")
|
||||
@ -102,41 +87,32 @@ 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 "/MD" "/MT" CMAKE_C_FLAGS_RELWITHDEBINFO
|
||||
${CMAKE_C_FLAGS_RELWITHDEBINFO})
|
||||
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 "/MD" "/MT" CMAKE_CXX_FLAGS_RELWITHDEBINFO
|
||||
${CMAKE_CXX_FLAGS_RELWITHDEBINFO})
|
||||
STRING(REPLACE "/MDd" "/MTd" CMAKE_CXX_FLAGS_DEBUG
|
||||
${CMAKE_CXX_FLAGS_DEBUG})
|
||||
|
||||
# generate map files
|
||||
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MAP /MAPINFO:EXPORTS")
|
||||
# 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})
|
||||
|
||||
# set stack size (see bug#20815)
|
||||
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:1048576")
|
||||
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})
|
||||
|
||||
# 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")
|
||||
|
||||
ADD_DEFINITIONS("-D_WINDOWS -D__WIN__ -D _CRT_SECURE_NO_DEPRECATE")
|
||||
ADD_DEFINITIONS("-D_WINDOWS -D__WIN__ -D_CRT_SECURE_NO_DEPRECATE")
|
||||
|
||||
IF(EMBED_MANIFESTS)
|
||||
# Search for the tools (mt, makecat, signtool) necessary for embedding
|
||||
@ -196,6 +172,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)
|
||||
|
@ -14,128 +14,48 @@
|
||||
# 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}/mysys
|
||||
${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)
|
||||
|
||||
SET(TAOCRYPT_SOURCES ../extra/yassl/taocrypt/src/aes.cpp
|
||||
../extra/yassl/taocrypt/src/aestables.cpp
|
||||
../extra/yassl/taocrypt/src/algebra.cpp
|
||||
../extra/yassl/taocrypt/src/arc4.cpp
|
||||
../extra/yassl/taocrypt/src/asn.cpp
|
||||
../extra/yassl/taocrypt/src/coding.cpp
|
||||
../extra/yassl/taocrypt/src/des.cpp
|
||||
../extra/yassl/taocrypt/src/dh.cpp
|
||||
../extra/yassl/taocrypt/src/dsa.cpp
|
||||
../extra/yassl/taocrypt/src/file.cpp
|
||||
../extra/yassl/taocrypt/src/hash.cpp
|
||||
../extra/yassl/taocrypt/src/integer.cpp
|
||||
../extra/yassl/taocrypt/src/md2.cpp
|
||||
../extra/yassl/taocrypt/src/md4.cpp
|
||||
../extra/yassl/taocrypt/src/md5.cpp
|
||||
../extra/yassl/taocrypt/src/misc.cpp
|
||||
../extra/yassl/taocrypt/src/random.cpp
|
||||
../extra/yassl/taocrypt/src/ripemd.cpp
|
||||
../extra/yassl/taocrypt/src/rsa.cpp
|
||||
../extra/yassl/taocrypt/src/sha.cpp)
|
||||
ADD_EXECUTABLE(mysql completion_hash.cc mysql.cc readline.cc sql_string.cc ../mysys/my_conio.c)
|
||||
TARGET_LINK_LIBRARIES(mysql mysqlclient_notls wsock32)
|
||||
|
||||
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 mysys 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/base64.c)
|
||||
TARGET_LINK_LIBRARIES(mysqlbinlog mysqlclient dbug zlib wsock32)
|
||||
ADD_EXECUTABLE(mysqlbinlog mysqlbinlog.cc ../mysys/mf_tempdir.c ../mysys/my_new.cc)
|
||||
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(echo echo.c)
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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("my_print_defaults" "asInvoker")
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -78,8 +78,14 @@ extern MY_UNICASE_INFO *my_unicase_turkish[256];
|
||||
#define MY_CS_READY 256 /* if a charset is initialized */
|
||||
#define MY_CS_AVAILABLE 512 /* If either compiled-in or loaded*/
|
||||
#define MY_CS_CSSORT 1024 /* if case sensitive sort order */
|
||||
#define MY_CS_PUREASCII 2048 /* if a charset is pure ascii */
|
||||
#define MY_CHARSET_UNDEFINED 0
|
||||
|
||||
/* Character repertoire flags */
|
||||
#define MY_REPERTOIRE_ASCII 1 /* Pure ASCII U+0000..U+007F */
|
||||
#define MY_REPERTOIRE_EXTENDED 2 /* Extended characters: U+0080..U+FFFF */
|
||||
#define MY_REPERTOIRE_UNICODE30 3 /* ASCII | EXTENDED: U+0000..U+FFFF */
|
||||
|
||||
|
||||
typedef struct my_uni_idx_st
|
||||
{
|
||||
@ -436,6 +442,11 @@ my_bool my_propagate_simple(CHARSET_INFO *cs, const uchar *str, uint len);
|
||||
my_bool my_propagate_complex(CHARSET_INFO *cs, const uchar *str, uint len);
|
||||
|
||||
|
||||
uint my_string_repertoire(CHARSET_INFO *cs, const char *str, ulong len);
|
||||
my_bool my_charset_is_ascii_based(CHARSET_INFO *cs);
|
||||
my_bool my_charset_is_8bit_pure_ascii(CHARSET_INFO *cs);
|
||||
|
||||
|
||||
#define _MY_U 01 /* Upper case */
|
||||
#define _MY_L 02 /* Lower case */
|
||||
#define _MY_NMR 04 /* Numeral (digit) */
|
||||
|
@ -14,25 +14,54 @@
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
INCLUDE("${PROJECT_SOURCE_DIR}/win/mysql_manifest.cmake")
|
||||
|
||||
# Need to set USE_TLS, since __declspec(thread) approach to thread local
|
||||
# storage does not work properly in DLLs.
|
||||
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_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DSAFEMALLOC -DSAFE_MUTEX -DUSE_TLS")
|
||||
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DSAFEMALLOC -DSAFE_MUTEX -DUSE_TLS")
|
||||
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DSAFEMALLOC -DSAFE_MUTEX -DUSE_TLS")
|
||||
SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -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
|
||||
@ -41,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
|
||||
@ -66,9 +96,34 @@ 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
|
||||
${LIB_SOURCES})
|
||||
|
||||
# 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.
|
||||
|
||||
ADD_LIBRARY(libmysql SHARED ${CLIENT_SOURCES} dll.c libmysql.def)
|
||||
ADD_LIBRARY(mysqlclient STATIC ${CLIENT_SOURCES})
|
||||
ADD_LIBRARY(mysqlclient_notls STATIC ${CLIENT_SOURCES})
|
||||
|
||||
SET_TARGET_PROPERTIES(libmysql mysqlclient PROPERTIES COMPILE_FLAGS "-DUSE_TLS")
|
||||
|
||||
ADD_DEPENDENCIES(libmysql GenError)
|
||||
TARGET_LINK_LIBRARIES(libmysql wsock32)
|
||||
|
||||
ADD_DEPENDENCIES(mysqlclient GenError)
|
||||
TARGET_LINK_LIBRARIES(mysqlclient)
|
||||
|
||||
ADD_DEPENDENCIES(mysqlclient_notls GenError)
|
||||
TARGET_LINK_LIBRARIES(mysqlclient_notls)
|
||||
|
||||
ADD_EXECUTABLE(myTest mytest.c)
|
||||
TARGET_LINK_LIBRARIES(myTest libmysql)
|
||||
|
@ -30,16 +30,16 @@ ADD_LIBRARY(myisam ft_boolean_search.c ft_nlq_search.c ft_parser.c ft_static.c f
|
||||
rt_split.c sort.c sp_key.c ft_eval.h myisamdef.h rt_index.h mi_rkey.c)
|
||||
|
||||
ADD_EXECUTABLE(myisam_ftdump myisam_ftdump.c)
|
||||
TARGET_LINK_LIBRARIES(myisam_ftdump myisam mysys dbug strings zlib wsock32)
|
||||
TARGET_LINK_LIBRARIES(myisam_ftdump myisam mysys debug dbug strings zlib wsock32)
|
||||
|
||||
ADD_EXECUTABLE(myisamchk myisamchk.c)
|
||||
TARGET_LINK_LIBRARIES(myisamchk myisam mysys dbug strings zlib wsock32)
|
||||
TARGET_LINK_LIBRARIES(myisamchk myisam mysys debug dbug strings zlib wsock32)
|
||||
|
||||
ADD_EXECUTABLE(myisamlog myisamlog.c)
|
||||
TARGET_LINK_LIBRARIES(myisamlog myisam mysys dbug strings zlib wsock32)
|
||||
TARGET_LINK_LIBRARIES(myisamlog myisam mysys debug dbug strings zlib wsock32)
|
||||
|
||||
ADD_EXECUTABLE(myisampack myisampack.c)
|
||||
TARGET_LINK_LIBRARIES(myisampack myisam mysys dbug strings zlib wsock32)
|
||||
TARGET_LINK_LIBRARIES(myisampack myisam mysys debug dbug strings zlib wsock32)
|
||||
|
||||
IF(EMBED_MANIFESTS)
|
||||
MYSQL_EMBED_MANIFEST("myisam_ftdump" "asInvoker")
|
||||
|
@ -337,7 +337,7 @@ static struct my_option my_long_options[] =
|
||||
(gptr*) &ft_stopword_file, (gptr*) &ft_stopword_file, 0, GET_STR,
|
||||
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"stats_method", OPT_STATS_METHOD,
|
||||
"Specifies how index statistics collection code should threat NULLs. "
|
||||
"Specifies how index statistics collection code should treat NULLs. "
|
||||
"Possible values of name are \"nulls_unequal\" (default behavior for 4.1/5.0), "
|
||||
"\"nulls_equal\" (emulate 4.0 behavior), and \"nulls_ignored\".",
|
||||
(gptr*) &myisam_stats_method_str, (gptr*) &myisam_stats_method_str, 0,
|
||||
@ -452,7 +452,7 @@ static void usage(void)
|
||||
MySQL faster. You can check the calculated distribution\n\
|
||||
by using '--description --verbose table_name'.\n\
|
||||
--stats_method=name Specifies how index statistics collection code should\n\
|
||||
threat NULLs. Possible values of name are \"nulls_unequal\"\n\
|
||||
treat NULLs. Possible values of name are \"nulls_unequal\"\n\
|
||||
(default for 4.1/5.0), \"nulls_equal\" (emulate 4.0), and \n\
|
||||
\"nulls_ignored\".\n\
|
||||
-d, --description Prints some information about table.\n\
|
||||
|
@ -708,6 +708,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",
|
||||
@ -2436,6 +2437,7 @@ sub vs_config_dirs ($$) {
|
||||
}
|
||||
|
||||
return ("$glob_basedir/$path_part/release/$exe",
|
||||
"$glob_basedir/$path_part/relwithdebinfo/$exe",
|
||||
"$glob_basedir/$path_part/debug/$exe");
|
||||
}
|
||||
|
||||
|
@ -896,4 +896,30 @@ select hex(convert(s1 using latin1)) from t1;
|
||||
hex(convert(s1 using latin1))
|
||||
7F
|
||||
drop table t1;
|
||||
create table t1 (a varchar(15) character set ascii not null, b int);
|
||||
insert into t1 values ('a',1);
|
||||
select concat(a,if(b<10,_ucs2 0x0061,_ucs2 0x0062)) from t1;
|
||||
concat(a,if(b<10,_ucs2 0x0061,_ucs2 0x0062))
|
||||
aa
|
||||
select concat(a,if(b>10,_ucs2 0x0061,_ucs2 0x0062)) from t1;
|
||||
concat(a,if(b>10,_ucs2 0x0061,_ucs2 0x0062))
|
||||
ab
|
||||
select * from t1 where a=if(b<10,_ucs2 0x0061,_ucs2 0x0062);
|
||||
a b
|
||||
a 1
|
||||
select * from t1 where a=if(b>10,_ucs2 0x0061,_ucs2 0x0062);
|
||||
a b
|
||||
select concat(a,if(b<10,_ucs2 0x00C0,_ucs2 0x0062)) from t1;
|
||||
ERROR HY000: Illegal mix of collations (ascii_general_ci,IMPLICIT) and (ucs2_general_ci,COERCIBLE) for operation 'concat'
|
||||
select concat(a,if(b>10,_ucs2 0x00C0,_ucs2 0x0062)) from t1;
|
||||
ERROR HY000: Illegal mix of collations (ascii_general_ci,IMPLICIT) and (ucs2_general_ci,COERCIBLE) for operation 'concat'
|
||||
select concat(a,if(b<10,_ucs2 0x0062,_ucs2 0x00C0)) from t1;
|
||||
ERROR HY000: Illegal mix of collations (ascii_general_ci,IMPLICIT) and (ucs2_general_ci,COERCIBLE) for operation 'concat'
|
||||
select concat(a,if(b>10,_ucs2 0x0062,_ucs2 0x00C0)) from t1;
|
||||
ERROR HY000: Illegal mix of collations (ascii_general_ci,IMPLICIT) and (ucs2_general_ci,COERCIBLE) for operation 'concat'
|
||||
select * from t1 where a=if(b<10,_ucs2 0x00C0,_ucs2 0x0062);
|
||||
ERROR HY000: Illegal mix of collations (ascii_general_ci,IMPLICIT) and (ucs2_general_ci,COERCIBLE) for operation '='
|
||||
select * from t1 where a=if(b<10,_ucs2 0x0062,_ucs2 0x00C0);
|
||||
ERROR HY000: Illegal mix of collations (ascii_general_ci,IMPLICIT) and (ucs2_general_ci,COERCIBLE) for operation '='
|
||||
drop table t1;
|
||||
End of 5.0 tests
|
||||
|
@ -1639,6 +1639,42 @@ coercibility(col1) collation(col1)
|
||||
0 utf8_swedish_ci
|
||||
drop view v1, v2;
|
||||
drop table t1;
|
||||
set names utf8;
|
||||
create table t1 (a varchar(10) character set latin1, b int);
|
||||
insert into t1 values ('a',1);
|
||||
select concat(a, if(b>10, N'x', N'y')) from t1;
|
||||
concat(a, if(b>10, N'x', N'y'))
|
||||
ay
|
||||
select concat(a, if(b>10, N'æ', N'ß')) from t1;
|
||||
ERROR HY000: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation 'concat'
|
||||
drop table t1;
|
||||
set names utf8;
|
||||
create table t1 (a varchar(10) character set latin1, b int);
|
||||
insert into t1 values ('a',1);
|
||||
select concat(a, if(b>10, _utf8'x', _utf8'y')) from t1;
|
||||
concat(a, if(b>10, _utf8'x', _utf8'y'))
|
||||
ay
|
||||
select concat(a, if(b>10, _utf8'æ', _utf8'ß')) from t1;
|
||||
ERROR HY000: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation 'concat'
|
||||
drop table t1;
|
||||
set names utf8;
|
||||
create table t1 (a varchar(10) character set latin1, b int);
|
||||
insert into t1 values ('a',1);
|
||||
select concat(a, if(b>10, _utf8 0x78, _utf8 0x79)) from t1;
|
||||
concat(a, if(b>10, _utf8 0x78, _utf8 0x79))
|
||||
ay
|
||||
select concat(a, if(b>10, _utf8 0xC3A6, _utf8 0xC3AF)) from t1;
|
||||
ERROR HY000: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation 'concat'
|
||||
drop table t1;
|
||||
set names utf8;
|
||||
create table t1 (a varchar(10) character set latin1, b int);
|
||||
insert into t1 values ('a',1);
|
||||
select concat(a, if(b>10, 'x' 'x', 'y' 'y')) from t1;
|
||||
concat(a, if(b>10, 'x' 'x', 'y' 'y'))
|
||||
ayy
|
||||
select concat(a, if(b>10, 'x' 'æ', 'y' 'ß')) from t1;
|
||||
ERROR HY000: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation 'concat'
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (
|
||||
colA int(11) NOT NULL,
|
||||
colB varchar(255) character set utf8 NOT NULL,
|
||||
|
@ -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;
|
||||
DROP TABLE IF EXISTS federated.t1;
|
||||
DROP DATABASE IF EXISTS federated;
|
||||
DROP TABLE IF EXISTS federated.t1;
|
||||
|
@ -1246,3 +1246,19 @@ SELECT TIME_FORMAT(SEC_TO_TIME(a),"%H:%i:%s") FROM (SELECT 3020399 AS a UNION SE
|
||||
TIME_FORMAT(SEC_TO_TIME(a),"%H:%i:%s")
|
||||
838:59:58
|
||||
838:59:59
|
||||
set names latin1;
|
||||
create table t1 (a varchar(15) character set ascii not null);
|
||||
insert into t1 values ('070514-000000');
|
||||
select concat(a,ifnull(min(date_format(now(), '%Y-%m-%d')),' ull')) from t1;
|
||||
concat(a,ifnull(min(date_format(now(), '%Y-%m-%d')),' ull'))
|
||||
#
|
||||
set names swe7;
|
||||
select concat(a,ifnull(min(date_format(now(), '%Y-%m-%d')),' ull')) from t1;
|
||||
ERROR HY000: Illegal mix of collations (ascii_general_ci,IMPLICIT) and (swe7_swedish_ci,COERCIBLE) for operation 'concat'
|
||||
set names latin1;
|
||||
set lc_time_names=fr_FR;
|
||||
select concat(a,ifnull(min(date_format(now(), '%Y-%m-%d')),' ull')) from t1;
|
||||
ERROR HY000: Illegal mix of collations (ascii_general_ci,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation 'concat'
|
||||
set lc_time_names=en_US;
|
||||
drop table t1;
|
||||
End of 5.0 tests
|
||||
|
@ -622,4 +622,33 @@ select hex(s2) from t1;
|
||||
select hex(convert(s1 using latin1)) from t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Conversion from UCS2 to ASCII is possible
|
||||
# if the UCS2 string consists of only ASCII characters
|
||||
#
|
||||
create table t1 (a varchar(15) character set ascii not null, b int);
|
||||
insert into t1 values ('a',1);
|
||||
select concat(a,if(b<10,_ucs2 0x0061,_ucs2 0x0062)) from t1;
|
||||
select concat(a,if(b>10,_ucs2 0x0061,_ucs2 0x0062)) from t1;
|
||||
select * from t1 where a=if(b<10,_ucs2 0x0061,_ucs2 0x0062);
|
||||
select * from t1 where a=if(b>10,_ucs2 0x0061,_ucs2 0x0062);
|
||||
|
||||
#
|
||||
# Conversion from UCS2 to ASCII is not possible if
|
||||
# the UCS2 string has non-ASCII characters
|
||||
#
|
||||
--error 1267
|
||||
select concat(a,if(b<10,_ucs2 0x00C0,_ucs2 0x0062)) from t1;
|
||||
--error 1267
|
||||
select concat(a,if(b>10,_ucs2 0x00C0,_ucs2 0x0062)) from t1;
|
||||
--error 1267
|
||||
select concat(a,if(b<10,_ucs2 0x0062,_ucs2 0x00C0)) from t1;
|
||||
--error 1267
|
||||
select concat(a,if(b>10,_ucs2 0x0062,_ucs2 0x00C0)) from t1;
|
||||
--error 1267
|
||||
select * from t1 where a=if(b<10,_ucs2 0x00C0,_ucs2 0x0062);
|
||||
--error 1267
|
||||
select * from t1 where a=if(b<10,_ucs2 0x0062,_ucs2 0x00C0);
|
||||
drop table t1;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
@ -1314,6 +1314,46 @@ select coercibility(col1), collation(col1) from v2;
|
||||
drop view v1, v2;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Check conversion of NCHAR strings to subset (e.g. latin1).
|
||||
# Conversion is possible if string repertoire is ASCII.
|
||||
# Conversion is not possible if the string have extended characters
|
||||
#
|
||||
set names utf8;
|
||||
create table t1 (a varchar(10) character set latin1, b int);
|
||||
insert into t1 values ('a',1);
|
||||
select concat(a, if(b>10, N'x', N'y')) from t1;
|
||||
--error 1267
|
||||
select concat(a, if(b>10, N'æ', N'ß')) from t1;
|
||||
drop table t1;
|
||||
|
||||
# Conversion tests for character set introducers
|
||||
set names utf8;
|
||||
create table t1 (a varchar(10) character set latin1, b int);
|
||||
insert into t1 values ('a',1);
|
||||
select concat(a, if(b>10, _utf8'x', _utf8'y')) from t1;
|
||||
--error 1267
|
||||
select concat(a, if(b>10, _utf8'æ', _utf8'ß')) from t1;
|
||||
drop table t1;
|
||||
|
||||
# Conversion tests for introducer + HEX string
|
||||
set names utf8;
|
||||
create table t1 (a varchar(10) character set latin1, b int);
|
||||
insert into t1 values ('a',1);
|
||||
select concat(a, if(b>10, _utf8 0x78, _utf8 0x79)) from t1;
|
||||
--error 1267
|
||||
select concat(a, if(b>10, _utf8 0xC3A6, _utf8 0xC3AF)) from t1;
|
||||
drop table t1;
|
||||
|
||||
# Conversion tests for "text_literal TEXT_STRING_literal" syntax structure
|
||||
set names utf8;
|
||||
create table t1 (a varchar(10) character set latin1, b int);
|
||||
insert into t1 values ('a',1);
|
||||
select concat(a, if(b>10, 'x' 'x', 'y' 'y')) from t1;
|
||||
--error 1267
|
||||
select concat(a, if(b>10, 'x' 'æ', 'y' 'ß')) from t1;
|
||||
drop table t1;
|
||||
|
||||
|
||||
#
|
||||
# Bug#19960: Inconsistent results when joining
|
||||
|
@ -1671,5 +1671,19 @@ 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;
|
||||
|
||||
source include/federated_cleanup.inc;
|
||||
|
@ -752,3 +752,29 @@ DROP TABLE t1;
|
||||
# Check if using GROUP BY with TIME_FORMAT() produces correct results
|
||||
|
||||
SELECT TIME_FORMAT(SEC_TO_TIME(a),"%H:%i:%s") FROM (SELECT 3020399 AS a UNION SELECT 3020398 ) x GROUP BY 1;
|
||||
|
||||
#
|
||||
# Bug#28875 Conversion between ASCII and LATIN1 charsets does not function
|
||||
#
|
||||
set names latin1;
|
||||
create table t1 (a varchar(15) character set ascii not null);
|
||||
insert into t1 values ('070514-000000');
|
||||
# Conversion of date_format() result to ASCII
|
||||
# is safe with the default locale en_US
|
||||
--replace_column 1 #
|
||||
select concat(a,ifnull(min(date_format(now(), '%Y-%m-%d')),' ull')) from t1;
|
||||
# Error for swe7: it is not ASCII compatible
|
||||
set names swe7;
|
||||
--error 1267
|
||||
select concat(a,ifnull(min(date_format(now(), '%Y-%m-%d')),' ull')) from t1;
|
||||
set names latin1;
|
||||
# Conversion of date_format() result to ASCII
|
||||
# is not safe with the non-default locale fr_FR
|
||||
# because month and day names can have accented characters
|
||||
set lc_time_names=fr_FR;
|
||||
--error 1267
|
||||
select concat(a,ifnull(min(date_format(now(), '%Y-%m-%d')),' ull')) from t1;
|
||||
set lc_time_names=en_US;
|
||||
drop table t1;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
@ -13,20 +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
|
||||
|
||||
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_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DUSE_TLS")
|
||||
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DUSE_TLS")
|
||||
SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -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.
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/zlib ${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/mysys)
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/zlib ${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/mysys )
|
||||
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
|
||||
|
@ -277,6 +277,9 @@ static int add_collation(CHARSET_INFO *cs)
|
||||
if (sort_order && sort_order['A'] < sort_order['a'] &&
|
||||
sort_order['a'] < sort_order['B'])
|
||||
all_charsets[cs->number]->state|= MY_CS_CSSORT;
|
||||
|
||||
if (my_charset_is_8bit_pure_ascii(all_charsets[cs->number]))
|
||||
all_charsets[cs->number]->state|= MY_CS_PUREASCII;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -383,6 +383,9 @@ static inline my_bool have_specific_lock(THR_LOCK_DATA *data,
|
||||
}
|
||||
|
||||
|
||||
static void wake_up_waiters(THR_LOCK *lock);
|
||||
|
||||
|
||||
static enum enum_thr_lock_result
|
||||
wait_for_lock(struct st_lock_list *wait, THR_LOCK_DATA *data,
|
||||
my_bool in_wait_list)
|
||||
@ -444,8 +447,13 @@ wait_for_lock(struct st_lock_list *wait, THR_LOCK_DATA *data,
|
||||
else
|
||||
wait->last=data->prev;
|
||||
data->type= TL_UNLOCK; /* No lock */
|
||||
check_locks(data->lock, "killed or timed out wait_for_lock", 1);
|
||||
wake_up_waiters(data->lock);
|
||||
}
|
||||
else
|
||||
{
|
||||
check_locks(data->lock, "aborted wait_for_lock", 0);
|
||||
}
|
||||
check_locks(data->lock,"failed wait_for_lock",0);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -771,6 +779,26 @@ void thr_unlock(THR_LOCK_DATA *data)
|
||||
lock->read_no_write_count--;
|
||||
data->type=TL_UNLOCK; /* Mark unlocked */
|
||||
check_locks(lock,"after releasing lock",1);
|
||||
wake_up_waiters(lock);
|
||||
pthread_mutex_unlock(&lock->mutex);
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
@brief Wake up all threads which pending requests for the lock
|
||||
can be satisfied.
|
||||
|
||||
@param lock Lock for which threads should be woken up
|
||||
|
||||
*/
|
||||
|
||||
static void wake_up_waiters(THR_LOCK *lock)
|
||||
{
|
||||
THR_LOCK_DATA *data;
|
||||
enum thr_lock_type lock_type;
|
||||
|
||||
DBUG_ENTER("wake_up_waiters");
|
||||
|
||||
if (!lock->write.data) /* If no active write locks */
|
||||
{
|
||||
@ -820,11 +848,7 @@ void thr_unlock(THR_LOCK_DATA *data)
|
||||
data=lock->write_wait.data; /* Free this too */
|
||||
}
|
||||
if (data->type >= TL_WRITE_LOW_PRIORITY)
|
||||
{
|
||||
check_locks(lock,"giving write lock",0);
|
||||
pthread_mutex_unlock(&lock->mutex);
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
goto end;
|
||||
/* Release possible read locks together with the write lock */
|
||||
}
|
||||
if (lock->read_wait.data)
|
||||
@ -879,8 +903,7 @@ void thr_unlock(THR_LOCK_DATA *data)
|
||||
free_all_read_locks(lock,0);
|
||||
}
|
||||
end:
|
||||
check_locks(lock,"thr_unlock",0);
|
||||
pthread_mutex_unlock(&lock->mutex);
|
||||
check_locks(lock, "after waking up waiters", 0);
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
@ -1094,6 +1117,7 @@ my_bool thr_abort_locks_for_thread(THR_LOCK *lock, pthread_t thread)
|
||||
lock->write_wait.last= data->prev;
|
||||
}
|
||||
}
|
||||
wake_up_waiters(lock);
|
||||
pthread_mutex_unlock(&lock->mutex);
|
||||
DBUG_RETURN(found);
|
||||
}
|
||||
|
@ -24,7 +24,7 @@ ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_SOURCE_DIR}/scripts/mysql_fix_privilege_tabl
|
||||
|
||||
# Build comp_sql - used for embedding SQL in C or C++ programs
|
||||
ADD_EXECUTABLE(comp_sql comp_sql.c)
|
||||
TARGET_LINK_LIBRARIES(comp_sql dbug mysys strings)
|
||||
TARGET_LINK_LIBRARIES(comp_sql debug dbug mysys strings)
|
||||
|
||||
# Use comp_sql to build mysql_fix_privilege_tables_sql.c
|
||||
GET_TARGET_PROPERTY(COMP_SQL_EXE comp_sql LOCATION)
|
||||
|
@ -144,14 +144,16 @@ fi
|
||||
|
||||
mkdir $DESTDIR
|
||||
mkdir $DESTDIR/bin
|
||||
cp client/$TARGET/*.exe $DESTDIR/bin/
|
||||
cp extra/$TARGET/*.exe $DESTDIR/bin/
|
||||
cp myisam/$TARGET/*.exe $DESTDIR/bin/
|
||||
cp server-tools/instance-manager/$TARGET/*.exe $DESTDIR/bin/
|
||||
cp server-tools/instance-manager/$TARGET/*.pdb $DESTDIR/bin/ || true
|
||||
cp server-tools/instance-manager/$TARGET/*.map $DESTDIR/bin/ || true
|
||||
cp tests/$TARGET/*.exe $DESTDIR/bin/
|
||||
cp libmysql/$TARGET/libmysql.dll $DESTDIR/bin/
|
||||
cp client/$TARGET/*.exe $DESTDIR/bin/
|
||||
cp extra/$TARGET/*.exe $DESTDIR/bin/
|
||||
cp myisam/$TARGET/*.exe $DESTDIR/bin/
|
||||
cp server-tools/instance-manager/$TARGET/*.{exe,map} $DESTDIR/bin/
|
||||
if [ x"$TARGET" != x"release" ] ; then
|
||||
cp server-tools/instance-manager/$TARGET/*.pdb $DESTDIR/bin/
|
||||
fi
|
||||
cp tests/$TARGET/*.exe $DESTDIR/bin/
|
||||
cp libmysql/$TARGET/*.exe $DESTDIR/bin/
|
||||
cp libmysql/$TARGET/libmysql.dll $DESTDIR/bin/
|
||||
|
||||
# FIXME really needed?!
|
||||
mv $DESTDIR/bin/comp_err.exe $DESTDIR/bin/comp-err.exe
|
||||
@ -164,8 +166,10 @@ fi
|
||||
|
||||
# Depending on Visual Studio target, the optimized server has symbols
|
||||
cp sql/$TARGET/$BASENAME.exe $DESTDIR/bin/$BASENAME$EXE_SUFFIX.exe
|
||||
cp sql/$TARGET/$BASENAME.pdb $DESTDIR/bin/$BASENAME$EXE_SUFFIX.pdb || true
|
||||
cp sql/$TARGET/$BASENAME.map $DESTDIR/bin/$BASENAME$EXE_SUFFIX.map || true
|
||||
cp sql/$TARGET/$BASENAME.map $DESTDIR/bin/$BASENAME$EXE_SUFFIX.map
|
||||
if [ x"$TARGET" != x"release" ] ; then
|
||||
cp sql/$TARGET/$BASENAME.pdb $DESTDIR/bin/$BASENAME$EXE_SUFFIX.pdb
|
||||
fi
|
||||
|
||||
if [ -f "sql/debug/mysqld-debug.exe" ] ; then
|
||||
BASENAME="mysqld-debug" # Old style non CMake build
|
||||
@ -176,19 +180,16 @@ fi
|
||||
if [ x"$PACK_DEBUG" = x"" -a -f "sql/debug/$BASENAME.exe" -o \
|
||||
x"$PACK_DEBUG" = x"yes" ] ; then
|
||||
cp sql/debug/$BASENAME.exe $DESTDIR/bin/mysqld-debug.exe
|
||||
cp sql/debug/$BASENAME.pdb $DESTDIR/bin/mysqld-debug.pdb || true
|
||||
cp sql/debug/$BASENAME.map $DESTDIR/bin/mysqld-debug.map || true
|
||||
cp sql/debug/$BASENAME.pdb $DESTDIR/bin/mysqld-debug.pdb
|
||||
cp sql/debug/$BASENAME.map $DESTDIR/bin/mysqld-debug.map
|
||||
fi
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# Copy data directory, readme files etc
|
||||
# ----------------------------------------------------------------------
|
||||
|
||||
# FIXME is there ever a data directory to copy?
|
||||
if [ -d win/data ] ; then
|
||||
cp -pR win/data $DESTDIR/
|
||||
elif [ -d data ] ; then
|
||||
cp -pR data $DESTDIR/
|
||||
fi
|
||||
|
||||
# FIXME maybe a flag to define "release build", or do the
|
||||
@ -218,16 +219,22 @@ copy_embedded()
|
||||
$DESTDIR/include
|
||||
cp libmysqld/libmysqld.def $DESTDIR/include/
|
||||
cp libmysqld/$TARGET/mysqlserver.lib $DESTDIR/Embedded/static/release/
|
||||
cp libmysqld/$TARGET/mysqlserver.pdb $DESTDIR/Embedded/static/release/
|
||||
cp libmysqld/$TARGET/libmysqld.dll $DESTDIR/Embedded/DLL/release/
|
||||
cp libmysqld/$TARGET/libmysqld.exp $DESTDIR/Embedded/DLL/release/
|
||||
cp libmysqld/$TARGET/libmysqld.lib $DESTDIR/Embedded/DLL/release/
|
||||
cp libmysqld/$TARGET/libmysqld.pdb $DESTDIR/Embedded/DLL/release/
|
||||
|
||||
if [ x"$PACK_DEBUG" = x"" -a -f "libmysqld/debug/libmysqld.lib" -o \
|
||||
x"$PACK_DEBUG" = x"yes" ] ; then
|
||||
mkdir -p $DESTDIR/Embedded/DLL/debug
|
||||
mkdir -p $DESTDIR/Embedded/DLL/debug \
|
||||
$DESTDIR/Embedded/static/debug
|
||||
cp libmysqld/debug/mysqlserver.lib $DESTDIR/Embedded/static/debug/
|
||||
cp libmysqld/debug/mysqlserver.pdb $DESTDIR/Embedded/static/debug/
|
||||
cp libmysqld/debug/libmysqld.dll $DESTDIR/Embedded/DLL/debug/
|
||||
cp libmysqld/debug/libmysqld.exp $DESTDIR/Embedded/DLL/debug/
|
||||
cp libmysqld/debug/libmysqld.lib $DESTDIR/Embedded/DLL/debug/
|
||||
cp libmysqld/debug/libmysqld.pdb $DESTDIR/Embedded/DLL/debug/
|
||||
fi
|
||||
}
|
||||
|
||||
@ -287,7 +294,8 @@ cp include/mysql.h \
|
||||
mkdir -p $DESTDIR/lib/opt
|
||||
cp libmysql/$TARGET/libmysql.dll \
|
||||
libmysql/$TARGET/libmysql.lib \
|
||||
client/$TARGET/mysqlclient.lib \
|
||||
libmysql/$TARGET/mysqlclient.lib \
|
||||
mysys/$TARGET/mysys.lib \
|
||||
regex/$TARGET/regex.lib \
|
||||
strings/$TARGET/strings.lib \
|
||||
zlib/$TARGET/zlib.lib $DESTDIR/lib/opt/
|
||||
@ -297,54 +305,25 @@ if [ x"$PACK_DEBUG" = x"" -a -f "libmysql/debug/libmysql.lib" -o \
|
||||
mkdir -p $DESTDIR/lib/debug
|
||||
cp libmysql/debug/libmysql.dll \
|
||||
libmysql/debug/libmysql.lib \
|
||||
client/debug/mysqlclient.lib \
|
||||
libmysql/debug/mysqlclient.lib \
|
||||
mysys/debug/mysys.lib \
|
||||
regex/debug/regex.lib \
|
||||
strings/debug/strings.lib \
|
||||
zlib/debug/zlib.lib $DESTDIR/lib/debug/
|
||||
|
||||
if [ -f "mysys/debug/mysys-nt.lib" ] ; then
|
||||
cp mysys/debug/mysys-nt.lib $DESTDIR/lib/debug/
|
||||
else
|
||||
cp mysys/debug/mysys.lib $DESTDIR/lib/debug/mysys-nt.lib
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
if [ -f "mysys/$TARGET/mysys-nt.lib" ] ; then
|
||||
cp mysys/$TARGET/mysys-nt.lib $DESTDIR/lib/opt/
|
||||
else
|
||||
cp mysys/$TARGET/mysys.lib $DESTDIR/lib/opt/mysys-nt.lib
|
||||
fi
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# Copy the test directory
|
||||
# ----------------------------------------------------------------------
|
||||
|
||||
mkdir -p $DESTDIR/mysql-test/include $DESTDIR/mysql-test/lib \
|
||||
$DESTDIR/mysql-test/r $DESTDIR/mysql-test/std_data \
|
||||
$DESTDIR/mysql-test/t
|
||||
mkdir $DESTDIR/mysql-test
|
||||
cp mysql-test/mysql-test-run.pl $DESTDIR/mysql-test/
|
||||
cp mysql-test/README $DESTDIR/mysql-test/
|
||||
cp mysql-test/install_test_db.sh $DESTDIR/mysql-test/install_test_db
|
||||
cp mysql-test/include/*.inc $DESTDIR/mysql-test/include/
|
||||
cp mysql-test/include/*.test $DESTDIR/mysql-test/include/
|
||||
cp mysql-test/lib/*.pl $DESTDIR/mysql-test/lib/
|
||||
cp mysql-test/lib/*.sql $DESTDIR/mysql-test/lib/ || true
|
||||
cp mysql-test/r/*.require $DESTDIR/mysql-test/r/
|
||||
# Need this trick, or we get "argument list too long".
|
||||
ABS_DST=`pwd`/$DESTDIR
|
||||
(cd mysql-test/r/ && cp *.result $ABS_DST/mysql-test/r/)
|
||||
cp mysql-test/std_data/* $DESTDIR/mysql-test/std_data/
|
||||
cp mysql-test/t/*.opt $DESTDIR/mysql-test/t/
|
||||
cp mysql-test/t/*.sh $DESTDIR/mysql-test/t/
|
||||
cp mysql-test/t/*.slave-mi $DESTDIR/mysql-test/t/
|
||||
cp mysql-test/t/*.sql $DESTDIR/mysql-test/t/
|
||||
cp mysql-test/t/*.def $DESTDIR/mysql-test/t/
|
||||
(cd mysql-test/t/ && cp *.test $ABS_DST/mysql-test/t/)
|
||||
cp -R mysql-test/{t,r,include,suite,std_data,lib} $DESTDIR/mysql-test/
|
||||
|
||||
# Note that this will not copy "extra" if a soft link
|
||||
if [ -d mysql-test/extra ] ; then
|
||||
mkdir -p $DESTDIR/mysql-test/extra
|
||||
mkdir $DESTDIR/mysql-test/extra
|
||||
cp -pR mysql-test/extra/* $DESTDIR/mysql-test/extra/
|
||||
fi
|
||||
|
||||
@ -372,17 +351,19 @@ for i in `cd scripts && ls`; do \
|
||||
fi; \
|
||||
done
|
||||
|
||||
if [ -d "share" ] ; then
|
||||
cp -pR share $DESTDIR/
|
||||
else
|
||||
cp -pR sql/share $DESTDIR/
|
||||
fi
|
||||
cp -pR sql/share $DESTDIR/
|
||||
cp -pR sql-bench $DESTDIR/
|
||||
rm -f $DESTDIR/sql-bench/*.sh $DESTDIR/sql-bench/Makefile*
|
||||
|
||||
# The SQL initialisation code is really expected to be in "share"
|
||||
mv $DESTDIR/scripts/*.sql $DESTDIR/share/ || true
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# Clean up from possibly copied SCCS directories
|
||||
# ----------------------------------------------------------------------
|
||||
|
||||
rm -rf `find $DISTDIR -type d -name SCCS -print`
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# Copy other files specified on command line DEST=SOURCE
|
||||
# ----------------------------------------------------------------------
|
||||
|
@ -30,7 +30,7 @@ ADD_EXECUTABLE(mysqlmanager buffer.cc command.cc commands.cc guardian.cc instanc
|
||||
../../libmysql/errmsg.c)
|
||||
|
||||
ADD_DEPENDENCIES(mysqlmanager GenError)
|
||||
TARGET_LINK_LIBRARIES(mysqlmanager dbug mysys strings taocrypt vio yassl zlib wsock32)
|
||||
TARGET_LINK_LIBRARIES(mysqlmanager debug dbug mysys strings taocrypt vio yassl zlib wsock32)
|
||||
|
||||
IF(EMBED_MANIFESTS)
|
||||
MYSQL_EMBED_MANIFEST("mysqlmanager" "asInvoker")
|
||||
|
@ -51,7 +51,7 @@ ADD_EXECUTABLE(mysqld${MYSQLD_EXE_SUFFIX}
|
||||
discover.cc ../libmysql/errmsg.c field.cc field_conv.cc
|
||||
filesort.cc gstream.cc ha_blackhole.cc
|
||||
ha_archive.cc ha_heap.cc ha_myisam.cc ha_myisammrg.cc
|
||||
ha_innodb.cc ha_federated.cc ha_berkeley.cc ha_blackhole.cc
|
||||
ha_innodb.cc ha_federated.cc ha_berkeley.cc
|
||||
handler.cc hash_filo.cc hash_filo.h
|
||||
hostname.cc init.cc item.cc item_buff.cc item_cmpfunc.cc
|
||||
item_create.cc item_func.cc item_geofunc.cc item_row.cc
|
||||
@ -84,7 +84,7 @@ ADD_EXECUTABLE(mysqld${MYSQLD_EXE_SUFFIX}
|
||||
${PROJECT_SOURCE_DIR}/sql/lex_hash.h)
|
||||
|
||||
TARGET_LINK_LIBRARIES(mysqld${MYSQLD_EXE_SUFFIX}
|
||||
heap myisam myisammrg mysys yassl zlib dbug yassl
|
||||
heap myisam myisammrg mysys yassl zlib debug dbug yassl
|
||||
taocrypt strings vio regex wsock32)
|
||||
|
||||
IF(EMBED_MANIFESTS)
|
||||
@ -128,8 +128,9 @@ ADD_CUSTOM_COMMAND(
|
||||
DEPENDS ${PROJECT_SOURCE_DIR}/sql/message.mc)
|
||||
|
||||
# Gen_lex_hash
|
||||
# About "mysqlclient_notls", see note in "client/CMakeLists.txt"
|
||||
ADD_EXECUTABLE(gen_lex_hash gen_lex_hash.cc)
|
||||
TARGET_LINK_LIBRARIES(gen_lex_hash dbug mysqlclient wsock32)
|
||||
TARGET_LINK_LIBRARIES(gen_lex_hash mysqlclient_notls wsock32)
|
||||
GET_TARGET_PROPERTY(GEN_LEX_HASH_EXE gen_lex_hash LOCATION)
|
||||
ADD_CUSTOM_COMMAND(
|
||||
OUTPUT ${PROJECT_SOURCE_DIR}/sql/lex_hash.h
|
||||
|
48
sql/item.cc
48
sql/item.cc
@ -1327,6 +1327,25 @@ void Item::split_sum_func2(THD *thd, Item **ref_pointer_array,
|
||||
}
|
||||
|
||||
|
||||
static bool
|
||||
left_is_superset(DTCollation *left, DTCollation *right)
|
||||
{
|
||||
/* Allow convert to Unicode */
|
||||
if (left->collation->state & MY_CS_UNICODE &&
|
||||
(left->derivation < right->derivation ||
|
||||
(left->derivation == right->derivation &&
|
||||
!(right->collation->state & MY_CS_UNICODE))))
|
||||
return TRUE;
|
||||
/* Allow convert from ASCII */
|
||||
if (right->repertoire == MY_REPERTOIRE_ASCII &&
|
||||
(left->derivation < right->derivation ||
|
||||
(left->derivation == right->derivation &&
|
||||
!(left->repertoire == MY_REPERTOIRE_ASCII))))
|
||||
return TRUE;
|
||||
/* Disallow conversion otherwise */
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
Aggregate two collations together taking
|
||||
into account their coercibility (aka derivation):
|
||||
@ -1391,18 +1410,12 @@ bool DTCollation::aggregate(DTCollation &dt, uint flags)
|
||||
; // Do nothing
|
||||
}
|
||||
else if ((flags & MY_COLL_ALLOW_SUPERSET_CONV) &&
|
||||
collation->state & MY_CS_UNICODE &&
|
||||
(derivation < dt.derivation ||
|
||||
(derivation == dt.derivation &&
|
||||
!(dt.collation->state & MY_CS_UNICODE))))
|
||||
left_is_superset(this, &dt))
|
||||
{
|
||||
// Do nothing
|
||||
}
|
||||
else if ((flags & MY_COLL_ALLOW_SUPERSET_CONV) &&
|
||||
dt.collation->state & MY_CS_UNICODE &&
|
||||
(dt.derivation < derivation ||
|
||||
(dt.derivation == derivation &&
|
||||
!(collation->state & MY_CS_UNICODE))))
|
||||
left_is_superset(&dt, this))
|
||||
{
|
||||
set(dt);
|
||||
}
|
||||
@ -1421,7 +1434,7 @@ bool DTCollation::aggregate(DTCollation &dt, uint flags)
|
||||
else
|
||||
{
|
||||
// Cannot apply conversion
|
||||
set(0, DERIVATION_NONE);
|
||||
set(0, DERIVATION_NONE, 0);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
@ -1443,8 +1456,8 @@ bool DTCollation::aggregate(DTCollation &dt, uint flags)
|
||||
{
|
||||
if (derivation == DERIVATION_EXPLICIT)
|
||||
{
|
||||
set(0, DERIVATION_NONE);
|
||||
return 1;
|
||||
set(0, DERIVATION_NONE, 0);
|
||||
return 1;
|
||||
}
|
||||
if (collation->state & MY_CS_BINSORT)
|
||||
return 0;
|
||||
@ -1458,6 +1471,7 @@ bool DTCollation::aggregate(DTCollation &dt, uint flags)
|
||||
set(bin, DERIVATION_NONE);
|
||||
}
|
||||
}
|
||||
repertoire|= dt.repertoire;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1597,12 +1611,16 @@ bool agg_item_charsets(DTCollation &coll, const char *fname,
|
||||
{
|
||||
Item* conv;
|
||||
uint32 dummy_offset;
|
||||
if (!String::needs_conversion(0, coll.collation,
|
||||
(*arg)->collation.collation,
|
||||
if (!String::needs_conversion(0, (*arg)->collation.collation,
|
||||
coll.collation,
|
||||
&dummy_offset))
|
||||
continue;
|
||||
|
||||
if (!(conv= (*arg)->safe_charset_converter(coll.collation)))
|
||||
if (!(conv= (*arg)->safe_charset_converter(coll.collation)) &&
|
||||
((*arg)->collation.repertoire == MY_REPERTOIRE_ASCII))
|
||||
conv= new Item_func_conv_charset(*arg, coll.collation, 1);
|
||||
|
||||
if (!conv)
|
||||
{
|
||||
if (nargs >=2 && nargs <= 3)
|
||||
{
|
||||
@ -1652,7 +1670,7 @@ void Item_ident_for_show::make_field(Send_field *tmp_field)
|
||||
tmp_field->type=field->type();
|
||||
tmp_field->flags= field->table->maybe_null ?
|
||||
(field->flags & ~NOT_NULL_FLAG) : field->flags;
|
||||
tmp_field->decimals= 0;
|
||||
tmp_field->decimals= field->decimals();
|
||||
}
|
||||
|
||||
/**********************************************/
|
||||
|
43
sql/item.h
43
sql/item.h
@ -49,29 +49,50 @@ class DTCollation {
|
||||
public:
|
||||
CHARSET_INFO *collation;
|
||||
enum Derivation derivation;
|
||||
uint repertoire;
|
||||
|
||||
void set_repertoire_from_charset(CHARSET_INFO *cs)
|
||||
{
|
||||
repertoire= cs->state & MY_CS_PUREASCII ?
|
||||
MY_REPERTOIRE_ASCII : MY_REPERTOIRE_UNICODE30;
|
||||
}
|
||||
DTCollation()
|
||||
{
|
||||
collation= &my_charset_bin;
|
||||
derivation= DERIVATION_NONE;
|
||||
repertoire= MY_REPERTOIRE_UNICODE30;
|
||||
}
|
||||
DTCollation(CHARSET_INFO *collation_arg, Derivation derivation_arg)
|
||||
{
|
||||
collation= collation_arg;
|
||||
derivation= derivation_arg;
|
||||
set_repertoire_from_charset(collation_arg);
|
||||
}
|
||||
void set(DTCollation &dt)
|
||||
{
|
||||
collation= dt.collation;
|
||||
derivation= dt.derivation;
|
||||
repertoire= dt.repertoire;
|
||||
}
|
||||
void set(CHARSET_INFO *collation_arg, Derivation derivation_arg)
|
||||
{
|
||||
collation= collation_arg;
|
||||
derivation= derivation_arg;
|
||||
set_repertoire_from_charset(collation_arg);
|
||||
}
|
||||
void set(CHARSET_INFO *collation_arg,
|
||||
Derivation derivation_arg,
|
||||
uint repertoire_arg)
|
||||
{
|
||||
collation= collation_arg;
|
||||
derivation= derivation_arg;
|
||||
repertoire= repertoire_arg;
|
||||
}
|
||||
void set(CHARSET_INFO *collation_arg)
|
||||
{ collation= collation_arg; }
|
||||
{
|
||||
collation= collation_arg;
|
||||
set_repertoire_from_charset(collation_arg);
|
||||
}
|
||||
void set(Derivation derivation_arg)
|
||||
{ derivation= derivation_arg; }
|
||||
bool aggregate(DTCollation &dt, uint flags= 0);
|
||||
@ -1672,10 +1693,11 @@ class Item_string :public Item
|
||||
{
|
||||
public:
|
||||
Item_string(const char *str,uint length,
|
||||
CHARSET_INFO *cs, Derivation dv= DERIVATION_COERCIBLE)
|
||||
CHARSET_INFO *cs, Derivation dv= DERIVATION_COERCIBLE,
|
||||
uint repertoire= MY_REPERTOIRE_UNICODE30)
|
||||
{
|
||||
collation.set(cs, dv);
|
||||
str_value.set_or_copy_aligned(str,length,cs);
|
||||
str_value.set_or_copy_aligned(str, length, cs);
|
||||
collation.set(cs, dv, repertoire);
|
||||
/*
|
||||
We have to have a different max_length than 'length' here to
|
||||
ensure that we get the right length if we do use the item
|
||||
@ -1699,10 +1721,11 @@ public:
|
||||
fixed= 1;
|
||||
}
|
||||
Item_string(const char *name_par, const char *str, uint length,
|
||||
CHARSET_INFO *cs, Derivation dv= DERIVATION_COERCIBLE)
|
||||
CHARSET_INFO *cs, Derivation dv= DERIVATION_COERCIBLE,
|
||||
uint repertoire= MY_REPERTOIRE_UNICODE30)
|
||||
{
|
||||
collation.set(cs, dv);
|
||||
str_value.set_or_copy_aligned(str,length,cs);
|
||||
str_value.set_or_copy_aligned(str, length, cs);
|
||||
collation.set(cs, dv, repertoire);
|
||||
max_length= str_value.numchars()*cs->mbmaxlen;
|
||||
set_name(name_par, 0, cs);
|
||||
decimals=NOT_FIXED_DEC;
|
||||
@ -1718,6 +1741,12 @@ public:
|
||||
str_value.copy(str_arg, length_arg, collation.collation);
|
||||
max_length= str_value.numchars() * collation.collation->mbmaxlen;
|
||||
}
|
||||
void set_repertoire_from_value()
|
||||
{
|
||||
collation.repertoire= my_string_repertoire(str_value.charset(),
|
||||
str_value.ptr(),
|
||||
str_value.length());
|
||||
}
|
||||
enum Type type() const { return STRING_ITEM; }
|
||||
double val_real();
|
||||
longlong val_int();
|
||||
|
@ -3767,7 +3767,7 @@ static user_var_entry *get_variable(HASH *hash, LEX_STRING &name,
|
||||
entry->value=0;
|
||||
entry->length=0;
|
||||
entry->update_query_id=0;
|
||||
entry->collation.set(NULL, DERIVATION_IMPLICIT);
|
||||
entry->collation.set(NULL, DERIVATION_IMPLICIT, 0);
|
||||
entry->unsigned_flag= 0;
|
||||
/*
|
||||
If we are here, we were called from a SET or a query which sets a
|
||||
|
@ -2673,7 +2673,8 @@ void Item_func_set_collation::fix_length_and_dec()
|
||||
colname, args[0]->collation.collation->csname);
|
||||
return;
|
||||
}
|
||||
collation.set(set_collation, DERIVATION_EXPLICIT);
|
||||
collation.set(set_collation, DERIVATION_EXPLICIT,
|
||||
args[0]->collation.repertoire);
|
||||
max_length= args[0]->max_length;
|
||||
}
|
||||
|
||||
|
@ -1718,7 +1718,11 @@ void Item_func_date_format::fix_length_and_dec()
|
||||
Item *arg1= args[1]->this_item();
|
||||
|
||||
decimals=0;
|
||||
collation.set(thd->variables.collation_connection);
|
||||
CHARSET_INFO *cs= thd->variables.collation_connection;
|
||||
uint32 repertoire= arg1->collation.repertoire;
|
||||
if (!thd->variables.lc_time_names->is_ascii)
|
||||
repertoire|= MY_REPERTOIRE_EXTENDED;
|
||||
collation.set(cs, arg1->collation.derivation, repertoire);
|
||||
if (arg1->type() == STRING_ITEM)
|
||||
{ // Optimize the normal case
|
||||
fixed_length=1;
|
||||
|
@ -311,10 +311,12 @@ static char *get_text(Lex_input_stream *lip)
|
||||
uint found_escape=0;
|
||||
CHARSET_INFO *cs= lip->m_thd->charset();
|
||||
|
||||
lip->tok_bitmap= 0;
|
||||
sep= yyGetLast(); // String should end with this
|
||||
while (lip->ptr != lip->end_of_query)
|
||||
{
|
||||
c = yyGet();
|
||||
c= yyGet();
|
||||
lip->tok_bitmap|= c;
|
||||
#ifdef USE_MB
|
||||
{
|
||||
int l;
|
||||
@ -605,6 +607,7 @@ int MYSQLlex(void *arg, void *yythd)
|
||||
break;
|
||||
}
|
||||
yylval->lex_str.length= lip->yytoklen;
|
||||
lex->text_string_is_7bit= (lip->tok_bitmap & 0x80) ? 0 : 1;
|
||||
return(NCHAR_STRING);
|
||||
|
||||
case MY_LEX_IDENT_OR_HEX:
|
||||
@ -926,6 +929,7 @@ int MYSQLlex(void *arg, void *yythd)
|
||||
break;
|
||||
}
|
||||
yylval->lex_str.length=lip->yytoklen;
|
||||
lex->text_string_is_7bit= (lip->tok_bitmap & 0x80) ? 0 : 1;
|
||||
return(TEXT_STRING);
|
||||
|
||||
case MY_LEX_COMMENT: // Comment
|
||||
|
@ -957,6 +957,9 @@ public:
|
||||
|
||||
/** Position of ';' in the stream, to delimit multiple queries. */
|
||||
const char* found_semicolon;
|
||||
|
||||
/** Token character bitmaps, to detect 7bit strings. */
|
||||
uchar tok_bitmap;
|
||||
|
||||
/** SQL_MODE = IGNORE_SPACE. */
|
||||
bool ignore_space;
|
||||
@ -994,6 +997,7 @@ typedef struct st_lex : public Query_tables_list
|
||||
gptr yacc_yyss,yacc_yyvs;
|
||||
THD *thd;
|
||||
CHARSET_INFO *charset, *underscore_charset;
|
||||
bool text_string_is_7bit;
|
||||
/* store original leaf_tables for INSERT SELECT and PS/SP */
|
||||
TABLE_LIST *leaf_tables_insert;
|
||||
/* Position (first character index) of SELECT of CREATE VIEW statement */
|
||||
|
@ -263,6 +263,8 @@ bool String::needs_conversion(uint32 arg_length,
|
||||
(to_cs == &my_charset_bin) ||
|
||||
(to_cs == from_cs) ||
|
||||
my_charset_same(from_cs, to_cs) ||
|
||||
(my_charset_is_ascii_based(to_cs) &&
|
||||
my_charset_is_8bit_pure_ascii(from_cs)) ||
|
||||
((from_cs == &my_charset_bin) &&
|
||||
(!(*offset=(arg_length % to_cs->mbminlen)))))
|
||||
return FALSE;
|
||||
|
@ -7523,18 +7523,54 @@ opt_load_data_set_spec:
|
||||
/* Common definitions */
|
||||
|
||||
text_literal:
|
||||
TEXT_STRING_literal
|
||||
{
|
||||
THD *thd= YYTHD;
|
||||
$$ = new Item_string($1.str,$1.length,thd->variables.collation_connection);
|
||||
}
|
||||
| NCHAR_STRING
|
||||
{ $$= new Item_string($1.str,$1.length,national_charset_info); }
|
||||
| UNDERSCORE_CHARSET TEXT_STRING
|
||||
{ $$ = new Item_string($2.str,$2.length,Lex->underscore_charset); }
|
||||
| text_literal TEXT_STRING_literal
|
||||
{ ((Item_string*) $1)->append($2.str,$2.length); }
|
||||
;
|
||||
TEXT_STRING
|
||||
{
|
||||
LEX_STRING tmp;
|
||||
THD *thd= YYTHD;
|
||||
CHARSET_INFO *cs_con= thd->variables.collation_connection;
|
||||
CHARSET_INFO *cs_cli= thd->variables.character_set_client;
|
||||
uint repertoire= thd->lex->text_string_is_7bit &&
|
||||
my_charset_is_ascii_based(cs_cli) ?
|
||||
MY_REPERTOIRE_ASCII : MY_REPERTOIRE_UNICODE30;
|
||||
if (thd->charset_is_collation_connection ||
|
||||
(repertoire == MY_REPERTOIRE_ASCII &&
|
||||
my_charset_is_ascii_based(cs_con)))
|
||||
tmp= $1;
|
||||
else
|
||||
thd->convert_string(&tmp, cs_con, $1.str, $1.length, cs_cli);
|
||||
$$= new Item_string(tmp.str, tmp.length, cs_con,
|
||||
DERIVATION_COERCIBLE, repertoire);
|
||||
}
|
||||
| NCHAR_STRING
|
||||
{
|
||||
uint repertoire= Lex->text_string_is_7bit ?
|
||||
MY_REPERTOIRE_ASCII : MY_REPERTOIRE_UNICODE30;
|
||||
DBUG_ASSERT(my_charset_is_ascii_based(national_charset_info));
|
||||
$$= new Item_string($1.str, $1.length, national_charset_info,
|
||||
DERIVATION_COERCIBLE, repertoire);
|
||||
}
|
||||
| UNDERSCORE_CHARSET TEXT_STRING
|
||||
{
|
||||
$$= new Item_string($2.str, $2.length, Lex->underscore_charset);
|
||||
((Item_string*) $$)->set_repertoire_from_value();
|
||||
}
|
||||
| text_literal TEXT_STRING_literal
|
||||
{
|
||||
Item_string* item= (Item_string*) $1;
|
||||
item->append($2.str, $2.length);
|
||||
if (!(item->collation.repertoire & MY_REPERTOIRE_EXTENDED))
|
||||
{
|
||||
/*
|
||||
If the string has been pure ASCII so far,
|
||||
check the new part.
|
||||
*/
|
||||
CHARSET_INFO *cs= YYTHD->variables.collation_connection;
|
||||
item->collation.repertoire|= my_string_repertoire(cs,
|
||||
$2.str,
|
||||
$2.length);
|
||||
}
|
||||
}
|
||||
;
|
||||
|
||||
text_string:
|
||||
TEXT_STRING_literal
|
||||
@ -7606,20 +7642,22 @@ literal:
|
||||
| TRUE_SYM { $$= new Item_int((char*) "TRUE",1,1); }
|
||||
| HEX_NUM { $$ = new Item_hex_string($1.str, $1.length);}
|
||||
| BIN_NUM { $$= new Item_bin_string($1.str, $1.length); }
|
||||
| UNDERSCORE_CHARSET HEX_NUM
|
||||
{
|
||||
Item *tmp= new Item_hex_string($2.str, $2.length);
|
||||
/*
|
||||
it is OK only emulate fix_fieds, because we need only
|
||||
| UNDERSCORE_CHARSET HEX_NUM
|
||||
{
|
||||
Item *tmp= new Item_hex_string($2.str, $2.length);
|
||||
/*
|
||||
it is OK only emulate fix_fieds, because we need only
|
||||
value of constant
|
||||
*/
|
||||
String *str= tmp ?
|
||||
tmp->quick_fix_field(), tmp->val_str((String*) 0) :
|
||||
(String*) 0;
|
||||
$$= new Item_string(str ? str->ptr() : "",
|
||||
str ? str->length() : 0,
|
||||
Lex->underscore_charset);
|
||||
}
|
||||
*/
|
||||
String *str= tmp ?
|
||||
tmp->quick_fix_field(), tmp->val_str((String*) 0) :
|
||||
(String*) 0;
|
||||
$$= new Item_string(str ? str->ptr() : "",
|
||||
str ? str->length() : 0,
|
||||
Lex->underscore_charset);
|
||||
if ($$)
|
||||
((Item_string *) $$)->set_repertoire_from_value();
|
||||
}
|
||||
| UNDERSCORE_CHARSET BIN_NUM
|
||||
{
|
||||
Item *tmp= new Item_bin_string($2.str, $2.length);
|
||||
|
@ -179,14 +179,16 @@ is_case_sensitive(CHARSET_INFO *cs)
|
||||
cs->sort_order['a'] < cs->sort_order['B']) ? 1 : 0;
|
||||
}
|
||||
|
||||
|
||||
void dispcset(FILE *f,CHARSET_INFO *cs)
|
||||
{
|
||||
fprintf(f,"{\n");
|
||||
fprintf(f," %d,%d,%d,\n",cs->number,0,0);
|
||||
fprintf(f," MY_CS_COMPILED%s%s%s,\n",
|
||||
cs->state & MY_CS_BINSORT ? "|MY_CS_BINSORT" : "",
|
||||
cs->state & MY_CS_PRIMARY ? "|MY_CS_PRIMARY" : "",
|
||||
is_case_sensitive(cs) ? "|MY_CS_CSSORT" : "");
|
||||
fprintf(f," MY_CS_COMPILED%s%s%s%s,\n",
|
||||
cs->state & MY_CS_BINSORT ? "|MY_CS_BINSORT" : "",
|
||||
cs->state & MY_CS_PRIMARY ? "|MY_CS_PRIMARY" : "",
|
||||
is_case_sensitive(cs) ? "|MY_CS_CSSORT" : "",
|
||||
my_charset_is_8bit_pure_ascii(cs) ? "|MY_CS_PUREASCII" : "");
|
||||
|
||||
if (cs->name)
|
||||
{
|
||||
|
@ -6722,7 +6722,7 @@ CHARSET_INFO compiled_charsets[] = {
|
||||
#ifdef HAVE_CHARSET_ascii
|
||||
{
|
||||
11,0,0,
|
||||
MY_CS_COMPILED|MY_CS_PRIMARY,
|
||||
MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_PUREASCII,
|
||||
"ascii", /* cset name */
|
||||
"ascii_general_ci", /* coll name */
|
||||
"", /* comment */
|
||||
@ -7811,7 +7811,7 @@ CHARSET_INFO compiled_charsets[] = {
|
||||
#ifdef HAVE_CHARSET_ascii
|
||||
{
|
||||
65,0,0,
|
||||
MY_CS_COMPILED|MY_CS_BINSORT,
|
||||
MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_PUREASCII,
|
||||
"ascii", /* cset name */
|
||||
"ascii_bin", /* coll name */
|
||||
"", /* comment */
|
||||
|
@ -306,3 +306,89 @@ my_bool my_parse_charset_xml(const char *buf, uint len,
|
||||
my_xml_parser_free(&p);
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Check repertoire: detect pure ascii strings
|
||||
*/
|
||||
uint
|
||||
my_string_repertoire(CHARSET_INFO *cs, const char *str, ulong length)
|
||||
{
|
||||
const char *strend= str + length;
|
||||
if (cs->mbminlen == 1)
|
||||
{
|
||||
for ( ; str < strend; str++)
|
||||
{
|
||||
if (((uchar) *str) > 0x7F)
|
||||
return MY_REPERTOIRE_UNICODE30;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
my_wc_t wc;
|
||||
int chlen;
|
||||
for (; (chlen= cs->cset->mb_wc(cs, &wc, str, strend)) > 0; str+= chlen)
|
||||
{
|
||||
if (wc > 0x7F)
|
||||
return MY_REPERTOIRE_UNICODE30;
|
||||
}
|
||||
}
|
||||
return MY_REPERTOIRE_ASCII;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Detect whether a character set is ASCII compatible.
|
||||
|
||||
Returns TRUE for:
|
||||
|
||||
- all 8bit character sets whose Unicode mapping of 0x7B is '{'
|
||||
(ignores swe7 which maps 0x7B to "LATIN LETTER A WITH DIAERESIS")
|
||||
|
||||
- all multi-byte character sets having mbminlen == 1
|
||||
(ignores ucs2 whose mbminlen is 2)
|
||||
|
||||
TODO:
|
||||
|
||||
When merging to 5.2, this function should be changed
|
||||
to check a new flag MY_CS_NONASCII,
|
||||
|
||||
return (cs->flag & MY_CS_NONASCII) ? 0 : 1;
|
||||
|
||||
This flag was previously added into 5.2 under terms
|
||||
of WL#3759 "Optimize identifier conversion in client-server protocol"
|
||||
especially to mark character sets not compatible with ASCII.
|
||||
|
||||
We won't backport this flag to 5.0 or 5.1.
|
||||
This function is Ok for 5.0 and 5.1, because we're not going
|
||||
to introduce new tricky character sets between 5.0 and 5.2.
|
||||
*/
|
||||
my_bool
|
||||
my_charset_is_ascii_based(CHARSET_INFO *cs)
|
||||
{
|
||||
return
|
||||
(cs->mbmaxlen == 1 && cs->tab_to_uni && cs->tab_to_uni['{'] == '{') ||
|
||||
(cs->mbminlen == 1 && cs->mbmaxlen > 1);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Detect if a character set is 8bit,
|
||||
and it is pure ascii, i.e. doesn't have
|
||||
characters outside U+0000..U+007F
|
||||
This functions is shared between "conf_to_src"
|
||||
and dynamic charsets loader in "mysqld".
|
||||
*/
|
||||
my_bool
|
||||
my_charset_is_8bit_pure_ascii(CHARSET_INFO *cs)
|
||||
{
|
||||
size_t code;
|
||||
if (!cs->tab_to_uni)
|
||||
return 0;
|
||||
for (code= 0; code < 256; code++)
|
||||
{
|
||||
if (cs->tab_to_uni[code] > 0x7F)
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
@ -13,15 +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
|
||||
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
# About "mysqlclient_notls", see note in "client/CMakeLists.txt"
|
||||
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
ADD_DEFINITIONS("-DMYSQL_CLIENT")
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
|
||||
|
||||
ADD_EXECUTABLE(mysql_client_test mysql_client_test.c)
|
||||
TARGET_LINK_LIBRARIES(mysql_client_test dbug mysys mysqlclient yassl taocrypt zlib wsock32)
|
||||
ADD_EXECUTABLE(mysql_client_test mysql_client_test.c ../mysys/my_memmem.c)
|
||||
TARGET_LINK_LIBRARIES(mysql_client_test mysqlclient_notls wsock32)
|
||||
|
||||
ADD_EXECUTABLE(bug25714 bug25714.c)
|
||||
TARGET_LINK_LIBRARIES(bug25714 dbug mysys mysqlclient yassl taocrypt zlib wsock32)
|
||||
TARGET_LINK_LIBRARIES(bug25714 mysqlclient_notls wsock32)
|
||||
|
@ -15570,7 +15570,7 @@ static void test_bug27876()
|
||||
int rc;
|
||||
MYSQL_RES *result;
|
||||
|
||||
char utf8_func[] =
|
||||
unsigned char utf8_func[] =
|
||||
{
|
||||
0xd1, 0x84, 0xd1, 0x83, 0xd0, 0xbd, 0xd0, 0xba,
|
||||
0xd1, 0x86, 0xd0, 0xb8, 0xd0, 0xb9, 0xd0, 0xba,
|
||||
@ -15578,7 +15578,7 @@ static void test_bug27876()
|
||||
0x00
|
||||
};
|
||||
|
||||
char utf8_param[] =
|
||||
unsigned char utf8_param[] =
|
||||
{
|
||||
0xd0, 0xbf, 0xd0, 0xb0, 0xd1, 0x80, 0xd0, 0xb0,
|
||||
0xd0, 0xbc, 0xd0, 0xb5, 0xd1, 0x82, 0xd1, 0x8a,
|
||||
@ -15735,6 +15735,55 @@ static void test_bug27592()
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Bug#29306 Truncated data in MS Access with decimal (3,1) columns in a VIEW
|
||||
*/
|
||||
|
||||
static void test_bug29306()
|
||||
{
|
||||
MYSQL_FIELD *field;
|
||||
int rc;
|
||||
MYSQL_RES *res;
|
||||
|
||||
DBUG_ENTER("test_bug29306");
|
||||
myheader("test_bug29306");
|
||||
|
||||
rc= mysql_query(mysql, "DROP TABLE IF EXISTS tab17557");
|
||||
myquery(rc);
|
||||
rc= mysql_query(mysql, "DROP VIEW IF EXISTS view17557");
|
||||
myquery(rc);
|
||||
rc= mysql_query(mysql, "CREATE TABLE tab17557 (dd decimal (3,1))");
|
||||
myquery(rc);
|
||||
rc= mysql_query(mysql, "CREATE VIEW view17557 as SELECT dd FROM tab17557");
|
||||
myquery(rc);
|
||||
rc= mysql_query(mysql, "INSERT INTO tab17557 VALUES (7.6)");
|
||||
myquery(rc);
|
||||
|
||||
/* Checking the view */
|
||||
res= mysql_list_fields(mysql, "view17557", NULL);
|
||||
while ((field= mysql_fetch_field(res)))
|
||||
{
|
||||
if (! opt_silent)
|
||||
{
|
||||
printf("field name %s\n", field->name);
|
||||
printf("field table %s\n", field->table);
|
||||
printf("field decimals %d\n", field->decimals);
|
||||
if (field->decimals < 1)
|
||||
printf("Error! No decimals! \n");
|
||||
printf("\n\n");
|
||||
}
|
||||
DIE_UNLESS(field->decimals == 1);
|
||||
}
|
||||
mysql_free_result(res);
|
||||
|
||||
rc= mysql_query(mysql, "DROP TABLE tab17557");
|
||||
myquery(rc);
|
||||
rc= mysql_query(mysql, "DROP VIEW view17557");
|
||||
myquery(rc);
|
||||
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
/*
|
||||
Read and parse arguments and MySQL options from my.cnf
|
||||
*/
|
||||
@ -16019,6 +16068,7 @@ static struct my_tests_st my_tests[]= {
|
||||
{ "test_bug28505", test_bug28505 },
|
||||
{ "test_bug28934", test_bug28934 },
|
||||
{ "test_bug27592", test_bug27592 },
|
||||
{ "test_bug29306", test_bug29306 },
|
||||
{ 0, 0 }
|
||||
};
|
||||
|
||||
|
@ -37,7 +37,6 @@ From the root of your bk clone, execute the command: win\configure <options>.
|
||||
The options right now are
|
||||
|
||||
WITH_INNOBASE_STORAGE_ENGINE Enable particular storage engines
|
||||
WITH_PARTITION_STORAGE_ENGINE
|
||||
WITH_ARCHIVE_STORAGE_ENGINE
|
||||
WITH_BERKELEY_STORAGE_ENGINE
|
||||
WITH_BLACKHOLE_STORAGE_ENGINE
|
||||
@ -57,7 +56,7 @@ The options right now are
|
||||
|
||||
So the command line could look like:
|
||||
|
||||
win\configure WITH_INNOBASE_STORAGE_ENGINE WITH_PARTITION_STORAGE_ENGINE MYSQL_SERVER_SUFFIX=-pro
|
||||
win\configure WITH_INNOBASE_STORAGE_ENGINE WITH_ARCHIVE_STORAGE_ENGINE MYSQL_SERVER_SUFFIX=-my-suffix
|
||||
|
||||
Step 5
|
||||
------
|
||||
|
@ -44,7 +44,6 @@ try
|
||||
case "WITH_EXAMPLE_STORAGE_ENGINE":
|
||||
case "WITH_FEDERATED_STORAGE_ENGINE":
|
||||
case "WITH_INNOBASE_STORAGE_ENGINE":
|
||||
case "WITH_PARTITION_STORAGE_ENGINE":
|
||||
case "__NT__":
|
||||
case "DISABLE_GRANT_OPTIONS":
|
||||
case "EMBED_MANIFESTS":
|
||||
|
@ -13,11 +13,18 @@
|
||||
# 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} -D_DEBUG")
|
||||
# Note that this library is not using any "Thread Local Storage" (TLS),
|
||||
# i.e. no data declared "__declspec(thread)" or allocated with TlsAlloc().
|
||||
# Not directly and indirectly using any of the macros for creating and
|
||||
# using the storage, pthread_key*(), {,my_}{set,get}_specific*() ....
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/zlib)
|
||||
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG")
|
||||
|
||||
ADD_DEFINITIONS(-DUSE_TLS -DMYSQL_CLIENT -D__WIN32__)
|
||||
ADD_LIBRARY(zlib adler32.c compress.c crc32.c crc32.h deflate.c deflate.h gzio.c infback.c inffast.c inffast.h
|
||||
SET(ZLIB_SOURCES adler32.c compress.c crc32.c crc32.h deflate.c deflate.h gzio.c infback.c inffast.c inffast.h
|
||||
inffixed.h inflate.c inflate.h inftrees.c inftrees.h trees.c trees.h uncompr.c zconf.h zlib.h
|
||||
zutil.c zutil.h)
|
||||
|
||||
IF(NOT SOURCE_SUBLIBS)
|
||||
ADD_LIBRARY(zlib ${ZLIB_SOURCES})
|
||||
ENDIF(NOT SOURCE_SUBLIBS)
|
||||
|
Loading…
x
Reference in New Issue
Block a user