1. 19 Nov, 2010 1 commit
    • Dmitry Lenev's avatar
      Fix for bug #57985 "ONLINE/FAST ALTER PARTITION can fail and · 602a2225
      Dmitry Lenev authored
      leave the table unusable".
       
      Failing ALTER statement on partitioned table could have left
      this table in an unusable state. This has happened in cases
      when ALTER was executed using "fast" algorithm, which doesn't 
      involve copying of data between old and new versions of table, 
      and the resulting new table was incompatible with partitioning
      function in some way.
       
      The problem stems from the fact that discrepancies between new 
      table definition and partitioning function are discovered only 
      when the table is opened. In case of "fast" algorithm this has
      happened too late during ALTER's execution, at the moment when
      all changes were already done and couldn't have been reverted.
       
      In the cases when "slow" algorithm, which copies data, is used 
      such discrepancies are detected at the moment new table
      definition is opened implicitly when new version of table is
      created in storage engine. As result ALTER is aborted before 
      any changes to table were done.
       
      This fix tries to address this issue by ensuring that "fast"
      algorithm behaves similarly to "slow" algorithm and checks
      compatibility between new definition and partitioning function 
      by trying to open new definition after .FRM file for it has 
      been created.
       
      Long term we probably should implement some way to check
      compatibility between partitioning function and new table
      definition which won't involve opening it, as this should
      allow much cleaner fix for this problem.
      
      mysql-test/r/partition_innodb.result:
        Added test for bug #57985 "ONLINE/FAST ALTER PARTITION can
        fail and leave the table unusable".
      mysql-test/t/partition_innodb.test:
        Added test for bug #57985 "ONLINE/FAST ALTER PARTITION can
        fail and leave the table unusable".
      sql/sql_table.cc:
        Ensure that in cases when .FRM for partitioned table is
        created without creating table in storage engine (e.g.
        during "fast" ALTER TABLE) we still open table definition. 
        This allows to check that definition of created table/.FRM 
        is compatible with its partitioning function.
      602a2225
  2. 18 Nov, 2010 14 commits
  3. 17 Nov, 2010 4 commits
  4. 16 Nov, 2010 1 commit
    • Davi Arnaut's avatar
      Bug#57058: SERVER_QUERY_WAS_SLOW not wired up. · 247a696d
      Davi Arnaut authored
      Finalize the server flags after any kind of command is executed.
      To avoid updating the flag multiple times, reorganize code so that
      its invoked only once for each command.
      
      sql/log_event.cc:
        Explicit update after the query is executed in the slave.
      sql/sql_parse.cc:
        Reorganize so that the status flag is updated for any command and
        not done twice for a query command.
      247a696d
  5. 17 Nov, 2010 2 commits
    • Jon Olav Hauglid's avatar
      Merge from mysql-5.5-bugteam to mysql-5.5-runtime · b5ec3607
      Jon Olav Hauglid authored
      No conflicts
      b5ec3607
    • Jon Olav Hauglid's avatar
      Bug #57663 Concurrent statement using stored function and DROP DATABASE · 1e9f239e
      Jon Olav Hauglid authored
                 breaks SBR
      
      The problem was that DROP DATABASE ignored any metadata locks on stored
      functions and procedures held by other connections. This made it
      possible for DROP DATABASE to drop functions/procedures that were in use
      by other connections and therefore break statement based replication.
      (DROP DATABASE could appear in the binlog before a statement using a
      dropped function/procedure.)
      
      This problem was an issue left unresolved by the patch for Bug#30977
      where metadata locks for stored functions/procedures were introduced.
      
      This patch fixes the problem by making sure DROP DATABASE takes
      exclusive metadata locks on all stored functions/procedures to be
      dropped.
      
      Test case added to sp-lock.test.
      1e9f239e
  6. 16 Nov, 2010 10 commits
  7. 15 Nov, 2010 8 commits
    • Mattias Jonsson's avatar
      merge · 6780abfc
      Mattias Jonsson authored
      6780abfc
    • Mattias Jonsson's avatar
      merge · a94819be
      Mattias Jonsson authored
      a94819be
    • Mattias Jonsson's avatar
      merge · 80257cd4
      Mattias Jonsson authored
      80257cd4
    • Mattias Jonsson's avatar
      merge · 3df98a28
      Mattias Jonsson authored
      3df98a28
    • Jorgen Loland's avatar
      Bug#54812: assert in Diagnostics_area::set_ok_status · 1945734c
      Jorgen Loland authored
                 during EXPLAIN
      
      Before the patch, send_eof() of some subclasses of 
      select_result (e.g., select_send::send_eof()) could 
      handle being called after an error had occured while others 
      could not. The methods that were not well-behaved would trigger
      an ASSERT on debug builds. Release builds were not affected.
      
      Consider the following query as an example for how the ASSERT
      could be triggered:
      
      A user without execute privilege on f() does
         SELECT MAX(key1) INTO @dummy FROM t1 WHERE f() < 1;
      resulting in "ERROR 42000: execute command denied to user..." 
      
      The server would end the query by calling send_eof(). The 
      fact that the error had occured would make the ASSERT trigger. 
      
      select_dumpvar::send_eof() was the offending method in the
      bug report, but the problem also applied to other 
      subclasses of select_result. This patch uniforms send_eof() 
      of all subclasses of select_result to handle being called 
      after an error has occured. 
      
      mysql-test/r/not_embedded_server.result:
        Added test for BUG#54812
      mysql-test/t/not_embedded_server.test:
        Added test for BUG#54812
      sql/sql_class.cc:
        send_eof() of all subclasses of select_result can now handle being
        called after an error has occured.
      sql/sql_insert.cc:
        send_eof() of all subclasses of select_result can now handle being
        called after an error has occured.
        Also fix call to abort() in select_create::send_eof(), which was supposed to abort the result set, not terminate the server. This call to abort() should have been changed when the function was renamed from abort_result_set() but was forgotten. New test case added by BUG#54812 covered this line and terminated server.
      sql/sql_prepare.cc:
        send_eof() of all subclasses of select_result can now handle being
        called after an error has occured.
      sql/sql_update.cc:
        send_eof() of all subclasses of select_result can now handle being
        called after an error has occured.
      1945734c
    • Mattias Jonsson's avatar
      Bug#58197: main.variables-big fails on windows · 47b514ff
      Mattias Jonsson authored
      The test result differs on windows, since
      it writes out 'localhost:<port>' instead of
      only 'localhost', since it uses tcp/ip instead
      of unix sockets on windows.
      
      Fixed by replacing that column.
      
      Also requires --big-test from some long running tests
      and added a weekly run of all test requiring --big-test.
      
      mysql-test/collections/default.weekly:
        Added a run of big-test (already exists in 5.5).
      mysql-test/r/variables-big.result:
        Updated results
      mysql-test/suite/parts/t/part_supported_sql_func_innodb.test:
        requiring --big-test since the test takes long time
      mysql-test/suite/parts/t/partition_alter1_1_2_innodb.test:
        requiring --big-test since the test takes long time
      mysql-test/suite/parts/t/partition_alter1_2_innodb.test:
        requiring --big-test since the test takes long time
      mysql-test/suite/parts/t/partition_alter4_innodb.test:
        requiring --big-test since the test takes long time
      mysql-test/t/disabled.def:
        Disabled two tests since they fail and was already
        reported as bugs (but was never run since they requires
        --big-test flag).
      mysql-test/t/variables-big.test:
        Replacing column 3 in process list since it
        is not the same on windows as in unix.
      47b514ff
    • Jon Olav Hauglid's avatar
      Bug #57663 Concurrent statement using stored function and DROP DATABASE · a3d9a26d
      Jon Olav Hauglid authored
                 breaks SBR
      
      This pre-requisite patch removes obsolete and dead code used to remove
      raid subdirectories and files during DROP DATABASE.
      
      Other parts of the raid code have already been removed in WL#5498
      and the support for MyISAM raid tables was removed in 5.0.
      a3d9a26d
    • Jimmy Yang's avatar
      Fix Bug #16290 Unclear error message when adding foreign key constraint · f6402642
      Jimmy Yang authored
      rb://502 approved by Sunny Bains
      f6402642