1. 18 Feb, 2011 2 commits
    • Alexander Barkov's avatar
      Bug#11765108 (Bug#58036) client utf32, utf16, ucs2 should be disallowed, they crash server · b97cdadb
      Alexander Barkov authored
      Problem: ucs2 was correctly disallowed in "SET NAMES" only,
      while mysql_real_connect() and mysql_change_user() still allowed
      to use ucs2, which made server crash.
      
      Fix: disallow ucs2 in mysql_real_connect() and mysql_change_user().
      
        @ sql/set_var.cc
          Using new function.
      
        @ sql/sql_acl.cc
          - Return error if character set initialization failed
          - Getting rid of pointer aliasing:
            Initialize user_name to NULL, to avoid double free().
      
        @ sql/sql_connect.cc
          - in case of unsupported client character set send error and return true
          - in case of success return false
      
        @ sql/sql_connect.h
          - changing return type for thd_init_client_charset() to bool,
            to return errors to the caller
      
        @ sql/sql_parse.h
          - introducing a new function, to reuse in all places where we need
          to check client character set.
      
        @ tests/mysql_client_test.c
          Adding test
      b97cdadb
    • Alexander Barkov's avatar
      Bug#60101 COALESCE with cp1251 tables causes [Err] 1267 - Illegal mix of collations · 498ff446
      Alexander Barkov authored
            
      Problem:
        IF() did not copy collation derivation and repertoire from
        an argument if the opposite argument was NULL:
          IF(cond, res1, NULL)
          IF(cond, NULL, res2)
        only CHARSET_INFO pointer was copied.
        This resulted in illegal mix of collations error.
      
      Fix:
        copy all collation parameters from the non-NULL argument:
        CHARSET_INFO pointer, derivation, repertoire.
      498ff446
  2. 17 Feb, 2011 11 commits
  3. 16 Feb, 2011 15 commits
  4. 15 Feb, 2011 9 commits
  5. 14 Feb, 2011 3 commits
    • Joerg Bruehe's avatar
      Merge bug fix 42969 into main 5.5 branch. · 0dab3360
      Joerg Bruehe authored
      0dab3360
    • Jon Olav Hauglid's avatar
      Bug #11766788 (former bug 59986) · 6688a4f2
      Jon Olav Hauglid authored
      Assert in Diagnostics_area::set_ok_status() for XA COMMIT
      
      This assert was triggered if XA COMMIT was issued when an XA transaction
      already had encountered an error (e.g. a deadlock) which required
      the XA transaction to be rolled back.
      
      In general, the assert is triggered if a statement tries to send OK to
      the client when an error has already been reported. It was triggered
      in this case because the trans_xa_commit() function first reported an
      error, then rolled back the transaction and finally returned FALSE,
      indicating success. Since trans_xa_commit() reported success,
      mysql_execute_command() tried to report OK, triggering the assert.
      
      This patch fixes the problem by fixing trans_xa_commit() to return TRUE
      if it encounters an error that requires rollback, even if the rollback
      itself is successful.
      
      Test case added to xa.test.
      6688a4f2
    • Jimmy Yang's avatar
      8586497e