Commit 894fd6ae authored by unknown's avatar unknown
Browse files

Merge pchardin@bk-internal.mysql.com:/home/bk/mysql-5.0

into mysql.com:/home/cps/mysql/trees/mysql-5.0

parents 4d8cbb0c 7f5d2213
Loading
Loading
Loading
Loading
+33 −28
Original line number Diff line number Diff line
@@ -40,7 +40,7 @@
  DESCRIPTION

  Function to add a string to the buffer. It is different from
  store_to_string, which is used in the protocol.cc. The last
  store_to_protocol_packet, which is used in the protocol.cc. The last
  one also stores the length of the string in a special way.
  This is required for MySQL client/server protocol support only.

@@ -104,11 +104,12 @@ int Show_instances::execute(struct st_net *net, ulong connection_id)
    while ((instance= iterator.next()))
    {
      position= 0;
      store_to_string(&send_buff, instance->options.instance_name, &position);
      store_to_protocol_packet(&send_buff, instance->options.instance_name,
                               &position);
      if (instance->is_running())
        store_to_string(&send_buff, (char*) "online", &position);
        store_to_protocol_packet(&send_buff, (char*) "online", &position);
      else
        store_to_string(&send_buff, (char*) "offline", &position);
        store_to_protocol_packet(&send_buff, (char*) "offline", &position);
      if (my_net_write(net, send_buff.buffer, (uint) position))
        goto err;
    }
@@ -199,18 +200,19 @@ int Show_instance_status::execute(struct st_net *net,
  {
    Instance *instance;

    store_to_string(&send_buff, (char*) instance_name, &position);
    store_to_protocol_packet(&send_buff, (char*) instance_name, &position);
    if (!(instance= instance_map->find(instance_name, strlen(instance_name))))
      goto err;
    if (instance->is_running())
      store_to_string(&send_buff, (char*) "online", &position);
      store_to_protocol_packet(&send_buff, (char*) "online", &position);
    else
      store_to_string(&send_buff, (char*) "offline", &position);
      store_to_protocol_packet(&send_buff, (char*) "offline", &position);

    if (instance->options.mysqld_version)
      store_to_string(&send_buff, instance->options.mysqld_version, &position);
      store_to_protocol_packet(&send_buff, instance->options.mysqld_version,
                               &position);
    else
      store_to_string(&send_buff, (char*) "unknown", &position);
      store_to_protocol_packet(&send_buff, (char*) "unknown", &position);


    if (send_buff.is_error() ||
@@ -272,15 +274,15 @@ int Show_instance_options::execute(struct st_net *net, ulong connection_id)

    if (!(instance= instance_map->find(instance_name, strlen(instance_name))))
      goto err;
    store_to_string(&send_buff, (char*) "instance_name", &position);
    store_to_string(&send_buff, (char*) instance_name, &position);
    store_to_protocol_packet(&send_buff, (char*) "instance_name", &position);
    store_to_protocol_packet(&send_buff, (char*) instance_name, &position);
    if (my_net_write(net, send_buff.buffer, (uint) position))
      goto err;
    if ((instance->options.mysqld_path))
    {
      position= 0;
      store_to_string(&send_buff, (char*) "mysqld-path", &position);
      store_to_string(&send_buff,
      store_to_protocol_packet(&send_buff, (char*) "mysqld-path", &position);
      store_to_protocol_packet(&send_buff,
                               (char*) instance->options.mysqld_path,
                               &position);
      if (send_buff.is_error() ||
@@ -291,8 +293,8 @@ int Show_instance_options::execute(struct st_net *net, ulong connection_id)
    if ((instance->options.nonguarded))
    {
      position= 0;
      store_to_string(&send_buff, (char*) "nonguarded", &position);
      store_to_string(&send_buff, "", &position);
      store_to_protocol_packet(&send_buff, (char*) "nonguarded", &position);
      store_to_protocol_packet(&send_buff, "", &position);
      if (send_buff.is_error() ||
          my_net_write(net, send_buff.buffer, (uint) position))
        goto err;
@@ -310,13 +312,16 @@ int Show_instance_options::execute(struct st_net *net, ulong connection_id)
      if (option_value != NULL)
      {
        *option_value= 0;
        store_to_string(&send_buff, tmp_option + 2, &position);
        store_to_string(&send_buff, option_value + 1, &position);
        store_to_protocol_packet(&send_buff, tmp_option + 2, &position);
        store_to_protocol_packet(&send_buff, option_value + 1, &position);
        /* join name and the value into the same option again */
        *option_value= '=';
      }
      else
        store_to_string(&send_buff, tmp_option + 2, &position);
      {
        store_to_protocol_packet(&send_buff, tmp_option + 2, &position);
        store_to_protocol_packet(&send_buff, "", &position);
      }

      if (send_buff.is_error() ||
          my_net_write(net, send_buff.buffer, (uint) position))
@@ -478,7 +483,7 @@ int Show_instance_log::execute(struct st_net *net, ulong connection_id)
      char *bf= (char*) malloc(sizeof(char)*buff_size);
      if ((read_len= my_read(fd, bf, buff_size, MYF(0))) < 0)
        return ER_READ_FILE;
      store_to_string(&send_buff, (char*) bf, &position, read_len);
      store_to_protocol_packet(&send_buff, (char*) bf, &position, read_len);
      close(fd);
    }
    else
@@ -593,19 +598,19 @@ int Show_instance_log_files::execute(struct st_net *net, ulong connection_id)

        position= 0;
        /* store the type of the log in the send buffer */
        store_to_string(&send_buff, log_files->name, &position);
        store_to_protocol_packet(&send_buff, log_files->name, &position);
        if (stat(log_files->value, &file_stat))
        {
          store_to_string(&send_buff, "", &position);
          store_to_string(&send_buff, (char*) "0", &position);
          store_to_protocol_packet(&send_buff, "", &position);
          store_to_protocol_packet(&send_buff, (char*) "0", &position);
        }
        else if (S_ISREG(file_stat.st_mode))
        {
          store_to_string(&send_buff,
          store_to_protocol_packet(&send_buff,
                                   (char*) log_files->value,
                                   &position);
          int10_to_str(file_stat.st_size, buff, 10);
          store_to_string(&send_buff, (char*) buff, &position);
          store_to_protocol_packet(&send_buff, (char*) buff, &position);
        }

        if (my_net_write(net, send_buff.buffer, (uint) position))
+23 −16
Original line number Diff line number Diff line
@@ -58,7 +58,7 @@ int net_send_ok(struct st_net *net, unsigned long connection_id,
  if (message != NULL)
  {
    buff.reserve(position, 9 + strlen(message));
    store_to_string(&buff, message, &position);
    store_to_protocol_packet(&buff, message, &position);
  }

  return my_net_write(net, buff.buffer, position) || net_flush(net);
@@ -117,7 +117,7 @@ char *net_store_length(char *pkg, uint length)
}


int store_to_string(Buffer *buf, const char *string, uint *position,
int store_to_protocol_packet(Buffer *buf, const char *string, uint *position,
                             uint string_len)
{
  uint currpos;
@@ -137,12 +137,12 @@ int store_to_string(Buffer *buf, const char *string, uint *position,
}


int store_to_string(Buffer *buf, const char *string, uint *position)
int store_to_protocol_packet(Buffer *buf, const char *string, uint *position)
{
  uint string_len;

  string_len= strlen(string);
  return store_to_string(buf, string, position, string_len);
  return store_to_protocol_packet(buf, string, position, string_len);
}


@@ -176,18 +176,25 @@ int send_fields(struct st_net *net, LIST *fields)
    position= 0;
    field= (NAME_WITH_LENGTH *) tmp->data;

    store_to_string(&send_buff, (char*) "", &position); /* catalog name */
    store_to_string(&send_buff, (char*) "", &position); /* db name */
    store_to_string(&send_buff, (char*) "", &position); /* table name */
    store_to_string(&send_buff, (char*) "", &position); /* table name alias */
    store_to_string(&send_buff, field->name, &position); /* column name */
    store_to_string(&send_buff, field->name, &position); /* column name alias */
    store_to_protocol_packet(&send_buff,
                             (char*) "", &position);    /* catalog name */
    store_to_protocol_packet(&send_buff,
                             (char*) "", &position);    /* db name */
    store_to_protocol_packet(&send_buff,
                             (char*) "", &position);    /* table name */
    store_to_protocol_packet(&send_buff,
                             (char*) "", &position);    /* table name alias */
    store_to_protocol_packet(&send_buff,
                             field->name, &position);   /* column name */
    store_to_protocol_packet(&send_buff,
                             field->name, &position);   /* column name alias */
    send_buff.reserve(position, 12);
    if (send_buff.is_error())
      goto err;
    send_buff.buffer[position++]= 12;
    int2store(send_buff.buffer + position, 1);          /* charsetnr */
    int4store(send_buff.buffer + position + 2, field->length); /* field length */
    int4store(send_buff.buffer + position + 2,
              field->length);                           /* field length */
    send_buff.buffer[position+6]= FIELD_TYPE_STRING;    /* type */
    int2store(send_buff.buffer + position + 7, 0);      /* flags */
    send_buff.buffer[position + 9]= (char) 0;           /* decimals */
+3 −3
Original line number Diff line number Diff line
@@ -41,9 +41,9 @@ int send_fields(struct st_net *net, LIST *fields);

char *net_store_length(char *pkg, uint length);

int store_to_string(Buffer *buf, const char *string, uint *position);
int store_to_protocol_packet(Buffer *buf, const char *string, uint *position);

int store_to_string(Buffer *buf, const char *string, uint *position,
int store_to_protocol_packet(Buffer *buf, const char *string, uint *position,
                             uint string_len);

int send_eof(struct st_net *net);