mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
New thr_alarm struct for better integration with OS2
Run bootstrap in separate thread Fix bug in FLUSH TABLES table_name Docs/manual.texi: Updated ChangeLog client/mysql.cc: Added info about compressed protocol include/getopt.h: Fix for OS2 include/global.h: Fix for OS2 include/my_sys.h: Fix for OS2 include/mysql_com.h: Fix for OS2 include/thr_alarm.h: Cleanup up alarm struct for OS2 port isam/isamchk.c: Fix for OS2 libmysql/libmysql.c: cleanup libmysql/net.c: Use new thr_alarm libmysql/violite.c: Fix for OS2 myisam/ChangeLog: Changes myisam/mi_create.c: Use less stack myisam/myisamchk.c: Fix for OS2 mysys/default.c: Fix for OS2 mysys/getopt.c: Fix for OS2 mysys/mf_format.c: Safety mysys/mf_path.c: Fix for OS2 mysys/my_create.c: Fix for OS2 mysys/my_lock.c: Fix for OS2 mysys/my_open.c: Fix for OS2 mysys/thr_alarm.c: Use new thr_alarm struct readline/input.c: Fix for OS2 readline/rltty.c: Fix for OS2 sql/ha_myisam.cc: Remove unnecessary fn_format sql/my_lock.c: Use new thr_alarm sql/mysql_priv.h: Changed bootstrap to run in separate thread to avoid problem with small stack sql/mysqld.cc: Changed bootstrap to run in separate thread to avoid problem with small stack sql/net_serv.cc: Use new thr_alarm sql/sql_base.cc: Fix problem with FLUSH TABLE table_name sql/sql_class.cc: Fix for new bootstrap sql/sql_class.h: cleanup sql/sql_delete.cc: cleanup sql/sql_load.cc: Fix for OS2 sql/sql_parse.cc: Changed bootstrap to run in separate thread to avoid problem with small stack sql/sql_select.cc: Reset used structure elements sql/sql_table.cc: For OS2 sql/violite.c: For OS2
This commit is contained in:
@ -1465,8 +1465,8 @@ mysql_real_connect(MYSQL *mysql,const char *host, const char *user,
|
||||
if (db)
|
||||
client_flag|=CLIENT_CONNECT_WITH_DB;
|
||||
#ifdef HAVE_COMPRESS
|
||||
if (mysql->server_capabilities & CLIENT_COMPRESS &&
|
||||
(mysql->options.compress || client_flag & CLIENT_COMPRESS))
|
||||
if ((mysql->server_capabilities & CLIENT_COMPRESS) &&
|
||||
(mysql->options.compress || (client_flag & CLIENT_COMPRESS)))
|
||||
client_flag|=CLIENT_COMPRESS; /* We will use compression */
|
||||
else
|
||||
#endif
|
||||
|
@ -71,7 +71,7 @@ extern ulong mysqld_net_retry_count;
|
||||
typedef my_bool thr_alarm_t;
|
||||
typedef my_bool ALARM;
|
||||
#define thr_alarm_init(A) (*A)=0
|
||||
#define thr_alarm_in_use(A) (A)
|
||||
#define thr_alarm_in_use(A) (*(A))
|
||||
#define thr_end_alarm(A)
|
||||
#define thr_alarm(A,B,C) local_thr_alarm((A),(B),(C))
|
||||
static inline int local_thr_alarm(my_bool *A,int B __attribute__((unused)),ALARM *C __attribute__((unused)))
|
||||
@ -330,7 +330,7 @@ net_real_write(NET *net,const char *packet,ulong len)
|
||||
{
|
||||
my_bool interrupted = vio_should_retry(net->vio);
|
||||
#if (!defined(__WIN__) && !defined(__EMX__))
|
||||
if ((interrupted || length==0) && !thr_alarm_in_use(alarmed))
|
||||
if ((interrupted || length==0) && !thr_alarm_in_use(&alarmed))
|
||||
{
|
||||
if (!thr_alarm(&alarmed,(uint) net_write_timeout,&alarm_buff))
|
||||
{ /* Always true for client */
|
||||
@ -355,7 +355,7 @@ net_real_write(NET *net,const char *packet,ulong len)
|
||||
}
|
||||
else
|
||||
#endif /* (!defined(__WIN__) && !defined(__EMX__)) */
|
||||
if (thr_alarm_in_use(alarmed) && !thr_got_alarm(alarmed) &&
|
||||
if (thr_alarm_in_use(&alarmed) && !thr_got_alarm(&alarmed) &&
|
||||
interrupted)
|
||||
{
|
||||
if (retry_count++ < RETRY_COUNT)
|
||||
@ -389,7 +389,7 @@ net_real_write(NET *net,const char *packet,ulong len)
|
||||
if (net->compress)
|
||||
my_free((char*) packet,MYF(0));
|
||||
#endif
|
||||
if (thr_alarm_in_use(alarmed))
|
||||
if (thr_alarm_in_use(&alarmed))
|
||||
{
|
||||
thr_end_alarm(&alarmed);
|
||||
vio_blocking(net->vio, net_blocking);
|
||||
@ -412,10 +412,9 @@ net_real_write(NET *net,const char *packet,ulong len)
|
||||
|
||||
static void my_net_skip_rest(NET *net, ulong remain, thr_alarm_t *alarmed)
|
||||
{
|
||||
char buff[1024];
|
||||
ALARM alarm_buff;
|
||||
uint retry_count=0;
|
||||
if (!thr_alarm_in_use(alarmed))
|
||||
if (!thr_alarm_in_use(&alarmed))
|
||||
{
|
||||
if (!thr_alarm(alarmed,net->timeout,&alarm_buff) ||
|
||||
(!vio_is_blocking(net->vio) && vio_blocking(net->vio,TRUE) < 0))
|
||||
@ -427,7 +426,7 @@ static void my_net_skip_rest(NET *net, ulong remain, thr_alarm_t *alarmed)
|
||||
if ((int) (length=vio_read(net->vio,(char*) net->buff,remain)) <= 0L)
|
||||
{
|
||||
my_bool interrupted = vio_should_retry(net->vio);
|
||||
if (!thr_got_alarm(alarmed) && interrupted)
|
||||
if (!thr_got_alarm(&alarmed) && interrupted)
|
||||
{ /* Probably in MIT threads */
|
||||
if (retry_count++ < RETRY_COUNT)
|
||||
continue;
|
||||
@ -482,7 +481,7 @@ my_real_read(NET *net, ulong *complen)
|
||||
an alarm to not 'read forever', change the socket to non blocking
|
||||
mode and try again
|
||||
*/
|
||||
if ((interrupted || length == 0) && !thr_alarm_in_use(alarmed))
|
||||
if ((interrupted || length == 0) && !thr_alarm_in_use(&alarmed))
|
||||
{
|
||||
if (!thr_alarm(&alarmed,net->timeout,&alarm_buff)) /* Don't wait too long */
|
||||
{
|
||||
@ -514,7 +513,7 @@ my_real_read(NET *net, ulong *complen)
|
||||
}
|
||||
}
|
||||
#endif /* (!defined(__WIN__) && !defined(__EMX__)) || defined(MYSQL_SERVER) */
|
||||
if (thr_alarm_in_use(alarmed) && !thr_got_alarm(alarmed) &&
|
||||
if (thr_alarm_in_use(&alarmed) && !thr_got_alarm(&alarmed) &&
|
||||
interrupted)
|
||||
{ /* Probably in MIT threads */
|
||||
if (retry_count++ < RETRY_COUNT)
|
||||
@ -598,7 +597,7 @@ my_real_read(NET *net, ulong *complen)
|
||||
}
|
||||
|
||||
end:
|
||||
if (thr_alarm_in_use(alarmed))
|
||||
if (thr_alarm_in_use(&alarmed))
|
||||
{
|
||||
thr_end_alarm(&alarmed);
|
||||
vio_blocking(net->vio, net_blocking);
|
||||
|
@ -38,8 +38,7 @@
|
||||
|
||||
#if defined(__EMX__)
|
||||
#include <sys/ioctl.h>
|
||||
#define ioctlsocket(A,B,C) ioctl((A),(B),(void *)(C),sizeof(*(C)))
|
||||
#undef HAVE_FCNTL
|
||||
#define ioctlsocket ioctl
|
||||
#endif /* defined(__EMX__) */
|
||||
|
||||
#if defined(MSDOS) || defined(__WIN__)
|
||||
@ -111,7 +110,7 @@ Vio *vio_new(my_socket sd, enum enum_vio_type type, my_bool localhost)
|
||||
#else /* !defined(__WIN__) && !defined(__EMX__) */
|
||||
{
|
||||
/* set to blocking mode by default */
|
||||
ulong arg=0;
|
||||
ulong arg=0, r;
|
||||
r = ioctlsocket(vio->sd,FIONBIO,(void*) &arg, sizeof(arg));
|
||||
}
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user