Loading sql/field.h +5 −2 Original line number Diff line number Diff line Loading @@ -173,8 +173,9 @@ class Field virtual int cmp(const char *,const char *)=0; virtual int cmp_binary(const char *a,const char *b, uint32 max_length=~0L) { return memcmp(a,b,pack_length()); } int cmp_offset(uint row_offset) { return cmp(ptr,ptr+row_offset); } int cmp_binary_offset(uint row_offset) virtual int cmp_offset(uint row_offset) { return cmp(ptr,ptr+row_offset); } virtual int cmp_binary_offset(uint row_offset) { return cmp_binary(ptr, ptr+row_offset); }; virtual int key_cmp(const byte *a,const byte *b) { return cmp((char*) a,(char*) b); } Loading Loading @@ -1347,6 +1348,8 @@ class Field_bit :public Field { { return cmp_binary((char *) a, (char *) b); } int key_cmp(const byte *str, uint length); int cmp_offset(uint row_offset); int cmp_binary_offset(uint row_offset) { return cmp_offset(row_offset); } void get_key_image(char *buff, uint length, imagetype type); void set_key_image(char *buff, uint length) { Field_bit::store(buff, length, &my_charset_bin); } Loading sql/net_serv.cc +25 −4 Original line number Diff line number Diff line Loading @@ -208,23 +208,40 @@ my_bool net_realloc(NET *net, ulong length) RETURN VALUES 0 No data to read 1 Data or EOF to read -1 Don't know if data is ready or not */ static my_bool net_data_is_ready(my_socket sd) static int net_data_is_ready(my_socket sd) { #ifdef HAVE_POLL struct pollfd ufds; int res; ufds.fd= sd; ufds.events= POLLIN | POLLPRI; if (!(res= poll(&ufds, 1, 0))) return 0; if (res < 0 || !(ufds.revents & (POLLIN | POLLPRI))) return 0; return 1; #else fd_set sfds; struct timeval tv; int res; if (sd >= FD_SETSIZE) return -1; FD_ZERO(&sfds); FD_SET(sd, &sfds); tv.tv_sec= tv.tv_usec= 0; if ((res= select(sd+1, &sfds, NULL, NULL, &tv)) < 0) return FALSE; return 0; else return test(res ? FD_ISSET(sd, &sfds) : 0); #endif } Loading @@ -251,10 +268,10 @@ static my_bool net_data_is_ready(my_socket sd) void net_clear(NET *net) { int count; int count, ready; DBUG_ENTER("net_clear"); #if !defined(EMBEDDED_LIBRARY) while(net_data_is_ready(net->vio->sd)) while((ready= net_data_is_ready(net->vio->sd)) != 0) { /* The socket is ready */ if ((count= vio_read(net->vio, (char*) (net->buff), Loading @@ -269,6 +286,10 @@ void net_clear(NET *net) } else { /* No data to read and 'net_data_is_ready' returned "don't know" */ if (ready == -1) break; DBUG_PRINT("info",("socket ready but only EOF to read - disconnected")); net->error= 2; break; Loading Loading
sql/field.h +5 −2 Original line number Diff line number Diff line Loading @@ -173,8 +173,9 @@ class Field virtual int cmp(const char *,const char *)=0; virtual int cmp_binary(const char *a,const char *b, uint32 max_length=~0L) { return memcmp(a,b,pack_length()); } int cmp_offset(uint row_offset) { return cmp(ptr,ptr+row_offset); } int cmp_binary_offset(uint row_offset) virtual int cmp_offset(uint row_offset) { return cmp(ptr,ptr+row_offset); } virtual int cmp_binary_offset(uint row_offset) { return cmp_binary(ptr, ptr+row_offset); }; virtual int key_cmp(const byte *a,const byte *b) { return cmp((char*) a,(char*) b); } Loading Loading @@ -1347,6 +1348,8 @@ class Field_bit :public Field { { return cmp_binary((char *) a, (char *) b); } int key_cmp(const byte *str, uint length); int cmp_offset(uint row_offset); int cmp_binary_offset(uint row_offset) { return cmp_offset(row_offset); } void get_key_image(char *buff, uint length, imagetype type); void set_key_image(char *buff, uint length) { Field_bit::store(buff, length, &my_charset_bin); } Loading
sql/net_serv.cc +25 −4 Original line number Diff line number Diff line Loading @@ -208,23 +208,40 @@ my_bool net_realloc(NET *net, ulong length) RETURN VALUES 0 No data to read 1 Data or EOF to read -1 Don't know if data is ready or not */ static my_bool net_data_is_ready(my_socket sd) static int net_data_is_ready(my_socket sd) { #ifdef HAVE_POLL struct pollfd ufds; int res; ufds.fd= sd; ufds.events= POLLIN | POLLPRI; if (!(res= poll(&ufds, 1, 0))) return 0; if (res < 0 || !(ufds.revents & (POLLIN | POLLPRI))) return 0; return 1; #else fd_set sfds; struct timeval tv; int res; if (sd >= FD_SETSIZE) return -1; FD_ZERO(&sfds); FD_SET(sd, &sfds); tv.tv_sec= tv.tv_usec= 0; if ((res= select(sd+1, &sfds, NULL, NULL, &tv)) < 0) return FALSE; return 0; else return test(res ? FD_ISSET(sd, &sfds) : 0); #endif } Loading @@ -251,10 +268,10 @@ static my_bool net_data_is_ready(my_socket sd) void net_clear(NET *net) { int count; int count, ready; DBUG_ENTER("net_clear"); #if !defined(EMBEDDED_LIBRARY) while(net_data_is_ready(net->vio->sd)) while((ready= net_data_is_ready(net->vio->sd)) != 0) { /* The socket is ready */ if ((count= vio_read(net->vio, (char*) (net->buff), Loading @@ -269,6 +286,10 @@ void net_clear(NET *net) } else { /* No data to read and 'net_data_is_ready' returned "don't know" */ if (ready == -1) break; DBUG_PRINT("info",("socket ready but only EOF to read - disconnected")); net->error= 2; break; Loading