mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
Merge from mysql-next-mr.
This commit is contained in:
commit
01b455d84e
50 changed files with 435 additions and 447 deletions
|
@ -42,6 +42,13 @@ ADD_DEFINITIONS(-DSHAREDIR="share")
|
|||
# Set debug options
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DFORCE_INIT_OF_VARS")
|
||||
|
||||
# Do not use SAFEMALLOC for Windows builds, as Debug CRT has the same functionality
|
||||
# Neither SAFE_MUTEX works on Windows and it has been explicitely undefined in
|
||||
# my_pthread.h
|
||||
IF(NOT WIN32)
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
ENDIF(NOT WIN32)
|
||||
|
||||
SET(localstatedir "C:\\mysql\\data")
|
||||
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/support-files/my-huge.cnf.sh
|
||||
|
@ -55,9 +62,6 @@ CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/support-files/my-medium.cnf.sh
|
|||
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/support-files/my-small.cnf.sh
|
||||
${CMAKE_SOURCE_DIR}/support-files/my-small.ini @ONLY)
|
||||
|
||||
|
||||
ADD_DEFINITIONS(-D__NT__)
|
||||
|
||||
IF(CYBOZU)
|
||||
ADD_DEFINITIONS(-DCYBOZU)
|
||||
ENDIF(CYBOZU)
|
||||
|
|
|
@ -14,13 +14,6 @@
|
|||
# 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 beyond 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")
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
|
||||
${CMAKE_SOURCE_DIR}/zlib
|
||||
${CMAKE_SOURCE_DIR}/extra/yassl/include
|
||||
|
@ -30,27 +23,27 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
|
|||
${CMAKE_SOURCE_DIR}/strings)
|
||||
|
||||
ADD_EXECUTABLE(mysql completion_hash.cc mysql.cc readline.cc sql_string.cc ../mysys/my_conio.c)
|
||||
TARGET_LINK_LIBRARIES(mysql mysqlclient_notls wsock32)
|
||||
TARGET_LINK_LIBRARIES(mysql mysqlclient)
|
||||
|
||||
ADD_EXECUTABLE(mysqltest mysqltest.cc)
|
||||
SET_SOURCE_FILES_PROPERTIES(mysqltest.cc PROPERTIES COMPILE_FLAGS "-DTHREADS")
|
||||
TARGET_LINK_LIBRARIES(mysqltest mysqlclient mysys regex wsock32 dbug)
|
||||
TARGET_LINK_LIBRARIES(mysqltest mysqlclient mysys regex dbug)
|
||||
|
||||
ADD_EXECUTABLE(mysqlcheck mysqlcheck.c)
|
||||
TARGET_LINK_LIBRARIES(mysqlcheck mysqlclient_notls wsock32)
|
||||
TARGET_LINK_LIBRARIES(mysqlcheck mysqlclient)
|
||||
|
||||
ADD_EXECUTABLE(mysqldump mysqldump.c ../sql-common/my_user.c ../mysys/mf_getdate.c)
|
||||
TARGET_LINK_LIBRARIES(mysqldump mysqlclient_notls wsock32)
|
||||
TARGET_LINK_LIBRARIES(mysqldump mysqlclient)
|
||||
|
||||
ADD_EXECUTABLE(mysqlimport mysqlimport.c)
|
||||
TARGET_LINK_LIBRARIES(mysqlimport mysqlclient_notls wsock32)
|
||||
TARGET_LINK_LIBRARIES(mysqlimport mysqlclient)
|
||||
|
||||
ADD_EXECUTABLE(mysql_upgrade mysql_upgrade.c ../mysys/my_getpagesize.c)
|
||||
TARGET_LINK_LIBRARIES(mysql_upgrade mysqlclient_notls wsock32)
|
||||
TARGET_LINK_LIBRARIES(mysql_upgrade mysqlclient)
|
||||
ADD_DEPENDENCIES(mysql_upgrade GenFixPrivs)
|
||||
|
||||
ADD_EXECUTABLE(mysqlshow mysqlshow.c)
|
||||
TARGET_LINK_LIBRARIES(mysqlshow mysqlclient_notls wsock32)
|
||||
TARGET_LINK_LIBRARIES(mysqlshow mysqlclient)
|
||||
|
||||
ADD_EXECUTABLE(mysqlbinlog mysqlbinlog.cc
|
||||
../mysys/mf_tempdir.c
|
||||
|
@ -59,14 +52,14 @@ ADD_EXECUTABLE(mysqlbinlog mysqlbinlog.cc
|
|||
../mysys/my_bitmap.c
|
||||
../mysys/my_vle.c
|
||||
../mysys/base64.c)
|
||||
TARGET_LINK_LIBRARIES(mysqlbinlog mysqlclient_notls wsock32)
|
||||
TARGET_LINK_LIBRARIES(mysqlbinlog mysqlclient)
|
||||
|
||||
ADD_EXECUTABLE(mysqladmin mysqladmin.cc)
|
||||
TARGET_LINK_LIBRARIES(mysqladmin mysqlclient_notls wsock32)
|
||||
TARGET_LINK_LIBRARIES(mysqladmin mysqlclient)
|
||||
|
||||
ADD_EXECUTABLE(mysqlslap mysqlslap.c)
|
||||
SET_SOURCE_FILES_PROPERTIES(mysqlslap.c PROPERTIES COMPILE_FLAGS "-DTHREADS")
|
||||
TARGET_LINK_LIBRARIES(mysqlslap mysqlclient mysys zlib wsock32 dbug)
|
||||
TARGET_LINK_LIBRARIES(mysqlslap mysqlclient mysys zlib dbug)
|
||||
|
||||
ADD_EXECUTABLE(echo echo.c)
|
||||
|
||||
|
|
|
@ -18,7 +18,6 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/dbug)
|
|||
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)
|
||||
|
|
|
@ -14,13 +14,11 @@
|
|||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
INCLUDE("${PROJECT_SOURCE_DIR}/win/mysql_manifest.cmake")
|
||||
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
|
||||
|
||||
ADD_EXECUTABLE(comp_err comp_err.c)
|
||||
TARGET_LINK_LIBRARIES(comp_err debug dbug mysys strings zlib wsock32)
|
||||
TARGET_LINK_LIBRARIES(comp_err dbug mysys strings zlib)
|
||||
|
||||
GET_TARGET_PROPERTY(COMP_ERR_EXE comp_err LOCATION)
|
||||
|
||||
|
@ -39,16 +37,16 @@ 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 debug dbug taocrypt wsock32)
|
||||
TARGET_LINK_LIBRARIES(my_print_defaults strings mysys dbug taocrypt)
|
||||
|
||||
ADD_EXECUTABLE(perror perror.c)
|
||||
TARGET_LINK_LIBRARIES(perror strings mysys debug dbug wsock32)
|
||||
TARGET_LINK_LIBRARIES(perror strings mysys dbug)
|
||||
|
||||
ADD_EXECUTABLE(resolveip resolveip.c)
|
||||
TARGET_LINK_LIBRARIES(resolveip strings mysys debug dbug wsock32)
|
||||
TARGET_LINK_LIBRARIES(resolveip strings mysys dbug)
|
||||
|
||||
ADD_EXECUTABLE(replace replace.c)
|
||||
TARGET_LINK_LIBRARIES(replace strings mysys debug dbug wsock32)
|
||||
TARGET_LINK_LIBRARIES(replace strings mysys dbug)
|
||||
|
||||
IF(EMBED_MANIFESTS)
|
||||
MYSQL_EMBED_MANIFEST("myTest" "asInvoker")
|
||||
|
|
|
@ -27,6 +27,9 @@
|
|||
#include <fcntl.h>
|
||||
#include <io.h>
|
||||
#include <malloc.h>
|
||||
#include <sys/stat.h>
|
||||
#include <process.h> /* getpid()*/
|
||||
|
||||
|
||||
#define HAVE_SMEM 1
|
||||
|
||||
|
@ -174,7 +177,7 @@ typedef uint rf_SetTimer;
|
|||
#define SIZEOF_CHARP 4
|
||||
#endif
|
||||
#define HAVE_BROKEN_NETINET_INCLUDES
|
||||
#ifdef __NT__
|
||||
#ifdef _WIN32
|
||||
#define HAVE_NAMED_PIPE /* We can only create pipes on NT */
|
||||
#endif
|
||||
|
||||
|
@ -287,11 +290,6 @@ inline ulonglong double2ulonglong(double d)
|
|||
#define strcasecmp stricmp
|
||||
#define strncasecmp strnicmp
|
||||
|
||||
#ifndef __NT__
|
||||
#undef FILE_SHARE_DELETE
|
||||
#define FILE_SHARE_DELETE 0 /* Not implemented on Win 98/ME */
|
||||
#endif
|
||||
|
||||
#ifdef NOT_USED
|
||||
#define HAVE_SNPRINTF /* Gave link error */
|
||||
#define _snprintf snprintf
|
||||
|
@ -341,7 +339,7 @@ inline ulonglong double2ulonglong(double d)
|
|||
#define thread_safe_increment(V,L) InterlockedIncrement((long*) &(V))
|
||||
#define thread_safe_decrement(V,L) InterlockedDecrement((long*) &(V))
|
||||
/* The following is only used for statistics, so it should be good enough */
|
||||
#ifdef __NT__ /* This should also work on Win98 but .. */
|
||||
#ifdef _WIN32
|
||||
#define thread_safe_add(V,C,L) InterlockedExchangeAdd((long*) &(V),(C))
|
||||
#define thread_safe_sub(V,C,L) InterlockedExchangeAdd((long*) &(V),-(long) (C))
|
||||
#endif
|
||||
|
|
|
@ -87,6 +87,7 @@ extern MY_UNI_CTYPE my_uni_ctype[256];
|
|||
#define MY_CS_CSSORT 1024 /* if case sensitive sort order */
|
||||
#define MY_CS_HIDDEN 2048 /* don't display in SHOW */
|
||||
#define MY_CS_PUREASCII 4096 /* if a charset is pure ascii */
|
||||
#define MY_CS_NONASCII 8192 /* if not ASCII-compatible */
|
||||
#define MY_CHARSET_UNDEFINED 0
|
||||
|
||||
/* Character repertoire flags */
|
||||
|
@ -474,6 +475,7 @@ my_bool my_charset_is_ascii_based(CHARSET_INFO *cs);
|
|||
my_bool my_charset_is_8bit_pure_ascii(CHARSET_INFO *cs);
|
||||
uint my_charset_repertoire(CHARSET_INFO *cs);
|
||||
|
||||
my_bool my_charset_is_ascii_compatible(CHARSET_INFO *cs);
|
||||
|
||||
#define _MY_U 01 /* Upper case */
|
||||
#define _MY_L 02 /* Lower case */
|
||||
|
|
|
@ -31,7 +31,7 @@ extern "C" {
|
|||
|
||||
#if defined(__WIN__)
|
||||
typedef CRITICAL_SECTION pthread_mutex_t;
|
||||
typedef HANDLE pthread_t;
|
||||
typedef DWORD pthread_t;
|
||||
typedef struct thread_attr {
|
||||
DWORD dwStackSize ;
|
||||
DWORD dwCreatingFlag ;
|
||||
|
@ -64,8 +64,7 @@ typedef struct {
|
|||
|
||||
|
||||
typedef int pthread_mutexattr_t;
|
||||
#define win_pthread_self my_thread_var->pthread_self
|
||||
#define pthread_self() win_pthread_self
|
||||
#define pthread_self() GetCurrentThreadId()
|
||||
#define pthread_handler_t EXTERNC void * __cdecl
|
||||
typedef void * (__cdecl *pthread_handler)(void *);
|
||||
|
||||
|
@ -99,8 +98,7 @@ struct timespec {
|
|||
(ABSTIME).max_timeout_msec= (long)((NSEC)/1000000); \
|
||||
}
|
||||
|
||||
void win_pthread_init(void);
|
||||
int win_pthread_setspecific(void *A,void *B,uint length);
|
||||
|
||||
int win_pthread_mutex_trylock(pthread_mutex_t *mutex);
|
||||
int pthread_create(pthread_t *,pthread_attr_t *,pthread_handler,void *);
|
||||
int pthread_cond_init(pthread_cond_t *cond, const pthread_condattr_t *attr);
|
||||
|
@ -117,42 +115,25 @@ int pthread_attr_destroy(pthread_attr_t *connect_att);
|
|||
struct tm *localtime_r(const time_t *timep,struct tm *tmp);
|
||||
struct tm *gmtime_r(const time_t *timep,struct tm *tmp);
|
||||
|
||||
void pthread_exit(void *a);
|
||||
int pthread_join(pthread_t thread, void **value_ptr);
|
||||
|
||||
void pthread_exit(void *a); /* was #define pthread_exit(A) ExitThread(A)*/
|
||||
|
||||
#define ETIMEDOUT 145 /* Win32 doesn't have this */
|
||||
#define getpid() GetCurrentThreadId()
|
||||
#define HAVE_LOCALTIME_R 1
|
||||
#define _REENTRANT 1
|
||||
#define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
|
||||
|
||||
/*
|
||||
Windows has two ways to use thread local storage. The most efficient
|
||||
is using __declspec(thread), but that does not work properly when
|
||||
used in a .dll that is loaded at runtime, after program load. So for
|
||||
libmysql.dll and libmysqld.dll we define USE_TLS in order to use the
|
||||
TlsXxx() API instead, which works in all cases.
|
||||
*/
|
||||
#ifdef USE_TLS /* For LIBMYSQL.DLL */
|
||||
|
||||
#undef SAFE_MUTEX /* This will cause conflicts */
|
||||
#define pthread_key(T,V) DWORD V
|
||||
#define pthread_key_create(A,B) ((*A=TlsAlloc())==0xFFFFFFFF)
|
||||
#define pthread_key_delete(A) TlsFree(A)
|
||||
#define my_pthread_setspecific_ptr(T,V) (!TlsSetValue((T),(V)))
|
||||
#define pthread_setspecific(A,B) (!TlsSetValue((A),(B)))
|
||||
#define pthread_getspecific(A) (TlsGetValue(A))
|
||||
#define my_pthread_getspecific(T,A) ((T) TlsGetValue(A))
|
||||
#define my_pthread_getspecific_ptr(T,V) ((T) TlsGetValue(V))
|
||||
#define my_pthread_setspecific_ptr(T,V) (!TlsSetValue((T),(V)))
|
||||
#define pthread_setspecific(A,B) (!TlsSetValue((A),(B)))
|
||||
#else
|
||||
#define pthread_key(T,V) __declspec(thread) T V
|
||||
#define pthread_key_create(A,B) pthread_dummy(0)
|
||||
#define pthread_key_delete(A) pthread_dummy(0)
|
||||
#define pthread_getspecific(A) (&(A))
|
||||
#define my_pthread_getspecific(T,A) (&(A))
|
||||
#define my_pthread_getspecific_ptr(T,V) (V)
|
||||
#define my_pthread_setspecific_ptr(T,V) ((T)=(V),0)
|
||||
#define pthread_setspecific(A,B) win_pthread_setspecific(&(A),(B),sizeof(A))
|
||||
#endif /* USE_TLS */
|
||||
|
||||
#define pthread_equal(A,B) ((A) == (B))
|
||||
#define pthread_mutex_init(A,B) (InitializeCriticalSection(A),0)
|
||||
|
@ -163,7 +144,6 @@ void pthread_exit(void *a); /* was #define pthread_exit(A) ExitThread(A)*/
|
|||
#define my_pthread_setprio(A,B) SetThreadPriority(GetCurrentThread(), (B))
|
||||
#define pthread_kill(A,B) pthread_dummy((A) ? 0 : ESRCH)
|
||||
|
||||
#define pthread_join(A,B) (WaitForSingleObject((A), INFINITE) != WAIT_OBJECT_0)
|
||||
|
||||
/* Dummy defines for easier code */
|
||||
#define pthread_attr_setdetachstate(A,B) pthread_dummy(0)
|
||||
|
|
|
@ -640,7 +640,7 @@ extern int my_access(const char *path, int amode);
|
|||
extern int check_if_legal_filename(const char *path);
|
||||
extern int check_if_legal_tablename(const char *path);
|
||||
|
||||
#if defined(__WIN__) && defined(__NT__)
|
||||
#ifdef _WIN32
|
||||
extern int nt_share_delete(const char *name,myf MyFlags);
|
||||
#define my_delete_allow_opened(fname,flags) nt_share_delete((fname),(flags))
|
||||
#else
|
||||
|
|
|
@ -14,8 +14,6 @@
|
|||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
INCLUDE("${PROJECT_SOURCE_DIR}/win/mysql_manifest.cmake")
|
||||
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
|
||||
# Note that we don't link with the libraries "strings" or "mysys"
|
||||
# here, instead we recompile the files needed and include them
|
||||
|
@ -100,31 +98,15 @@ SET(CLIENT_SOURCES ../mysys/array.c ../strings/bchange.c ../strings/bmove.c
|
|||
../vio/viossl.c ../vio/viosslfactories.c ../strings/xml.c ../mysys/mf_qsort.c
|
||||
../mysys/my_getsystime.c ../mysys/my_sync.c ../mysys/my_winerr.c ../mysys/my_winfile.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(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)
|
||||
|
||||
ADD_LIBRARY(libmysql SHARED ${CLIENT_SOURCES} dll.c libmysql.def)
|
||||
IF(WIN32)
|
||||
SET_TARGET_PROPERTIES(libmysql mysqlclient PROPERTIES COMPILE_FLAGS "-DUSE_TLS")
|
||||
ENDIF(WIN32)
|
||||
ADD_DEPENDENCIES(libmysql GenError)
|
||||
TARGET_LINK_LIBRARIES(libmysql wsock32)
|
||||
TARGET_LINK_LIBRARIES(libmysql)
|
||||
|
||||
IF(EMBED_MANIFESTS)
|
||||
MYSQL_EMBED_MANIFEST("myTest" "asInvoker")
|
||||
|
|
|
@ -13,15 +13,6 @@
|
|||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
|
||||
# Need to set USE_TLS, since __declspec(thread) approach to thread local
|
||||
# storage does not work properly in DLLs.
|
||||
IF(WIN32)
|
||||
ADD_DEFINITIONS(-DUSE_TLS)
|
||||
ENDIF(WIN32)
|
||||
|
||||
ADD_DEFINITIONS(-DMYSQL_SERVER -DEMBEDDED_LIBRARY -DHAVE_DLOPEN)
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
|
||||
|
@ -139,7 +130,7 @@ SET(LIBMYSQLD_SOURCES emb_qcache.cc libmysqld.c lib_sql.cc
|
|||
../sql/time.cc ../sql/tztime.cc ../sql/uniques.cc ../sql/unireg.cc
|
||||
../sql/partition_info.cc ../sql/sql_connect.cc
|
||||
../sql/scheduler.cc ../sql/event_parse_data.cc
|
||||
./sql/sql_signal.cc
|
||||
../sql/sql_signal.cc
|
||||
${GEN_SOURCES}
|
||||
${LIB_SOURCES})
|
||||
|
||||
|
|
|
@ -20,9 +20,6 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
|
|||
${CMAKE_SOURCE_DIR}/extra/yassl/include)
|
||||
|
||||
# Currently does not work with DBUG, there are missing symbols reported.
|
||||
IF(WIN32)
|
||||
ADD_DEFINITIONS(-DUSE_TLS)
|
||||
ENDIF(WIN32)
|
||||
|
||||
ADD_DEFINITIONS(-DEMBEDDED_LIBRARY)
|
||||
|
||||
|
|
|
@ -1175,3 +1175,27 @@ int vprint_msg_to_log(enum loglevel level __attribute__((unused)),
|
|||
mysql_server_last_errno= CR_UNKNOWN_ERROR;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
bool Protocol::net_store_data(const uchar *from, size_t length,
|
||||
CHARSET_INFO *from_cs, CHARSET_INFO *to_cs)
|
||||
{
|
||||
uint conv_length= to_cs->mbmaxlen * length / from_cs->mbminlen;
|
||||
uint dummy_error;
|
||||
char *field_buf;
|
||||
if (!thd->mysql) // bootstrap file handling
|
||||
return false;
|
||||
|
||||
if (!(field_buf= (char*) alloc_root(alloc, conv_length + sizeof(uint) + 1)))
|
||||
return true;
|
||||
*next_field= field_buf + sizeof(uint);
|
||||
length= copy_and_convert(*next_field, conv_length, to_cs,
|
||||
(const char*) from, length, from_cs, &dummy_error);
|
||||
*(uint *) field_buf= length;
|
||||
(*next_field)[length]= 0;
|
||||
if (next_mysql_field->max_length < length)
|
||||
next_mysql_field->max_length= length;
|
||||
++next_field;
|
||||
++next_mysql_field;
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -13,8 +13,6 @@
|
|||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
|
||||
# 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"
|
||||
|
|
|
@ -248,6 +248,7 @@ static int add_collation(CHARSET_INFO *cs)
|
|||
{
|
||||
#if defined(HAVE_CHARSET_ucs2) && defined(HAVE_UCA_COLLATIONS)
|
||||
copy_uca_collation(newcs, &my_charset_ucs2_unicode_ci);
|
||||
newcs->state|= MY_CS_AVAILABLE | MY_CS_LOADED | MY_CS_NONASCII;
|
||||
#endif
|
||||
}
|
||||
else if (!strcmp(cs->csname, "utf8"))
|
||||
|
@ -280,6 +281,8 @@ static int add_collation(CHARSET_INFO *cs)
|
|||
|
||||
if (my_charset_is_8bit_pure_ascii(all_charsets[cs->number]))
|
||||
all_charsets[cs->number]->state|= MY_CS_PUREASCII;
|
||||
if (!my_charset_is_ascii_compatible(cs))
|
||||
all_charsets[cs->number]->state|= MY_CS_NONASCII;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
@ -36,7 +36,7 @@ int my_delete(const char *name, myf MyFlags)
|
|||
DBUG_RETURN(err);
|
||||
} /* my_delete */
|
||||
|
||||
#if defined(__WIN__) && defined(__NT__)
|
||||
#if defined(__WIN__)
|
||||
/*
|
||||
Delete file which is possibly not closed.
|
||||
|
||||
|
|
|
@ -27,6 +27,8 @@
|
|||
#ifdef _MSC_VER
|
||||
#include <locale.h>
|
||||
#include <crtdbg.h>
|
||||
/* WSAStartup needs winsock library*/
|
||||
#pragma comment(lib, "ws2_32")
|
||||
#endif
|
||||
my_bool have_tcpip=0;
|
||||
static void my_win_init(void);
|
||||
|
|
|
@ -23,11 +23,7 @@
|
|||
#include <signal.h>
|
||||
|
||||
#ifdef THREAD
|
||||
#ifdef USE_TLS
|
||||
pthread_key(struct st_my_thread_var*, THR_KEY_mysys);
|
||||
#else
|
||||
pthread_key(struct st_my_thread_var, THR_KEY_mysys);
|
||||
#endif /* USE_TLS */
|
||||
pthread_mutex_t THR_LOCK_malloc,THR_LOCK_open,
|
||||
THR_LOCK_lock,THR_LOCK_isam,THR_LOCK_myisam,THR_LOCK_heap,
|
||||
THR_LOCK_net, THR_LOCK_charset, THR_LOCK_threads, THR_LOCK_time;
|
||||
|
@ -46,7 +42,9 @@ pthread_mutexattr_t my_fast_mutexattr;
|
|||
#ifdef PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP
|
||||
pthread_mutexattr_t my_errorcheck_mutexattr;
|
||||
#endif
|
||||
|
||||
#ifdef _MSC_VER
|
||||
static void install_sigabrt_handler();
|
||||
#endif
|
||||
#ifdef TARGET_OS_LINUX
|
||||
|
||||
/*
|
||||
|
@ -149,15 +147,18 @@ my_bool my_thread_global_init(void)
|
|||
pthread_mutex_init(&THR_LOCK_threads,MY_MUTEX_INIT_FAST);
|
||||
pthread_mutex_init(&THR_LOCK_time,MY_MUTEX_INIT_FAST);
|
||||
pthread_cond_init(&THR_COND_threads, NULL);
|
||||
#if defined( __WIN__) || defined(OS2)
|
||||
win_pthread_init();
|
||||
#endif
|
||||
|
||||
#if !defined(HAVE_LOCALTIME_R) || !defined(HAVE_GMTIME_R)
|
||||
pthread_mutex_init(&LOCK_localtime_r,MY_MUTEX_INIT_SLOW);
|
||||
#endif
|
||||
#ifndef HAVE_GETHOSTBYNAME_R
|
||||
pthread_mutex_init(&LOCK_gethostbyname_r,MY_MUTEX_INIT_SLOW);
|
||||
#endif
|
||||
|
||||
#ifdef _MSC_VER
|
||||
install_sigabrt_handler();
|
||||
#endif
|
||||
|
||||
if (my_thread_init())
|
||||
{
|
||||
my_thread_global_end(); /* Clean up */
|
||||
|
@ -258,7 +259,6 @@ my_bool my_thread_init(void)
|
|||
(ulong) pthread_self());
|
||||
#endif
|
||||
|
||||
#if !defined(__WIN__) || defined(USE_TLS)
|
||||
if (my_pthread_getspecific(struct st_my_thread_var *,THR_KEY_mysys))
|
||||
{
|
||||
#ifdef EXTRA_DEBUG_THREADS
|
||||
|
@ -267,26 +267,18 @@ my_bool my_thread_init(void)
|
|||
#endif
|
||||
goto end;
|
||||
}
|
||||
|
||||
#ifdef _MSC_VER
|
||||
install_sigabrt_handler();
|
||||
#endif
|
||||
|
||||
if (!(tmp= (struct st_my_thread_var *) calloc(1, sizeof(*tmp))))
|
||||
{
|
||||
error= 1;
|
||||
goto end;
|
||||
}
|
||||
pthread_setspecific(THR_KEY_mysys,tmp);
|
||||
|
||||
#else /* defined(__WIN__) && !(defined(USE_TLS) */
|
||||
/*
|
||||
Skip initialization if the thread specific variable is already initialized
|
||||
*/
|
||||
if (THR_KEY_mysys.id)
|
||||
goto end;
|
||||
tmp= &THR_KEY_mysys;
|
||||
#endif
|
||||
#if defined(__WIN__) && defined(EMBEDDED_LIBRARY)
|
||||
tmp->pthread_self= (pthread_t) getpid();
|
||||
#else
|
||||
tmp->pthread_self= pthread_self();
|
||||
#endif
|
||||
pthread_mutex_init(&tmp->mutex,MY_MUTEX_INIT_FAST);
|
||||
pthread_cond_init(&tmp->suspend, NULL);
|
||||
tmp->init= 1;
|
||||
|
@ -342,11 +334,7 @@ void my_thread_end(void)
|
|||
pthread_cond_destroy(&tmp->suspend);
|
||||
#endif
|
||||
pthread_mutex_destroy(&tmp->mutex);
|
||||
#if !defined(__WIN__) || defined(USE_TLS)
|
||||
free(tmp);
|
||||
#else
|
||||
tmp->init= 0;
|
||||
#endif
|
||||
|
||||
/*
|
||||
Decrement counter for number of running threads. We are using this
|
||||
|
@ -360,10 +348,7 @@ void my_thread_end(void)
|
|||
pthread_cond_signal(&THR_COND_threads);
|
||||
pthread_mutex_unlock(&THR_LOCK_threads);
|
||||
}
|
||||
/* The following free has to be done, even if my_thread_var() is 0 */
|
||||
#if !defined(__WIN__) || defined(USE_TLS)
|
||||
pthread_setspecific(THR_KEY_mysys,0);
|
||||
#endif
|
||||
}
|
||||
|
||||
struct st_my_thread_var *_my_thread_var(void)
|
||||
|
@ -419,4 +404,30 @@ static uint get_thread_lib(void)
|
|||
return THD_LIB_OTHER;
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
/*
|
||||
In Visual Studio 2005 and later, default SIGABRT handler will overwrite
|
||||
any unhandled exception filter set by the application and will try to
|
||||
call JIT debugger. This is not what we want, this we calling __debugbreak
|
||||
to stop in debugger, if process is being debugged or to generate
|
||||
EXCEPTION_BREAKPOINT and then handle_segfault will do its magic.
|
||||
*/
|
||||
|
||||
#if (_MSC_VER >= 1400)
|
||||
static void my_sigabrt_handler(int sig)
|
||||
{
|
||||
__debugbreak();
|
||||
}
|
||||
#endif /*_MSC_VER >=1400 */
|
||||
|
||||
static void install_sigabrt_handler(void)
|
||||
{
|
||||
#if (_MSC_VER >=1400)
|
||||
/*abort() should not override our exception filter*/
|
||||
_set_abort_behavior(0,_CALL_REPORTFAULT);
|
||||
signal(SIGABRT,my_sigabrt_handler);
|
||||
#endif /* _MSC_VER >=1400 */
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* THREAD */
|
||||
|
|
|
@ -16,12 +16,11 @@
|
|||
/*****************************************************************************
|
||||
** The following is a simple implementation of posix conditions
|
||||
*****************************************************************************/
|
||||
#if defined(_WIN32)
|
||||
|
||||
#undef SAFE_MUTEX /* Avoid safe_mutex redefinitions */
|
||||
#include "mysys_priv.h"
|
||||
#if defined(THREAD) && defined(__WIN__)
|
||||
#include <m_string.h>
|
||||
#undef getpid
|
||||
#include <process.h>
|
||||
#include <sys/timeb.h>
|
||||
|
||||
|
|
|
@ -314,10 +314,10 @@ size_t my_win_pread(File Filedes, uchar *Buffer, size_t Count, my_off_t offset)
|
|||
if(!ReadFile(hFile, Buffer, (DWORD)Count, &nBytesRead, &ov))
|
||||
{
|
||||
DWORD lastError= GetLastError();
|
||||
/*
|
||||
ERROR_BROKEN_PIPE is returned when no more data coming
|
||||
through e.g. a command pipe in windows : see MSDN on ReadFile.
|
||||
*/
|
||||
/*
|
||||
ERROR_BROKEN_PIPE is returned when no more data coming
|
||||
through e.g. a command pipe in windows : see MSDN on ReadFile.
|
||||
*/
|
||||
if(lastError == ERROR_HANDLE_EOF || lastError == ERROR_BROKEN_PIPE)
|
||||
DBUG_RETURN(0); /*return 0 at EOF*/
|
||||
my_osmaperr(lastError);
|
||||
|
@ -367,8 +367,8 @@ size_t my_win_pwrite(File Filedes, const uchar *Buffer, size_t Count,
|
|||
LARGE_INTEGER li;
|
||||
|
||||
DBUG_ENTER("my_win_pwrite");
|
||||
DBUG_PRINT("my",("Filedes: %d, Buffer: %p, Count: %zd, offset: %llu",
|
||||
Filedes, Buffer, Count, (ulonglong)offset));
|
||||
DBUG_PRINT("my",("Filedes: %d, Buffer: %p, Count: %llu, offset: %llu",
|
||||
Filedes, Buffer, (ulonglong)Count, (ulonglong)offset));
|
||||
|
||||
if(!Count)
|
||||
DBUG_RETURN(0);
|
||||
|
@ -425,7 +425,8 @@ size_t my_win_write(File fd, const uchar *Buffer, size_t Count)
|
|||
HANDLE hFile;
|
||||
|
||||
DBUG_ENTER("my_win_write");
|
||||
DBUG_PRINT("my",("Filedes: %d, Buffer: %p, Count %zd", fd, Buffer, Count));
|
||||
DBUG_PRINT("my",("Filedes: %d, Buffer: %p, Count %llu", fd, Buffer,
|
||||
(ulonglong)Count));
|
||||
if(my_get_open_flags(fd) & _O_APPEND)
|
||||
{
|
||||
/*
|
||||
|
|
|
@ -14,33 +14,23 @@
|
|||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
||||
|
||||
/*****************************************************************************
|
||||
** Simulation of posix threads calls for WIN95 and NT
|
||||
** Simulation of posix threads calls for Windows
|
||||
*****************************************************************************/
|
||||
|
||||
#if defined (_WIN32)
|
||||
/* SAFE_MUTEX will not work until the thread structure is up to date */
|
||||
#undef SAFE_MUTEX
|
||||
|
||||
#include "mysys_priv.h"
|
||||
#if defined(THREAD) && defined(__WIN__)
|
||||
#include <m_string.h>
|
||||
#undef getpid
|
||||
#include <process.h>
|
||||
#include <signal.h>
|
||||
|
||||
static pthread_mutex_t THR_LOCK_thread;
|
||||
static void install_sigabrt_handler(void);
|
||||
|
||||
struct pthread_map
|
||||
struct thread_start_parameter
|
||||
{
|
||||
HANDLE pthreadself;
|
||||
pthread_handler func;
|
||||
void *param;
|
||||
void *arg;
|
||||
};
|
||||
|
||||
void win_pthread_init(void)
|
||||
{
|
||||
pthread_mutex_init(&THR_LOCK_thread,MY_MUTEX_INIT_FAST);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Adapter to @c pthread_mutex_trylock()
|
||||
|
||||
|
@ -62,79 +52,81 @@ win_pthread_mutex_trylock(pthread_mutex_t *mutex)
|
|||
return EBUSY;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
** We have tried to use '_beginthreadex' instead of '_beginthread' here
|
||||
** but in this case the program leaks about 512 characters for each
|
||||
** created thread !
|
||||
** As we want to save the created thread handler for other threads to
|
||||
** use and to be returned by pthread_self() (instead of the Win32 pseudo
|
||||
** handler), we have to go trough pthread_start() to catch the returned handler
|
||||
** in the new thread.
|
||||
*/
|
||||
|
||||
pthread_handler_t pthread_start(void *param)
|
||||
static unsigned int __stdcall pthread_start(void *p)
|
||||
{
|
||||
pthread_handler func=((struct pthread_map *) param)->func;
|
||||
void *func_param=((struct pthread_map *) param)->param;
|
||||
my_thread_init(); /* Will always succeed in windows */
|
||||
pthread_mutex_lock(&THR_LOCK_thread); /* Wait for beginthread to return */
|
||||
win_pthread_self=((struct pthread_map *) param)->pthreadself;
|
||||
pthread_mutex_unlock(&THR_LOCK_thread);
|
||||
free((char*) param); /* Free param from create */
|
||||
pthread_exit((void*) (*func)(func_param));
|
||||
return 0; /* Safety */
|
||||
struct thread_start_parameter *par= (struct thread_start_parameter *)p;
|
||||
pthread_handler func= par->func;
|
||||
void *arg= par->arg;
|
||||
free(p);
|
||||
(*func)(arg);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int pthread_create(pthread_t *thread_id, pthread_attr_t *attr,
|
||||
pthread_handler func, void *param)
|
||||
pthread_handler func, void *param)
|
||||
{
|
||||
HANDLE hThread;
|
||||
struct pthread_map *map;
|
||||
uintptr_t handle;
|
||||
struct thread_start_parameter *par;
|
||||
unsigned int stack_size;
|
||||
DBUG_ENTER("pthread_create");
|
||||
|
||||
if (!(map=malloc(sizeof(*map))))
|
||||
DBUG_RETURN(-1);
|
||||
map->func=func;
|
||||
map->param=param;
|
||||
pthread_mutex_lock(&THR_LOCK_thread);
|
||||
#ifdef __BORLANDC__
|
||||
hThread=(HANDLE)_beginthread((void(_USERENTRY *)(void *)) pthread_start,
|
||||
attr->dwStackSize ? attr->dwStackSize :
|
||||
65535, (void*) map);
|
||||
#else
|
||||
hThread=(HANDLE)_beginthread((void( __cdecl *)(void *)) pthread_start,
|
||||
attr->dwStackSize ? attr->dwStackSize :
|
||||
65535, (void*) map);
|
||||
#endif
|
||||
DBUG_PRINT("info", ("hThread=%lu",(long) hThread));
|
||||
*thread_id=map->pthreadself=hThread;
|
||||
pthread_mutex_unlock(&THR_LOCK_thread);
|
||||
par= (struct thread_start_parameter *)malloc(sizeof(*par));
|
||||
if (!par)
|
||||
goto error_return;
|
||||
|
||||
if (hThread == (HANDLE) -1)
|
||||
{
|
||||
int error=errno;
|
||||
DBUG_PRINT("error",
|
||||
("Can't create thread to handle request (error %d)",error));
|
||||
DBUG_RETURN(error ? error : -1);
|
||||
}
|
||||
VOID(SetThreadPriority(hThread, attr->priority)) ;
|
||||
par->func= func;
|
||||
par->arg= param;
|
||||
stack_size= attr?attr->dwStackSize:0;
|
||||
|
||||
handle= _beginthreadex(NULL, stack_size , pthread_start, par, 0, thread_id);
|
||||
if (!handle)
|
||||
goto error_return;
|
||||
DBUG_PRINT("info", ("thread id=%u",*thread_id));
|
||||
|
||||
/* Do not need thread handle, close it */
|
||||
CloseHandle((HANDLE)handle);
|
||||
DBUG_RETURN(0);
|
||||
|
||||
error_return:
|
||||
DBUG_PRINT("error",
|
||||
("Can't create thread to handle request (error %d)",errno));
|
||||
DBUG_RETURN(-1);
|
||||
}
|
||||
|
||||
|
||||
void pthread_exit(void *a)
|
||||
{
|
||||
_endthread();
|
||||
_endthreadex(0);
|
||||
}
|
||||
|
||||
/* This is neaded to get the macro pthread_setspecific to work */
|
||||
|
||||
int win_pthread_setspecific(void *a,void *b,uint length)
|
||||
int pthread_join(pthread_t thread, void **value_ptr)
|
||||
{
|
||||
memcpy(a,b,length);
|
||||
DWORD ret;
|
||||
HANDLE handle;
|
||||
|
||||
handle= OpenThread(SYNCHRONIZE, FALSE, thread);
|
||||
if (!handle)
|
||||
{
|
||||
errno= EINVAL;
|
||||
goto error_return;
|
||||
}
|
||||
|
||||
ret= WaitForSingleObject(handle, INFINITE);
|
||||
|
||||
if(ret != WAIT_OBJECT_0)
|
||||
{
|
||||
errno= EINVAL;
|
||||
goto error_return;
|
||||
}
|
||||
|
||||
CloseHandle(handle);
|
||||
return 0;
|
||||
|
||||
error_return:
|
||||
if(handle)
|
||||
CloseHandle(handle);
|
||||
return -1;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -13,8 +13,6 @@
|
|||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
|
||||
|
||||
|
|
|
@ -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 debug dbug mysys strings)
|
||||
TARGET_LINK_LIBRARIES(comp_sql dbug mysys strings)
|
||||
|
||||
# Use comp_sql to build mysql_fix_privilege_tables_sql.c
|
||||
GET_TARGET_PROPERTY(COMP_SQL_EXE comp_sql LOCATION)
|
||||
|
|
|
@ -15,9 +15,9 @@
|
|||
INCLUDE("${PROJECT_SOURCE_DIR}/win/mysql_manifest.cmake")
|
||||
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG
|
||||
"${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX -DUSE_SYMDIR /Zi")
|
||||
"${CMAKE_CXX_FLAGS_DEBUG} -DUSE_SYMDIR /Zi")
|
||||
SET(CMAKE_C_FLAGS_DEBUG
|
||||
"${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX -DUSE_SYMDIR /Zi")
|
||||
"${CMAKE_C_FLAGS_DEBUG} -DUSE_SYMDIR /Zi")
|
||||
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /MAP /MAPINFO:EXPORTS")
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
|
||||
|
@ -96,7 +96,6 @@ SET_TARGET_PROPERTIES(mysqld PROPERTIES ENABLE_EXPORTS TRUE)
|
|||
|
||||
SET (MYSQLD_CORE_LIBS mysys zlib dbug strings yassl taocrypt vio regex sql)
|
||||
TARGET_LINK_LIBRARIES(mysqld ${MYSQLD_CORE_LIBS} ${MYSQLD_STATIC_ENGINE_LIBS})
|
||||
TARGET_LINK_LIBRARIES(mysqld ws2_32.lib)
|
||||
|
||||
|
||||
IF(MSVC AND NOT WITHOUT_DYNAMIC_PLUGINS)
|
||||
|
@ -129,7 +128,7 @@ ADD_CUSTOM_COMMAND(
|
|||
|
||||
# Gen_lex_hash
|
||||
ADD_EXECUTABLE(gen_lex_hash gen_lex_hash.cc)
|
||||
TARGET_LINK_LIBRARIES(gen_lex_hash debug dbug mysqlclient wsock32)
|
||||
TARGET_LINK_LIBRARIES(gen_lex_hash dbug mysqlclient)
|
||||
GET_TARGET_PROPERTY(GEN_LEX_HASH_EXE gen_lex_hash LOCATION)
|
||||
ADD_CUSTOM_COMMAND(
|
||||
OUTPUT ${PROJECT_SOURCE_DIR}/sql/lex_hash.h
|
||||
|
@ -152,4 +151,4 @@ SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES
|
|||
|
||||
ADD_LIBRARY(udf_example MODULE udf_example.c udf_example.def)
|
||||
ADD_DEPENDENCIES(udf_example strings GenError)
|
||||
TARGET_LINK_LIBRARIES(udf_example strings wsock32)
|
||||
TARGET_LINK_LIBRARIES(udf_example strings)
|
||||
|
|
14
sql/log.cc
14
sql/log.cc
|
@ -33,7 +33,7 @@
|
|||
#include <stdarg.h>
|
||||
#include <m_ctype.h> // For test_if_number
|
||||
|
||||
#ifdef __NT__
|
||||
#ifdef _WIN32
|
||||
#include "message.h"
|
||||
#endif
|
||||
|
||||
|
@ -1794,7 +1794,7 @@ err:
|
|||
DBUG_RETURN(-1);
|
||||
}
|
||||
|
||||
#ifdef __NT__
|
||||
#ifdef _WIN32
|
||||
static int eventSource = 0;
|
||||
|
||||
static void setup_windows_event_source()
|
||||
|
@ -1829,7 +1829,7 @@ static void setup_windows_event_source()
|
|||
RegCloseKey(hRegKey);
|
||||
}
|
||||
|
||||
#endif /* __NT__ */
|
||||
#endif /* _WIN32 */
|
||||
|
||||
|
||||
/**
|
||||
|
@ -1960,7 +1960,7 @@ bool MYSQL_LOG::open(const char *log_name, enum_log_type log_type_arg,
|
|||
#ifdef EMBEDDED_LIBRARY
|
||||
"embedded library\n",
|
||||
my_progname, server_version, MYSQL_COMPILATION_COMMENT
|
||||
#elif __NT__
|
||||
#elif _WIN32
|
||||
"started with:\nTCP Port: %d, Named Pipe: %s\n",
|
||||
my_progname, server_version, MYSQL_COMPILATION_COMMENT,
|
||||
mysqld_port, mysqld_unix_port
|
||||
|
@ -4851,7 +4851,7 @@ void MYSQL_BIN_LOG::signal_update()
|
|||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
#ifdef __NT__
|
||||
#ifdef _WIN32
|
||||
static void print_buffer_to_nt_eventlog(enum loglevel level, char *buff,
|
||||
size_t length, size_t buffLen)
|
||||
{
|
||||
|
@ -4884,7 +4884,7 @@ static void print_buffer_to_nt_eventlog(enum loglevel level, char *buff,
|
|||
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
#endif /* __NT__ */
|
||||
#endif /* _WIN32 */
|
||||
|
||||
|
||||
/**
|
||||
|
@ -4946,7 +4946,7 @@ int vprint_msg_to_log(enum loglevel level, const char *format, va_list args)
|
|||
length= my_vsnprintf(buff, sizeof(buff), format, args);
|
||||
print_buffer_to_file(level, buff);
|
||||
|
||||
#ifdef __NT__
|
||||
#ifdef _WIN32
|
||||
print_buffer_to_nt_eventlog(level, buff, length, sizeof(buff));
|
||||
#endif
|
||||
|
||||
|
|
|
@ -732,7 +732,7 @@ static NTService Service; ///< Service object for WinNT
|
|||
#endif /* EMBEDDED_LIBRARY */
|
||||
#endif /* __WIN__ */
|
||||
|
||||
#ifdef __NT__
|
||||
#ifdef _WIN32
|
||||
static char pipe_name[512];
|
||||
static SECURITY_ATTRIBUTES saPipeSecurity;
|
||||
static SECURITY_DESCRIPTOR sdPipeDescriptor;
|
||||
|
@ -805,11 +805,14 @@ static void set_server_version(void);
|
|||
static int init_thread_environment();
|
||||
static char *get_relative_path(const char *path);
|
||||
static int fix_paths(void);
|
||||
pthread_handler_t handle_connections_sockets(void *arg);
|
||||
void handle_connections_sockets();
|
||||
#ifdef _WIN32
|
||||
pthread_handler_t handle_connections_sockets_thread(void *arg);
|
||||
#endif
|
||||
pthread_handler_t kill_server_thread(void *arg);
|
||||
static void bootstrap(FILE *file);
|
||||
static bool read_init_file(char *file_name);
|
||||
#ifdef __NT__
|
||||
#ifdef _WIN32
|
||||
pthread_handler_t handle_connections_namedpipes(void *arg);
|
||||
#endif
|
||||
#ifdef HAVE_SMEM
|
||||
|
@ -895,7 +898,7 @@ static void close_connections(void)
|
|||
ip_sock= INVALID_SOCKET;
|
||||
}
|
||||
}
|
||||
#ifdef __NT__
|
||||
#ifdef _WIN32
|
||||
if (hPipe != INVALID_HANDLE_VALUE && opt_enable_named_pipe)
|
||||
{
|
||||
HANDLE temp;
|
||||
|
@ -1687,7 +1690,7 @@ static void network_init(void)
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef __NT__
|
||||
#ifdef _WIN32
|
||||
/* create named pipe */
|
||||
if (Service.IsNT() && mysqld_unix_port[0] && !opt_bootstrap &&
|
||||
opt_enable_named_pipe)
|
||||
|
@ -2034,29 +2037,7 @@ static BOOL WINAPI console_event_handler( DWORD type )
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
In Visual Studio 2005 and later, default SIGABRT handler will overwrite
|
||||
any unhandled exception filter set by the application and will try to
|
||||
call JIT debugger. This is not what we want, this we calling __debugbreak
|
||||
to stop in debugger, if process is being debugged or to generate
|
||||
EXCEPTION_BREAKPOINT and then handle_segfault will do its magic.
|
||||
*/
|
||||
|
||||
#if (_MSC_VER >= 1400)
|
||||
static void my_sigabrt_handler(int sig)
|
||||
{
|
||||
__debugbreak();
|
||||
}
|
||||
#endif /*_MSC_VER >=1400 */
|
||||
|
||||
void win_install_sigabrt_handler(void)
|
||||
{
|
||||
#if (_MSC_VER >=1400)
|
||||
/*abort() should not override our exception filter*/
|
||||
_set_abort_behavior(0,_CALL_REPORTFAULT);
|
||||
signal(SIGABRT,my_sigabrt_handler);
|
||||
#endif /* _MSC_VER >=1400 */
|
||||
}
|
||||
|
||||
#ifdef DEBUG_UNHANDLED_EXCEPTION_FILTER
|
||||
#define DEBUGGER_ATTACH_TIMEOUT 120
|
||||
|
@ -2135,7 +2116,6 @@ LONG WINAPI my_unhandler_exception_filter(EXCEPTION_POINTERS *ex_pointers)
|
|||
|
||||
static void init_signals(void)
|
||||
{
|
||||
win_install_sigabrt_handler();
|
||||
if(opt_console)
|
||||
SetConsoleCtrlHandler(console_event_handler,TRUE);
|
||||
|
||||
|
@ -4132,7 +4112,8 @@ static void create_shutdown_thread()
|
|||
#ifdef __WIN__
|
||||
hEventShutdown=CreateEvent(0, FALSE, FALSE, shutdown_event_name);
|
||||
pthread_t hThread;
|
||||
if (pthread_create(&hThread,&connection_attrib,handle_shutdown,0))
|
||||
if (pthread_create(&hThread,&connection_attrib,
|
||||
handle_connections_sockets_thread, 0))
|
||||
sql_print_warning("Can't create thread to handle shutdown requests");
|
||||
|
||||
// On "Stop Service" we have to do regular shutdown
|
||||
|
@ -4143,12 +4124,11 @@ static void create_shutdown_thread()
|
|||
#endif /* EMBEDDED_LIBRARY */
|
||||
|
||||
|
||||
#if (defined(__NT__) || defined(HAVE_SMEM)) && !defined(EMBEDDED_LIBRARY)
|
||||
#if (defined(_WIN32) || defined(HAVE_SMEM)) && !defined(EMBEDDED_LIBRARY)
|
||||
static void handle_connections_methods()
|
||||
{
|
||||
pthread_t hThread;
|
||||
DBUG_ENTER("handle_connections_methods");
|
||||
#ifdef __NT__
|
||||
if (hPipe == INVALID_HANDLE_VALUE &&
|
||||
(!have_tcpip || opt_disable_networking) &&
|
||||
!opt_enable_shared_memory)
|
||||
|
@ -4156,12 +4136,10 @@ static void handle_connections_methods()
|
|||
sql_print_error("TCP/IP, --shared-memory, or --named-pipe should be configured on NT OS");
|
||||
unireg_abort(1); // Will not return
|
||||
}
|
||||
#endif
|
||||
|
||||
pthread_mutex_lock(&LOCK_thread_count);
|
||||
(void) pthread_cond_init(&COND_handler_count,NULL);
|
||||
handler_count=0;
|
||||
#ifdef __NT__
|
||||
if (hPipe != INVALID_HANDLE_VALUE)
|
||||
{
|
||||
handler_count++;
|
||||
|
@ -4172,12 +4150,11 @@ static void handle_connections_methods()
|
|||
handler_count--;
|
||||
}
|
||||
}
|
||||
#endif /* __NT__ */
|
||||
if (have_tcpip && !opt_disable_networking)
|
||||
{
|
||||
handler_count++;
|
||||
if (pthread_create(&hThread,&connection_attrib,
|
||||
handle_connections_sockets, 0))
|
||||
handle_connections_sockets_thread, 0))
|
||||
{
|
||||
sql_print_warning("Can't create thread to handle TCP/IP");
|
||||
handler_count--;
|
||||
|
@ -4212,7 +4189,7 @@ void decrement_handler_count()
|
|||
}
|
||||
#else
|
||||
#define decrement_handler_count()
|
||||
#endif /* defined(__NT__) || defined(HAVE_SMEM) */
|
||||
#endif /* defined(_WIN32) || defined(HAVE_SMEM) */
|
||||
|
||||
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
|
@ -4506,18 +4483,11 @@ we force server id to 2, but this MySQL server will not act as a slave.");
|
|||
pthread_cond_signal(&COND_server_started);
|
||||
pthread_mutex_unlock(&LOCK_server_started);
|
||||
|
||||
#if defined(__NT__) || defined(HAVE_SMEM)
|
||||
#if defined(_WIN32) || defined(HAVE_SMEM)
|
||||
handle_connections_methods();
|
||||
#else
|
||||
#ifdef __WIN__
|
||||
if (!have_tcpip || opt_disable_networking)
|
||||
{
|
||||
sql_print_error("TCP/IP unavailable or disabled with --skip-networking; no available interfaces");
|
||||
unireg_abort(1);
|
||||
}
|
||||
#endif
|
||||
handle_connections_sockets(0);
|
||||
#endif /* __NT__ */
|
||||
handle_connections_sockets();
|
||||
#endif /* _WIN32 || HAVE_SMEM */
|
||||
|
||||
/* (void) pthread_attr_destroy(&connection_attrib); */
|
||||
|
||||
|
@ -4992,7 +4962,7 @@ inline void kill_broken_server()
|
|||
/* Handle new connections and spawn new process to handle them */
|
||||
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
pthread_handler_t handle_connections_sockets(void *arg __attribute__((unused)))
|
||||
void handle_connections_sockets()
|
||||
{
|
||||
my_socket sock,new_sock;
|
||||
uint error_count=0;
|
||||
|
@ -5195,13 +5165,19 @@ pthread_handler_t handle_connections_sockets(void *arg __attribute__((unused)))
|
|||
|
||||
create_new_thread(thd);
|
||||
}
|
||||
|
||||
decrement_handler_count();
|
||||
DBUG_RETURN(0);
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
|
||||
#ifdef __NT__
|
||||
#ifdef _WIN32
|
||||
pthread_handler_t handle_connections_sockets_thread(void *arg)
|
||||
{
|
||||
my_thread_init();
|
||||
handle_connections_sockets();
|
||||
decrement_handler_count();
|
||||
return 0;
|
||||
}
|
||||
|
||||
pthread_handler_t handle_connections_namedpipes(void *arg)
|
||||
{
|
||||
HANDLE hConnectedPipe;
|
||||
|
@ -5281,7 +5257,7 @@ pthread_handler_t handle_connections_namedpipes(void *arg)
|
|||
decrement_handler_count();
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
#endif /* __NT__ */
|
||||
#endif /* _WIN32 */
|
||||
|
||||
|
||||
#ifdef HAVE_SMEM
|
||||
|
@ -5857,7 +5833,7 @@ struct my_option my_long_options[] =
|
|||
"Deprecated option, use --external-locking instead.",
|
||||
(uchar**) &opt_external_locking, (uchar**) &opt_external_locking,
|
||||
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#ifdef __NT__
|
||||
#ifdef _WIN32
|
||||
{"enable-named-pipe", OPT_HAVE_NAMED_PIPE, "Enable the named pipe (NT).",
|
||||
(uchar**) &opt_enable_named_pipe, (uchar**) &opt_enable_named_pipe, 0, GET_BOOL,
|
||||
NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
|
|
|
@ -58,6 +58,64 @@ bool Protocol_binary::net_store_data(const uchar *from, size_t length)
|
|||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
net_store_data() - extended version with character set conversion.
|
||||
|
||||
It is optimized for short strings whose length after
|
||||
conversion is garanteed to be less than 251, which accupies
|
||||
exactly one byte to store length. It allows not to use
|
||||
the "convert" member as a temporary buffer, conversion
|
||||
is done directly to the "packet" member.
|
||||
The limit 251 is good enough to optimize send_result_set_metadata()
|
||||
because column, table, database names fit into this limit.
|
||||
*/
|
||||
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
bool Protocol::net_store_data(const uchar *from, size_t length,
|
||||
CHARSET_INFO *from_cs, CHARSET_INFO *to_cs)
|
||||
{
|
||||
uint dummy_errors;
|
||||
/* Calculate maxumum possible result length */
|
||||
uint conv_length= to_cs->mbmaxlen * length / from_cs->mbminlen;
|
||||
if (conv_length > 250)
|
||||
{
|
||||
/*
|
||||
For strings with conv_length greater than 250 bytes
|
||||
we don't know how many bytes we will need to store length: one or two,
|
||||
because we don't know result length until conversion is done.
|
||||
For example, when converting from utf8 (mbmaxlen=3) to latin1,
|
||||
conv_length=300 means that the result length can vary between 100 to 300.
|
||||
length=100 needs one byte, length=300 needs to bytes.
|
||||
|
||||
Thus conversion directly to "packet" is not worthy.
|
||||
Let's use "convert" as a temporary buffer.
|
||||
*/
|
||||
return (convert->copy((const char*) from, length, from_cs,
|
||||
to_cs, &dummy_errors) ||
|
||||
net_store_data((const uchar*) convert->ptr(), convert->length()));
|
||||
}
|
||||
|
||||
ulong packet_length= packet->length();
|
||||
ulong new_length= packet_length + conv_length + 1;
|
||||
|
||||
if (new_length > packet->alloced_length() && packet->realloc(new_length))
|
||||
return 1;
|
||||
|
||||
char *length_pos= (char*) packet->ptr() + packet_length;
|
||||
char *to= length_pos + 1;
|
||||
|
||||
to+= copy_and_convert(to, conv_length, to_cs,
|
||||
(const char*) from, length, from_cs, &dummy_errors);
|
||||
|
||||
net_store_length((uchar*) length_pos, to - length_pos - 1);
|
||||
packet->length((uint) (to - packet->ptr()));
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
Send a error string to client.
|
||||
|
||||
|
@ -827,10 +885,10 @@ bool Protocol::store_string_aux(const char *from, size_t length,
|
|||
fromcs != &my_charset_bin &&
|
||||
tocs != &my_charset_bin)
|
||||
{
|
||||
uint dummy_errors;
|
||||
return (convert->copy(from, length, fromcs, tocs, &dummy_errors) ||
|
||||
net_store_data((uchar*) convert->ptr(), convert->length()));
|
||||
/* Store with conversion */
|
||||
return net_store_data((uchar*) from, length, fromcs, tocs);
|
||||
}
|
||||
/* Store without conversion */
|
||||
return net_store_data((uchar*) from, length);
|
||||
}
|
||||
|
||||
|
|
|
@ -43,6 +43,8 @@ protected:
|
|||
MYSQL_FIELD *next_mysql_field;
|
||||
MEM_ROOT *alloc;
|
||||
#endif
|
||||
bool net_store_data(const uchar *from, size_t length,
|
||||
CHARSET_INFO *fromcs, CHARSET_INFO *tocs);
|
||||
bool store_string_aux(const char *from, size_t length,
|
||||
CHARSET_INFO *fromcs, CHARSET_INFO *tocs);
|
||||
public:
|
||||
|
|
|
@ -434,7 +434,7 @@ static sys_var_thd_enum sys_myisam_stats_method(&vars, "myisam_stats_met
|
|||
&myisam_stats_method_typelib,
|
||||
NULL);
|
||||
|
||||
#ifdef __NT__
|
||||
#ifdef _WIN32
|
||||
/* purecov: begin inspected */
|
||||
static sys_var_const sys_named_pipe(&vars, "named_pipe",
|
||||
OPT_GLOBAL, SHOW_MY_BOOL,
|
||||
|
|
|
@ -39,10 +39,6 @@
|
|||
#define MIN_HANDSHAKE_SIZE 6
|
||||
#endif /* HAVE_OPENSSL */
|
||||
|
||||
#ifdef __WIN__
|
||||
extern void win_install_sigabrt_handler();
|
||||
#endif
|
||||
|
||||
/*
|
||||
Get structure for logging connection data for the current user
|
||||
*/
|
||||
|
@ -612,13 +608,8 @@ void thd_init_client_charset(THD *thd, uint cs_number)
|
|||
bool init_new_connection_handler_thread()
|
||||
{
|
||||
pthread_detach_this_thread();
|
||||
#if defined(__WIN__)
|
||||
win_install_sigabrt_handler();
|
||||
#else
|
||||
/* Win32 calls this in pthread_create */
|
||||
if (my_thread_init())
|
||||
return 1;
|
||||
#endif /* __WIN__ */
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -958,7 +949,7 @@ static bool login_connection(THD *thd)
|
|||
|
||||
if (error)
|
||||
{ // Wrong permissions
|
||||
#ifdef __NT__
|
||||
#ifdef _WIN32
|
||||
if (vio_type(net->vio) == VIO_TYPE_NAMEDPIPE)
|
||||
my_sleep(1000); /* must wait after eof() */
|
||||
#endif
|
||||
|
|
|
@ -2498,7 +2498,6 @@ pthread_handler_t handle_delayed_insert(void *arg)
|
|||
since it does not find one in the list.
|
||||
*/
|
||||
pthread_mutex_lock(&di->mutex);
|
||||
#if !defined( __WIN__) /* Win32 calls this in pthread_create */
|
||||
if (my_thread_init())
|
||||
{
|
||||
/* Can't use my_error since store_globals has not yet been called */
|
||||
|
@ -2506,13 +2505,9 @@ pthread_handler_t handle_delayed_insert(void *arg)
|
|||
ER(ER_OUT_OF_RESOURCES), NULL);
|
||||
goto end;
|
||||
}
|
||||
#endif
|
||||
|
||||
handle_delayed_insert_impl(thd, di);
|
||||
|
||||
#ifndef __WIN__
|
||||
end:
|
||||
#endif
|
||||
/*
|
||||
di should be unlinked from the thread handler list and have no active
|
||||
clients
|
||||
|
|
|
@ -794,10 +794,11 @@ String *copy_if_not_alloced(String *to,String *from,uint32 from_length)
|
|||
*/
|
||||
|
||||
|
||||
uint32
|
||||
copy_and_convert(char *to, uint32 to_length, CHARSET_INFO *to_cs,
|
||||
const char *from, uint32 from_length, CHARSET_INFO *from_cs,
|
||||
uint *errors)
|
||||
static uint32
|
||||
copy_and_convert_extended(char *to, uint32 to_length, CHARSET_INFO *to_cs,
|
||||
const char *from, uint32 from_length,
|
||||
CHARSET_INFO *from_cs,
|
||||
uint *errors)
|
||||
{
|
||||
int cnvres;
|
||||
my_wc_t wc;
|
||||
|
@ -849,6 +850,65 @@ outp:
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
Optimized for quick copying of ASCII characters in the range 0x00..0x7F.
|
||||
*/
|
||||
uint32
|
||||
copy_and_convert(char *to, uint32 to_length, CHARSET_INFO *to_cs,
|
||||
const char *from, uint32 from_length, CHARSET_INFO *from_cs,
|
||||
uint *errors)
|
||||
{
|
||||
/*
|
||||
If any of the character sets is not ASCII compatible,
|
||||
immediately switch to slow mb_wc->wc_mb method.
|
||||
*/
|
||||
if ((to_cs->state | from_cs->state) & MY_CS_NONASCII)
|
||||
return copy_and_convert_extended(to, to_length, to_cs,
|
||||
from, from_length, from_cs, errors);
|
||||
|
||||
uint32 length= min(to_length, from_length), length2= length;
|
||||
|
||||
#if defined(__i386__)
|
||||
/*
|
||||
Special loop for i386, it allows to refer to a
|
||||
non-aligned memory block as UINT32, which makes
|
||||
it possible to copy four bytes at once. This
|
||||
gives about 10% performance improvement comparing
|
||||
to byte-by-byte loop.
|
||||
*/
|
||||
for ( ; length >= 4; length-= 4, from+= 4, to+= 4)
|
||||
{
|
||||
if ((*(uint32*)from) & 0x80808080)
|
||||
break;
|
||||
*((uint32*) to)= *((const uint32*) from);
|
||||
}
|
||||
#endif
|
||||
|
||||
for (; ; *to++= *from++, length--)
|
||||
{
|
||||
if (!length)
|
||||
{
|
||||
*errors= 0;
|
||||
return length2;
|
||||
}
|
||||
if (*((unsigned char*) from) > 0x7F) /* A non-ASCII character */
|
||||
{
|
||||
uint32 copied_length= length2 - length;
|
||||
to_length-= copied_length;
|
||||
from_length-= copied_length;
|
||||
return copied_length + copy_and_convert_extended(to, to_length,
|
||||
to_cs,
|
||||
from, from_length,
|
||||
from_cs,
|
||||
errors);
|
||||
}
|
||||
}
|
||||
|
||||
DBUG_ASSERT(FALSE); // Should never get to here
|
||||
return 0; // Make compiler happy
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Copy string with HEX-encoding of "bad" characters.
|
||||
|
||||
|
|
|
@ -139,6 +139,11 @@ typedef long long longlong;
|
|||
#include <mysql.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#ifdef _WIN32
|
||||
/* inet_aton needs winsock library */
|
||||
#pragma comment(lib, "ws2_32")
|
||||
#endif
|
||||
|
||||
static pthread_mutex_t LOCK_hostname;
|
||||
|
||||
#ifdef HAVE_DLOPEN
|
||||
|
|
|
@ -13,9 +13,6 @@
|
|||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
|
||||
INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
|
||||
SET(BLACKHOLE_SOURCES ha_blackhole.cc ha_blackhole.h)
|
||||
|
||||
|
|
|
@ -13,8 +13,6 @@
|
|||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
|
||||
INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
|
||||
SET(CSV_SOURCES ha_tina.cc ha_tina.h transparent_file.cc transparent_file.h)
|
||||
|
|
|
@ -13,8 +13,6 @@
|
|||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
|
||||
SET(EXAMPLE_SOURCES ha_example.cc)
|
||||
MYSQL_STORAGE_ENGINE(EXAMPLE)
|
||||
|
|
|
@ -13,8 +13,6 @@
|
|||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
|
||||
INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
|
||||
SET(HEAP_SOURCES _check.c _rectest.c hp_block.c hp_clear.c hp_close.c hp_create.c
|
||||
|
|
|
@ -16,11 +16,7 @@
|
|||
# This is the CMakeLists for InnoDB Plugin
|
||||
|
||||
|
||||
# TODO: remove the two FLAGS_DEBUG settings when merging into
|
||||
# 6.0-based trees, like is already the case for other engines in
|
||||
# those trees.
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
|
||||
INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
|
||||
|
||||
# Include directories under innobase
|
||||
|
|
|
@ -15,8 +15,6 @@
|
|||
INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
|
||||
INCLUDE("${PROJECT_SOURCE_DIR}/win/mysql_manifest.cmake")
|
||||
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
|
||||
SET(MYISAM_SOURCES ft_boolean_search.c ft_nlq_search.c ft_parser.c ft_static.c ft_stem.c
|
||||
ha_myisam.cc
|
||||
|
@ -34,16 +32,16 @@ MYSQL_STORAGE_ENGINE(MYISAM)
|
|||
|
||||
IF(NOT SOURCE_SUBLIBS)
|
||||
ADD_EXECUTABLE(myisam_ftdump myisam_ftdump.c)
|
||||
TARGET_LINK_LIBRARIES(myisam_ftdump myisam mysys debug dbug strings zlib wsock32)
|
||||
TARGET_LINK_LIBRARIES(myisam_ftdump myisam mysys dbug strings zlib)
|
||||
|
||||
ADD_EXECUTABLE(myisamchk myisamchk.c)
|
||||
TARGET_LINK_LIBRARIES(myisamchk myisam mysys debug dbug strings zlib wsock32)
|
||||
TARGET_LINK_LIBRARIES(myisamchk myisam mysys dbug strings zlib)
|
||||
|
||||
ADD_EXECUTABLE(myisamlog myisamlog.c)
|
||||
TARGET_LINK_LIBRARIES(myisamlog myisam mysys debug dbug strings zlib wsock32)
|
||||
TARGET_LINK_LIBRARIES(myisamlog myisam mysys dbug strings zlib)
|
||||
|
||||
ADD_EXECUTABLE(myisampack myisampack.c)
|
||||
TARGET_LINK_LIBRARIES(myisampack myisam mysys debug dbug strings zlib wsock32)
|
||||
TARGET_LINK_LIBRARIES(myisampack myisam mysys dbug strings zlib)
|
||||
|
||||
SET_TARGET_PROPERTIES(myisamchk myisampack PROPERTIES LINK_FLAGS "setargv.obj")
|
||||
|
||||
|
|
|
@ -12,8 +12,6 @@
|
|||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
|
||||
INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
|
||||
|
||||
|
|
|
@ -13,9 +13,6 @@
|
|||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
|
||||
|
||||
SET(STRINGS_SOURCES bchange.c bcmp.c bfill.c bmove512.c bmove_upp.c ctype-big5.c ctype-bin.c ctype-cp932.c
|
||||
|
|
|
@ -184,11 +184,12 @@ 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%s,\n",
|
||||
fprintf(f," MY_CS_COMPILED%s%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" : "");
|
||||
my_charset_is_8bit_pure_ascii(cs) ? "|MY_CS_PUREASCII" : "",
|
||||
!my_charset_is_ascii_compatible(cs) ? "|MY_CS_NONASCII": "");
|
||||
|
||||
if (cs->name)
|
||||
{
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
./conf_to_src ../sql/share/charsets/ > FILE
|
||||
*/
|
||||
|
||||
/* Copyright (C) 2000-2007 MySQL AB
|
||||
/* Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -6804,7 +6804,7 @@ CHARSET_INFO compiled_charsets[] = {
|
|||
#ifdef HAVE_CHARSET_swe7
|
||||
{
|
||||
10,0,0,
|
||||
MY_CS_COMPILED|MY_CS_PRIMARY,
|
||||
MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_NONASCII,
|
||||
"swe7", /* cset name */
|
||||
"swe7_swedish_ci", /* coll name */
|
||||
"", /* comment */
|
||||
|
@ -8454,7 +8454,7 @@ CHARSET_INFO compiled_charsets[] = {
|
|||
#ifdef HAVE_CHARSET_swe7
|
||||
{
|
||||
82,0,0,
|
||||
MY_CS_COMPILED|MY_CS_BINSORT,
|
||||
MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NONASCII,
|
||||
"swe7", /* cset name */
|
||||
"swe7_bin", /* coll name */
|
||||
"", /* comment */
|
||||
|
@ -8550,72 +8550,6 @@ CHARSET_INFO compiled_charsets[] = {
|
|||
}
|
||||
,
|
||||
#endif
|
||||
#ifdef HAVE_CHARSET_geostd8
|
||||
{
|
||||
92,0,0,
|
||||
MY_CS_COMPILED|MY_CS_PRIMARY,
|
||||
"geostd8", /* cset name */
|
||||
"geostd8_general_ci", /* coll name */
|
||||
"", /* comment */
|
||||
NULL, /* tailoring */
|
||||
ctype_geostd8_general_ci, /* ctype */
|
||||
to_lower_geostd8_general_ci, /* lower */
|
||||
to_upper_geostd8_general_ci, /* upper */
|
||||
sort_order_geostd8_general_ci, /* sort_order */
|
||||
NULL, /* contractions */
|
||||
NULL, /* sort_order_big*/
|
||||
to_uni_geostd8_general_ci, /* to_uni */
|
||||
NULL, /* from_uni */
|
||||
my_unicase_default, /* caseinfo */
|
||||
NULL, /* state map */
|
||||
NULL, /* ident map */
|
||||
1, /* strxfrm_multiply*/
|
||||
1, /* caseup_multiply*/
|
||||
1, /* casedn_multiply*/
|
||||
1, /* mbminlen */
|
||||
1, /* mbmaxlen */
|
||||
0, /* min_sort_char */
|
||||
255, /* max_sort_char */
|
||||
' ', /* pad_char */
|
||||
0, /* escape_with_backslash_is_dangerous */
|
||||
&my_charset_8bit_handler,
|
||||
&my_collation_8bit_simple_ci_handler,
|
||||
}
|
||||
,
|
||||
#endif
|
||||
#ifdef HAVE_CHARSET_geostd8
|
||||
{
|
||||
93,0,0,
|
||||
MY_CS_COMPILED|MY_CS_BINSORT,
|
||||
"geostd8", /* cset name */
|
||||
"geostd8_bin", /* coll name */
|
||||
"", /* comment */
|
||||
NULL, /* tailoring */
|
||||
ctype_geostd8_bin, /* ctype */
|
||||
to_lower_geostd8_bin, /* lower */
|
||||
to_upper_geostd8_bin, /* upper */
|
||||
NULL, /* sort_order */
|
||||
NULL, /* contractions */
|
||||
NULL, /* sort_order_big*/
|
||||
to_uni_geostd8_bin, /* to_uni */
|
||||
NULL, /* from_uni */
|
||||
my_unicase_default, /* caseinfo */
|
||||
NULL, /* state map */
|
||||
NULL, /* ident map */
|
||||
1, /* strxfrm_multiply*/
|
||||
1, /* caseup_multiply*/
|
||||
1, /* casedn_multiply*/
|
||||
1, /* mbminlen */
|
||||
1, /* mbmaxlen */
|
||||
0, /* min_sort_char */
|
||||
255, /* max_sort_char */
|
||||
' ', /* pad_char */
|
||||
0, /* escape_with_backslash_is_dangerous */
|
||||
&my_charset_8bit_handler,
|
||||
&my_collation_8bit_bin_handler,
|
||||
}
|
||||
,
|
||||
#endif
|
||||
#ifdef HAVE_CHARSET_latin1
|
||||
{
|
||||
94,0,0,
|
||||
|
|
|
@ -4672,7 +4672,7 @@ static MY_CHARSET_HANDLER my_charset_handler=
|
|||
CHARSET_INFO my_charset_sjis_japanese_ci=
|
||||
{
|
||||
13,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM, /* state */
|
||||
MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_NONASCII, /* state */
|
||||
"sjis", /* cs name */
|
||||
"sjis_japanese_ci", /* name */
|
||||
"", /* comment */
|
||||
|
@ -4704,7 +4704,7 @@ CHARSET_INFO my_charset_sjis_japanese_ci=
|
|||
CHARSET_INFO my_charset_sjis_bin=
|
||||
{
|
||||
88,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_BINSORT, /* state */
|
||||
MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_NONASCII, /* state */
|
||||
"sjis", /* cs name */
|
||||
"sjis_bin", /* name */
|
||||
"", /* comment */
|
||||
|
|
|
@ -8087,7 +8087,7 @@ MY_COLLATION_HANDLER my_collation_ucs2_uca_handler =
|
|||
CHARSET_INFO my_charset_ucs2_unicode_ci=
|
||||
{
|
||||
128,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"ucs2", /* cs name */
|
||||
"ucs2_unicode_ci", /* name */
|
||||
"", /* comment */
|
||||
|
@ -8119,7 +8119,7 @@ CHARSET_INFO my_charset_ucs2_unicode_ci=
|
|||
CHARSET_INFO my_charset_ucs2_icelandic_uca_ci=
|
||||
{
|
||||
129,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"ucs2", /* cs name */
|
||||
"ucs2_icelandic_ci",/* name */
|
||||
"", /* comment */
|
||||
|
@ -8151,7 +8151,7 @@ CHARSET_INFO my_charset_ucs2_icelandic_uca_ci=
|
|||
CHARSET_INFO my_charset_ucs2_latvian_uca_ci=
|
||||
{
|
||||
130,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"ucs2", /* cs name */
|
||||
"ucs2_latvian_ci", /* name */
|
||||
"", /* comment */
|
||||
|
@ -8183,7 +8183,7 @@ CHARSET_INFO my_charset_ucs2_latvian_uca_ci=
|
|||
CHARSET_INFO my_charset_ucs2_romanian_uca_ci=
|
||||
{
|
||||
131,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"ucs2", /* cs name */
|
||||
"ucs2_romanian_ci", /* name */
|
||||
"", /* comment */
|
||||
|
@ -8215,7 +8215,7 @@ CHARSET_INFO my_charset_ucs2_romanian_uca_ci=
|
|||
CHARSET_INFO my_charset_ucs2_slovenian_uca_ci=
|
||||
{
|
||||
132,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"ucs2", /* cs name */
|
||||
"ucs2_slovenian_ci",/* name */
|
||||
"", /* comment */
|
||||
|
@ -8247,7 +8247,7 @@ CHARSET_INFO my_charset_ucs2_slovenian_uca_ci=
|
|||
CHARSET_INFO my_charset_ucs2_polish_uca_ci=
|
||||
{
|
||||
133,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"ucs2", /* cs name */
|
||||
"ucs2_polish_ci", /* name */
|
||||
"", /* comment */
|
||||
|
@ -8279,7 +8279,7 @@ CHARSET_INFO my_charset_ucs2_polish_uca_ci=
|
|||
CHARSET_INFO my_charset_ucs2_estonian_uca_ci=
|
||||
{
|
||||
134,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"ucs2", /* cs name */
|
||||
"ucs2_estonian_ci", /* name */
|
||||
"", /* comment */
|
||||
|
@ -8311,7 +8311,7 @@ CHARSET_INFO my_charset_ucs2_estonian_uca_ci=
|
|||
CHARSET_INFO my_charset_ucs2_spanish_uca_ci=
|
||||
{
|
||||
135,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"ucs2", /* cs name */
|
||||
"ucs2_spanish_ci", /* name */
|
||||
"", /* comment */
|
||||
|
@ -8343,7 +8343,7 @@ CHARSET_INFO my_charset_ucs2_spanish_uca_ci=
|
|||
CHARSET_INFO my_charset_ucs2_swedish_uca_ci=
|
||||
{
|
||||
136,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"ucs2", /* cs name */
|
||||
"ucs2_swedish_ci", /* name */
|
||||
"", /* comment */
|
||||
|
@ -8375,7 +8375,7 @@ CHARSET_INFO my_charset_ucs2_swedish_uca_ci=
|
|||
CHARSET_INFO my_charset_ucs2_turkish_uca_ci=
|
||||
{
|
||||
137,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"ucs2", /* cs name */
|
||||
"ucs2_turkish_ci", /* name */
|
||||
"", /* comment */
|
||||
|
@ -8407,7 +8407,7 @@ CHARSET_INFO my_charset_ucs2_turkish_uca_ci=
|
|||
CHARSET_INFO my_charset_ucs2_czech_uca_ci=
|
||||
{
|
||||
138,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"ucs2", /* cs name */
|
||||
"ucs2_czech_ci", /* name */
|
||||
"", /* comment */
|
||||
|
@ -8440,7 +8440,7 @@ CHARSET_INFO my_charset_ucs2_czech_uca_ci=
|
|||
CHARSET_INFO my_charset_ucs2_danish_uca_ci=
|
||||
{
|
||||
139,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"ucs2", /* cs name */
|
||||
"ucs2_danish_ci", /* name */
|
||||
"", /* comment */
|
||||
|
@ -8472,7 +8472,7 @@ CHARSET_INFO my_charset_ucs2_danish_uca_ci=
|
|||
CHARSET_INFO my_charset_ucs2_lithuanian_uca_ci=
|
||||
{
|
||||
140,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"ucs2", /* cs name */
|
||||
"ucs2_lithuanian_ci",/* name */
|
||||
"", /* comment */
|
||||
|
@ -8504,7 +8504,7 @@ CHARSET_INFO my_charset_ucs2_lithuanian_uca_ci=
|
|||
CHARSET_INFO my_charset_ucs2_slovak_uca_ci=
|
||||
{
|
||||
141,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"ucs2", /* cs name */
|
||||
"ucs2_slovak_ci", /* name */
|
||||
"", /* comment */
|
||||
|
@ -8536,7 +8536,7 @@ CHARSET_INFO my_charset_ucs2_slovak_uca_ci=
|
|||
CHARSET_INFO my_charset_ucs2_spanish2_uca_ci=
|
||||
{
|
||||
142,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"ucs2", /* cs name */
|
||||
"ucs2_spanish2_ci", /* name */
|
||||
"", /* comment */
|
||||
|
@ -8569,7 +8569,7 @@ CHARSET_INFO my_charset_ucs2_spanish2_uca_ci=
|
|||
CHARSET_INFO my_charset_ucs2_roman_uca_ci=
|
||||
{
|
||||
143,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"ucs2", /* cs name */
|
||||
"ucs2_roman_ci", /* name */
|
||||
"", /* comment */
|
||||
|
@ -8602,7 +8602,7 @@ CHARSET_INFO my_charset_ucs2_roman_uca_ci=
|
|||
CHARSET_INFO my_charset_ucs2_persian_uca_ci=
|
||||
{
|
||||
144,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"ucs2", /* cs name */
|
||||
"ucs2_persian_ci", /* name */
|
||||
"", /* comment */
|
||||
|
@ -8635,7 +8635,7 @@ CHARSET_INFO my_charset_ucs2_persian_uca_ci=
|
|||
CHARSET_INFO my_charset_ucs2_esperanto_uca_ci=
|
||||
{
|
||||
145,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"ucs2", /* cs name */
|
||||
"ucs2_esperanto_ci",/* name */
|
||||
"", /* comment */
|
||||
|
@ -8668,7 +8668,7 @@ CHARSET_INFO my_charset_ucs2_esperanto_uca_ci=
|
|||
CHARSET_INFO my_charset_ucs2_hungarian_uca_ci=
|
||||
{
|
||||
146,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"ucs2", /* cs name */
|
||||
"ucs2_hungarian_ci",/* name */
|
||||
"", /* comment */
|
||||
|
@ -8748,7 +8748,7 @@ extern MY_CHARSET_HANDLER my_charset_utf8_handler;
|
|||
CHARSET_INFO my_charset_utf8_unicode_ci=
|
||||
{
|
||||
192,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"utf8", /* cs name */
|
||||
"utf8_unicode_ci", /* name */
|
||||
"", /* comment */
|
||||
|
@ -8781,7 +8781,7 @@ CHARSET_INFO my_charset_utf8_unicode_ci=
|
|||
CHARSET_INFO my_charset_utf8_icelandic_uca_ci=
|
||||
{
|
||||
193,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"utf8", /* cs name */
|
||||
"utf8_icelandic_ci",/* name */
|
||||
"", /* comment */
|
||||
|
@ -8813,7 +8813,7 @@ CHARSET_INFO my_charset_utf8_icelandic_uca_ci=
|
|||
CHARSET_INFO my_charset_utf8_latvian_uca_ci=
|
||||
{
|
||||
194,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"utf8", /* cs name */
|
||||
"utf8_latvian_ci", /* name */
|
||||
"", /* comment */
|
||||
|
@ -8845,7 +8845,7 @@ CHARSET_INFO my_charset_utf8_latvian_uca_ci=
|
|||
CHARSET_INFO my_charset_utf8_romanian_uca_ci=
|
||||
{
|
||||
195,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"utf8", /* cs name */
|
||||
"utf8_romanian_ci", /* name */
|
||||
"", /* comment */
|
||||
|
@ -8877,7 +8877,7 @@ CHARSET_INFO my_charset_utf8_romanian_uca_ci=
|
|||
CHARSET_INFO my_charset_utf8_slovenian_uca_ci=
|
||||
{
|
||||
196,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"utf8", /* cs name */
|
||||
"utf8_slovenian_ci",/* name */
|
||||
"", /* comment */
|
||||
|
@ -8909,7 +8909,7 @@ CHARSET_INFO my_charset_utf8_slovenian_uca_ci=
|
|||
CHARSET_INFO my_charset_utf8_polish_uca_ci=
|
||||
{
|
||||
197,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"utf8", /* cs name */
|
||||
"utf8_polish_ci", /* name */
|
||||
"", /* comment */
|
||||
|
@ -8941,7 +8941,7 @@ CHARSET_INFO my_charset_utf8_polish_uca_ci=
|
|||
CHARSET_INFO my_charset_utf8_estonian_uca_ci=
|
||||
{
|
||||
198,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"utf8", /* cs name */
|
||||
"utf8_estonian_ci", /* name */
|
||||
"", /* comment */
|
||||
|
@ -8973,7 +8973,7 @@ CHARSET_INFO my_charset_utf8_estonian_uca_ci=
|
|||
CHARSET_INFO my_charset_utf8_spanish_uca_ci=
|
||||
{
|
||||
199,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"utf8", /* cs name */
|
||||
"utf8_spanish_ci", /* name */
|
||||
"", /* comment */
|
||||
|
@ -9005,7 +9005,7 @@ CHARSET_INFO my_charset_utf8_spanish_uca_ci=
|
|||
CHARSET_INFO my_charset_utf8_swedish_uca_ci=
|
||||
{
|
||||
200,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"utf8", /* cs name */
|
||||
"utf8_swedish_ci", /* name */
|
||||
"", /* comment */
|
||||
|
@ -9037,7 +9037,7 @@ CHARSET_INFO my_charset_utf8_swedish_uca_ci=
|
|||
CHARSET_INFO my_charset_utf8_turkish_uca_ci=
|
||||
{
|
||||
201,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"utf8", /* cs name */
|
||||
"utf8_turkish_ci", /* name */
|
||||
"", /* comment */
|
||||
|
@ -9069,7 +9069,7 @@ CHARSET_INFO my_charset_utf8_turkish_uca_ci=
|
|||
CHARSET_INFO my_charset_utf8_czech_uca_ci=
|
||||
{
|
||||
202,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"utf8", /* cs name */
|
||||
"utf8_czech_ci", /* name */
|
||||
"", /* comment */
|
||||
|
@ -9102,7 +9102,7 @@ CHARSET_INFO my_charset_utf8_czech_uca_ci=
|
|||
CHARSET_INFO my_charset_utf8_danish_uca_ci=
|
||||
{
|
||||
203,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"utf8", /* cs name */
|
||||
"utf8_danish_ci", /* name */
|
||||
"", /* comment */
|
||||
|
@ -9134,7 +9134,7 @@ CHARSET_INFO my_charset_utf8_danish_uca_ci=
|
|||
CHARSET_INFO my_charset_utf8_lithuanian_uca_ci=
|
||||
{
|
||||
204,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"utf8", /* cs name */
|
||||
"utf8_lithuanian_ci",/* name */
|
||||
"", /* comment */
|
||||
|
@ -9166,7 +9166,7 @@ CHARSET_INFO my_charset_utf8_lithuanian_uca_ci=
|
|||
CHARSET_INFO my_charset_utf8_slovak_uca_ci=
|
||||
{
|
||||
205,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"utf8", /* cs name */
|
||||
"utf8_slovak_ci", /* name */
|
||||
"", /* comment */
|
||||
|
@ -9198,7 +9198,7 @@ CHARSET_INFO my_charset_utf8_slovak_uca_ci=
|
|||
CHARSET_INFO my_charset_utf8_spanish2_uca_ci=
|
||||
{
|
||||
206,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"utf8", /* cs name */
|
||||
"utf8_spanish2_ci", /* name */
|
||||
"", /* comment */
|
||||
|
@ -9230,7 +9230,7 @@ CHARSET_INFO my_charset_utf8_spanish2_uca_ci=
|
|||
CHARSET_INFO my_charset_utf8_roman_uca_ci=
|
||||
{
|
||||
207,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"utf8", /* cs name */
|
||||
"utf8_roman_ci", /* name */
|
||||
"", /* comment */
|
||||
|
@ -9262,7 +9262,7 @@ CHARSET_INFO my_charset_utf8_roman_uca_ci=
|
|||
CHARSET_INFO my_charset_utf8_persian_uca_ci=
|
||||
{
|
||||
208,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"utf8", /* cs name */
|
||||
"utf8_persian_ci", /* name */
|
||||
"", /* comment */
|
||||
|
@ -9294,7 +9294,7 @@ CHARSET_INFO my_charset_utf8_persian_uca_ci=
|
|||
CHARSET_INFO my_charset_utf8_esperanto_uca_ci=
|
||||
{
|
||||
209,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"utf8", /* cs name */
|
||||
"utf8_esperanto_ci",/* name */
|
||||
"", /* comment */
|
||||
|
@ -9326,7 +9326,7 @@ CHARSET_INFO my_charset_utf8_esperanto_uca_ci=
|
|||
CHARSET_INFO my_charset_utf8_hungarian_uca_ci=
|
||||
{
|
||||
210,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"utf8", /* cs name */
|
||||
"utf8_hungarian_ci",/* name */
|
||||
"", /* comment */
|
||||
|
|
|
@ -1712,7 +1712,7 @@ MY_CHARSET_HANDLER my_charset_ucs2_handler=
|
|||
CHARSET_INFO my_charset_ucs2_general_ci=
|
||||
{
|
||||
35,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"ucs2", /* cs name */
|
||||
"ucs2_general_ci", /* name */
|
||||
"", /* comment */
|
||||
|
@ -1744,7 +1744,7 @@ CHARSET_INFO my_charset_ucs2_general_ci=
|
|||
CHARSET_INFO my_charset_ucs2_bin=
|
||||
{
|
||||
90,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_UNICODE,
|
||||
MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_UNICODE|MY_CS_NONASCII,
|
||||
"ucs2", /* cs name */
|
||||
"ucs2_bin", /* name */
|
||||
"", /* comment */
|
||||
|
|
|
@ -4200,7 +4200,7 @@ static MY_CHARSET_HANDLER my_charset_filename_handler=
|
|||
CHARSET_INFO my_charset_filename=
|
||||
{
|
||||
17,0,0, /* number */
|
||||
MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_HIDDEN,
|
||||
MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_HIDDEN|MY_CS_NONASCII,
|
||||
"filename", /* cs name */
|
||||
"filename", /* name */
|
||||
"", /* comment */
|
||||
|
|
|
@ -405,3 +405,23 @@ my_charset_is_8bit_pure_ascii(CHARSET_INFO *cs)
|
|||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Shared function between conf_to_src and mysys.
|
||||
Check if a 8bit character set is compatible with
|
||||
ascii on the range 0x00..0x7F.
|
||||
*/
|
||||
my_bool
|
||||
my_charset_is_ascii_compatible(CHARSET_INFO *cs)
|
||||
{
|
||||
uint i;
|
||||
if (!cs->tab_to_uni)
|
||||
return 1;
|
||||
for (i= 0; i < 128; i++)
|
||||
{
|
||||
if (cs->tab_to_uni[i] != i)
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -13,15 +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
|
||||
|
||||
# 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 ../mysys/my_memmem.c)
|
||||
TARGET_LINK_LIBRARIES(mysql_client_test mysqlclient_notls wsock32)
|
||||
TARGET_LINK_LIBRARIES(mysql_client_test mysqlclient)
|
||||
|
||||
ADD_EXECUTABLE(bug25714 bug25714.c)
|
||||
TARGET_LINK_LIBRARIES(bug25714 mysqlclient_notls wsock32)
|
||||
TARGET_LINK_LIBRARIES(bug25714 mysqlclient)
|
||||
|
|
|
@ -13,8 +13,6 @@
|
|||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
|
||||
ADD_DEFINITIONS(-DUSE_SYMDIR)
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/extra/yassl/include)
|
||||
|
|
|
@ -264,7 +264,7 @@ int vio_close(Vio * vio)
|
|||
#ifdef __WIN__
|
||||
if (vio->type == VIO_TYPE_NAMEDPIPE)
|
||||
{
|
||||
#if defined(__NT__) && defined(MYSQL_SERVER)
|
||||
#if defined(MYSQL_SERVER)
|
||||
CancelIo(vio->hPipe);
|
||||
DisconnectNamedPipe(vio->hPipe);
|
||||
#endif
|
||||
|
@ -450,7 +450,7 @@ int vio_close_pipe(Vio * vio)
|
|||
{
|
||||
int r;
|
||||
DBUG_ENTER("vio_close_pipe");
|
||||
#if defined(__NT__) && defined(MYSQL_SERVER)
|
||||
#if defined(MYSQL_SERVER)
|
||||
CancelIo(vio->hPipe);
|
||||
DisconnectNamedPipe(vio->hPipe);
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue