Commit 7e80c6e4 authored by Sergei Golubchik's avatar Sergei Golubchik

fixes for windows

parent c0ad2cd8
......@@ -24,7 +24,7 @@
#include "timer.hpp"
#ifdef _WIN32
#define WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN 1
#include <windows.h>
#else
#include <sys/time.h>
......
......@@ -19,8 +19,6 @@
#ifndef _my_base_h
#define _my_base_h
#ifndef stdin /* Included first in handler */
#define CHSIZE_USED
#include <my_global.h>
#include <my_dir.h> /* This includes types */
#include <my_sys.h>
......@@ -31,7 +29,6 @@
#define EOVERFLOW 84
#endif
#endif /* stdin */
#include <my_list.h>
/* The following is bits in the flag parameter to ha_open() */
......
......@@ -91,21 +91,6 @@ struct timespec {
long tv_nsec;
};
/**
Compare two timespec structs.
@retval 1 If TS1 ends after TS2.
@retval 0 If TS1 is equal to TS2.
@retval -1 If TS1 ends before TS2.
*/
#define cmp_timespec(TS1, TS2) \
((TS1.tv.i64 > TS2.tv.i64) ? 1 : \
((TS1.tv.i64 < TS2.tv.i64) ? -1 : 0))
int win_pthread_mutex_trylock(pthread_mutex_t *mutex);
int pthread_create(pthread_t *, const pthread_attr_t *, pthread_handler, void *);
int pthread_cond_init(pthread_cond_t *cond, const pthread_condattr_t *attr);
......
......@@ -122,9 +122,9 @@ int PSIZE= sizeof(struct st_mysql_plugin); \
struct st_mysql_plugin DECLS[]= {
#define MARIA_DECLARE_PLUGIN__(NAME, VERSION, PSIZE, DECLS) \
int VERSION= MARIA_PLUGIN_INTERFACE_VERSION; \
int PSIZE= sizeof(struct st_maria_plugin); \
struct st_maria_plugin DECLS[]= {
MYSQL_PLUGIN_EXPORT int VERSION= MARIA_PLUGIN_INTERFACE_VERSION; \
MYSQL_PLUGIN_EXPORT int PSIZE= sizeof(struct st_maria_plugin); \
MYSQL_PLUGIN_EXPORT struct st_maria_plugin DECLS[]= {
#else
#define __MYSQL_DECLARE_PLUGIN(NAME, VERSION, PSIZE, DECLS) \
......
......@@ -15,6 +15,10 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#ifdef _WIN32
#include <windows.h>
#endif
/**
@file
......
......@@ -56,6 +56,9 @@
#define LOCAL_HOST "localhost"
#define LOCAL_HOST_NAMEDPIPE "."
#ifdef _WIN32
#include <ws2tcpip.h>
#endif
#if defined(__WIN__) && !defined( _CUSTOMCONFIG_)
#define MYSQL_NAMEDPIPE "MySQL"
......
......@@ -24,31 +24,15 @@
asks the user the question, as provided by the server and reports
the answer back to the server. No encryption is involved,
the answers are sent in clear text.
Two examples are provided: two_questions server plugin, that asks
the password and an "Are you sure?" question with a reply "yes, of course".
It demonstrates the usage of "password" (input is hidden) and "ordinary"
(input can be echoed) questions, and how to mark the last question,
to avoid an extra roundtrip.
And three_attempts plugin that gives the user three attempts to enter
a correct password. It shows the situation when a number of questions
is not known in advance.
*/
#if defined (WIN32) && !defined (RTLD_DEFAULT)
# define RTLD_DEFAULT GetModuleHandle(NULL)
#endif
#if !defined (_GNU_SOURCE)
# define _GNU_SOURCE /* for RTLD_DEFAULT */
#endif
#include <my_global.h>
#include <mysql/client_plugin.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <mysql.h>
#include <dlfcn.h>
#include <string.h>
#if defined (_WIN32)
# define RTLD_DEFAULT GetModuleHandle(NULL)
#endif
/*
This plugin performs a dialog with the user, asking questions and
......
......@@ -47,11 +47,7 @@ static int getWaitTime(const struct timespec& start_ts);
static unsigned long long timespec_to_usec(const struct timespec *ts)
{
#ifndef __WIN__
return (unsigned long long) ts->tv_sec * TIME_MILLION + ts->tv_nsec / TIME_THOUSAND;
#else
return ts->tv.i64 / 10;
#endif /* __WIN__ */
}
/*******************************************************************************
......@@ -678,10 +674,6 @@ int ReplSemiSyncMaster::commitTrx(const char* trx_wait_binlog_name,
}
/* Calcuate the waiting period. */
#ifdef __WIN__
abstime.tv.i64 = start_ts.tv.i64 + (__int64)wait_timeout_ * TIME_THOUSAND * 10;
abstime.max_timeout_msec= (long)wait_timeout_;
#else
unsigned long long diff_nsecs =
start_ts.tv_nsec + (unsigned long long)wait_timeout_ * TIME_MILLION;
abstime.tv_sec = start_ts.tv_sec;
......@@ -691,7 +683,6 @@ int ReplSemiSyncMaster::commitTrx(const char* trx_wait_binlog_name,
diff_nsecs -= TIME_BILLION;
}
abstime.tv_nsec = diff_nsecs;
#endif /* __WIN__ */
/* In semi-synchronous replication, we wait until the binlog-dump
* thread has received the reply on the relevant binlog segment from the
......
......@@ -28,7 +28,7 @@ IF(WIN32)
log_client.cc common.cc handshake.cc)
MYSQL_ADD_PLUGIN(authentication_windows_client ${PLUGIN_SOURCES} ${HEADERS}
LINK_LIBRARUES Secur32
LINK_LIBRARIES Secur32
MODULE_ONLY)
ENDIF(WIN32)
......@@ -100,6 +100,7 @@ TARGET_LINK_LIBRARIES(sql ${MYSQLD_STATIC_PLUGIN_LIBS}
IF(WIN32)
SET(MYSQLD_SOURCE main.cc nt_servc.cc nt_servc.h message.rc)
TARGET_LINK_LIBRARIES(sql psapi)
ELSE()
SET(MYSQLD_SOURCE main.cc ${DTRACE_PROBES_ALL})
ENDIF()
......
......@@ -2753,6 +2753,7 @@ extern "C" char *my_demangle(const char *mangled_name, int *status)
}
#endif
extern const char *optimizer_switch_names[];
extern "C" sig_handler handle_segfault(int sig)
{
......@@ -2859,7 +2860,6 @@ the thread stack. Please read http://dev.mysql.com/doc/mysql/en/linux.html\n\n",
fprintf(stderr, "Status: %s\n", kreason);
fprintf(stderr, "Optimizer switch: ");
extern const char *optimizer_switch_names[];
ulonglong optsw= global_system_variables.optimizer_switch;
for (uint i= 0; optimizer_switch_names[i+1]; i++, optsw >>= 1)
{
......
......@@ -59,7 +59,7 @@
#define EXTRA_DEBUG_fflush fflush
#else
static void inline EXTRA_DEBUG_fprintf(...) {}
static int EXTRA_DEBUG_fflush(...) {}
static int inline EXTRA_DEBUG_fflush(...) { return 0; }
#endif
#ifdef MYSQL_SERVER
#define MYSQL_SERVER_my_error my_error
......
......@@ -3027,8 +3027,19 @@ int ha_federated::delete_all_rows()
}
/*
The idea with handler::store_lock() is the following:
Used to manually truncate the table via a delete of all rows in a table.
*/
int ha_federated::truncate()
{
return delete_all_rows();
}
/* The idea with handler::store_lock() is the following:
The statement decided which locks we should need for the table
for updates/deletes/inserts we get WRITE locks, for SELECT... we get
......
......@@ -42,7 +42,7 @@ SET(ARIA_SOURCES ma_init.c ma_open.c ma_extra.c ma_info.c ma_rkey.c
)
MYSQL_ADD_PLUGIN(aria ${ARIA_SOURCES}
STORAGE_ENGINE
STORAGE_ENGINE STATIC_ONLY DEFAULT
RECOMPILE_FOR_EMBEDDED)
TARGET_LINK_LIBRARIES(aria myisam)
......
......@@ -395,7 +395,7 @@ int main(int argc __attribute__((unused)),
pagecache_file_init(file1, &dummy_callback, &dummy_callback,
&dummy_fail_callback, &dummy_callback, NULL);
DBUG_PRINT("info", ("file1: %d", file1.file));
if (my_chmod(file1_name, S_IRWXU | S_IRWXG | S_IRWXO, MYF(MY_WME)))
if (my_chmod(file1_name, 0777, MYF(MY_WME)))
exit(1);
my_pwrite(file1.file, (const uchar *)"test file", 9, 0, MYF(0));
......
......@@ -265,7 +265,7 @@ int main(int argc __attribute__((unused)),
pagecache_file_init(file1, &dummy_callback, &dummy_callback,
&dummy_fail_callback, &dummy_callback, NULL);
DBUG_PRINT("info", ("file1: %d", file1.file));
if (my_chmod(file1_name, S_IRWXU | S_IRWXG | S_IRWXO, MYF(MY_WME)))
if (my_chmod(file1_name, 0777, MYF(MY_WME)))
exit(1);
my_pwrite(file1.file, (const uchar*) "test file", 9, 0, MYF(0));
......
......@@ -261,7 +261,7 @@ int main(int argc __attribute__((unused)),
pagecache_file_init(file1, &dummy_callback, &dummy_callback,
&dummy_fail_callback, &dummy_callback, NULL);
DBUG_PRINT("info", ("file1: %d", file1.file));
if (my_chmod(file1_name, S_IRWXU | S_IRWXG | S_IRWXO, MYF(MY_WME)))
if (my_chmod(file1_name, 0777, MYF(MY_WME)))
exit(1);
my_pwrite(file1.file, (const uchar*) "test file", 9, 0, MYF(0));
......
......@@ -792,7 +792,7 @@ int main(int argc __attribute__((unused)),
my_delete(file2_name, MYF(0));
DBUG_PRINT("info", ("file1: %d", file1.file));
if (my_chmod(file1_name, S_IRWXU | S_IRWXG | S_IRWXO, MYF(MY_WME)))
if (my_chmod(file1_name, 0777, MYF(MY_WME)))
exit(1);
my_pwrite(file1.file, (const uchar*)"test file", 9, 0, MYF(MY_WME));
......
......@@ -154,7 +154,7 @@ int main(int argc __attribute__((unused)), char *argv[])
}
pagecache_file_init(file1, &dummy_callback, &dummy_callback,
&dummy_fail_callback, maria_flush_log_for_page, NULL);
if (my_chmod(file1_name, S_IRWXU | S_IRWXG | S_IRWXO, MYF(MY_WME)))
if (my_chmod(file1_name, 0777, MYF(MY_WME)))
exit(1);
{
......
......@@ -15,12 +15,11 @@ IF(BOOST_OK)
ADD_DEFINITIONS(-DHAVE_OQGRAPH)
IF(MSVC)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc")
ENDIF(MSVC)
IF(CMAKE_CXX_FLAGS)
ELSE(MSVC)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated")
STRING(REPLACE "-fno-exceptions" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
STRING(REPLACE "-fno-implicit-templates" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated")
ENDIF()
ENDIF(MSVC)
MYSQL_ADD_PLUGIN(oqgraph ha_oqgraph.cc graphcore.cc STORAGE_ENGINE
MODULE_ONLY)
......
......@@ -90,6 +90,5 @@ src/xt_config.h
src/xt_defs.h
src/xt_errno.h)
SET(PBXT_PLUGIN_STATIC "pbxt")
MYSQL_ADD_PLUGIN(pbxt ${PBXT_SOURCES} STORAGE_ENGINE)
MYSQL_ADD_PLUGIN(pbxt ${PBXT_SOURCES} STORAGE_ENGINE STATIC_ONLY)
......@@ -26,8 +26,8 @@
#include <stdio.h>
#ifndef XT_WIN
#include <unistd.h>
#include <signal.h>
#endif
#include <signal.h>
#include <stdlib.h>
#ifndef DRIZZLED
......
......@@ -45,22 +45,16 @@ xtPublic void xt_p_init_threading(void)
xtPublic int xt_p_set_normal_priority(pthread_t thr)
{
if (!SetThreadPriority (thr, THREAD_PRIORITY_NORMAL))
return GetLastError();
return 0;
}
xtPublic int xt_p_set_low_priority(pthread_t thr)
{
if (!SetThreadPriority (thr, THREAD_PRIORITY_LOWEST))
return GetLastError();
return 0;
}
xtPublic int xt_p_set_high_priority(pthread_t thr)
{
if (!SetThreadPriority (thr, THREAD_PRIORITY_HIGHEST))
return GetLastError();
return 0;
}
......@@ -401,31 +395,7 @@ xtPublic int xt_p_cond_timedwait(xt_cond_type *cond, xt_mutex_type *mt, struct t
xtPublic int xt_p_join(pthread_t thread, void **value)
{
DWORD exitcode;
while(1) {
switch (WaitForSingleObject(thread, 10000)) {
case WAIT_OBJECT_0:
return 0;
case WAIT_TIMEOUT:
/* Don't do this! According to the Win docs:
* _endthread automatically closes the thread handle
* (whereas _endthreadex does not). Therefore, when using
* _beginthread and _endthread, do not explicitly close the
* thread handle by calling the Win32 CloseHandle API.
CloseHandle(thread);
*/
/* This is done so that if the thread was not [yet] in the running
* state when this function was called we won't deadlock here.
*/
if (GetExitCodeThread(thread, &exitcode) && (exitcode == STILL_ACTIVE))
break;
return 0;
case WAIT_FAILED:
return GetLastError();
}
}
pthread_join(thread, value);
return 0;
}
......
......@@ -1513,16 +1513,7 @@ xtPublic pthread_t xt_run_thread(XTThreadPtr self, XTThreadPtr child, void *(*st
data.td_started = FALSE;
data.td_thr = child;
data.td_start_routine = start_routine;
#ifdef XT_WIN
{
pthread_attr_t attr = { 0, 0, 0 };
attr.priority = THREAD_PRIORITY_NORMAL;
err = pthread_create(&child_thread, &attr, xt_thread_main, &data);
}
#else
err = pthread_create(&child_thread, NULL, xt_thread_main, &data);
#endif
if (err) {
xt_free_thread(child);
xt_throw_errno(XT_CONTEXT, err);
......
......@@ -26,10 +26,10 @@
#include "field.h"
#include "item.h"
#include <mysqld_error.h>
#include <my_net.h>
#ifndef __WIN__
// UNIX-specific
#include <my_net.h>
#include <netdb.h>
#include <sys/un.h>
......@@ -39,8 +39,6 @@
#else
// Windows-specific
#include <io.h>
#define strcasecmp stricmp
#define snprintf _snprintf
#define RECV_FLAGS 0
......
......@@ -259,5 +259,5 @@ IF(WITH_INNODB)
SET(WITH_INNOBASE_STORAGE_ENGINE TRUE)
ENDIF()
MYSQL_ADD_PLUGIN(xtradb ${INNOBASE_SOURCES} STORAGE_ENGINE
MYSQL_ADD_PLUGIN(xtradb ${INNOBASE_SOURCES} STORAGE_ENGINE DEFAULT
LINK_LIBRARIES ${ZLIB_LIBRARY})
......@@ -29,6 +29,13 @@ Created 9/20/1997 Heikki Tuuri
#include "log0recv.ic"
#endif
#include "config.h"
#ifdef HAVE_ALLOCA_H
#include "alloca.h"
#else
#include "malloc.h"
#endif
#include "mem0mem.h"
#include "buf0buf.h"
#include "buf0flu.h"
......
......@@ -37,7 +37,7 @@ Created 10/21/1995 Heikki Tuuri
#ifdef UNIV_NONINL
#include "os0file.ic"
#endif
#include "ha_prototypes.h"
#include "ut0mem.h"
#include "srv0srv.h"
#include "srv0start.h"
......@@ -1601,7 +1601,7 @@ os_file_create_func(
}
} else {
*success = TRUE;
if (os_aio_use_native_aio && ((attributes & FILE_FLAG_OVERLAPPED) != 0)) {
if (srv_use_native_aio && ((attributes & FILE_FLAG_OVERLAPPED) != 0)) {
ut_a(CreateIoCompletionPort(file, completion_port, 0, 0));
}
}
......@@ -4286,18 +4286,6 @@ os_aio_windows_handle(
ret = GetQueuedCompletionStatus(completion_port, &len, &key,
(OVERLAPPED **)&slot, INFINITE);
if (srv_recovery_stats && recv_recovery_is_on() && n_consecutive) {
mutex_enter(&(recv_sys->mutex));
if (slot->type == OS_FILE_READ) {
recv_sys->stats_read_io_pages += n_consecutive;
recv_sys->stats_read_io_consecutive[n_consecutive - 1]++;
} else if (slot->type == OS_FILE_WRITE) {
recv_sys->stats_write_io_pages += n_consecutive;
recv_sys->stats_write_io_consecutive[n_consecutive - 1]++;
}
mutex_exit(&(recv_sys->mutex));
}
/* If shutdown key was received, repost the shutdown message and exit */
if (ret && (key == IOCP_SHUTDOWN_KEY)) {
PostQueuedCompletionStatus(completion_port, 0, key, NULL);
......
......@@ -136,20 +136,6 @@ UNIV_INTERN ulint srv_max_file_format_at_startup = DICT_TF_FORMAT_MAX;
/** Place locks to records only i.e. do not use next-key locking except
on duplicate key checking and foreign key checking */
UNIV_INTERN ibool srv_locks_unsafe_for_binlog = FALSE;
#ifdef __WIN__
/* Windows native condition variables. We use runtime loading / function
pointers, because they are not available on Windows Server 2003 and
Windows XP/2000.
We use condition for events on Windows if possible, even if os_event
resembles Windows kernel event object well API-wise. The reason is
performance, kernel objects are heavyweights and WaitForSingleObject() is a
performance killer causing calling thread to context switch. Besides, Innodb
is preallocating large number (often millions) of os_events. With kernel event
objects it takes a big chunk out of non-paged pool, which is better suited
for tasks like IO than for storing idle event objects. */
UNIV_INTERN ibool srv_use_native_conditions = FALSE;
#endif /* __WIN__ */
/* If this flag is TRUE, then we will use the native aio of the
OS (provided we compiled Innobase with it in), otherwise we will
......
......@@ -1377,7 +1377,7 @@ innobase_start_or_create_for_mysql(void)
} else if (0 == ut_strcmp(srv_file_flush_method_str,
"async_unbuffered")) {
srv_win_file_flush_method = SRV_WIN_IO_UNBUFFERED;
os_aio_use_native_aio = TRUE;
srv_use_native_aio = TRUE;
#endif
} else {
ut_print_timestamp(stderr);
......
......@@ -15,5 +15,3 @@
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
ADD_LIBRARY(mytap tap.c)
MY_ADD_TESTS(t/basic)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment