1. 12 Aug, 2010 3 commits
  2. 10 Aug, 2010 3 commits
    • Konstantin Osipov's avatar
      A pre-requisite patch for the fix for Bug#52044. · b6a00146
      Konstantin Osipov authored
      Implement a few simple asserts in my_rwlock_t locks.
      
      include/my_pthread.h:
        Declare two simple assert functions.
      include/mysql/psi/mysql_thread.h:
        Add wrappers for new assert functions.
      mysys/thr_rwlock.c:
        Add asserts.
      sql/sql_base.cc:
        Silence a compiler warning for the case when
        SAFE_MUTEX is not ON.
      b6a00146
    • Magne Mahre's avatar
      Post-commit fix for Bug#41158 · 00b79270
      Magne Mahre authored
      A label statement needs to be followed by at least
      one primary expression.  If built without
      WITH_PARTITION_STORAGE_ENGINE set, the block would 
      be empty.
      
      Added ';' as a dummy statement to fix it.
      
      00b79270
    • Jon Olav Hauglid's avatar
      Followup for Bug #54360 Deadlock DROP/ALTER/CREATE DATABASE · f97da70f
      Jon Olav Hauglid authored
                              with open HANDLER
      
      This patch changes the code for table renames to not drop metadata
      locks. Since table renames are done as a part of ALTER DATABASE ...
      UPGRADE, dropping metadata locks in the middle of execution can
      result in wrong binlog order since it means that no locks are held
      when the binlog is written to.
      
      The RENAME TABLE statement is unafffected since it auto commits and
      therefore already drops metadata locks at the end of execution.
      
      This patch also reverts the regression test for Bug#48940 back to
      its original version. The test was temporarily changed due to the
      issue mentioned above.
      f97da70f
  3. 09 Aug, 2010 4 commits
    • Konstantin Osipov's avatar
      A fix for Bug#41158 "DROP TABLE holds LOCK_open during unlink()". · a488883d
      Konstantin Osipov authored
      Remove acquisition of LOCK_open around file system operations,
      since such operations are now protected by metadata locks.
      Rework table discovery algorithm to not require LOCK_open.
      
      No new tests added since all MDL locking operations are covered
      in lock.test and mdl_sync.test, and as long as these tests
      pass despite the increased concurrency, consistency must be
      unaffected.
      
      mysql-test/t/disabled.def:
        Disable NDB tests due to Bug#55799.
      sql/datadict.cc:
        No longer necessary to protect ha_create_table() with
        LOCK_open. Serial execution is now ensured by metadata
        locks.
      sql/ha_ndbcluster.cc:
        Do not manipulate with LOCK_open in cluster code.
      sql/ha_ndbcluster_binlog.cc:
        Do not manipulate with LOCK_open in cluster code.
      sql/ha_ndbcluster_binlog.h:
        Update function signature.
      sql/handler.cc:
        Implement ha_check_if_table_exists().
        @todo: some engines provide ha_table_exists_in_engine()
        handlerton call, for those we perhaps shouldn't
        call ha_discover(), to be more efficient.
        Since currently it's only NDB, postpone till
        integration with NDB.
      sql/handler.h:
        Declare ha_check_if_table_exists() function.
      sql/mdl.cc:
        Remove an obsolete comment.
      sql/sql_base.cc:
        Update to a new signature of close_cached_tables():
        from now on we always call it without LOCK_open.
        Update comments.
        Remove get_table_share_with_create(), we should
        not attempt to create a table under LOCK_open.
        Introduce get_table_share_with_discover() instead,
        which would request a back off action if the table
        exists in engine.
        Remove acquisition of LOCK_open for 
        data dictionary operations, such as check_if_table_exists().
        Do not use get_table_share_with_create/discover for views,
        where it's not needed.
        Make tdc_remove_table() optionally acquire LOCK_open
        to simplify usage of this function.
        Use the right mutex in the partitioning code when
        manipulating with thd->open_tables.
      sql/sql_base.h:
        Update signatures of changes functions.
      sql/sql_insert.cc:
        Do not wrap quick_rm_table() with LOCK_open acquisition, 
        this is unnecessary.
      sql/sql_parse.cc:
        Update to the new calling convention of tdc_remove_table().
        Update to the new signature of close_cached_tables().
        Update comments.
      sql/sql_rename.cc:
        Update to the new calling convention of tdc_remove_table().
        Remove acquisition of LOCK_open around filesystem
        operations.
      sql/sql_show.cc:
        Remove get_trigger_table_impl().
        Do not acquire LOCK_open for a dirty read of the trigger
        file.
      sql/sql_table.cc:
        Do not acquire LOCK_open for filesystem operations.
      sql/sql_trigger.cc:
        Do not require LOCK_open for trigger file I/O.
      sql/sql_truncate.cc:
        Update to the new signature of tdc_remove_table().
      sql/sql_view.cc:
        Do not require LOCK_open for view I/O.
        Use tdc_remove_table() to expel view share.
        Update comments.
      sql/sys_vars.cc:
        Update to the new signature of close_cached_tables().
      a488883d
    • Konstantin Osipov's avatar
      Merge 5.5-bugfixing -> 5.5-runtime. · 4b27a487
      Konstantin Osipov authored
      4b27a487
    • Davi Arnaut's avatar
      71f9c886
    • Davi Arnaut's avatar
      Bug#34043: Server loops excessively in _checkchunk() when safemalloc is enabled · fd1d148d
      Davi Arnaut authored
      Post-merge fix: add missing comma.
      fd1d148d
  4. 06 Aug, 2010 2 commits
    • Davi Arnaut's avatar
      Bug#34043: Server loops excessively in _checkchunk() when safemalloc is enabled · cc814068
      Davi Arnaut authored
      Post-merge fix: remove --with-debug=full, it was only used for safemalloc.
      
      BUILD/compile-pentium-mysqlfs-debug:
        Remove build script for a feature that is long gone.
      cc814068
    • Dmitry Lenev's avatar
      Part of fix for bug#52044 "FLUSH TABLES WITH READ LOCK and · a0e76bd1
      Dmitry Lenev authored
      FLUSH TABLES <list> WITH READ LOCK are incompatible" to
      be pushed as separate patch.
      
      Replaced thread state name "Waiting for table", which was
      used by threads waiting for a metadata lock or table flush, 
      with a set of names which better reflect types of resources
      being waited for.
      
      Also replaced "Table lock" thread state name, which was used 
      by threads waiting on thr_lock.c table level lock, with more
      elaborate "Waiting for table level lock", to make it 
      more consistent with other thread state names.
      
      Updated test cases and their results according to these 
      changes.
      
      Fixed sys_vars.query_cache_wlock_invalidate_func test to not
      to wait for timeout of wait_condition.inc script.
      
      mysql-test/r/query_cache.result:
        Added test coverage for query_cache_wlock_invalidate
        behavior for implicitly locked tables.
      mysql-test/suite/sys_vars/r/query_cache_wlock_invalidate_func.result:
        Fixed sys_vars.query_cache_wlock_invalidate_func test to not
        to wait for timeout of wait_condition.inc script. Reverted
        changes to test which introduced timeout and replaced waiting
        condition with a more appropriate one.
        Test coverage for query_cache_wlock_invalidate behavior for
        implicitly locked tables was added to query_cache.test.
      mysql-test/suite/sys_vars/t/query_cache_wlock_invalidate_func.test:
        Fixed sys_vars.query_cache_wlock_invalidate_func test to not
        to wait for timeout of wait_condition.inc script. Reverted
        changes to test which introduced timeout and replaced waiting
        condition with a more appropriate one.
        Test coverage for query_cache_wlock_invalidate behavior for
        implicitly locked tables was added to query_cache.test.
      mysql-test/t/query_cache.test:
        Added test coverage for query_cache_wlock_invalidate
        behavior for implicitly locked tables.
      mysys/thr_lock.c:
        Replaced "Table lock" thread state name, which was used by 
        threads waiting on thr_lock.c table level lock, with more
        elaborate "Waiting for table level lock", to make it 
        consistent with thread state names which are used while
        waiting for metadata locks and table flush.
      sql/mdl.cc:
        Replaced thread state name "Waiting for table", which was
        used by threads waiting for a metadata lock or table flush, 
        with a set of names which better reflect types of resources
        being waited for. 
        
        To implement this:
        - Adjusted MDL_wait::timed_wait() to take thread state name
          as parameter.
        - Introduced method of MDL_key class which allows to get
          thread state name to be used while waiting for resource
          corresponding to the key and changed code to use it.
          Added array translating namespaces to thread state names
          as part of this change.
      sql/mdl.h:
        To implement this:
        - Adjusted MDL_wait::timed_wait() to take thread state name
          as parameter.
        - Introduced method of MDL_key class which allows to get
          thread state name to be used while waiting for resource
          corresponding to the key and changed code to use it.
          Added array translating namespaces to thread state names
          as part of this change.
      sql/sql_base.cc:
        Replaced thread state name "Waiting for table", which was
        used by threads waiting for table flush, with a more elaborate
        "Waiting for table flush".
      a0e76bd1
  5. 05 Aug, 2010 3 commits
    • Davi Arnaut's avatar
      Bug#55601: BUILD/check-cpu in mysql-trunk is broken on Mac OS X 10.5 · 0cbc2008
      Davi Arnaut authored
      Restore the original behavior of check-cpu with respect to core2.
      It isn't used as a actual target processor type, but as a mean to
      perform other kinds of architecture checks.
      0cbc2008
    • Vladislav Vaintroub's avatar
      Build cleanups · 29d04b9c
      Vladislav Vaintroub authored
      - Simplify sql-bench installation, 
      do not try to resolve names : this leads to probem
      if builddir is symlink located on different filesystem.
      (reported by alik)
      
      - Make WITHOUT_XXX (disabling plugin) work for DEFAULT
      plugins. Prior to the patch is behaved just like 
      MANDATORY.
      
      - LINK_LIBRARIES in MYSQL_ADD_PLUGIN had no effect for
      statically linked plugins.
      
      - Fix constant rebuild of initdb target on Windows.
      29d04b9c
    • Evgeny Potemkin's avatar
      Auto-merged. · 0c9a5fdd
      Evgeny Potemkin authored
      0c9a5fdd
  6. 04 Aug, 2010 3 commits
  7. 02 Aug, 2010 1 commit
    • Evgeny Potemkin's avatar
      Bug#55648: Server crash on MIX/MAX on maximum time value · b7f8e896
      Evgeny Potemkin authored
      A typo in the Item_cache_datetime::val_str caused an assertion to fail on the
      maximum time value.
      
      
      mysql-test/r/func_group.result:
        A test case for the bug#55648.
      mysql-test/t/func_group.test:
        A test case for the bug#55648.
      sql/item.cc:
        Bug#55648: Server crash on MIX/MAX on maximum time value
        Corrected assertion.
      b7f8e896
  8. 31 Jul, 2010 3 commits
  9. 30 Jul, 2010 4 commits
    • Davi Arnaut's avatar
      Revert revision which disabled the generating of configuration · ff42a2ef
      Davi Arnaut authored
      scripts if cmake is available. We need to always generate the
      scripts in order for the dual cmake/autotools support to work.
      ff42a2ef
    • Alexander Nozdrin's avatar
      Update .bzrignore. · 7b52ffa1
      Alexander Nozdrin authored
      7b52ffa1
    • Alexander Nozdrin's avatar
      Auto-merge from mysql-trunk-bugfixing. · f203f617
      Alexander Nozdrin authored
      ******
      This patch fixes the following bugs:
        - Bug#5889: Exit handler for a warning doesn't hide the warning in
          trigger
        - Bug#9857: Stored procedures: handler for sqlwarning ignored
        - Bug#23032: Handlers declared in a SP do not handle warnings generated
          in sub-SP
        - Bug#36185: Incorrect precedence for warning and exception handlers
      
      The problem was in the way warnings/errors during stored routine execution
      were handled. Prior to this patch the logic was as follows:
      
        - when a warning/an error happens: if we're executing a stored routine,
          and there is a handler for that warning/error, remember the handler,
          ignore the warning/error and continue execution.
      
        - after a stored routine instruction is executed: check for a remembered
          handler and activate one (if any).
      
      This logic caused several problems:
      
        - if one instruction generates several warnings (errors) it's impossible
          to choose the right handler -- a handler for the first generated
          condition was chosen and remembered for activation.
      
        - mess with handling conditions in scopes different from the current one.
      
        - not putting generated warnings/errors into Warning Info (Diagnostic
          Area) is against The Standard.
      
      The patch changes the logic as follows:
      
        - Diagnostic Area is cleared on the beginning of each statement that
          either is able to generate warnings, or is able to work with tables.
      
        - at the end of a stored routine instruction, Diagnostic Area is left
          intact.
      
        - Diagnostic Area is checked after each stored routine instruction. If
          an instruction generates several condition, it's now possible to take a
          look at all of them and determine an appropriate handler.
      
      mysql-test/r/signal.result:
        Update result file:
          1. handled conditions are not cleared any more;
          2. reflect changes in signal.test
      mysql-test/r/signal_demo3.result:
        Update result file: handled conditions are not cleared any more.
        Due to playing with max_error_count, resulting warning lists
        have changed.
      mysql-test/r/sp-big.result:
        Update result file: handled conditions are not cleared any more.
      mysql-test/r/sp-bugs.result:
        Update result file: handled conditions are not cleared any more.
      mysql-test/r/sp-code.result:
        Update result file:
          1. handled conditions are not cleared any more.
          2. add result for a new test case in sp-code.test.
      mysql-test/r/sp-error.result:
        Update result file:
          1. handled conditions are not cleared any more.
          2. add result for a new test case in sp-error.test.
      mysql-test/r/sp.result:
        Update result file: handled conditions are not cleared any more.
      mysql-test/r/sp_trans.result:
        Update result file: handled conditions are not cleared any more.
      mysql-test/r/strict.result:
        Update result file: handled conditions are not cleared any more.
      mysql-test/r/view.result:
        Update result file: handled conditions are not cleared any more.
      mysql-test/suite/funcs_1/r/innodb_storedproc_02.result:
        Update result file: handled conditions are not cleared any more.
      mysql-test/suite/funcs_1/r/memory_storedproc_02.result:
        Update result file: handled conditions are not cleared any more.
      mysql-test/suite/funcs_1/r/myisam_storedproc_02.result:
        Update result file: handled conditions are not cleared any more.
      mysql-test/suite/funcs_1/r/storedproc.result:
        Update result file: handled conditions are not cleared any more.
      mysql-test/suite/rpl/r/rpl_row_sp005.result:
        Update result file: handled conditions are not cleared any more.
      mysql-test/suite/rpl/r/rpl_row_sp006_InnoDB.result:
        Update result file: handled conditions are not cleared any more.
      mysql-test/suite/rpl/r/rpl_row_trig003.result:
        Update result file: handled conditions are not cleared any more.
      mysql-test/t/signal.test:
        Make a test case more readable in the result file.
      mysql-test/t/sp-code.test:
        Add a test case for Bug#23032 checking that
        No Data takes precedence on Warning.
      mysql-test/t/sp-error.test:
        Adding test cases for:
          - Bug#23032
          - Bug#36185
          - Bug#5889
          - Bug#9857
      mysql-test/t/sp.test:
        Fixing test case to reflect behavioral changes made by the patch.
      sql/sp_head.cc:
        Reset the per-statement warning count before executing
        a stored procedure instruction.
        
        Move to a separate function code which checks the
        completion status of the executed statement and searches
        for a handler.
        
        Remove redundant code now that search for a handler is
        done after execution, errors are always pushed.
      sql/sp_pcontext.h:
        Remove unused code.
      sql/sp_rcontext.cc:
        - Polish sp_rcontext::find_handler(): use sp_rcontext::m_hfound instead
          of an extra local variable;
        
        - Remove sp_rcontext::handle_condition();
        
        - Introduce sp_rcontext::activate_handler(), which prepares
          previously found handler for execution.
        
        - Move sp_rcontext::enter_handler() code into activate_handler(),
          because enter_handler() is used only from there;
        
        - Cleanups;
        
        - Introduce DBUG_EXECUTE_IF() for a test case in sp-code.test
      sql/sp_rcontext.h:
        - Remove unused code
        - Cleanups
      sql/sql_class.cc:
        Merge THD::raise_condition_no_handler() into THD::raise_condition().
        After the patch raise_condition_no_handler() was called
        in raise_condition() only.
      sql/sql_class.h:
        Remove raise_condition_no_handler().
      sql/sql_error.cc:
        Remove Warning_info::reserve_space() -- handled conditions are not
        cleared any more, so there is no need for RESIGNAL to re-push them.
      sql/sql_error.h:
        Remove Warning_info::reserve_space().
      sql/sql_signal.cc:
        Handled conditions are not cleared any more,
        so there is no need for RESIGNAL to re-push them.
      f203f617
    • Alexander Nozdrin's avatar
      Auto-merge from mysql-trunk-bugfixing. · 3ad5e9bd
      Alexander Nozdrin authored
      3ad5e9bd
  10. 29 Jul, 2010 14 commits