1. 14 Apr, 2011 5 commits
    • Sergey Glukhov's avatar
      automerge · bd94bb5d
      Sergey Glukhov authored
      bd94bb5d
    • Sergey Glukhov's avatar
      5.1 -> 5.5 merge · aaecb549
      Sergey Glukhov authored
      aaecb549
    • Jon Olav Hauglid's avatar
      Bug#12352846 - TRANS_XA_START(THD*): · a5986fa2
      Jon Olav Hauglid authored
                     ASSERTION THD->TRANSACTION.XID_STATE.XID.IS_NULL()
                     FAILED
      
      The triggered assert checks that the previous XA transaction has
      done proper cleanup before a new XA transaction is started.
      The bug that caused it to be triggered was that XA COMMIT did not
      clean up error state if XA COMMIT discovered that the current XA
      transaction had to be rolled back.
      
      This patch fixes the problem by resetting the XA error state
      before XA COMMIT calls ha_rollback_trans(). This allows following
      XA transactions to be started without triggering the assert.
      
      Test case added to xa.test.
      a5986fa2
    • Sergey Glukhov's avatar
      Bug#11756242 48137: PROCEDURE ANALYSE() LEAKS MEMORY WHEN RETURNING NULL · 3abe56f3
      Sergey Glukhov authored
      There are two problems with ANALYSE():
      
      1. Memory leak 
         it happens because do_select() can overwrite
         JOIN::procedure field(with zero value in our case) and
         JOIN destructor don't free the memory allocated for
         JOIN::procedure. The fix is to save original JOIN::procedure
         before do_select() call and restore it after do_select
         execution.
      
      2. Wrong result
         If ANALYSE() procedure is used for the statement with LIMIT clause
         it could retrun empty result set. It happens because of missing 
         analyse::end_of_records() call. First end_send() function call
         returns NESTED_LOOP_QUERY_LIMIT and second call of end_send() with
         end_of_records flag enabled does not happen. The fix is to return
         NESTED_LOOP_OK from end_send() if procedure is active.
      
      
      mysql-test/r/analyse.result:
        test case
      mysql-test/t/analyse.test:
        test case
      sql/sql_select.cc:
        --save original JOIN::procedure before do_select() call and
          restore it after do_select execution.
        --return NESTED_LOOP_OK from end_send() if procedure is active
      3abe56f3
    • Magne Mahre's avatar
      Bug#11766320 MYSQL SYMBOLIC LINKS NOT WORKING · b71c5d51
      Magne Mahre authored
      When MySQL converted from autotools to CMake, the
      preprocessor symbol USE_SYMDIR was omitted by mistake.
      
      Without this symbol, the code for checking .sym files
      is not built.
      
      This patch defines USE_SYMDIR when built on MS Windows.
      b71c5d51
  2. 13 Apr, 2011 6 commits
    • Serge Kozlov's avatar
      autocommit 5.1->5.5 · ecd68993
      Serge Kozlov authored
      ecd68993
    • Serge Kozlov's avatar
      729e9a65
    • Davi Arnaut's avatar
    • Davi Arnaut's avatar
      Increment the I_P_List counter whenever a element is inserted into · 8b22d8c2
      Davi Arnaut authored
      the list. Previously, the counter would only be incremented if the
      insertion method push_front() was used, in which case the counter
      wouldn't be incremented if a element was inserted using the push_back()
      and/or insert_after() methods.
      
      Currently this does not affect the code base because there isn't any
      code that uses a counted list with the push_back() or insert_after()
      methods.
      8b22d8c2
    • Anitha Gopi's avatar
    • Dmitry Lenev's avatar
      Bug#11938039 "RE-EXECUTION OF FRM-ONLY ALTER TABLE WITH RENAME · c7337ef4
      Dmitry Lenev authored
      CLAUSE FAILS OR ABORTS SERVER".
       
      Attempt to re-execute prepared ALTER TABLE statement which 
      involves .FRM-only changes and also have RENAME clause led
      to unwarranted 'Table doesn't exist' error in production
      builds and assertion failure for debug builds.
       
      This problem stemmed from the fact that for such ALTER TABLE
      mysql_alter_table() code changed table list element for table 
      to be altered when it tried to re-open table under new name. 
      Since this change was not reverted back before next 
      re-execution, it made this statement re-execution unsafe.
       
      This fix addresses this problem by avoiding changing table list
      element from the main table list in such a situation. Instead 
      temporary TABLE_LIST object is used.
      
      mysql-test/r/alter_table.result:
        Added test case for bug#11938039 "RE-EXECUTION OF FRM-ONLY
        ALTER TABLE WITH RENAME CLAUSE FAILS OR ABORTS SERVER".
      mysql-test/t/alter_table.test:
        Added test case for bug#11938039 "RE-EXECUTION OF FRM-ONLY
        ALTER TABLE WITH RENAME CLAUSE FAILS OR ABORTS SERVER".
      sql/sql_table.cc:
        Changed mysql_alter_table() not to modify table list element
        for the table being altered while re-opening table after
        .FRM-only changes. Doing this made .FRM-only ALTER TABLE 
        which also had RENAME clause unsafe for re-execution.
      c7337ef4
  3. 12 Apr, 2011 8 commits
  4. 11 Apr, 2011 9 commits
  5. 08 Apr, 2011 7 commits
    • Alexander Barkov's avatar
      Bug#11926811 / Bug#60625 Illegal mix of collations · a1c762b9
      Alexander Barkov authored
      Problem: comparison of a DATETIME sp variable and NOW()
      led to Illegal mix of collations error when 
      character_set_connection=utf8.
      Introduced by "WL#2649 Number-to-string conversions".
      
      Error happened in Arg_comparator::set_compare_func(),
      because the first argument was errouneously converted to utf8,
      while the second argument was not.
      
      Fix: separate agg_arg_charsets_for_comparison() into two functions:
      
      - agg_arg_charsets_for_comparison() - for pure comparison,
        when we don't need to return any string result and therefore
        don't need to convert arguments to @@character_set_connection:
          SELECT a = b;
      
      - agg_arg_charsets_for_string_results_with_comparison() - when
        we need to return a string result, but we also need to do
        comparison internally: SELECT REPLACE(a,b,c)
        If all arguments are numbers:
          SELECT REPLACE(123,2,3) -> 133
        we convert arguments to @@character_set_connection.
      
      
        @ mysql-test/include/ctype_numconv.inc
        @ mysql-test/r/ctype_binary.result
        @ mysql-test/r/ctype_cp1251.result
        @ mysql-test/r/ctype_latin1.result
        @ mysql-test/r/ctype_ucs.result
        @ mysql-test/r/ctype_utf8.result
        Adding tests
      
        @ sql/item.cc
        @ sql/item.h
        @ sql/item_func.cc
        @ sql/item_func.h
        @ sql/item_strfunc.cc
      
        Introducing and using new function
         agg_item_charsets_for_string_result_with_comparison() and
        its Item_func wrapper agg_arg_charsets_for_string_result_with_comparison().
      a1c762b9
    • Alexander Nozdrin's avatar
      A patch for Bug#12325375: THE SERVER ON WINXP DOES NOT ALLOW CONNECTIONS · 31e7450c
      Alexander Nozdrin authored
      IF NO DNS-SERVER AVAILABLE.
      
      The thing is that on Windows XP getnameinfo() returns WSANO_DATA
      when hostname-lookup is not available. The problem was that
      this error code was treated as serious error and the client
      connection got rejected.
      
      The fix is to treat all errors from getnameinfo() as not ciritical,
      but add IP-address to the host cache only for EAI_NONAME (or WSANO_DATA).
      31e7450c
    • Gleb Shchepa's avatar
      manual merge 5.1-->5.5 (bug 11829681) · b2fee393
      Gleb Shchepa authored
      b2fee393
    • Gleb Shchepa's avatar
      Bug #11829681 - 60295: ERROR 1356 ON VIEW THAT EXECUTES FINE AS A QUERY · a77bc598
      Gleb Shchepa authored
      Select from a view with the underlying HAVING clause failed with a
      message: "1356: View '...' references invalid table(s) or column(s)
      or function(s) or definer/invoker of view lack rights to use them"
      
      The bug is a regression of the fix for bug 11750328 - 40825 (similar
      case, but the HAVING cause references an aliased field).
      In the old fix for bug 40825 the Item_field::name_length value has
      been used in place of the real length of Item_field::name. However,
      in some cases Item_field::name_length is not in sync with the
      actual name length (TODO: combine name and name_length into a
      solid String field).
      
      The Item_ref::print() method has been modified to calculate actual
      name length every time.
      
      
      mysql-test/r/view.result:
        Test case for bug #11829681
      mysql-test/t/view.test:
        Test case for bug #11829681
      sql/item.cc:
        Bug #11829681 - 60295: ERROR 1356 ON VIEW THAT EXECUTES FINE AS A QUERY
        
        The Item_ref::print() method has been modified to calculate actual
        name length every time.
      sql/item.h:
        Minor commentary.
      a77bc598
    • Nirbhay Choubey's avatar
      Adjusting test result for bug#11765157. · bbd0d604
      Nirbhay Choubey authored
      bbd0d604
    • Nirbhay Choubey's avatar
      01f0090c
    • Nirbhay Choubey's avatar
      Bug#11765157 - 58090: mysqlslap drops schema specified in · cb0e49c0
      Nirbhay Choubey authored
                     create_schema if auto-generate-sql also set.
      
      mysqlslap uses a schema to run its tests on and later
      drops it if auto-generate-sql is used. This can be a
      problem, if the schema is an already existing one.
      
      If create-schema is used with auto-generate-sql option,
      mysqlslap while performing the cleanup, drops the specified
      database.
      
      Fixed by introducing an option --no-drop, which, if used,
      will prevent the dropping of schema at the end of the test.
      
      
      client/client_priv.h:
        Bug#11765157 - 58090: mysqlslap drops schema specified in
                       create_schema if auto-generate-sql also set.
        
        Added an option.
      client/mysqlslap.c:
        Bug#11765157 - 58090: mysqlslap drops schema specified in
                       create_schema if auto-generate-sql also set.
        
        Introduced an option 'no-drop' to forbid the removal of schema
        even if 'create' or 'auto-generate-sql' options are used.
      mysql-test/r/mysqlslap.result:
        Added a testcase for Bug#11765157.
      mysql-test/t/mysqlslap.test:
        Added a testcase for Bug#11765157.
      cb0e49c0
  6. 07 Apr, 2011 5 commits