Make possible to use clang on Windows (clang-cl)
-DWITH_ASAN can be used as well now, on x64 Fix many clang-cl warnings.
This commit is contained in:
parent
9d97e6010e
commit
56e7b7eaed
@ -182,7 +182,8 @@ OPTION(NOT_FOR_DISTRIBUTION "Allow linking with GPLv2-incompatible system librar
|
||||
INCLUDE(check_compiler_flag)
|
||||
|
||||
OPTION(WITH_ASAN "Enable address sanitizer" OFF)
|
||||
IF (WITH_ASAN)
|
||||
|
||||
IF (WITH_ASAN AND NOT MSVC)
|
||||
# gcc 4.8.1 and new versions of clang
|
||||
MY_CHECK_AND_SET_COMPILER_FLAG("-fsanitize=address -fPIC"
|
||||
DEBUG RELWITHDEBINFO)
|
||||
|
@ -1709,13 +1709,12 @@ static struct my_option my_long_options[] =
|
||||
|
||||
static void usage(int version)
|
||||
{
|
||||
#ifdef HAVE_READLINE
|
||||
#if defined(USE_LIBEDIT_INTERFACE)
|
||||
const char* readline= "";
|
||||
#else
|
||||
const char* readline= "readline";
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_READLINE
|
||||
printf("%s Ver %s Distrib %s, for %s (%s) using %s %s\n",
|
||||
my_progname, VER, MYSQL_SERVER_VERSION, SYSTEM_TYPE, MACHINE_TYPE,
|
||||
readline, rl_library_version);
|
||||
|
@ -13,6 +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
|
||||
|
||||
IF(MSVC)
|
||||
RETURN()
|
||||
ENDIF()
|
||||
|
||||
# Common warning flags for GCC, G++, Clang and Clang++
|
||||
SET(MY_WARNING_FLAGS
|
||||
-Wall
|
||||
|
@ -59,7 +59,41 @@ IF(MINGW AND CMAKE_SIZEOF_VOID_P EQUAL 4)
|
||||
ADD_DEFINITIONS(-march=i486)
|
||||
ENDIF()
|
||||
|
||||
FUNCTION(ENABLE_ASAN)
|
||||
IF(NOT (MSVC AND CMAKE_CXX_COMPILER_ID MATCHES Clang))
|
||||
MESSAGE(FATAL_ERROR "clang-cl is necessary to enable asan")
|
||||
ENDIF()
|
||||
# currently, asan is broken with static CRT.
|
||||
IF(NOT(MSVC_CRT_TYPE STREQUAL "/MD"))
|
||||
MESSAGE(FATAL_ERROR "-DWITH_ASAN cmake parameter also requires -DMSVC_CRT_TYPE=/MD")
|
||||
ENDIF()
|
||||
IF(CMAKE_SIZEOF_VOID_P EQUAL 4)
|
||||
MESSAGE(FATAL_ERROR "-DWITH_ASAN on Windows requires 64bit build")
|
||||
ENDIF()
|
||||
# After installation, clang lib directory should be added to PATH
|
||||
# (e.g C:/Program Files/LLVM/lib/clang/5.0.1/lib/windows)
|
||||
FIND_LIBRARY(CLANG_RT_ASAN_DYNAMIC clang_rt.asan_dynamic-x86_64.lib)
|
||||
IF(NOT CLANG_RT_ASAN_DYNAMIC)
|
||||
MESSAGE(FATAL_ERROR "Can't enable ASAN : missing clang_rt.asan_dynamic-x86_64.lib")
|
||||
ENDIF()
|
||||
|
||||
FIND_LIBRARY(CLANG_RT_ASAN_DYNAMIC_THUNK clang_rt.asan_dynamic_runtime_thunk-x86_64.lib)
|
||||
IF(NOT CLANG_RT_ASAN_DYNAMIC_THUNK)
|
||||
MESSAGE(FATAL_ERROR "Can't enable ASAN : missing clang_rt.asan_dynamic_runtime_thunk-x86_64.lib")
|
||||
ENDIF()
|
||||
|
||||
STRING(APPEND CMAKE_C_FLAGS " -fsanitize=address")
|
||||
STRING(APPEND CMAKE_CXX_FLAGS " -fsanitize=address")
|
||||
|
||||
LINK_LIBRARIES(${CLANG_RT_ASAN_DYNAMIC} ${CLANG_RT_ASAN_DYNAMIC_THUNK})
|
||||
ENDFUNCTION()
|
||||
|
||||
|
||||
IF(MSVC)
|
||||
IF(WITH_ASAN)
|
||||
ENABLE_ASAN()
|
||||
ENDIF()
|
||||
|
||||
# Disable mingw based pkg-config found in Strawberry perl
|
||||
SET(PKG_CONFIG_EXECUTABLE 0 CACHE INTERNAL "")
|
||||
SET(MSVC_CRT_TYPE /MT CACHE STRING
|
||||
@ -119,8 +153,16 @@ IF(MSVC)
|
||||
STRING(APPEND ${flag} " /Z7")
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
|
||||
|
||||
|
||||
IF(CMAKE_CXX_COMPILER_ID MATCHES Clang)
|
||||
SET(CLANG_CL_FLAGS
|
||||
"-Wno-unused-parameter -Wno-unused-command-line-argument -Wno-pointer-sign -Wno-deprecated-register \
|
||||
-Wno-missing-braces -Wno-unused-function -msse4.2 "
|
||||
)
|
||||
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CLANG_CL_FLAGS}")
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CLANG_CL_FLAGS}")
|
||||
ENDIF()
|
||||
|
||||
# Fix CMake's predefined huge stack size
|
||||
FOREACH(type EXE SHARED MODULE)
|
||||
STRING(REGEX REPLACE "/STACK:([^ ]+)" "" CMAKE_${type}_LINKER_FLAGS "${CMAKE_${type}_LINKER_FLAGS}")
|
||||
@ -139,7 +181,7 @@ IF(MSVC)
|
||||
ENDIF()
|
||||
|
||||
# Speed up multiprocessor build
|
||||
IF (MSVC_VERSION GREATER 1400)
|
||||
IF (MSVC_VERSION GREATER 1400 AND (NOT CMAKE_CXX_COMPILER_ID MATCHES Clang))
|
||||
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP")
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
|
||||
ENDIF()
|
||||
@ -147,7 +189,7 @@ IF(MSVC)
|
||||
#TODO: update the code and remove the disabled warnings
|
||||
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /we4700 /we4311 /we4477 /we4302 /we4090")
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /we4099 /we4700 /we4311 /we4477 /we4302 /we4090")
|
||||
IF(MSVC_VERSION GREATER 1910)
|
||||
IF(MSVC_VERSION GREATER 1910 AND (NOT CMAKE_CXX_COMPILER_ID MATCHES Clang))
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /permissive-")
|
||||
ENDIF()
|
||||
ADD_DEFINITIONS(-D_CRT_NONSTDC_NO_WARNINGS)
|
||||
|
@ -52,7 +52,7 @@ IF(NOT SYSTEM_TYPE)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
IF(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
|
||||
IF(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang" AND (NOT MSVC))
|
||||
# MySQL "canonical" GCC flags. At least -fno-rtti flag affects
|
||||
# ABI and cannot be simply removed.
|
||||
SET(CMAKE_CXX_FLAGS
|
||||
|
@ -800,7 +800,7 @@ wait_for_no_updates(MYSQL *connection, uint timeout, uint threshold)
|
||||
|
||||
static
|
||||
os_thread_ret_t
|
||||
kill_query_thread(
|
||||
DECLARE_THREAD(kill_query_thread)(
|
||||
/*===============*/
|
||||
void *arg __attribute__((unused)))
|
||||
{
|
||||
|
@ -255,8 +255,9 @@ it every INNOBASE_WAKE_INTERVAL'th step. */
|
||||
#define INNOBASE_WAKE_INTERVAL 32
|
||||
ulong innobase_active_counter = 0;
|
||||
|
||||
|
||||
#ifndef _WIN32
|
||||
static char *xtrabackup_debug_sync = NULL;
|
||||
#endif
|
||||
|
||||
my_bool xtrabackup_incremental_force_scan = FALSE;
|
||||
|
||||
@ -2455,7 +2456,7 @@ xtrabackup_copy_logfile(copy_logfile copy)
|
||||
return(false);
|
||||
}
|
||||
|
||||
static os_thread_ret_t log_copying_thread(void*)
|
||||
static os_thread_ret_t DECLARE_THREAD(log_copying_thread)(void*)
|
||||
{
|
||||
/*
|
||||
Initialize mysys thread-specific memory so we can
|
||||
@ -2478,7 +2479,7 @@ static os_thread_ret_t log_copying_thread(void*)
|
||||
}
|
||||
|
||||
/* io throttle watching (rough) */
|
||||
static os_thread_ret_t io_watching_thread(void*)
|
||||
static os_thread_ret_t DECLARE_THREAD(io_watching_thread)(void*)
|
||||
{
|
||||
/* currently, for --backup only */
|
||||
ut_a(xtrabackup_backup);
|
||||
@ -2504,7 +2505,7 @@ static os_thread_ret_t io_watching_thread(void*)
|
||||
Datafiles copying thread.*/
|
||||
static
|
||||
os_thread_ret_t
|
||||
data_copy_thread_func(
|
||||
DECLARE_THREAD(data_copy_thread_func)(
|
||||
/*==================*/
|
||||
void *arg) /* thread context */
|
||||
{
|
||||
|
@ -204,7 +204,7 @@ static my_bool print_win_error_msg(DWORD error, my_bool verbose)
|
||||
NULL))
|
||||
{
|
||||
if (verbose)
|
||||
printf("Win32 error code %d: %s", error, s);
|
||||
printf("Win32 error code %lu: %s", error, s);
|
||||
else
|
||||
puts(s);
|
||||
LocalFree(s);
|
||||
|
@ -42,7 +42,6 @@
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
const int SOCKET_EINVAL = WSAEINVAL;
|
||||
const int SOCKET_EWOULDBLOCK = WSAEWOULDBLOCK;
|
||||
const int SOCKET_EAGAIN = WSAEWOULDBLOCK;
|
||||
#else
|
||||
|
@ -921,10 +921,6 @@ static bool setPrefix(opaque* sha_input, int i)
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
const char handshake_order[] = "Out of order HandShake Message!";
|
||||
|
||||
|
||||
} // namespcae for locals
|
||||
|
||||
|
||||
|
@ -34,9 +34,9 @@
|
||||
compilation warnings.
|
||||
*/
|
||||
#ifndef __attribute__
|
||||
# if !defined(__GNUC__)
|
||||
# if !defined(__GNUC__) && !defined(__clang__)
|
||||
# define __attribute__(A)
|
||||
# else
|
||||
# elif defined(__GNUC__)
|
||||
# ifndef GCC_VERSION
|
||||
# define GCC_VERSION (__GNUC__ * 1000 + __GNUC_MINOR__)
|
||||
# endif
|
||||
|
@ -77,14 +77,14 @@ void dump_single_process(DWORD pid)
|
||||
process= OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, pid);
|
||||
if (!process)
|
||||
{
|
||||
fprintf(stderr, "safe_kill : cannot open process pid=%u to create dump, last error %u\n",
|
||||
fprintf(stderr, "safe_kill : cannot open process pid=%lu to create dump, last error %lu\n",
|
||||
pid, GetLastError());
|
||||
goto exit;
|
||||
}
|
||||
|
||||
if (QueryFullProcessImageName(process, 0, path, &size) == 0)
|
||||
{
|
||||
fprintf(stderr, "safe_kill : cannot read process path for pid %u, last error %u\n",
|
||||
fprintf(stderr, "safe_kill : cannot read process path for pid %lu, last error %lu\n",
|
||||
pid, GetLastError());
|
||||
goto exit;
|
||||
}
|
||||
@ -116,17 +116,17 @@ void dump_single_process(DWORD pid)
|
||||
{
|
||||
if (!GetTempFileName(".", filename, 0, tmpname))
|
||||
{
|
||||
fprintf(stderr, "GetTempFileName failed, last error %u", GetLastError());
|
||||
fprintf(stderr, "GetTempFileName failed, last error %lu", GetLastError());
|
||||
goto exit;
|
||||
}
|
||||
strncat(tmpname, ".dmp", sizeof(tmpname));
|
||||
strncat_s(tmpname, ".dmp", sizeof(tmpname));
|
||||
filename= tmpname;
|
||||
}
|
||||
|
||||
|
||||
if (!GetCurrentDirectory(MAX_PATH, working_dir))
|
||||
{
|
||||
fprintf(stderr, "GetCurrentDirectory failed, last error %u", GetLastError());
|
||||
fprintf(stderr, "GetCurrentDirectory failed, last error %lu", GetLastError());
|
||||
goto exit;
|
||||
}
|
||||
|
||||
@ -135,14 +135,14 @@ void dump_single_process(DWORD pid)
|
||||
|
||||
if (file == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
fprintf(stderr, "safe_kill : CreateFile() failed for file %s, working dir %s, last error = %u\n",
|
||||
fprintf(stderr, "safe_kill : CreateFile() failed for file %s, working dir %s, last error = %lu\n",
|
||||
filename, working_dir, GetLastError());
|
||||
goto exit;
|
||||
}
|
||||
|
||||
if (!MiniDumpWriteDump(process, pid, file, MiniDumpNormal, 0, 0, 0))
|
||||
{
|
||||
fprintf(stderr, "Failed to write minidump to %s, working dir %s, last error %u\n",
|
||||
fprintf(stderr, "Failed to write minidump to %s, working dir %s, last error %lu\n",
|
||||
filename, working_dir, GetLastError());
|
||||
goto exit;
|
||||
}
|
||||
@ -214,7 +214,7 @@ int main(int argc, const char** argv )
|
||||
|
||||
if (!GetExitCodeProcess(process,&exit_code))
|
||||
{
|
||||
fprintf(stderr, "GetExitCodeProcess failed, pid= %d, err= %d\n",
|
||||
fprintf(stderr, "GetExitCodeProcess failed, pid= %lu, err= %lu\n",
|
||||
pid, GetLastError());
|
||||
exit(1);
|
||||
}
|
||||
@ -232,7 +232,7 @@ int main(int argc, const char** argv )
|
||||
Sleep(100);
|
||||
else
|
||||
{
|
||||
fprintf(stderr, "Failed to open shutdown_event '%s', error: %d\n",
|
||||
fprintf(stderr, "Failed to open shutdown_event '%s', error: %lu\n",
|
||||
safe_process_name, GetLastError());
|
||||
exit(3);
|
||||
}
|
||||
@ -240,7 +240,7 @@ int main(int argc, const char** argv )
|
||||
|
||||
if(SetEvent(shutdown_event) == 0)
|
||||
{
|
||||
fprintf(stderr, "Failed to signal shutdown_event '%s', error: %d\n",
|
||||
fprintf(stderr, "Failed to signal shutdown_event '%s', error: %lu\n",
|
||||
safe_process_name, GetLastError());
|
||||
CloseHandle(shutdown_event);
|
||||
exit(4);
|
||||
|
@ -75,7 +75,7 @@ static void message(const char* fmt, ...)
|
||||
|
||||
static void die(const char* fmt, ...)
|
||||
{
|
||||
DWORD last_err= GetLastError();
|
||||
int last_err= GetLastError();
|
||||
va_list args;
|
||||
fprintf(stderr, "%s: FATAL ERROR, ", safe_process_name);
|
||||
va_start(args, fmt);
|
||||
@ -106,7 +106,7 @@ static void die(const char* fmt, ...)
|
||||
DWORD get_parent_pid(DWORD pid)
|
||||
{
|
||||
HANDLE snapshot;
|
||||
DWORD parent_pid= -1;
|
||||
DWORD parent_pid= 0;
|
||||
PROCESSENTRY32 pe32;
|
||||
pe32.dwSize= sizeof(PROCESSENTRY32);
|
||||
|
||||
@ -127,7 +127,7 @@ DWORD get_parent_pid(DWORD pid)
|
||||
} while(Process32Next( snapshot, &pe32));
|
||||
CloseHandle(snapshot);
|
||||
|
||||
if (parent_pid == -1)
|
||||
if (parent_pid == 0)
|
||||
die("Could not find parent pid");
|
||||
|
||||
return parent_pid;
|
||||
@ -163,7 +163,7 @@ int main(int argc, const char** argv )
|
||||
PROCESS_INFORMATION process_info= {0};
|
||||
BOOL nocore= FALSE;
|
||||
|
||||
sprintf(safe_process_name, "safe_process[%d]", pid);
|
||||
sprintf(safe_process_name, "safe_process[%lu]", pid);
|
||||
|
||||
/* Create an event for the signal handler */
|
||||
if ((shutdown_event=
|
||||
@ -298,7 +298,7 @@ int main(int argc, const char** argv )
|
||||
BOOL process_created= FALSE;
|
||||
BOOL jobobject_assigned= FALSE;
|
||||
|
||||
for (int i=0; i < sizeof(create_flags)/sizeof(create_flags[0]); i++)
|
||||
for (size_t i=0; i < sizeof(create_flags)/sizeof(create_flags[0]); i++)
|
||||
{
|
||||
process_created= CreateProcess(NULL, (LPSTR)child_args,
|
||||
NULL,
|
||||
|
@ -64,7 +64,6 @@ char *get_tty_password(const char *opt_message)
|
||||
{
|
||||
char to[80];
|
||||
char *pos=to,*end=to+sizeof(to)-1;
|
||||
int i=0;
|
||||
DBUG_ENTER("get_tty_password");
|
||||
_cputs(opt_message ? opt_message : "Enter password: ");
|
||||
for (;;)
|
||||
|
@ -38,7 +38,7 @@ int my_access(const char *path, int amode)
|
||||
|
||||
attributes = GetFileAttributes(path);
|
||||
if (attributes == INVALID_FILE_ATTRIBUTES ||
|
||||
(attributes & FILE_ATTRIBUTE_READONLY) && (amode & W_OK))
|
||||
((attributes & FILE_ATTRIBUTE_READONLY) && (amode & W_OK)))
|
||||
{
|
||||
my_errno= errno= EACCES;
|
||||
return -1;
|
||||
|
@ -47,7 +47,7 @@ static HANDLE my_coninpfh= 0; /* console input */
|
||||
static
|
||||
int my_pthread_auto_mutex_lock(HANDLE* ph, const char* name, int id, int time)
|
||||
{
|
||||
int res;
|
||||
DWORD res;
|
||||
char tname[FN_REFLEN];
|
||||
|
||||
sprintf(tname, "%s-%08X", name, id);
|
||||
@ -203,7 +203,7 @@ char* my_cgets(char *buffer, size_t clen, size_t* plen)
|
||||
if (*plen > 0 && buffer[*plen - 1] == '\r')
|
||||
{
|
||||
char tmp[3];
|
||||
int tmplen= sizeof(tmp);
|
||||
DWORD tmplen= (DWORD)sizeof(tmp);
|
||||
|
||||
*plen= *plen - 1;
|
||||
/* read /n left in the buffer */
|
||||
|
@ -1184,7 +1184,7 @@ static const char **init_default_directories(MEM_ROOT *alloc)
|
||||
{
|
||||
errors += add_directory(alloc, fname_buffer, dirs);
|
||||
|
||||
strncat(fname_buffer, "/data", sizeof(fname_buffer));
|
||||
strcat_s(fname_buffer, sizeof(fname_buffer), "/data");
|
||||
errors += add_directory(alloc, fname_buffer, dirs);
|
||||
}
|
||||
}
|
||||
|
@ -83,7 +83,7 @@ static int my_win_unlink(const char *name)
|
||||
{
|
||||
HANDLE handle= INVALID_HANDLE_VALUE;
|
||||
DWORD attributes;
|
||||
DWORD last_error;
|
||||
uint last_error;
|
||||
char unique_filename[MAX_PATH + 35];
|
||||
unsigned long long tsc; /* time stamp counter, for unique filename*/
|
||||
|
||||
@ -148,7 +148,7 @@ static int my_win_unlink(const char *name)
|
||||
name, tsc);
|
||||
if (!MoveFile(name, unique_filename))
|
||||
{
|
||||
DBUG_PRINT("warning", ("moving %s to unique filename failed, error %u\n",
|
||||
DBUG_PRINT("warning", ("moving %s to unique filename failed, error %lu\n",
|
||||
name,GetLastError()));
|
||||
}
|
||||
|
||||
|
@ -206,12 +206,12 @@ MY_DIR *my_dir(const char *path, myf MyFlags)
|
||||
ushort mode;
|
||||
char tmp_path[FN_REFLEN], *tmp_file,attrib;
|
||||
#ifdef _WIN64
|
||||
__int64 handle;
|
||||
__int64 handle= -1;
|
||||
#else
|
||||
long handle;
|
||||
long handle= -1;
|
||||
#endif
|
||||
DBUG_ENTER("my_dir");
|
||||
DBUG_PRINT("my",("path: '%s' MyFlags: %d",path,MyFlags));
|
||||
DBUG_PRINT("my",("path: '%s' MyFlags: %d",path,(int)MyFlags));
|
||||
|
||||
/* Put LIB-CHAR as last path-character if not there */
|
||||
tmp_file=tmp_path;
|
||||
|
@ -34,7 +34,6 @@ static int win_lock(File fd, int locktype, my_off_t start, my_off_t length,
|
||||
DWORD dwFlags;
|
||||
OVERLAPPED ov= {0};
|
||||
HANDLE hFile= (HANDLE)my_get_osfhandle(fd);
|
||||
DWORD lastError= 0;
|
||||
int i;
|
||||
int timeout_millis= timeout_sec * 1000;
|
||||
|
||||
|
@ -21,6 +21,7 @@
|
||||
#include <signal.h>
|
||||
#include <m_string.h>
|
||||
#include <thr_alarm.h>
|
||||
#include <my_pthread.h>
|
||||
|
||||
#if (defined(__BSD__) || defined(_BSDI_VERSION))
|
||||
#define SCHED_POLICY SCHED_RR
|
||||
|
@ -133,8 +133,6 @@ int my_sync(File fd, myf my_flags)
|
||||
} /* my_sync */
|
||||
|
||||
|
||||
static const char cur_dir_name[]= {FN_CURLIB, 0};
|
||||
|
||||
/*
|
||||
Force directory information to disk.
|
||||
|
||||
@ -151,6 +149,7 @@ int my_sync_dir(const char *dir_name __attribute__((unused)),
|
||||
myf my_flags __attribute__((unused)))
|
||||
{
|
||||
#ifdef NEED_EXPLICIT_SYNC_DIR
|
||||
static const char cur_dir_name[]= {FN_CURLIB, 0};
|
||||
File dir_fd;
|
||||
int res= 0;
|
||||
const char *correct_dir_name;
|
||||
|
@ -96,7 +96,7 @@ access violations */
|
||||
|
||||
static int get_errno_from_oserr(unsigned long oserrno)
|
||||
{
|
||||
int i;
|
||||
size_t i;
|
||||
|
||||
/* check the table for the OS error code */
|
||||
for (i= 0; i < ERRTABLESIZE; ++i)
|
||||
|
@ -79,10 +79,10 @@ int pthread_create(pthread_t *thread_id, const pthread_attr_t *attr,
|
||||
par->arg= param;
|
||||
stack_size= attr?attr->dwStackSize:0;
|
||||
|
||||
handle= _beginthreadex(NULL, stack_size , pthread_start, par, 0, thread_id);
|
||||
handle= _beginthreadex(NULL, stack_size , pthread_start, par, 0, (uint *)thread_id);
|
||||
if (!handle)
|
||||
goto error_return;
|
||||
DBUG_PRINT("info", ("thread id=%u",*thread_id));
|
||||
DBUG_PRINT("info", ("thread id=%lu",*thread_id));
|
||||
|
||||
/* Do not need thread handle, close it */
|
||||
CloseHandle((HANDLE)handle);
|
||||
|
@ -146,8 +146,12 @@ const char *my_open_parent_dir_nosymlinks(const char *pathname, int *pdfd);
|
||||
return NOAT;
|
||||
#endif
|
||||
|
||||
#ifndef _WIN32
|
||||
#define CREATE_NOSYMLINK_FUNCTION(PROTO,AT,NOAT) \
|
||||
static int PROTO { NOSYMLINK_FUNCTION_BODY(AT,NOAT) }
|
||||
#else
|
||||
#define CREATE_NOSYMLINK_FUNCTION(PROTO,AT,NOAT)
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
#include <sys/stat.h>
|
||||
|
@ -703,7 +703,7 @@ void my_print_stacktrace(uchar* unused1, ulong unused2, my_bool silent)
|
||||
if(have_source)
|
||||
{
|
||||
const char *base_file_name= my_basename(line.FileName);
|
||||
my_safe_printf_stderr("[%s:%u]",
|
||||
my_safe_printf_stderr("[%s:%lu]",
|
||||
base_file_name, line.LineNumber);
|
||||
}
|
||||
my_safe_printf_stderr("%s", "\n");
|
||||
@ -733,7 +733,7 @@ void my_write_core(int unused)
|
||||
if(GetModuleFileName(NULL, path, sizeof(path)))
|
||||
{
|
||||
_splitpath(path, NULL, NULL,dump_fname,NULL);
|
||||
strncat(dump_fname, ".dmp", sizeof(dump_fname));
|
||||
strcat_s(dump_fname, sizeof(dump_fname), ".dmp");
|
||||
}
|
||||
|
||||
hFile= CreateFile(dump_fname, GENERIC_WRITE, 0, 0, CREATE_ALWAYS,
|
||||
|
@ -36,13 +36,6 @@
|
||||
#define ETIME ETIMEDOUT
|
||||
#endif
|
||||
|
||||
uint thr_client_alarm;
|
||||
static int alarm_aborted=1; /* No alarm thread */
|
||||
my_bool thr_alarm_inited= 0, my_disable_thr_alarm= 0;
|
||||
volatile my_bool alarm_thread_running= 0;
|
||||
time_t next_alarm_expire_time= ~ (time_t) 0;
|
||||
static sig_handler process_alarm_part2(int sig);
|
||||
|
||||
#ifdef DBUG_OFF
|
||||
#define reset_index_in_queue(alarm_data)
|
||||
#else
|
||||
@ -55,9 +48,16 @@ static sig_handler process_alarm_part2(int sig);
|
||||
#define one_signal_hand_sigmask(A,B,C)
|
||||
#endif
|
||||
|
||||
my_bool thr_alarm_inited= 0, my_disable_thr_alarm= 0;
|
||||
|
||||
#if !defined(__WIN__)
|
||||
|
||||
uint thr_client_alarm;
|
||||
static int alarm_aborted=1; /* No alarm thread */
|
||||
volatile my_bool alarm_thread_running= 0;
|
||||
time_t next_alarm_expire_time= ~ (time_t) 0;
|
||||
static sig_handler process_alarm_part2(int sig);
|
||||
|
||||
static mysql_mutex_t LOCK_alarm;
|
||||
static mysql_cond_t COND_alarm;
|
||||
static sigset_t full_signal_set;
|
||||
|
@ -92,15 +92,19 @@ static int uname(struct utsname *buf)
|
||||
{
|
||||
OSVERSIONINFOEX ver;
|
||||
ver.dwOSVersionInfoSize = (DWORD)sizeof(ver);
|
||||
/* GetVersionEx got deprecated, we need it anyway, so disable deprecation warnings. */
|
||||
#ifdef _MSC_VER
|
||||
#pragma warning (disable : 4996)
|
||||
#endif
|
||||
#ifdef __clang__
|
||||
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
|
||||
#endif
|
||||
if (!GetVersionEx((OSVERSIONINFO *)&ver))
|
||||
return -1;
|
||||
|
||||
buf->nodename[0]= 0;
|
||||
strcpy(buf->sysname, "Windows");
|
||||
sprintf(buf->release, "%d.%d", ver.dwMajorVersion, ver.dwMinorVersion);
|
||||
sprintf(buf->release, "%d.%d", (int)ver.dwMajorVersion, (int)ver.dwMinorVersion);
|
||||
|
||||
const char *version_str= get_os_version_name(&ver);
|
||||
if(version_str && version_str[0])
|
||||
@ -109,7 +113,7 @@ static int uname(struct utsname *buf)
|
||||
{
|
||||
/* Fallback for unknown versions, e.g "Windows <major_ver>.<minor_ver>" */
|
||||
sprintf(buf->version, "Windows %d.%d%s",
|
||||
ver.dwMajorVersion, ver.dwMinorVersion,
|
||||
(int)ver.dwMajorVersion, (int)ver.dwMinorVersion,
|
||||
(ver.wProductType == VER_NT_WORKSTATION ? "" : " Server"));
|
||||
}
|
||||
|
||||
|
@ -438,6 +438,7 @@ static const char *syslog_facility_names[]=
|
||||
"LOG_LOCAL4", "LOG_LOCAL5", "LOG_LOCAL6", "LOG_LOCAL7",
|
||||
0
|
||||
};
|
||||
#ifndef _WIN32
|
||||
static unsigned int syslog_facility_codes[]=
|
||||
{
|
||||
LOG_USER, LOG_MAIL, LOG_DAEMON, LOG_AUTH,
|
||||
@ -452,6 +453,7 @@ static unsigned int syslog_facility_codes[]=
|
||||
LOG_LOCAL0, LOG_LOCAL1, LOG_LOCAL2, LOG_LOCAL3,
|
||||
LOG_LOCAL4, LOG_LOCAL5, LOG_LOCAL6, LOG_LOCAL7,
|
||||
};
|
||||
#endif
|
||||
static TYPELIB syslog_facility_typelib=
|
||||
{
|
||||
array_elements(syslog_facility_names) - 1, "syslog_facility_typelib",
|
||||
@ -469,11 +471,13 @@ static const char *syslog_priority_names[]=
|
||||
0
|
||||
};
|
||||
|
||||
#ifndef _WIN32
|
||||
static unsigned int syslog_priority_codes[]=
|
||||
{
|
||||
LOG_EMERG, LOG_ALERT, LOG_CRIT, LOG_ERR,
|
||||
LOG_WARNING, LOG_NOTICE, LOG_INFO, LOG_DEBUG,
|
||||
};
|
||||
#endif
|
||||
|
||||
static TYPELIB syslog_priority_typelib=
|
||||
{
|
||||
@ -2106,6 +2110,7 @@ struct mysql_event_general_v8
|
||||
|
||||
static void auditing_v8(MYSQL_THD thd, struct mysql_event_general_v8 *ev_v8)
|
||||
{
|
||||
#ifdef __linux__
|
||||
#ifdef DBUG_OFF
|
||||
#ifdef __x86_64__
|
||||
static const int cmd_off= 4200;
|
||||
@ -2127,7 +2132,7 @@ static void auditing_v8(MYSQL_THD thd, struct mysql_event_general_v8 *ev_v8)
|
||||
static const int db_len_off= 68;
|
||||
#endif /*x86_64*/
|
||||
#endif /*DBUG_OFF*/
|
||||
|
||||
#endif /* __linux__ */
|
||||
struct mysql_event_general event;
|
||||
|
||||
if (ev_v8->event_class != MYSQL_AUDIT_GENERAL_CLASS)
|
||||
|
@ -504,7 +504,7 @@ const char* get_last_error_message(Error_message_buf buf)
|
||||
buf[0]= '\0';
|
||||
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,
|
||||
NULL, error, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
|
||||
(LPTSTR)buf, sizeof(buf), NULL );
|
||||
(LPTSTR)buf, ERRMSG_BUFSIZE , NULL );
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
@ -77,8 +77,8 @@ void error_log_print(const char *fmt, ...)
|
||||
error_log_vprint(Level, fmt, args);
|
||||
va_end(args);
|
||||
}
|
||||
|
||||
typedef char Error_message_buf[1024];
|
||||
#define ERRMSG_BUFSIZE 1024
|
||||
typedef char Error_message_buf[ERRMSG_BUFSIZE];
|
||||
const char* get_last_error_message(Error_message_buf);
|
||||
|
||||
|
||||
|
@ -96,6 +96,7 @@ my_bool net_flush(NET *net);
|
||||
#ifndef _WIN32
|
||||
#include <errno.h>
|
||||
#define SOCKET_ERROR -1
|
||||
#define INVALID_SOCKET -1
|
||||
#endif
|
||||
|
||||
#ifdef __WIN__
|
||||
@ -258,7 +259,6 @@ HANDLE create_named_pipe(MYSQL *mysql, uint connect_timeout, char **arg_host,
|
||||
char pipe_name[1024];
|
||||
DWORD dwMode;
|
||||
int i;
|
||||
my_bool testing_named_pipes=0;
|
||||
char *host= *arg_host, *unix_socket= *arg_unix_socket;
|
||||
|
||||
if ( ! unix_socket || (unix_socket)[0] == 0x00)
|
||||
@ -369,7 +369,7 @@ HANDLE create_shared_memory(MYSQL *mysql,NET *net, uint connect_timeout)
|
||||
char *shared_memory_base_name = mysql->options.shared_memory_base_name;
|
||||
static const char *name_prefixes[] = {"","Global\\"};
|
||||
const char *prefix;
|
||||
int i;
|
||||
uint i;
|
||||
|
||||
/*
|
||||
If this is NULL, somebody freed the MYSQL* options. mysql_close()
|
||||
@ -915,13 +915,6 @@ static int cli_report_progress(MYSQL *mysql, char *pkt, uint length)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef __WIN__
|
||||
static my_bool is_NT(void)
|
||||
{
|
||||
char *os=getenv("OS");
|
||||
return (os && !strcmp(os, "Windows_NT")) ? 1 : 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
/**************************************************************************
|
||||
Shut down connection
|
||||
@ -3215,7 +3208,7 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
|
||||
{
|
||||
my_socket sock= socket(AF_UNIX, SOCK_STREAM, 0);
|
||||
DBUG_PRINT("info", ("Using socket"));
|
||||
if (sock == SOCKET_ERROR)
|
||||
if (sock == INVALID_SOCKET)
|
||||
{
|
||||
set_mysql_extended_error(mysql, CR_SOCKET_CREATE_ERROR,
|
||||
unknown_sqlstate,
|
||||
@ -3262,7 +3255,7 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
|
||||
if (!net->vio &&
|
||||
(mysql->options.protocol == MYSQL_PROTOCOL_PIPE ||
|
||||
(host && !strcmp(host,LOCAL_HOST_NAMEDPIPE)) ||
|
||||
(! have_tcpip && (unix_socket || !host && is_NT()))))
|
||||
(! have_tcpip && (unix_socket || !host ))))
|
||||
{
|
||||
if ((hPipe= create_named_pipe(mysql, mysql->options.connect_timeout,
|
||||
(char**) &host, (char**) &unix_socket)) ==
|
||||
@ -3296,7 +3289,7 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
|
||||
struct addrinfo *res_lst, hints, *t_res;
|
||||
int gai_errno;
|
||||
char port_buf[NI_MAXSERV];
|
||||
my_socket sock= SOCKET_ERROR;
|
||||
my_socket sock= INVALID_SOCKET;
|
||||
int saved_error= 0, status= -1;
|
||||
|
||||
unix_socket=0; /* This is not used */
|
||||
@ -3344,7 +3337,7 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
|
||||
t_res->ai_family, t_res->ai_socktype,
|
||||
t_res->ai_protocol));
|
||||
sock= socket(t_res->ai_family, t_res->ai_socktype, t_res->ai_protocol);
|
||||
if (sock == SOCKET_ERROR)
|
||||
if (sock == INVALID_SOCKET)
|
||||
{
|
||||
saved_error= socket_errno;
|
||||
continue;
|
||||
@ -3386,7 +3379,7 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
|
||||
|
||||
freeaddrinfo(res_lst);
|
||||
|
||||
if (sock == SOCKET_ERROR)
|
||||
if (sock == INVALID_SOCKET)
|
||||
{
|
||||
set_mysql_extended_error(mysql, CR_IPSOCK_ERROR, unknown_sqlstate,
|
||||
ER(CR_IPSOCK_ERROR), saved_error);
|
||||
|
@ -2189,9 +2189,8 @@ char *Item_func_password::alloc(THD *thd, const char *password,
|
||||
String *Item_func_encrypt::val_str(String *str)
|
||||
{
|
||||
DBUG_ASSERT(fixed == 1);
|
||||
String *res =args[0]->val_str(str);
|
||||
|
||||
#ifdef HAVE_CRYPT
|
||||
String *res =args[0]->val_str(str);
|
||||
char salt[3],*salt_ptr;
|
||||
if ((null_value=args[0]->null_value))
|
||||
return 0;
|
||||
|
@ -173,6 +173,10 @@ public:
|
||||
|
||||
class Json_writer_nesting_guard
|
||||
{
|
||||
#ifdef DBUG_OFF
|
||||
public:
|
||||
Json_writer_nesting_guard(Json_writer *) {}
|
||||
#else
|
||||
Json_writer* writer;
|
||||
int indent_level;
|
||||
public:
|
||||
@ -185,6 +189,7 @@ public:
|
||||
{
|
||||
DBUG_ASSERT(indent_level == writer->indent_level);
|
||||
}
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
@ -442,7 +442,6 @@ static int set_directory_permissions(const char *dir, const char *os_user)
|
||||
ACL* pOldDACL;
|
||||
SECURITY_DESCRIPTOR* pSD= NULL;
|
||||
EXPLICIT_ACCESS ea={0};
|
||||
BOOL isWellKnownSID= FALSE;
|
||||
WELL_KNOWN_SID_TYPE wellKnownSidType = WinNullSid;
|
||||
PSID pSid= NULL;
|
||||
|
||||
@ -509,7 +508,7 @@ static int set_directory_permissions(const char *dir, const char *os_user)
|
||||
ea.grfInheritance= CONTAINER_INHERIT_ACE|OBJECT_INHERIT_ACE;
|
||||
ea.Trustee.TrusteeType= TRUSTEE_IS_UNKNOWN;
|
||||
ACL* pNewDACL= 0;
|
||||
DWORD err= SetEntriesInAcl(1,&ea,pOldDACL,&pNewDACL);
|
||||
SetEntriesInAcl(1,&ea,pOldDACL,&pNewDACL);
|
||||
if (pNewDACL)
|
||||
{
|
||||
SetSecurityInfo(hDir,SE_FILE_OBJECT,DACL_SECURITY_INFORMATION,NULL, NULL,
|
||||
|
@ -51,7 +51,7 @@ static char *opt_service;
|
||||
static SC_HANDLE service;
|
||||
static SC_HANDLE scm;
|
||||
HANDLE mysqld_process; // mysqld.exe started for upgrade
|
||||
DWORD initial_service_state= -1; // initial state of the service
|
||||
DWORD initial_service_state= UINT_MAX; // initial state of the service
|
||||
HANDLE logfile_handle;
|
||||
|
||||
/*
|
||||
@ -126,7 +126,7 @@ static void die(const char *fmt, ...)
|
||||
Stop service that we started, if it was not initally running at
|
||||
program start.
|
||||
*/
|
||||
if (initial_service_state != -1 && initial_service_state != SERVICE_RUNNING)
|
||||
if (initial_service_state != UINT_MAX && initial_service_state != SERVICE_RUNNING)
|
||||
{
|
||||
SERVICE_STATUS service_status;
|
||||
ControlService(service, SERVICE_CONTROL_STOP, &service_status);
|
||||
@ -252,7 +252,7 @@ void stop_mysqld_service()
|
||||
Remeber initial state of the service, we will restore it on
|
||||
exit.
|
||||
*/
|
||||
if(initial_service_state == -1)
|
||||
if(initial_service_state == UINT_MAX)
|
||||
initial_service_state= ssp.dwCurrentState;
|
||||
|
||||
switch(ssp.dwCurrentState)
|
||||
|
@ -2510,10 +2510,9 @@ static void set_user(const char *user, struct passwd *user_info_arg)
|
||||
allow_coredumps();
|
||||
}
|
||||
|
||||
|
||||
#if !defined(__WIN__)
|
||||
static void set_effective_user(struct passwd *user_info_arg)
|
||||
{
|
||||
#if !defined(__WIN__)
|
||||
DBUG_ASSERT(user_info_arg != 0);
|
||||
if (setregid((gid_t)-1, user_info_arg->pw_gid) == -1)
|
||||
{
|
||||
@ -2526,9 +2525,8 @@ static void set_effective_user(struct passwd *user_info_arg)
|
||||
unireg_abort(1);
|
||||
}
|
||||
allow_coredumps();
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/** Change root user if started with @c --chroot . */
|
||||
static void set_root(const char *path)
|
||||
@ -6191,10 +6189,10 @@ int mysqld_main(int argc, char **argv)
|
||||
****************************************************************************/
|
||||
|
||||
#if defined(__WIN__) && !defined(EMBEDDED_LIBRARY)
|
||||
int mysql_service(void *p)
|
||||
void mysql_service(void *p)
|
||||
{
|
||||
if (my_thread_init())
|
||||
return 1;
|
||||
abort();
|
||||
|
||||
if (use_opt_args)
|
||||
win_main(opt_argc, opt_argv);
|
||||
@ -6202,7 +6200,6 @@ int mysql_service(void *p)
|
||||
win_main(Service.my_argc, Service.my_argv);
|
||||
|
||||
my_thread_end();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@ -6253,7 +6250,7 @@ default_service_handling(char **argv,
|
||||
the option name) should be quoted if it contains a string.
|
||||
*/
|
||||
*pos++= ' ';
|
||||
if (opt_delim= strchr(extra_opt, '='))
|
||||
if ((opt_delim= strchr(extra_opt, '=')))
|
||||
{
|
||||
size_t length= ++opt_delim - extra_opt;
|
||||
pos= strnmov(pos, extra_opt, length);
|
||||
|
@ -73,18 +73,18 @@ NTService::~NTService()
|
||||
*/
|
||||
|
||||
|
||||
long NTService::Init(LPCSTR szInternName,void *ServiceThread)
|
||||
long NTService::Init(LPCSTR szInternName, THREAD_FC ServiceThread)
|
||||
{
|
||||
|
||||
pService = this;
|
||||
|
||||
fpServiceThread = (THREAD_FC)ServiceThread;
|
||||
fpServiceThread = ServiceThread;
|
||||
ServiceName = new char[lstrlen(szInternName)+1];
|
||||
lstrcpy(ServiceName,szInternName);
|
||||
|
||||
SERVICE_TABLE_ENTRY stb[] =
|
||||
{
|
||||
{ (char *)szInternName,(LPSERVICE_MAIN_FUNCTION) ServiceMain} ,
|
||||
{ (char *)szInternName, ServiceMain} ,
|
||||
{ NULL, NULL }
|
||||
};
|
||||
|
||||
@ -219,7 +219,6 @@ void NTService::ServiceMain(DWORD argc, LPTSTR *argv)
|
||||
// registration function
|
||||
if (!(pService->hServiceStatusHandle =
|
||||
RegisterServiceCtrlHandler(pService->ServiceName,
|
||||
(LPHANDLER_FUNCTION)
|
||||
NTService::ServiceCtrlHandler)))
|
||||
goto error;
|
||||
|
||||
@ -280,7 +279,7 @@ void NTService::SetSlowStarting(unsigned long timeout)
|
||||
BOOL NTService::StartService()
|
||||
{
|
||||
// Start the real service's thread (application)
|
||||
if (!(hThreadHandle = (HANDLE) _beginthread((THREAD_FC)fpServiceThread,0,
|
||||
if (!(hThreadHandle = (HANDLE) _beginthread(fpServiceThread,0,
|
||||
(void *) this)))
|
||||
return FALSE;
|
||||
bRunning = TRUE;
|
||||
|
@ -46,7 +46,7 @@ class NTService
|
||||
DWORD dwState;
|
||||
|
||||
//init service entry point
|
||||
long Init(LPCSTR szInternName,void *ServiceThread);
|
||||
long Init(LPCSTR szInternName,THREAD_FC ServiceThread);
|
||||
|
||||
//application shutdown event
|
||||
void SetShutdownEvent(HANDLE hEvent){ hShutdownEvent=hEvent; }
|
||||
@ -99,8 +99,8 @@ class NTService
|
||||
void StopService();
|
||||
BOOL StartService();
|
||||
|
||||
static void ServiceMain(DWORD argc, LPTSTR *argv);
|
||||
static void ServiceCtrlHandler (DWORD ctrlCode);
|
||||
static void WINAPI ServiceMain(DWORD argc, LPTSTR *argv);
|
||||
static void WINAPI ServiceCtrlHandler (DWORD ctrlCode);
|
||||
|
||||
void Exit(DWORD error);
|
||||
BOOL SetStatus (DWORD dwCurrentState,DWORD dwWin32ExitCode,
|
||||
|
@ -88,7 +88,7 @@ extern "C" sig_handler handle_fatal_signal(int sig)
|
||||
tm.tm_hour, tm.tm_min, tm.tm_sec);
|
||||
if (opt_expect_abort
|
||||
#ifdef _WIN32
|
||||
&& sig == EXCEPTION_BREAKPOINT /* __debugbreak in my_sigabrt_hander() */
|
||||
&& sig == (int)EXCEPTION_BREAKPOINT /* __debugbreak in my_sigabrt_hander() */
|
||||
#else
|
||||
&& sig == SIGABRT
|
||||
#endif
|
||||
|
@ -7951,7 +7951,7 @@ static bool get_row_event_stmt_end(const char* buf,
|
||||
The term 4 below signifies that master is of 'an intermediate source', see
|
||||
Rows_log_event::Rows_log_event.
|
||||
*/
|
||||
flag_start += RW_MAPID_OFFSET + (post_header_len == 6) ? 4 : RW_FLAGS_OFFSET;
|
||||
flag_start += RW_MAPID_OFFSET + ((post_header_len == 6) ? 4 : RW_FLAGS_OFFSET);
|
||||
|
||||
return (uint2korr(flag_start) & Rows_log_event::STMT_END_F) != 0;
|
||||
}
|
||||
|
@ -27,13 +27,11 @@ class Sql_alloc
|
||||
public:
|
||||
static void *operator new(size_t size) throw ()
|
||||
{
|
||||
DBUG_ASSERT(size < UINT_MAX32);
|
||||
return thd_alloc(thd_get_current_thd(), uint(size));
|
||||
return thd_alloc(thd_get_current_thd(), size);
|
||||
}
|
||||
static void *operator new[](size_t size) throw ()
|
||||
{
|
||||
DBUG_ASSERT(size < UINT_MAX32);
|
||||
return thd_alloc(thd_get_current_thd(), uint(size));
|
||||
return thd_alloc(thd_get_current_thd(), size);
|
||||
}
|
||||
static void *operator new[](size_t size, MEM_ROOT *mem_root) throw ()
|
||||
{ return alloc_root(mem_root, size); }
|
||||
|
@ -5125,7 +5125,6 @@ class select_insert :public select_result_interceptor {
|
||||
|
||||
|
||||
class select_create: public select_insert {
|
||||
ORDER *group;
|
||||
TABLE_LIST *create_table;
|
||||
Table_specification_st *create_info;
|
||||
TABLE_LIST *select_tables;
|
||||
@ -5806,7 +5805,7 @@ class multi_update :public select_result_interceptor
|
||||
{
|
||||
TABLE_LIST *all_tables; /* query/update command tables */
|
||||
List<TABLE_LIST> *leaves; /* list of leves of join table tree */
|
||||
TABLE_LIST *update_tables, *table_being_updated;
|
||||
TABLE_LIST *update_tables;
|
||||
TABLE **tmp_tables, *main_table, *table_to_update;
|
||||
TMP_TABLE_PARAM *tmp_table_param;
|
||||
ha_rows updated, found;
|
||||
|
@ -142,14 +142,12 @@ class READ_INFO {
|
||||
File file;
|
||||
String data; /* Read buffer */
|
||||
uint fixed_length; /* Length of the fixed length record */
|
||||
uint max_length; /* Max length of row */
|
||||
Term_string m_field_term; /* FIELDS TERMINATED BY 'string' */
|
||||
Term_string m_line_term; /* LINES TERMINATED BY 'string' */
|
||||
Term_string m_line_start; /* LINES STARTING BY 'string' */
|
||||
int enclosed_char,escape_char;
|
||||
int *stack,*stack_pos;
|
||||
bool found_end_of_line,start_of_line,eof;
|
||||
NET *io_net;
|
||||
int level; /* for load xml */
|
||||
|
||||
bool getbyte(char *to)
|
||||
|
@ -50,12 +50,12 @@ static Field_definition sequence_structure[]=
|
||||
{
|
||||
{"next_not_cached_value", 21, &type_handler_longlong,
|
||||
{STRING_WITH_LEN("")}, FL},
|
||||
{"minimum_value", 21, &type_handler_longlong, STRING_WITH_LEN(""), FL},
|
||||
{"maximum_value", 21, &type_handler_longlong, STRING_WITH_LEN(""), FL},
|
||||
{"minimum_value", 21, &type_handler_longlong, {STRING_WITH_LEN("")}, FL},
|
||||
{"maximum_value", 21, &type_handler_longlong, {STRING_WITH_LEN("")}, FL},
|
||||
{"start_value", 21, &type_handler_longlong, {STRING_WITH_LEN("start value when sequences is created or value if RESTART is used")}, FL},
|
||||
{"increment", 21, &type_handler_longlong,
|
||||
{STRING_WITH_LEN("increment value")}, FL},
|
||||
{"cache_size", 21, &type_handler_longlong, STRING_WITH_LEN(""),
|
||||
{"cache_size", 21, &type_handler_longlong, {STRING_WITH_LEN("")},
|
||||
FL | UNSIGNED_FLAG},
|
||||
{"cycle_option", 1, &type_handler_tiny, {STRING_WITH_LEN("0 if no cycles are allowed, 1 if the sequence should begin a new cycle when maximum_value is passed")},
|
||||
FL | UNSIGNED_FLAG },
|
||||
|
@ -4642,14 +4642,13 @@ static bool fix_log_state(sys_var *self, THD *thd, enum_var_type type)
|
||||
oldval= logger.get_log_file_handler()->is_open();
|
||||
log_type= QUERY_LOG_GENERAL;
|
||||
}
|
||||
else if (self == &Sys_slow_query_log)
|
||||
else
|
||||
{
|
||||
DBUG_ASSERT(self == &Sys_slow_query_log);
|
||||
newvalptr= &global_system_variables.sql_log_slow;
|
||||
oldval= logger.get_slow_log_file_handler()->is_open();
|
||||
log_type= QUERY_LOG_SLOW;
|
||||
}
|
||||
else
|
||||
DBUG_ASSERT(FALSE);
|
||||
|
||||
newval= *newvalptr;
|
||||
if (oldval == newval)
|
||||
|
@ -1567,7 +1567,6 @@ public:
|
||||
*/
|
||||
class Sys_var_pluginlist: public sys_var
|
||||
{
|
||||
int plugin_type;
|
||||
public:
|
||||
Sys_var_pluginlist(const char *name_arg,
|
||||
const char *comment, int flag_args, ptrdiff_t off, size_t size,
|
||||
|
@ -178,7 +178,7 @@ connection_queue_t;
|
||||
|
||||
const int NQUEUES=2; /* We have high and low priority queues*/
|
||||
|
||||
struct thread_group_t
|
||||
struct MY_ALIGNED(CPU_LEVEL1_DCACHE_LINESIZE) thread_group_t
|
||||
{
|
||||
mysql_mutex_t mutex;
|
||||
connection_queue_t queues[NQUEUES];
|
||||
@ -196,7 +196,7 @@ struct thread_group_t
|
||||
int shutdown_pipe[2];
|
||||
bool shutdown;
|
||||
bool stalled;
|
||||
} MY_ALIGNED(CPU_LEVEL1_DCACHE_LINESIZE);
|
||||
};
|
||||
|
||||
static thread_group_t *all_groups;
|
||||
static uint group_count;
|
||||
@ -1499,7 +1499,7 @@ void TP_connection_generic::set_io_timeout(int timeout_sec)
|
||||
}
|
||||
|
||||
|
||||
|
||||
#ifndef HAVE_IOCP
|
||||
/**
|
||||
Handle a (rare) special case,where connection needs to
|
||||
migrate to a different group because group_count has changed
|
||||
@ -1534,7 +1534,7 @@ static int change_group(TP_connection_generic *c,
|
||||
mysql_mutex_unlock(&new_group->mutex);
|
||||
return ret;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
int TP_connection_generic::start_io()
|
||||
{
|
||||
|
@ -92,9 +92,6 @@ static void CALLBACK work_callback(PTP_CALLBACK_INSTANCE instance, PVOID context
|
||||
static void CALLBACK shm_read_callback(PTP_CALLBACK_INSTANCE instance,
|
||||
PVOID Context, PTP_WAIT wait,TP_WAIT_RESULT wait_result);
|
||||
|
||||
static void CALLBACK shm_close_callback(PTP_CALLBACK_INSTANCE instance,
|
||||
PVOID Context, PTP_WAIT wait,TP_WAIT_RESULT wait_result);
|
||||
|
||||
static void pre_callback(PVOID context, PTP_CALLBACK_INSTANCE instance);
|
||||
|
||||
/* Get current time as Windows time */
|
||||
@ -151,8 +148,8 @@ TP_connection_win::TP_connection_win(CONNECT *c) :
|
||||
timeout(ULONGLONG_MAX),
|
||||
callback_instance(0),
|
||||
io(0),
|
||||
shm_read(0),
|
||||
timer(0),
|
||||
shm_read(0),
|
||||
work(0)
|
||||
{
|
||||
}
|
||||
|
@ -112,6 +112,11 @@
|
||||
**
|
||||
*/
|
||||
|
||||
#ifdef _WIN32
|
||||
/* Silence warning about deprecated functions , gethostbyname etc*/
|
||||
#define _WINSOCK_DEPRECATED_NO_WARNINGS
|
||||
#endif
|
||||
|
||||
#ifdef STANDARD
|
||||
/* STANDARD is defined, don't use any mysql functions */
|
||||
#include <stdlib.h>
|
||||
@ -139,14 +144,6 @@ typedef long long longlong;
|
||||
#include <mysql.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#ifdef _WIN32
|
||||
/* inet_aton needs winsock library */
|
||||
#pragma comment(lib, "ws2_32")
|
||||
#if _MSC_VER
|
||||
/* Silence warning about deprecated functions , gethostbyname etc*/
|
||||
#pragma warning(disable : 4996)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_DLOPEN
|
||||
|
||||
|
@ -69,6 +69,10 @@ ELSE(NOT UNIX)
|
||||
# Add exception handling to the CONNECT project)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc")
|
||||
SET(IPHLPAPI_LIBRARY iphlpapi.lib)
|
||||
IF(MSVC AND (CMAKE_CXX_COMPILER_ID MATCHES Clang))
|
||||
# Connect does not work with clang-cl
|
||||
RETURN()
|
||||
ENDIF()
|
||||
ENDIF(UNIX)
|
||||
|
||||
|
||||
|
@ -89,7 +89,6 @@ class ha_federated: public handler
|
||||
*/
|
||||
DYNAMIC_ARRAY results;
|
||||
bool position_called, table_will_be_deleted;
|
||||
uint fetch_num; // stores the fetch num
|
||||
MYSQL_ROW_OFFSET current_position; // Current position used by ::position()
|
||||
int remote_error_number;
|
||||
char remote_error_buf[FEDERATED_QUERY_BUFFER_SIZE];
|
||||
|
@ -3510,7 +3510,9 @@ DECLARE_THREAD(buf_flush_page_cleaner_worker)(
|
||||
os_thread_create */
|
||||
{
|
||||
my_thread_init();
|
||||
#ifndef DBUG_OFF
|
||||
os_thread_id_t cleaner_thread_id = os_thread_get_curr_id();
|
||||
#endif
|
||||
|
||||
mutex_enter(&page_cleaner.mutex);
|
||||
ulint thread_no = page_cleaner.n_workers++;
|
||||
|
@ -2972,7 +2972,7 @@ Optimize all FTS tables.
|
||||
@return Dummy return */
|
||||
static
|
||||
os_thread_ret_t
|
||||
fts_optimize_thread(
|
||||
DECLARE_THREAD(fts_optimize_thread)(
|
||||
/*================*/
|
||||
void* arg) /*!< in: work queue*/
|
||||
{
|
||||
|
@ -53,12 +53,8 @@ typedef LPTHREAD_START_ROUTINE os_thread_func_t;
|
||||
/** Macro for specifying a Windows thread start function. */
|
||||
#define DECLARE_THREAD(func) WINAPI func
|
||||
|
||||
/** Required to get around a build error on Windows. Even though our functions
|
||||
are defined/declared as WINAPI f(LPVOID a); the compiler complains that they
|
||||
are defined as: os_thread_ret_t (__cdecl*)(void*). Because our functions
|
||||
don't access the arguments and don't return any value, we should be safe. */
|
||||
#define os_thread_create(f,a,i) \
|
||||
os_thread_create_func(reinterpret_cast<os_thread_func_t>(f), a, i)
|
||||
os_thread_create_func(f, a, i)
|
||||
|
||||
#else
|
||||
|
||||
|
@ -35,9 +35,6 @@ Created 2012-09-23 Sunny Bains
|
||||
|
||||
#include <list>
|
||||
|
||||
/** The number of microsecnds in a second. */
|
||||
static const ulint MICROSECS_IN_A_SECOND = 1000000;
|
||||
|
||||
#ifdef _WIN32
|
||||
/** Native condition variable. */
|
||||
typedef CONDITION_VARIABLE os_cond_t;
|
||||
@ -381,13 +378,8 @@ os_event::wait_time_low(
|
||||
|
||||
tv.tv_usec += time_in_usec;
|
||||
|
||||
if ((ulint) tv.tv_usec >= MICROSECS_IN_A_SECOND) {
|
||||
tv.tv_sec += tv.tv_usec / MICROSECS_IN_A_SECOND;
|
||||
tv.tv_usec %= MICROSECS_IN_A_SECOND;
|
||||
}
|
||||
|
||||
abstime.tv_sec = tv.tv_sec;
|
||||
abstime.tv_nsec = tv.tv_usec * 1000;
|
||||
abstime.tv_sec = tv.tv_sec + tv.tv_usec / 1000000;
|
||||
abstime.tv_nsec = tv.tv_usec % 1000000 * 1000;
|
||||
} else {
|
||||
abstime.tv_nsec = 999999999;
|
||||
abstime.tv_sec = (time_t) ULINT_MAX;
|
||||
|
@ -3400,16 +3400,6 @@ static void __stdcall win_free_syncio_event(void *data) {
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Initialize tls index.for event handle used for synchronized IO on files that
|
||||
might be opened with FILE_FLAG_OVERLAPPED.
|
||||
*/
|
||||
static void win_init_syncio_event() {
|
||||
fls_sync_io = FlsAlloc(win_free_syncio_event);
|
||||
ut_a(fls_sync_io != FLS_OUT_OF_INDEXES);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Retrieve per-thread event for doing synchronous io on asyncronously opened files
|
||||
*/
|
||||
@ -3515,46 +3505,6 @@ struct WinIoInit
|
||||
/* Ensures proper initialization and shutdown */
|
||||
static WinIoInit win_io_init;
|
||||
|
||||
/** Check if the file system supports sparse files.
|
||||
@param[in] name File name
|
||||
@return true if the file system supports sparse files */
|
||||
static
|
||||
bool
|
||||
os_is_sparse_file_supported_win32(const char* filename)
|
||||
{
|
||||
char volname[MAX_PATH];
|
||||
BOOL result = GetVolumePathName(filename, volname, MAX_PATH);
|
||||
|
||||
if (!result) {
|
||||
|
||||
ib::error()
|
||||
<< "os_is_sparse_file_supported: "
|
||||
<< "Failed to get the volume path name for: "
|
||||
<< filename
|
||||
<< "- OS error number " << GetLastError();
|
||||
|
||||
return(false);
|
||||
}
|
||||
|
||||
DWORD flags;
|
||||
|
||||
result = GetVolumeInformation(
|
||||
volname, NULL, MAX_PATH, NULL, NULL,
|
||||
&flags, NULL, MAX_PATH);
|
||||
|
||||
|
||||
if (!result) {
|
||||
ib::error()
|
||||
<< "os_is_sparse_file_supported: "
|
||||
<< "Failed to get the volume info for: "
|
||||
<< volname
|
||||
<< "- OS error number " << GetLastError();
|
||||
|
||||
return(false);
|
||||
}
|
||||
|
||||
return(flags & FILE_SUPPORTS_SPARSE_FILES) ? true : false;
|
||||
}
|
||||
|
||||
/** Free storage space associated with a section of the file.
|
||||
@param[in] fh Open file handle
|
||||
@ -3851,7 +3801,7 @@ os_file_create_simple_func(
|
||||
ib::info()
|
||||
<< "Read only mode set. Unable to"
|
||||
" open file '" << name << "' in RW mode, "
|
||||
<< "trying RO mode", name;
|
||||
<< "trying RO mode";
|
||||
|
||||
access = GENERIC_READ;
|
||||
|
||||
@ -4546,7 +4496,7 @@ bool
|
||||
os_file_close_func(
|
||||
os_file_t file)
|
||||
{
|
||||
ut_a(file > 0);
|
||||
ut_a(file);
|
||||
|
||||
if (CloseHandle(file)) {
|
||||
return(true);
|
||||
|
@ -766,7 +766,7 @@ It also performs the initial in memory sort of the parsed records.
|
||||
@return OS_THREAD_DUMMY_RETURN */
|
||||
static
|
||||
os_thread_ret_t
|
||||
fts_parallel_tokenization(
|
||||
DECLARE_THREAD(fts_parallel_tokenization)(
|
||||
/*======================*/
|
||||
void* arg) /*!< in: psort_info for the thread */
|
||||
{
|
||||
@ -1106,7 +1106,7 @@ Function performs the merge and insertion of the sorted records.
|
||||
@return OS_THREAD_DUMMY_RETURN */
|
||||
static
|
||||
os_thread_ret_t
|
||||
fts_parallel_merge(
|
||||
DECLARE_THREAD(fts_parallel_merge)(
|
||||
/*===============*/
|
||||
void* arg) /*!< in: parallel merge info */
|
||||
{
|
||||
|
@ -860,7 +860,7 @@ srv_suspend_thread_low(
|
||||
ut_a(!slot->suspended);
|
||||
slot->suspended = TRUE;
|
||||
|
||||
if (my_atomic_addlint(&srv_sys.n_threads_active[type], -1) < 0) {
|
||||
if ((lint)my_atomic_addlint(&srv_sys.n_threads_active[type], -1) < 0) {
|
||||
ut_error;
|
||||
}
|
||||
|
||||
|
@ -217,7 +217,6 @@ static CONTROL_FILE_ERROR create_control_file(const char *name,
|
||||
|
||||
static int lock_control_file(const char *name)
|
||||
{
|
||||
uint retry= 0;
|
||||
/*
|
||||
On Windows, my_lock() uses locking() which is mandatory locking and so
|
||||
prevents maria-recovery.test from copying the control file. And in case of
|
||||
@ -228,6 +227,7 @@ static int lock_control_file(const char *name)
|
||||
file under Windows.
|
||||
*/
|
||||
#ifndef __WIN__
|
||||
uint retry= 0;
|
||||
/*
|
||||
We can't here use the automatic wait in my_lock() as the alarm thread
|
||||
may not yet exists.
|
||||
|
@ -1208,8 +1208,8 @@ err:
|
||||
my_errno is set to HA_ERR_WRONG_IN_RECORD
|
||||
*/
|
||||
|
||||
ulong _ma_rec_unpack(register MARIA_HA *info, register uchar *to, uchar *from,
|
||||
ulong found_length)
|
||||
size_t _ma_rec_unpack(register MARIA_HA *info, register uchar *to, uchar *from,
|
||||
size_t found_length)
|
||||
{
|
||||
uint flag,bit,length,min_pack_length, column_length;
|
||||
enum en_fieldtype type;
|
||||
|
@ -32,14 +32,14 @@ my_bool _ma_update_no_record(MARIA_HA *info __attribute__((unused)),
|
||||
const uchar *oldrec __attribute__((unused)),
|
||||
const uchar *record __attribute__((unused)))
|
||||
{
|
||||
return HA_ERR_WRONG_COMMAND;
|
||||
return (my_bool)HA_ERR_WRONG_COMMAND;
|
||||
}
|
||||
|
||||
|
||||
my_bool _ma_delete_no_record(MARIA_HA *info __attribute__((unused)),
|
||||
const uchar *record __attribute__((unused)))
|
||||
{
|
||||
return HA_ERR_WRONG_COMMAND;
|
||||
return (my_bool)HA_ERR_WRONG_COMMAND;
|
||||
}
|
||||
|
||||
|
||||
|
@ -890,9 +890,9 @@ size_t init_pagecache(PAGECACHE *pagecache, size_t use_mem,
|
||||
DBUG_PRINT("exit",
|
||||
("disk_blocks: %zu block_root: %p hash_entries: %zu\
|
||||
hash_root: %p hash_links: %zu hash_link_root: %p",
|
||||
pagecache->disk_blocks, pagecache->block_root,
|
||||
(size_t)pagecache->disk_blocks, pagecache->block_root,
|
||||
pagecache->hash_entries, pagecache->hash_root,
|
||||
pagecache->hash_links, pagecache->hash_link_root));
|
||||
(size_t)pagecache->hash_links, pagecache->hash_link_root));
|
||||
|
||||
pagecache->blocks= pagecache->disk_blocks > 0 ? pagecache->disk_blocks : 0;
|
||||
DBUG_RETURN((size_t)pagecache->disk_blocks);
|
||||
|
@ -857,7 +857,7 @@ get_one_option(int optid,
|
||||
case 2:
|
||||
method_conv= MI_STATS_METHOD_IGNORE_NULLS;
|
||||
break;
|
||||
default: assert(0); /* Impossible */
|
||||
default: abort(); /* Impossible */
|
||||
}
|
||||
check_param.stats_method= method_conv;
|
||||
break;
|
||||
|
@ -1202,8 +1202,8 @@ extern my_bool _ma_read_cache(MARIA_HA *, IO_CACHE *info, uchar *buff,
|
||||
extern ulonglong ma_retrieve_auto_increment(const uchar *key, uint8 key_type);
|
||||
extern my_bool _ma_alloc_buffer(uchar **old_addr, size_t *old_size,
|
||||
size_t new_size);
|
||||
extern ulong _ma_rec_unpack(MARIA_HA *info, uchar *to, uchar *from,
|
||||
ulong reclength);
|
||||
extern size_t _ma_rec_unpack(MARIA_HA *info, uchar *to, uchar *from,
|
||||
size_t reclength);
|
||||
extern my_bool _ma_rec_check(MARIA_HA *info, const uchar *record,
|
||||
uchar *packpos, ulong packed_length,
|
||||
my_bool with_checkum, ha_checksum checksum);
|
||||
|
@ -54,7 +54,7 @@ int test_file(PAGECACHE_FILE file, char *file_name,
|
||||
LARGE_INTEGER li;
|
||||
if(GetFileAttributesEx(file_name, GetFileExInfoStandard, &file_attr) == 0)
|
||||
{
|
||||
diag("Can't GetFileAttributesEx %s (errno: %d)\n", file_name,
|
||||
diag("Can't GetFileAttributesEx %s (errno: %lu)\n", file_name,
|
||||
GetLastError());
|
||||
res= 0;
|
||||
goto err;
|
||||
|
@ -1216,7 +1216,7 @@ err:
|
||||
/* Returns -1 and my_errno =HA_ERR_RECORD_DELETED if reclength isn't */
|
||||
/* right. Returns reclength (>0) if ok */
|
||||
|
||||
ulong _mi_rec_unpack(register MI_INFO *info, register uchar *to, uchar *from,
|
||||
size_t _mi_rec_unpack(register MI_INFO *info, register uchar *to, uchar *from,
|
||||
ulong found_length)
|
||||
{
|
||||
uint flag,bit,length,rec_length,min_pack_length;
|
||||
|
@ -727,7 +727,7 @@ get_one_option(int optid,
|
||||
case 2:
|
||||
method_conv= MI_STATS_METHOD_IGNORE_NULLS;
|
||||
break;
|
||||
default: assert(0); /* Impossible */
|
||||
default: abort(); /* Impossible */
|
||||
}
|
||||
check_param.stats_method= method_conv;
|
||||
break;
|
||||
|
@ -571,7 +571,7 @@ extern uchar *mi_alloc_rec_buff(MI_INFO *, ulong, uchar **);
|
||||
#define mi_get_rec_buff_len(info,buf) \
|
||||
(*((uint32 *)(mi_get_rec_buff_ptr(info,buf))))
|
||||
|
||||
extern ulong _mi_rec_unpack(MI_INFO *info, uchar *to, uchar *from,
|
||||
extern size_t _mi_rec_unpack(MI_INFO *info, uchar *to, uchar *from,
|
||||
ulong reclength);
|
||||
extern my_bool _mi_rec_check(MI_INFO *info,const uchar *record, uchar *packpos,
|
||||
ulong packed_length, my_bool with_checkum);
|
||||
|
@ -57,6 +57,10 @@ ELSEIF (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
SKIP_ROCKSDB_PLUGIN("${OLD_COMPILER_MSG}")
|
||||
ENDIF()
|
||||
SET(CXX11_FLAGS "-std=c++11 -stdlib=libstdc++")
|
||||
IF(MSVC)
|
||||
# clang-cl does not work yet
|
||||
SKIP_ROCKSDB_PLUGIN("Clang-cl is not supported")
|
||||
ENDIF()
|
||||
ELSEIF(MSVC)
|
||||
IF (MSVC_VERSION LESS 1900)
|
||||
SKIP_ROCKSDB_PLUGIN("${OLD_COMPILER_MSG}")
|
||||
|
@ -1365,7 +1365,7 @@ int bin2decimal(const uchar *from, decimal_t *to, int precision, int scale)
|
||||
case 2: x=mi_sint2korr(from); break;
|
||||
case 3: x=mi_sint3korr(from); break;
|
||||
case 4: x=mi_sint4korr(from); break;
|
||||
default: DBUG_ASSERT(0);
|
||||
default: abort();
|
||||
}
|
||||
from+=i;
|
||||
*buf=x ^ mask;
|
||||
@ -1406,7 +1406,7 @@ int bin2decimal(const uchar *from, decimal_t *to, int precision, int scale)
|
||||
case 2: x=mi_sint2korr(from); break;
|
||||
case 3: x=mi_sint3korr(from); break;
|
||||
case 4: x=mi_sint4korr(from); break;
|
||||
default: DBUG_ASSERT(0);
|
||||
default: abort();
|
||||
}
|
||||
*buf=(x ^ mask) * powers10[DIG_PER_DEC1 - frac0x];
|
||||
if (((uint32)*buf) > DIG_MAX)
|
||||
|
@ -19549,7 +19549,9 @@ static void test_mdev4326()
|
||||
myquery(rc);
|
||||
}
|
||||
|
||||
/* Test uses MYSQL_PROTOCOL_SOCKET, not on Windows */
|
||||
|
||||
#ifndef _WIN32
|
||||
/**
|
||||
BUG#17512527: LIST HANDLING INCORRECT IN MYSQL_PRUNE_STMT_LIST()
|
||||
*/
|
||||
@ -19590,7 +19592,7 @@ static void test_bug17512527()
|
||||
mysql_stmt_close(stmt2);
|
||||
mysql_stmt_close(stmt1);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
|
@ -843,7 +843,7 @@ static my_bool socket_peek_read(Vio *vio, uint *bytes)
|
||||
{
|
||||
my_socket sd= mysql_socket_getfd(vio->mysql_socket);
|
||||
#if defined(_WIN32)
|
||||
int len;
|
||||
u_long len;
|
||||
if (ioctlsocket(sd, FIONREAD, &len))
|
||||
return TRUE;
|
||||
*bytes= len;
|
||||
|
@ -90,7 +90,7 @@ static void EscapeCommandLine(const wchar_t *in, wchar_t *out, size_t buflen)
|
||||
bool needs_escaping= false;
|
||||
size_t pos;
|
||||
|
||||
for(int i=0; i< sizeof(special_chars) -1; i++)
|
||||
for(size_t i=0; i< sizeof(special_chars) -1; i++)
|
||||
{
|
||||
if (wcschr(in, special_chars[i]))
|
||||
{
|
||||
@ -271,7 +271,7 @@ bool IsPortFree(short port)
|
||||
struct sockaddr_in sin;
|
||||
SOCKET sock;
|
||||
sock = socket(AF_INET, SOCK_STREAM, 0);
|
||||
if(sock == -1)
|
||||
if(sock == INVALID_SOCKET)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -871,8 +871,6 @@ extern "C" UINT __stdcall CheckServiceUpgrades(MSIHANDLE hInstall)
|
||||
{
|
||||
HRESULT hr = S_OK;
|
||||
UINT er = ERROR_SUCCESS;
|
||||
wchar_t* service= 0;
|
||||
wchar_t* dir= 0;
|
||||
wchar_t installerVersion[MAX_VERSION_PROPERTY_SIZE];
|
||||
char installDir[MAX_PATH];
|
||||
DWORD size =MAX_VERSION_PROPERTY_SIZE;
|
||||
@ -882,7 +880,7 @@ extern "C" UINT __stdcall CheckServiceUpgrades(MSIHANDLE hInstall)
|
||||
DWORD bufsize;
|
||||
int index;
|
||||
BOOL ok;
|
||||
SC_HANDLE scm;
|
||||
SC_HANDLE scm = NULL;
|
||||
|
||||
hr = WcaInitialize(hInstall, __FUNCTION__);
|
||||
WcaLog(LOGMSG_STANDARD, "Initialized.");
|
||||
|
@ -1,6 +1,10 @@
|
||||
IF(NOT MSVC)
|
||||
RETURN()
|
||||
ENDIF()
|
||||
IF(CMAKE_C_COMPILER_ID MATCHES Clang)
|
||||
# MFC stuff does not compile with clang
|
||||
RETURN()
|
||||
ENDIF()
|
||||
IF(CMAKE_USING_VC_FREE_TOOLS)
|
||||
# No MFC, so it cannot be built
|
||||
RETURN()
|
||||
|
Loading…
x
Reference in New Issue
Block a user