mirror of
https://github.com/MariaDB/server.git
synced 2025-07-27 18:02:13 +03:00
Fixed some build problems.
Fix that compressed packets and normal packets looks indentical before calling net_real_write() (Needed for query cache) Optimize IS NULL handling Build-tools/Do-compile: Fix for machines with clocks in an earlier timezone Docs/manual.texi: Fixed typo acinclude.m4: Fixed typo client/mysqlbinlog.cc: Cleanup client/mysqltest.c: Added --compress to test the compressed protocol configure.in: Increment shared library number (because structs changed) include/mysql.h: Optimize structs for Ia64 include/mysql_com.h: Optimize structs for Ia64 libmysql/libmysql.c: Portability fixes libmysql/net.c: Fix that compressed packets and normal packets looks indentical before calling net_real_write() (Needed for query cache) libmysqld/examples/Makefile.am: Portability fix libmysqld/libmysqld.c: Portability fixes mysql-test/mysql-test-run.sh: Added --compress to test the compressed protocol mysql-test/t/type_enum.test: A mysys/mf_casecnv.c: Portability fixes mysys/mf_tempfile.c: Portability fixes scripts/make_binary_distribution.sh: Add libmysqld to binary distribution sql-bench/server-cfg.sh: Fix for Interbase sql/item.h: Optimize IS NULL handling sql/item_cmpfunc.cc: Optimize IS NULL handling sql/item_cmpfunc.h: Optimize IS NULL handling sql/item_func.cc: cleanup sql/item_func.h: Optimize IS NULL handling sql/mysql_priv.h: c sql/net_serv.cc: Fix that compressed packets and normal packets looks indentical before calling net_real_write() (Needed for query cache)
This commit is contained in:
@ -31,6 +31,7 @@
|
||||
#include <winsock.h>
|
||||
#endif
|
||||
#include <my_global.h>
|
||||
#include "mysql_embed.h"
|
||||
#include <mysql_com.h>
|
||||
#include <violite.h>
|
||||
#include <my_sys.h>
|
||||
@ -89,7 +90,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)!= 0)
|
||||
#define thr_alarm_in_use(A) (*(A) != 0)
|
||||
#define thr_end_alarm(A)
|
||||
#define thr_alarm(A,B,C) local_thr_alarm((A),(B),(C))
|
||||
inline int local_thr_alarm(my_bool *A,int B __attribute__((unused)),ALARM *C __attribute__((unused)))
|
||||
@ -129,7 +130,7 @@ int my_net_init(NET *net, Vio* vio)
|
||||
net->no_send_ok = 0;
|
||||
net->error=0; net->return_errno=0; net->return_status=0;
|
||||
net->timeout=(uint) net_read_timeout; /* Timeout for read */
|
||||
net->pkt_nr=0;
|
||||
net->pkt_nr=net->compress_pkt_nr=0;
|
||||
net->write_pos=net->read_pos = net->buff;
|
||||
net->last_error[0]=0;
|
||||
net->compress=0; net->reading_or_writing=0;
|
||||
@ -190,7 +191,7 @@ static my_bool net_realloc(NET *net, ulong length)
|
||||
void net_clear(NET *net)
|
||||
{
|
||||
#ifndef EXTRA_DEBUG
|
||||
int count;
|
||||
int count; /* One may get 'unused' warn */
|
||||
bool is_blocking=vio_is_blocking(net->vio);
|
||||
if (is_blocking)
|
||||
vio_blocking(net->vio, FALSE);
|
||||
@ -204,7 +205,7 @@ void net_clear(NET *net)
|
||||
vio_blocking(net->vio, TRUE);
|
||||
}
|
||||
#endif /* EXTRA_DEBUG */
|
||||
net->pkt_nr=0; /* Ready for new command */
|
||||
net->pkt_nr=net->compress_pkt_nr=0; /* Ready for new command */
|
||||
net->write_pos=net->buff;
|
||||
}
|
||||
|
||||
@ -217,9 +218,12 @@ int net_flush(NET *net)
|
||||
if (net->buff != net->write_pos)
|
||||
{
|
||||
error=net_real_write(net,(char*) net->buff,
|
||||
(uint) (net->write_pos - net->buff));
|
||||
(ulong) (net->write_pos - net->buff));
|
||||
net->write_pos=net->buff;
|
||||
}
|
||||
/* Sync packet number if using compression */
|
||||
if (net->compress)
|
||||
net->pkt_nr=net->compress_pkt_nr;
|
||||
DBUG_RETURN(error);
|
||||
}
|
||||
|
||||
@ -248,7 +252,7 @@ my_net_write(NET *net,const char *packet,ulong len)
|
||||
{
|
||||
const ulong z_size = MAX_THREE_BYTES;
|
||||
int3store(buff, z_size);
|
||||
buff[3]= (net->compress) ? 0 : (uchar) (net->pkt_nr++);
|
||||
buff[3]= net->pkt_nr++;
|
||||
if (net_write_buff(net, (char*) buff, NET_HEADER_SIZE) ||
|
||||
net_write_buff(net, packet, z_size))
|
||||
return 1;
|
||||
@ -257,7 +261,7 @@ my_net_write(NET *net,const char *packet,ulong len)
|
||||
}
|
||||
/* Write last packet */
|
||||
int3store(buff,len);
|
||||
buff[3]= (net->compress) ? 0 : (uchar) (net->pkt_nr++);
|
||||
buff[3]= net->pkt_nr++;
|
||||
if (net_write_buff(net,(char*) buff,NET_HEADER_SIZE))
|
||||
return 1;
|
||||
return net_write_buff(net,packet,len);
|
||||
@ -275,7 +279,7 @@ my_net_write(NET *net,const char *packet,ulong len)
|
||||
int
|
||||
net_write_command(NET *net,uchar command,const char *packet,ulong len)
|
||||
{
|
||||
uint length=len+1; /* 1 extra byte for command */
|
||||
ulong length=len+1; /* 1 extra byte for command */
|
||||
uchar buff[NET_HEADER_SIZE+1];
|
||||
uint header_size=NET_HEADER_SIZE+1;
|
||||
buff[4]=command; /* For first packet */
|
||||
@ -287,7 +291,7 @@ net_write_command(NET *net,uchar command,const char *packet,ulong len)
|
||||
do
|
||||
{
|
||||
int3store(buff, MAX_THREE_BYTES);
|
||||
buff[3]= (net->compress) ? 0 : (uchar) (net->pkt_nr++);
|
||||
buff[3]= net->pkt_nr++;
|
||||
if (net_write_buff(net,(char*) buff, header_size) ||
|
||||
net_write_buff(net,packet,len))
|
||||
return 1;
|
||||
@ -299,7 +303,7 @@ net_write_command(NET *net,uchar command,const char *packet,ulong len)
|
||||
len=length; /* Data left to be written */
|
||||
}
|
||||
int3store(buff,length);
|
||||
buff[3]= (net->compress) ? 0 : (uchar) (net->pkt_nr++);
|
||||
buff[3]= net->pkt_nr++;
|
||||
return test(net_write_buff(net,(char*) buff,header_size) ||
|
||||
net_write_buff(net,packet,len) || net_flush(net));
|
||||
}
|
||||
@ -312,7 +316,7 @@ net_write_command(NET *net,uchar command,const char *packet,ulong len)
|
||||
static int
|
||||
net_write_buff(NET *net,const char *packet,ulong len)
|
||||
{
|
||||
uint left_length=(uint) (net->buff_end - net->write_pos);
|
||||
ulong left_length=(ulong) (net->buff_end - net->write_pos);
|
||||
|
||||
while (len > left_length)
|
||||
{
|
||||
@ -338,7 +342,7 @@ net_write_buff(NET *net,const char *packet,ulong len)
|
||||
int
|
||||
net_real_write(NET *net,const char *packet,ulong len)
|
||||
{
|
||||
int length;
|
||||
long int length;
|
||||
char *pos,*end;
|
||||
thr_alarm_t alarmed;
|
||||
#if !defined(__WIN__) && !defined(__EMX__) && !defined(OS2)
|
||||
@ -378,7 +382,7 @@ net_real_write(NET *net,const char *packet,ulong len)
|
||||
}
|
||||
int3store(&b[NET_HEADER_SIZE],complen);
|
||||
int3store(b,len);
|
||||
b[3]=(uchar) (net->pkt_nr++);
|
||||
b[3]=(uchar) (net->compress_pkt_nr++);
|
||||
len+= header_length;
|
||||
packet= (char*) b;
|
||||
}
|
||||
@ -396,7 +400,7 @@ net_real_write(NET *net,const char *packet,ulong len)
|
||||
pos=(char*) packet; end=pos+len;
|
||||
while (pos != end)
|
||||
{
|
||||
if ((int) (length=vio_write(net->vio,pos,(int) (end-pos))) <= 0)
|
||||
if ((long) (length=vio_write(net->vio,pos,(ulong) (end-pos))) <= 0)
|
||||
{
|
||||
my_bool interrupted = vio_should_retry(net->vio);
|
||||
#if (!defined(__WIN__) && !defined(__EMX__) && !defined(OS2))
|
||||
@ -496,7 +500,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;
|
||||
@ -516,7 +520,7 @@ static void my_net_skip_rest(NET *net, ulong remain, thr_alarm_t *alarmed)
|
||||
This function reallocates the net->buff buffer if necessary.
|
||||
*/
|
||||
|
||||
static uint
|
||||
static ulong
|
||||
my_real_read(NET *net, ulong *complen)
|
||||
{
|
||||
uchar *pos;
|
||||
@ -627,9 +631,9 @@ my_real_read(NET *net, ulong *complen)
|
||||
if (net->buff[net->where_b] != (uchar) 255)
|
||||
{
|
||||
DBUG_PRINT("error",
|
||||
("Packets out of order (Found: %d, expected %d)",
|
||||
("Packets out of order (Found: %d, expected %u)",
|
||||
(int) net->buff[net->where_b + 3],
|
||||
(uint) (uchar) net->pkt_nr));
|
||||
net->pkt_nr));
|
||||
#ifdef EXTRA_DEBUG
|
||||
fprintf(stderr,"Packets out of order (Found: %d, expected %d)\n",
|
||||
(int) net->buff[net->where_b + 3],
|
||||
@ -642,7 +646,7 @@ my_real_read(NET *net, ulong *complen)
|
||||
#endif
|
||||
goto end;
|
||||
}
|
||||
net->pkt_nr++;
|
||||
net->compress_pkt_nr= ++net->pkt_nr;
|
||||
#ifdef HAVE_COMPRESS
|
||||
if (net->compress)
|
||||
{
|
||||
@ -710,7 +714,7 @@ my_net_read(NET *net)
|
||||
if (len == MAX_THREE_BYTES)
|
||||
{
|
||||
/* First packet of a multi-packet. Concatenate the packets */
|
||||
int save_pos = net->where_b;
|
||||
ulong save_pos = net->where_b;
|
||||
ulong total_length=0;
|
||||
do
|
||||
{
|
||||
@ -820,8 +824,8 @@ my_net_read(NET *net)
|
||||
|
||||
net->read_pos= net->buff+ first_packet_offset + NET_HEADER_SIZE;
|
||||
net->buf_length= buf_length;
|
||||
net->remain_in_buf= buf_length - start_of_packet;
|
||||
len = ((uint) (start_of_packet - first_packet_offset) - NET_HEADER_SIZE -
|
||||
net->remain_in_buf= (ulong) (buf_length - start_of_packet);
|
||||
len = ((ulong) (start_of_packet - first_packet_offset) - NET_HEADER_SIZE -
|
||||
multi_byte_packet);
|
||||
net->save_char= net->read_pos[len]; /* Must be saved */
|
||||
net->read_pos[len]=0; /* Safeguard for mysql_use_result */
|
||||
|
Reference in New Issue
Block a user