Commit 8b2bc436 authored by unknown's avatar unknown
Browse files

Merge bk-internal:/home/bk/mysql-3.23/

into serg.mylan:/usr/home/serg/Abk/mysql

parents 67f4bfd1 87b1e4ce
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -355,6 +355,11 @@ void Item_string::make_field(Send_field *tmp_field)
  init_make_field(tmp_field,FIELD_TYPE_STRING);
}

void Item_empty_string::make_field(Send_field *tmp_field)
{
  init_make_field(tmp_field,FIELD_TYPE_VAR_STRING);
}

void Item_datetime::make_field(Send_field *tmp_field)
{
  init_make_field(tmp_field,FIELD_TYPE_DATETIME);
+34 −36
Original line number Diff line number Diff line
@@ -564,27 +564,19 @@ mysqld_show_create(THD *thd, TABLE_LIST *table_list)
    DBUG_RETURN(1);
  }

  List<Item> field_list;
  field_list.push_back(new Item_empty_string("Table",NAME_LEN));
  field_list.push_back(new Item_empty_string("Create Table",1024));

  if (send_fields(thd,field_list,1))
    DBUG_RETURN(1);

  String *packet = &thd->packet;
  {
    packet->length(0);
    net_store_data(packet, table->table_name);
  String packet;
  packet.length(0);
  net_store_data(&packet, table->table_name);
  /*
    A hack - we need to reserve some space for the length before
    we know what it is - let's assume that the length of create table
    statement will fit into 3 bytes ( 16 MB max :-) )
  */
    ulong store_len_offset = packet->length();
    packet->length(store_len_offset + 4);
    if (store_create_info(thd, table, packet))
  ulong store_len_offset = packet.length();
  packet.length(store_len_offset + 4);
  if (store_create_info(thd, table, &packet))
    DBUG_RETURN(-1);
    ulong create_len = packet->length() - store_len_offset - 4;
  ulong create_len = packet.length() - store_len_offset - 4;
  if (create_len > 0x00ffffff) // better readable in HEX ...
  {
    /*
@@ -599,14 +591,20 @@ mysqld_show_create(THD *thd, TABLE_LIST *table_list)
    into fewer bytes, so we cannot use net_store_data() anymore,
    and do it ourselves
  */
    char* p = (char*)packet->ptr() + store_len_offset;
  char* p = (char*)packet.ptr() + store_len_offset;
  *p++ = (char) 253; // The client the length is stored using 3-bytes
  int3store(p, create_len);

    // now we are in business :-)
    if (my_net_write(&thd->net, (char*)packet->ptr(), packet->length()))
  List<Item> field_list;
  field_list.push_back(new Item_empty_string("Table",NAME_LEN));
  field_list.push_back(new Item_empty_string("Create Table",packet.length()));

  if (send_fields(thd,field_list,1))
    DBUG_RETURN(1);
  }

  if (my_net_write(&thd->net, (char*)packet.ptr(), packet.length()))
    DBUG_RETURN(1);

  send_eof(&thd->net);
  DBUG_RETURN(0);
}