1
0
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:
unknown
2000-11-28 04:47:47 +02:00
parent 2700d28319
commit 746f0b3b76
38 changed files with 435 additions and 146 deletions

View File

@ -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

View File

@ -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);

View File

@ -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