• Venkatesh Duggirala's avatar
    Problem: IO thread fails to connect to master if servers are configured with · ebb2a3f5
    Venkatesh Duggirala authored
    special character sets like utf16, utf32, ucs2.
    
    Analysis: MySQL server does not support few special character sets like
      utf16,utf32 and ucs2 as "client's character set"(eg: utf16,utf32, ucs2).
      It is known limitation listed in the documentation
      http://dev.mysql.com/doc/refman/5.5/en/charset-connection.html.
    
      The default value for default-character-set parameter is 'auto'
      which means that if the server's character set is not supported,
      then server automatically changes client's character set to
      predefined character-set which is 'latin1' in the current code.
    
      Eg:
      $ ./mysql -uroot -S$SOCKET_FILE --default-character-set=utf16
      ERROR 1231 (42000): Variable 'character_set_client' can't be set to the value of 'utf16'
    
      $ ./mysql -uroot -S$SOCKET_FILE will be successfully connected to
      server with 'latin1' as default client side character set.
    
      When IO thread is trying to connect to Master, it sets server's character
      set as client's character set. When Slave server is started with these
      special character sets, IO thread (which is like a connection to Master)
      fails because of the above said limitation.
    
     Fix: Now even IO thread also behaves the same as a regular client behaves.
      i.e., If server's character set is not supported as client's character set,
      then set default's client character set(latin1) as client's character set.
    ebb2a3f5
slave.cc 174 KB