• Alexander Barkov's avatar
    Bug#57306 SHOW PROCESSLIST does not display string literals well. · 185e189d
    Alexander Barkov authored
    Problem: Extended characters outside of ASCII range where not displayed
    properly in SHOW PROCESSLIST, because thd_info->query was always sent as 
    system_character_set (utf8). This was wrong, because query buffer
    is never converted to utf8 - it is always have client character set.
    
    Fix: sending query buffer using query character set
    
      @ sql/sql_class.cc
      @ sql/sql_class.h
        Introducing a new class CSET_STRING, a LEX_STRING with character set.
        Adding set_query(&CSET_STRING)
        Adding reset_query(), to use instead of set_query(0, NULL).
    
      @ sql/event_data_objects.cc
        Using reset_query()
    
      @ sql/log_event.cc
        Using reset_query()
        Adding charset argument to set_query_and_id().
    
      @ sql/slave.cc
        Using reset_query().
    
      @ sql/sp_head.cc
        Changing backing up and restore code to use CSET_STRING.
    
      @ sql/sql_audit.h
        Using CSET_STRING.
        In the "else" branch it's OK not to use
        global_system_variables.character_set_client.
        &my_charset_latin1, which is set in constructor, is fine
        (verified with Sergey Vojtovich).
    
      @ sql/sql_insert.cc
        Using set_query() with proper character set: table_name is utf8.
    
      @ sql/sql_parse.cc
        Adding character set argument to set_query_and_id().
        (This is the main point where thd->charset() is stored
         into thd->query_string.cs, for use in "SHOW PROCESSLIST".)
        Using reset_query().
        
      @ sql/sql_prepare.cc
        Storing client character set into thd->query_string.cs.
    
      @ sql/sql_show.cc
        Using CSET_STRING to fetch and send charset-aware query information
        from threads.
    
      @ storage/myisam/ha_myisam.cc
        Using set_query() with proper character set: table_name is utf8.
    
      @ mysql-test/r/show_check.result
      @ mysql-test/t/show_check.test
        Adding tests
    185e189d
sql_parse.cc 223 KB