Commit 135ea05c authored by unknown's avatar unknown
Browse files

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

into  mysql.com:/home/cps/mysql/devel/5.1-utf-bug


sql/log.cc:
  Auto merged
parents 2f370575 c0b31dc2
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -52,3 +52,15 @@ select "Mark that we woke up from TRUNCATE in the test"
       as "test passed";
test passed
Mark that we woke up from TRUNCATE in the test
use test;
truncate table mysql.general_log;
set names utf8;
create table bug16905 (s char(15) character set utf8 default 'пусто');
insert into bug16905 values ('новое');
select * from mysql.general_log;
event_time	user_host	thread_id	server_id	command_type	argument
TIMESTAMP	root[root] @ localhost []	2	1	Query	set names utf8
TIMESTAMP	root[root] @ localhost []	2	1	Query	create table bug16905 (s char(15) character set utf8 default 'пусто')
TIMESTAMP	root[root] @ localhost []	2	1	Query	insert into bug16905 values ('новое')
TIMESTAMP	root[root] @ localhost []	2	1	Query	select * from mysql.general_log
drop table bug16905;
+18 −0
Original line number Diff line number Diff line
@@ -144,7 +144,25 @@ reap;
select "Mark that we woke up from TRUNCATE in the test"
       as "test passed";

connection con1;

disconnect con2;

use test;

#
# Bug #16905    Log tables: unicode statements are logged incorrectly
#

truncate table mysql.general_log;
set names utf8;
create table bug16905 (s char(15) character set utf8 default 'пусто');
insert into bug16905 values ('новое');
--replace_column 1 TIMESTAMP
select * from mysql.general_log;
drop table bug16905;


disconnect con1;
--enable_ps_protocol
+13 −10
Original line number Diff line number Diff line
@@ -311,7 +311,8 @@ bool Log_to_csv_event_handler::
  log_general(time_t event_time, const char *user_host,
              uint user_host_len, int thread_id,
              const char *command_type, uint command_type_len,
              const char *sql_text, uint sql_text_len)
              const char *sql_text, uint sql_text_len,
              CHARSET_INFO *client_cs)
{
  TABLE *table= general_log.table;

@@ -326,11 +327,11 @@ bool Log_to_csv_event_handler::
  /* set default value (which is CURRENT_TIMESTAMP) */
  table->field[0]->set_null();

  table->field[1]->store(user_host, user_host_len, &my_charset_latin1);
  table->field[1]->store(user_host, user_host_len, client_cs);
  table->field[2]->store((longlong) thread_id);
  table->field[3]->store((longlong) server_id);
  table->field[4]->store(command_type, command_type_len, &my_charset_latin1);
  table->field[5]->store(sql_text, sql_text_len, &my_charset_latin1);
  table->field[4]->store(command_type, command_type_len, client_cs);
  table->field[5]->store(sql_text, sql_text_len, client_cs);
  table->file->ha_write_row(table->record[0]);

  reenable_binlog(current_thd);
@@ -376,6 +377,7 @@ bool Log_to_csv_event_handler::
{
  /* table variables */
  TABLE *table= slow_log.table;
  CHARSET_INFO *client_cs= thd->variables.character_set_client;

  DBUG_ENTER("log_slow_to_csv");

@@ -396,7 +398,7 @@ bool Log_to_csv_event_handler::
  table->field[0]->set_null();

  /* store the value */
  table->field[1]->store(user_host, user_host_len, &my_charset_latin1);
  table->field[1]->store(user_host, user_host_len, client_cs);

  if (query_start_arg)
  {
@@ -419,7 +421,7 @@ bool Log_to_csv_event_handler::

  if (thd->db)
    /* fill database field */
    table->field[6]->store(thd->db, thd->db_length, &my_charset_latin1);
    table->field[6]->store(thd->db, thd->db_length, client_cs);
  else
    table->field[6]->set_null();

@@ -437,8 +439,7 @@ bool Log_to_csv_event_handler::
  table->field[9]->store((longlong) server_id);

  /* sql_text */
  table->field[10]->store(sql_text,sql_text_len,
                          &my_charset_latin1);
  table->field[10]->store(sql_text,sql_text_len, client_cs);

  /* write the row */
  table->file->ha_write_row(table->record[0]);
@@ -494,7 +495,8 @@ bool Log_to_file_event_handler::
  log_general(time_t event_time, const char *user_host,
              uint user_host_len, int thread_id,
              const char *command_type, uint command_type_len,
              const char *sql_text, uint sql_text_len)
              const char *sql_text, uint sql_text_len,
              CHARSET_INFO *client_cs)
{
  return mysql_log.write(event_time, user_host, user_host_len,
                         thread_id, command_type, command_type_len,
@@ -810,7 +812,8 @@ bool LOGGER::general_log_print(THD *thd, enum enum_server_command command,
                   user_host_len, id,
                   command_name[(uint) command].str,
                   command_name[(uint) command].length,
                   message_buff, message_buff_len) || error;
                   message_buff, message_buff_len,
                   thd->variables.character_set_client) || error;
    unlock();
  }
  return error;
+6 −3
Original line number Diff line number Diff line
@@ -368,7 +368,8 @@ class Log_event_handler
  virtual bool log_general(time_t event_time, const char *user_host,
                           uint user_host_len, int thread_id,
                           const char *command_type, uint command_type_len,
                           const char *sql_text, uint sql_text_len)= 0;
                           const char *sql_text, uint sql_text_len,
                           CHARSET_INFO *client_cs)= 0;
  virtual ~Log_event_handler() {}
};

@@ -403,7 +404,8 @@ class Log_to_csv_event_handler: public Log_event_handler
  virtual bool log_general(time_t event_time, const char *user_host,
                           uint user_host_len, int thread_id,
                           const char *command_type, uint command_type_len,
                           const char *sql_text, uint sql_text_len);
                           const char *sql_text, uint sql_text_len,
                            CHARSET_INFO *client_cs);
  bool flush(THD *thd, TABLE_LIST *close_slow_Log,
             TABLE_LIST* close_general_log);
  void close_log_table(uint log_type, bool lock_in_use);
@@ -431,7 +433,8 @@ class Log_to_file_event_handler: public Log_event_handler
  virtual bool log_general(time_t event_time, const char *user_host,
                           uint user_host_len, int thread_id,
                           const char *command_type, uint command_type_len,
                           const char *sql_text, uint sql_text_len);
                           const char *sql_text, uint sql_text_len,
                           CHARSET_INFO *client_cs);
  void flush();
  void init_pthread_objects();
};