Commit 9b924484 authored by unknown's avatar unknown
Browse files

Merge shellback.(none):/home/msvensson/mysql/mysql-5.0

into  shellback.(none):/home/msvensson/mysql/mysql-5.1


sql/field.h:
  Auto merged
parents dc2e5fff 1271d8b9
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -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); }
@@ -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); }
+25 −4
Original line number Diff line number Diff line
@@ -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
}


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