mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Merge mysql.com:/home/jimw/my/mysql-4.1-clean
into mysql.com:/home/jimw/my/mysql-5.0-clean include/my_global.h: Auto merged include/my_pthread.h: Auto merged include/violite.h: Auto merged mysql-test/r/ndb_autodiscover.result: Auto merged ndb/src/mgmsrv/MgmtSrvr.cpp: Auto merged ndb/src/ndbapi/SignalSender.cpp: Auto merged sql-common/client.c: Auto merged sql/examples/ha_archive.cc: Auto merged sql/net_serv.cc: Auto merged vio/vio.c: Auto merged vio/viosocket.c: Auto merged vio/viossl.c: Auto merged configure.in: Resolve conflicts
This commit is contained in:
65
README
65
README
@ -1,52 +1,35 @@
|
|||||||
This is a release of MySQL, a GPL (free) SQL database server (more
|
This is a release of MySQL, a dual-license SQL database server.
|
||||||
licence information in the PUBLIC file and in the reference manual).
|
MySQL is brought to you by the MySQL team at MySQL AB.
|
||||||
|
|
||||||
Please read the "Upgrading from..." section in the manual first, if you are
|
License information can be found in these files:
|
||||||
migrating from older versions of MySQL!
|
- For GPL (free) distributions, see the COPYING file.
|
||||||
|
- For commercial distributions, see the MySQLEULA.txt file.
|
||||||
|
|
||||||
The latest information about MySQL can be found at:
|
|
||||||
http://www.mysql.com
|
|
||||||
|
|
||||||
To see what it can do take a look at the features section in the
|
For further information about MySQL or additional documentation, see:
|
||||||
manual.
|
- The latest information about MySQL: http://www.mysql.com
|
||||||
|
- The current MySQL documentation: http:/dev.mysql.com/doc
|
||||||
|
|
||||||
For installation instructions see the Installation chapter in the
|
Some manual sections of special interest:
|
||||||
manual.
|
|
||||||
|
|
||||||
For future plans see the TODO appendix in the manual.
|
- If you are migrating from an older version of MySQL, please read the
|
||||||
|
"Upgrading from..." section first!
|
||||||
|
- To see what MySQL can do, take a look at the features section.
|
||||||
|
- For installation instructions, see the Installation chapter.
|
||||||
|
- For future plans, see the TODO appendix.
|
||||||
|
- For the new features/bugfix history, see the News appendix.
|
||||||
|
- For the currently known bugs/misfeatures (known errors) see the problems
|
||||||
|
appendix.
|
||||||
|
- For a list of developers and other contributors, see the Credits
|
||||||
|
appendix.
|
||||||
|
|
||||||
New features/bug fixes history is in the news appendix in the manual.
|
A local copy of the MySQL Reference Manual can be found in the Docs
|
||||||
|
directory in GNU Info format. You can also browse the manual online or
|
||||||
For the currently known bugs/misfeatures (known errors) see the bugs
|
download it in any of several formats at the URL given earlier in this
|
||||||
appendix in the manual.
|
file.
|
||||||
|
|
||||||
For examples of SQL and benchmarking information see the bench
|
|
||||||
directory.
|
|
||||||
|
|
||||||
The manual mentioned above can be found in the Docs directory. The
|
|
||||||
manual is available in the following formats: as plain ASCII text in
|
|
||||||
Docs/manual.txt, in HTML format in Docs/manual_toc.html, as GNU Info in
|
|
||||||
Docs/mysql.info and as PostScript in Docs/manual.ps.
|
|
||||||
|
|
||||||
MySQL is brought to you by the MySQL team at MySQL AB
|
|
||||||
|
|
||||||
For a list of developers and other contributors, see the Credits appendix
|
|
||||||
in the manual.
|
|
||||||
|
|
||||||
************************************************************
|
************************************************************
|
||||||
|
|
||||||
IMPORTANT:
|
IMPORTANT:
|
||||||
|
|
||||||
Send bug (error) reports, questions and comments to the mailing list
|
Bug or error reports should be sent to http://bugs.mysql.com.
|
||||||
at mysql@lists.mysql.com
|
|
||||||
|
|
||||||
Please use the 'mysqlbug' script when posting bug reports or questions
|
|
||||||
about MySQL. mysqlbug will gather some information about your system
|
|
||||||
and start your editor with a form in which you can describe your
|
|
||||||
problem. Bug reports might be silently ignored by the MySQL
|
|
||||||
maintainers if there is not a good reason included in the report as to
|
|
||||||
why mysqlbug has not been used. A report that says 'MySQL does not
|
|
||||||
work for me. Why?' is not considered a valid bug report.
|
|
||||||
|
|
||||||
The mysqlbug script can be found in the 'scripts' directory of the
|
|
||||||
distribution, that is '<where-you-installed-mysql>/scripts'.
|
|
||||||
|
102
configure.in
102
configure.in
@ -322,19 +322,19 @@ case "$target_os" in
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
sysv5UnixWare*)
|
sysv5UnixWare* | sysv5OpenUNIX8*)
|
||||||
if test "$GCC" != "yes"; then
|
if test "$GCC" != "yes"; then
|
||||||
# We are using built-in inline function
|
# Use the built-in alloca()
|
||||||
CFLAGS="$CFLAGS -Kalloca"
|
CFLAGS="$CFLAGS -Kalloca"
|
||||||
fi
|
fi
|
||||||
CXXFLAGS="$CXXFLAGS -DNO_CPLUSPLUS_ALLOCA"
|
CXXFLAGS="$CXXFLAGS -DNO_CPLUSPLUS_ALLOCA"
|
||||||
;;
|
;;
|
||||||
sysv5OpenUNIX8*)
|
sysv5SCO_SV6.0.0*)
|
||||||
if test "$GCC" != "yes"; then
|
if test "$GCC" != "yes"; then
|
||||||
# We are using built-in inline function
|
# Use the built-in alloca()
|
||||||
CFLAGS="$CFLAGS -Kalloca"
|
CFLAGS="$CFLAGS -Kalloca"
|
||||||
|
CXXFLAGS="$CFLAGS -Kalloca"
|
||||||
fi
|
fi
|
||||||
CXXFLAGS="$CXXFLAGS -DNO_CPLUSPLUS_ALLOCA"
|
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
AC_SUBST(CC)
|
AC_SUBST(CC)
|
||||||
@ -1047,6 +1047,15 @@ case $SYSTEM_TYPE in
|
|||||||
MAX_C_OPTIMIZE="-O"
|
MAX_C_OPTIMIZE="-O"
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
*darwin9*)
|
||||||
|
if test "$ac_cv_prog_gcc" = "yes"
|
||||||
|
then
|
||||||
|
FLAGS="-D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DIGNORE_SIGHUP_SIGQUIT"
|
||||||
|
CFLAGS="$CFLAGS $FLAGS"
|
||||||
|
CXXFLAGS="$CXXFLAGS $FLAGS"
|
||||||
|
MAX_C_OPTIMIZE="-O"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
*freebsd*)
|
*freebsd*)
|
||||||
AC_MSG_WARN([Adding fix for interrupted reads])
|
AC_MSG_WARN([Adding fix for interrupted reads])
|
||||||
OSVERSION=`sysctl -a | grep osreldate | awk '{ print $2 }'`
|
OSVERSION=`sysctl -a | grep osreldate | awk '{ print $2 }'`
|
||||||
@ -1359,8 +1368,6 @@ then
|
|||||||
if expr "$SYSTEM_TYPE" : ".*unixware7.0.0" > /dev/null
|
if expr "$SYSTEM_TYPE" : ".*unixware7.0.0" > /dev/null
|
||||||
then
|
then
|
||||||
AC_DEFINE(HAVE_UNIXWARE7_THREADS, [1])
|
AC_DEFINE(HAVE_UNIXWARE7_THREADS, [1])
|
||||||
else
|
|
||||||
AC_DEFINE(HAVE_UNIXWARE7_POSIX, [1])
|
|
||||||
fi
|
fi
|
||||||
AC_MSG_RESULT("yes")
|
AC_MSG_RESULT("yes")
|
||||||
# We must have cc
|
# We must have cc
|
||||||
@ -1386,87 +1393,40 @@ then
|
|||||||
AC_MSG_RESULT("no")
|
AC_MSG_RESULT("no")
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
# Hack for SCO UnixWare7
|
|
||||||
#
|
|
||||||
if test "$with_named_thread" = "no"
|
|
||||||
then
|
|
||||||
AC_MSG_CHECKING("SCO UnixWare7 native threads")
|
|
||||||
if expr "$SYSTEM_TYPE" : ".*UnixWare*" > /dev/null
|
|
||||||
then
|
|
||||||
if test -f /usr/lib/libthread.so -o -f /usr/lib/libthreadT.so
|
|
||||||
then
|
|
||||||
MYSQL_REMOVE_SOCKET_FROM_LIBS_HACK
|
|
||||||
if expr "$CC" : ".*gcc.*"
|
|
||||||
then
|
|
||||||
with_named_thread="-pthread -lsocket -lnsl"
|
|
||||||
else
|
|
||||||
with_named_thread="-Kthread -lsocket -lnsl"
|
|
||||||
fi
|
|
||||||
if expr "$SYSTEM_TYPE" : ".*unixware7.0.0" > /dev/null
|
|
||||||
then
|
|
||||||
AC_DEFINE(HAVE_UNIXWARE7_THREADS, [1])
|
|
||||||
else
|
|
||||||
AC_DEFINE(HAVE_UNIXWARE7_POSIX, [1])
|
|
||||||
fi
|
|
||||||
# We must have cc
|
|
||||||
AC_MSG_CHECKING("for gcc")
|
|
||||||
if expr "$CC" : ".*gcc.*"
|
|
||||||
then
|
|
||||||
CC="$CC -pthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"
|
|
||||||
CXX="$CXX -pthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"
|
|
||||||
else
|
|
||||||
CC="$CC -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"
|
|
||||||
CXX="$CXX -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"
|
|
||||||
fi
|
|
||||||
AC_MSG_RESULT("yes")
|
|
||||||
else
|
|
||||||
AC_MSG_ERROR([configure: error: Can't find thread libs on SCO UnixWare7. See the Installation chapter in the Reference Manual.])
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
AC_MSG_RESULT("no")
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Hack for Caldera OpenUNIX8
|
#
|
||||||
|
# Check for SCO threading libraries
|
||||||
#
|
#
|
||||||
if test "$with_named_thread" = "no"
|
if test "$with_named_thread" = "no"
|
||||||
then
|
then
|
||||||
AC_MSG_CHECKING("OpenUNIX8 native threads")
|
AC_MSG_CHECKING([SCO OpenServer 6, UnixWare 7 or OpenUNIX 8 native threads])
|
||||||
if expr "$SYSTEM_TYPE" : ".*OpenUNIX*" > /dev/null
|
if expr "$SYSTEM_TYPE" : ".*UnixWare.*" > /dev/null || \
|
||||||
|
expr "$SYSTEM_TYPE" : ".*SCO_SV6.*" > /dev/null || \
|
||||||
|
expr "$SYSTEM_TYPE" : ".*OpenUNIX.*" > /dev/null
|
||||||
then
|
then
|
||||||
if test -f /usr/lib/libthread.so -o -f /usr/lib/libthreadT.so
|
if test -f /usr/lib/libthread.so -o -f /usr/lib/libthreadT.so
|
||||||
then
|
then
|
||||||
MYSQL_REMOVE_SOCKET_FROM_LIBS_HACK
|
MYSQL_REMOVE_SOCKET_FROM_LIBS_HACK
|
||||||
if expr "$CC" : ".*gcc.*"
|
if expr "$CC" : ".*gcc.*" > /dev/null
|
||||||
then
|
then
|
||||||
with_named_thread="-pthread -lsocket -lnsl"
|
with_named_thread="-pthread -lsocket -lnsl"
|
||||||
|
CC="$CC -pthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK";
|
||||||
|
CXX="$CXX -pthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK";
|
||||||
else
|
else
|
||||||
with_named_thread="-Kthread -lsocket -lnsl"
|
with_named_thread="-Kthread -lsocket -lnsl"
|
||||||
|
CC="$CC -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK";
|
||||||
|
CXX="$CXX -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK";
|
||||||
fi
|
fi
|
||||||
if expr "$SYSTEM_TYPE" : ".*unixware7.0.0" > /dev/null
|
if expr "$SYSTEM_TYPE" : ".*unixware7.0.0" > /dev/null
|
||||||
then
|
then
|
||||||
AC_DEFINE([HAVE_UNIXWARE7_THREADS], [1],
|
AC_DEFINE(HAVE_UNIXWARE7_THREADS, [1], [Have UnixWare 7 (or similar) almost-POSIX threading library])
|
||||||
[UNIXWARE7 threads are not posix])
|
|
||||||
else
|
|
||||||
AC_DEFINE([HAVE_UNIXWARE7_POSIX], [1],
|
|
||||||
[new UNIXWARE7 threads that are not yet posix])
|
|
||||||
fi
|
fi
|
||||||
# We must have cc
|
AC_MSG_RESULT(yes)
|
||||||
AC_MSG_CHECKING("for gcc")
|
|
||||||
if expr "$CC" : ".*gcc.*"
|
|
||||||
then
|
|
||||||
CC="$CC -pthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"
|
|
||||||
CXX="$CXX -pthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"
|
|
||||||
else
|
|
||||||
CC="$CC -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"
|
|
||||||
CXX="$CXX -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"
|
|
||||||
fi
|
|
||||||
AC_MSG_RESULT("yes")
|
|
||||||
else
|
else
|
||||||
AC_MSG_ERROR([configure: error: Can't find thread libs on Caldera OpenUNIX 8. See the Installation chapter in the Reference Manual.])
|
AC_MSG_ERROR([configure: error: Can't find thread library on SCO/Caldera system. See the Installation chapter in the Reference Manual.])
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
AC_MSG_RESULT("no")
|
AC_MSG_RESULT(no)
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -2508,7 +2468,7 @@ then
|
|||||||
AC_CONFIG_FILES(bdb/Makefile)
|
AC_CONFIG_FILES(bdb/Makefile)
|
||||||
|
|
||||||
echo "CONFIGURING FOR BERKELEY DB"
|
echo "CONFIGURING FOR BERKELEY DB"
|
||||||
bdb_conf_flags="--disable-shared"
|
bdb_conf_flags="--disable-shared --build=$build_alias"
|
||||||
if test $with_debug = "yes"
|
if test $with_debug = "yes"
|
||||||
then
|
then
|
||||||
bdb_conf_flags="$bdb_conf_flags --enable-debug --enable-diagnostic"
|
bdb_conf_flags="$bdb_conf_flags --enable-debug --enable-diagnostic"
|
||||||
|
@ -834,6 +834,7 @@ typedef off_t os_off_t;
|
|||||||
#define socket_errno WSAGetLastError()
|
#define socket_errno WSAGetLastError()
|
||||||
#define SOCKET_EINTR WSAEINTR
|
#define SOCKET_EINTR WSAEINTR
|
||||||
#define SOCKET_EAGAIN WSAEINPROGRESS
|
#define SOCKET_EAGAIN WSAEINPROGRESS
|
||||||
|
#define SOCKET_ETIMEDOUT WSAETIMEDOUT
|
||||||
#define SOCKET_EWOULDBLOCK WSAEWOULDBLOCK
|
#define SOCKET_EWOULDBLOCK WSAEWOULDBLOCK
|
||||||
#define SOCKET_ENFILE ENFILE
|
#define SOCKET_ENFILE ENFILE
|
||||||
#define SOCKET_EMFILE EMFILE
|
#define SOCKET_EMFILE EMFILE
|
||||||
@ -841,6 +842,7 @@ typedef off_t os_off_t;
|
|||||||
#define socket_errno sock_errno()
|
#define socket_errno sock_errno()
|
||||||
#define SOCKET_EINTR SOCEINTR
|
#define SOCKET_EINTR SOCEINTR
|
||||||
#define SOCKET_EAGAIN SOCEINPROGRESS
|
#define SOCKET_EAGAIN SOCEINPROGRESS
|
||||||
|
#define SOCKET_ETIMEDOUT SOCKET_EINTR
|
||||||
#define SOCKET_EWOULDBLOCK SOCEWOULDBLOCK
|
#define SOCKET_EWOULDBLOCK SOCEWOULDBLOCK
|
||||||
#define SOCKET_ENFILE SOCENFILE
|
#define SOCKET_ENFILE SOCENFILE
|
||||||
#define SOCKET_EMFILE SOCEMFILE
|
#define SOCKET_EMFILE SOCEMFILE
|
||||||
@ -850,6 +852,7 @@ typedef off_t os_off_t;
|
|||||||
#define closesocket(A) close(A)
|
#define closesocket(A) close(A)
|
||||||
#define SOCKET_EINTR EINTR
|
#define SOCKET_EINTR EINTR
|
||||||
#define SOCKET_EAGAIN EAGAIN
|
#define SOCKET_EAGAIN EAGAIN
|
||||||
|
#define SOCKET_ETIMEDOUT SOCKET_EINTR
|
||||||
#define SOCKET_EWOULDBLOCK EWOULDBLOCK
|
#define SOCKET_EWOULDBLOCK EWOULDBLOCK
|
||||||
#define SOCKET_ENFILE ENFILE
|
#define SOCKET_ENFILE ENFILE
|
||||||
#define SOCKET_EMFILE EMFILE
|
#define SOCKET_EMFILE EMFILE
|
||||||
|
@ -298,11 +298,6 @@ extern int my_pthread_create_detached;
|
|||||||
int sigwait(sigset_t *set, int *sig);
|
int sigwait(sigset_t *set, int *sig);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(HAVE_UNIXWARE7_POSIX)
|
|
||||||
#undef HAVE_NONPOSIX_SIGWAIT
|
|
||||||
#define HAVE_NONPOSIX_SIGWAIT /* sigwait takes only 1 argument */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef HAVE_NONPOSIX_SIGWAIT
|
#ifndef HAVE_NONPOSIX_SIGWAIT
|
||||||
#define my_sigwait(A,B) sigwait((A),(B))
|
#define my_sigwait(A,B) sigwait((A),(B))
|
||||||
#else
|
#else
|
||||||
|
@ -74,6 +74,8 @@ int vio_fastsend(Vio *vio);
|
|||||||
int vio_keepalive(Vio *vio, my_bool onoff);
|
int vio_keepalive(Vio *vio, my_bool onoff);
|
||||||
/* Whenever we should retry the last read/write operation. */
|
/* Whenever we should retry the last read/write operation. */
|
||||||
my_bool vio_should_retry(Vio *vio);
|
my_bool vio_should_retry(Vio *vio);
|
||||||
|
/* Check that operation was timed out */
|
||||||
|
my_bool vio_was_interrupted(Vio *vio);
|
||||||
/* Short text description of the socket for those, who are curious.. */
|
/* Short text description of the socket for those, who are curious.. */
|
||||||
const char* vio_description(Vio *vio);
|
const char* vio_description(Vio *vio);
|
||||||
/* Return the type of the connection */
|
/* Return the type of the connection */
|
||||||
@ -153,6 +155,7 @@ int vio_close_shared_memory(Vio * vio);
|
|||||||
#define vio_fastsend(vio) (vio)->fastsend(vio)
|
#define vio_fastsend(vio) (vio)->fastsend(vio)
|
||||||
#define vio_keepalive(vio, set_keep_alive) (vio)->viokeepalive(vio, set_keep_alive)
|
#define vio_keepalive(vio, set_keep_alive) (vio)->viokeepalive(vio, set_keep_alive)
|
||||||
#define vio_should_retry(vio) (vio)->should_retry(vio)
|
#define vio_should_retry(vio) (vio)->should_retry(vio)
|
||||||
|
#define vio_was_interrupted(vio) (vio)->was_interrupted(vio)
|
||||||
#define vio_close(vio) ((vio)->vioclose)(vio)
|
#define vio_close(vio) ((vio)->vioclose)(vio)
|
||||||
#define vio_peer_addr(vio, buf, prt) (vio)->peer_addr(vio, buf, prt)
|
#define vio_peer_addr(vio, buf, prt) (vio)->peer_addr(vio, buf, prt)
|
||||||
#define vio_in_addr(vio, in) (vio)->in_addr(vio, in)
|
#define vio_in_addr(vio, in) (vio)->in_addr(vio, in)
|
||||||
@ -198,6 +201,7 @@ struct st_vio
|
|||||||
my_bool (*peer_addr)(Vio*, char *, uint16*);
|
my_bool (*peer_addr)(Vio*, char *, uint16*);
|
||||||
void (*in_addr)(Vio*, struct in_addr*);
|
void (*in_addr)(Vio*, struct in_addr*);
|
||||||
my_bool (*should_retry)(Vio*);
|
my_bool (*should_retry)(Vio*);
|
||||||
|
my_bool (*was_interrupted)(Vio*);
|
||||||
int (*vioclose)(Vio*);
|
int (*vioclose)(Vio*);
|
||||||
void (*timeout)(Vio*, unsigned int which, unsigned int timeout);
|
void (*timeout)(Vio*, unsigned int which, unsigned int timeout);
|
||||||
void *ssl_arg;
|
void *ssl_arg;
|
||||||
|
@ -99,6 +99,8 @@ id int not null primary key,
|
|||||||
id2 int not null,
|
id2 int not null,
|
||||||
name char(20)
|
name char(20)
|
||||||
) engine=ndb;
|
) engine=ndb;
|
||||||
|
Warnings:
|
||||||
|
Note 1050 Table 't3' already exists
|
||||||
show status like 'handler_discover%';
|
show status like 'handler_discover%';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_discover 0
|
Handler_discover 0
|
||||||
|
@ -2521,10 +2521,7 @@ MgmtSrvr::startBackup(Uint32& backupId, int waitCompleted)
|
|||||||
case GSN_NODE_FAILREP:{
|
case GSN_NODE_FAILREP:{
|
||||||
const NodeFailRep * const rep =
|
const NodeFailRep * const rep =
|
||||||
CAST_CONSTPTR(NodeFailRep, signal->getDataPtr());
|
CAST_CONSTPTR(NodeFailRep, signal->getDataPtr());
|
||||||
#ifdef VM_TRACE
|
if (NodeBitmask::get(rep->theNodes,nodeId) ||
|
||||||
ndbout_c("Node %d failed", rep->failNo);
|
|
||||||
#endif
|
|
||||||
if (rep->failNo == nodeId ||
|
|
||||||
waitCompleted == 1)
|
waitCompleted == 1)
|
||||||
return 1326;
|
return 1326;
|
||||||
// wait for next signal
|
// wait for next signal
|
||||||
|
@ -250,14 +250,22 @@ SignalSender::execNodeStatus(void* signalSender,
|
|||||||
// node shutdown complete
|
// node shutdown complete
|
||||||
s->header.theVerId_signalNumber = GSN_NF_COMPLETEREP;
|
s->header.theVerId_signalNumber = GSN_NF_COMPLETEREP;
|
||||||
NFCompleteRep *rep = (NFCompleteRep *)s->getDataPtrSend();
|
NFCompleteRep *rep = (NFCompleteRep *)s->getDataPtrSend();
|
||||||
|
rep->blockNo = 0;
|
||||||
|
rep->nodeId = 0;
|
||||||
rep->failedNodeId = nodeId;
|
rep->failedNodeId = nodeId;
|
||||||
|
rep->unused = 0;
|
||||||
|
rep->from = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// node failure
|
// node failure
|
||||||
s->header.theVerId_signalNumber = GSN_NODE_FAILREP;
|
s->header.theVerId_signalNumber = GSN_NODE_FAILREP;
|
||||||
NodeFailRep *rep = (NodeFailRep *)s->getDataPtrSend();
|
NodeFailRep *rep = (NodeFailRep *)s->getDataPtrSend();
|
||||||
rep->failNo = nodeId;
|
rep->failNo = 0;
|
||||||
|
rep->masterNodeId = 0;
|
||||||
|
rep->noOfNodes = 1;
|
||||||
|
NodeBitmask::clear(rep->theNodes);
|
||||||
|
NodeBitmask::set(rep->theNodes,nodeId);
|
||||||
}
|
}
|
||||||
|
|
||||||
ss->m_jobBuffer.push_back(s);
|
ss->m_jobBuffer.push_back(s);
|
||||||
|
@ -599,7 +599,7 @@ net_safe_read(MYSQL *mysql)
|
|||||||
DBUG_PRINT("error",("Wrong connection or packet. fd: %s len: %d",
|
DBUG_PRINT("error",("Wrong connection or packet. fd: %s len: %d",
|
||||||
vio_description(net->vio),len));
|
vio_description(net->vio),len));
|
||||||
#ifdef MYSQL_SERVER
|
#ifdef MYSQL_SERVER
|
||||||
if (vio_errno(net->vio) == SOCKET_EINTR)
|
if (vio_was_interrupted(net->vio))
|
||||||
return (packet_error);
|
return (packet_error);
|
||||||
#endif /*MYSQL_SERVER*/
|
#endif /*MYSQL_SERVER*/
|
||||||
end_server(mysql);
|
end_server(mysql);
|
||||||
|
@ -544,7 +544,7 @@ int ha_archive::create(const char *name, TABLE *table_arg,
|
|||||||
error= my_errno;
|
error= my_errno;
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
if ((archive= gzdopen(create_file, "ab")) == NULL)
|
if ((archive= gzdopen(create_file, "wb")) == NULL)
|
||||||
{
|
{
|
||||||
error= errno;
|
error= errno;
|
||||||
goto error2;
|
goto error2;
|
||||||
|
@ -763,7 +763,7 @@ my_real_read(NET *net, ulong *complen)
|
|||||||
net->error= 2; /* Close socket */
|
net->error= 2; /* Close socket */
|
||||||
net->report_error= 1;
|
net->report_error= 1;
|
||||||
#ifdef MYSQL_SERVER
|
#ifdef MYSQL_SERVER
|
||||||
net->last_errno= (interrupted ? ER_NET_READ_INTERRUPTED :
|
net->last_errno= (vio_was_interrupted(net->vio) ? ER_NET_READ_INTERRUPTED :
|
||||||
ER_NET_READ_ERROR);
|
ER_NET_READ_ERROR);
|
||||||
#endif
|
#endif
|
||||||
goto end;
|
goto end;
|
||||||
|
@ -54,6 +54,7 @@ static void vio_init(Vio* vio, enum enum_vio_type type,
|
|||||||
vio->fastsend =vio_fastsend;
|
vio->fastsend =vio_fastsend;
|
||||||
vio->viokeepalive =vio_keepalive;
|
vio->viokeepalive =vio_keepalive;
|
||||||
vio->should_retry =vio_should_retry;
|
vio->should_retry =vio_should_retry;
|
||||||
|
vio->was_interrupted=vio_was_interrupted;
|
||||||
vio->vioclose =vio_close_pipe;
|
vio->vioclose =vio_close_pipe;
|
||||||
vio->peer_addr =vio_peer_addr;
|
vio->peer_addr =vio_peer_addr;
|
||||||
vio->in_addr =vio_in_addr;
|
vio->in_addr =vio_in_addr;
|
||||||
@ -73,6 +74,7 @@ static void vio_init(Vio* vio, enum enum_vio_type type,
|
|||||||
vio->fastsend =vio_fastsend;
|
vio->fastsend =vio_fastsend;
|
||||||
vio->viokeepalive =vio_keepalive;
|
vio->viokeepalive =vio_keepalive;
|
||||||
vio->should_retry =vio_should_retry;
|
vio->should_retry =vio_should_retry;
|
||||||
|
vio->was_interrupted=vio_was_interrupted;
|
||||||
vio->vioclose =vio_close_shared_memory;
|
vio->vioclose =vio_close_shared_memory;
|
||||||
vio->peer_addr =vio_peer_addr;
|
vio->peer_addr =vio_peer_addr;
|
||||||
vio->in_addr =vio_in_addr;
|
vio->in_addr =vio_in_addr;
|
||||||
@ -92,6 +94,7 @@ static void vio_init(Vio* vio, enum enum_vio_type type,
|
|||||||
vio->fastsend =vio_ssl_fastsend;
|
vio->fastsend =vio_ssl_fastsend;
|
||||||
vio->viokeepalive =vio_ssl_keepalive;
|
vio->viokeepalive =vio_ssl_keepalive;
|
||||||
vio->should_retry =vio_ssl_should_retry;
|
vio->should_retry =vio_ssl_should_retry;
|
||||||
|
vio->was_interrupted=vio_ssl_was_interrupted;
|
||||||
vio->vioclose =vio_ssl_close;
|
vio->vioclose =vio_ssl_close;
|
||||||
vio->peer_addr =vio_ssl_peer_addr;
|
vio->peer_addr =vio_ssl_peer_addr;
|
||||||
vio->in_addr =vio_ssl_in_addr;
|
vio->in_addr =vio_ssl_in_addr;
|
||||||
@ -109,6 +112,7 @@ static void vio_init(Vio* vio, enum enum_vio_type type,
|
|||||||
vio->fastsend =vio_fastsend;
|
vio->fastsend =vio_fastsend;
|
||||||
vio->viokeepalive =vio_keepalive;
|
vio->viokeepalive =vio_keepalive;
|
||||||
vio->should_retry =vio_should_retry;
|
vio->should_retry =vio_should_retry;
|
||||||
|
vio->was_interrupted=vio_was_interrupted;
|
||||||
vio->vioclose =vio_close;
|
vio->vioclose =vio_close;
|
||||||
vio->peer_addr =vio_peer_addr;
|
vio->peer_addr =vio_peer_addr;
|
||||||
vio->in_addr =vio_in_addr;
|
vio->in_addr =vio_in_addr;
|
||||||
|
@ -39,6 +39,8 @@ int vio_ssl_fastsend(Vio *vio);
|
|||||||
int vio_ssl_keepalive(Vio *vio, my_bool onoff);
|
int vio_ssl_keepalive(Vio *vio, my_bool onoff);
|
||||||
/* Whenever we should retry the last read/write operation. */
|
/* Whenever we should retry the last read/write operation. */
|
||||||
my_bool vio_ssl_should_retry(Vio *vio);
|
my_bool vio_ssl_should_retry(Vio *vio);
|
||||||
|
/* Check that operation was timed out */
|
||||||
|
my_bool vio_ssl_was_interrupted(Vio *vio);
|
||||||
/* When the workday is over... */
|
/* When the workday is over... */
|
||||||
int vio_ssl_close(Vio *vio);
|
int vio_ssl_close(Vio *vio);
|
||||||
/* Return last error number */
|
/* Return last error number */
|
||||||
|
@ -242,6 +242,15 @@ vio_should_retry(Vio * vio __attribute__((unused)))
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
my_bool
|
||||||
|
vio_was_interrupted(Vio *vio __attribute__((unused)))
|
||||||
|
{
|
||||||
|
int en= socket_errno;
|
||||||
|
return (en == SOCKET_EAGAIN || en == SOCKET_EINTR ||
|
||||||
|
en == SOCKET_EWOULDBLOCK || en == SOCKET_ETIMEDOUT);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int vio_close(Vio * vio)
|
int vio_close(Vio * vio)
|
||||||
{
|
{
|
||||||
int r=0;
|
int r=0;
|
||||||
|
@ -184,6 +184,15 @@ vio_ssl_should_retry(Vio * vio __attribute__((unused)))
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
my_bool
|
||||||
|
vio_ssl_was_interrupted(Vio *vio __attribute__((unused)))
|
||||||
|
{
|
||||||
|
int en= socket_errno;
|
||||||
|
return (en == SOCKET_EAGAIN || en == SOCKET_EINTR ||
|
||||||
|
en == SOCKET_EWOULDBLOCK || en == SOCKET_ETIMEDOUT);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int vio_ssl_close(Vio * vio)
|
int vio_ssl_close(Vio * vio)
|
||||||
{
|
{
|
||||||
int r;
|
int r;
|
||||||
|
Reference in New Issue
Block a user