1. 26 Feb, 2010 2 commits
    • Jon Olav Hauglid's avatar
      Bug #51240 ALTER TABLE of a locked MERGE table fails · 01692832
      Jon Olav Hauglid authored
      The problem was that ALTER TABLE on a merge table which was locked 
      using LOCK TABLE ... WRITE, by mistake gave 
      ER_TABLE_NOT_LOCKED_FOR_WRITE.
      
      During opening of the table to be ALTERed, open_table() tried to
      get an upgradable metadata lock. In LOCK TABLEs mode, this lock
      must already exist (i.e. taken by LOCK TABLE) as new locks of this
      type cannot be acquired for fear of deadlock. So in LOCK TABLEs
      mode, open_table() tried to find an existing upgradable lock for
      the table to be altered.
      
      The problem was that open_table() also tried to find upgradable
      metadata locks for children of merge tables even if no such
      locks are needed to execute ALTER TABLE on merge tables.
      
      This patch fixes the problem by making sure that open tables code
      only searches for upgradable metadata locks for the merge table
      and not for the merge children tables. 
      
      The patch also fixes a related bug where an upgradable metadata
      lock was aquired outside of LOCK TABLEs mode even if the table in
      question was temporary. This bug meant that LOCK TABLES or DDL on
      temporary tables by mistake could be blocked/aborted by locks held
      on base tables with the same table name by other connections.
      
      Test cases added to merge.test and lock_multi.test.
      01692832
    • Jon Olav Hauglid's avatar
      Bug #51336 Assert in reload_acl_and_cache during RESET QUERY CACHE · 2c4b6dc5
      Jon Olav Hauglid authored
      Attempts to execute RESET statements within a transaction that
      had acquired metadata locks, led to an assertion failure on 
      debug servers. This bug didn't cause any problems on release
      builds.
      
      The triggered assert is designed to check that caches are not
      flushed or reset while having active transactions. It is triggered
      if acquired metadata locks exist that are not from LOCK TABLE or
      HANDLER statements.
      
      In this case it was triggered by RESET QUERY CACHE while having
      an active transaction that had acquired locks. The reason the
      assertion was triggered, was that RESET statements, unlike the
      similar FLUSH statements, was not causing an implicit commit.
      
      This patch fixes the problem by making sure RESET statements
      commit the current transaction before executing. The commit
      causes acquired metadata locks to be released, preventing the
      assertion from being triggered.
      
      Incompatible change: This patch changes RESET statements so
      that they cause an implicit commit.
      
      Test case added to query_cache.test.
      2c4b6dc5
  2. 25 Feb, 2010 3 commits
    • Jon Olav Hauglid's avatar
      Bug #51355 handler stmt cause assertion in · 3eead1f0
      Jon Olav Hauglid authored
                 bool MDL_context::try_acquire_lock(MDL_request*)
      
      This assert was triggered in the following way:
      1) HANDLER OPEN t1 from connection 1
      2) DROP TABLE t1 from connection 2. This will block due to the metadata lock
      held by the open handler in connection 1.
      3) DML statement (e.g. INSERT) from connection 1. This will close the table
      opened by the HANDLER in 1) and release its metadata lock. This is done due
      to the pending exclusive metadata lock from 2). 
      4) DROP TABLE t1 from connection 2 now completes and removes table t1.
      5) HANDLER READ from connection 1. Since the handler table was closed in 3),
      the handler code will try to reopen the table. First a new metadata lock on
      t1 will be granted before the command fails since the table was removed in 4).
      6) HANDLER READ from connection 1. This caused the assert.
      
      The reason for the assert was that the MDL_request's pointer to the lock
      ticket was not reset when the statement failed. HANDLER READ then tried to
      acquire a lock using the same MDL_request object, triggering the assert.
      This bug was only noticeable on debug builds and did not cause any problems
      on release builds.
      
      This patch fixes the problem by assuring that the pointer to the metadata 
      lock ticket is reset when reopening of handler tables fails.
      
      Test case added to handler.inc
      3eead1f0
    • Jon Olav Hauglid's avatar
      merge from mysql-next-mr-bugfixing · a52ad97e
      Jon Olav Hauglid authored
      a52ad97e
    • Vladislav Vaintroub's avatar
      On Solaris, overwrite CMake's proposed thread library -lthread with -lpthread. · 342c5c2c
      Vladislav Vaintroub authored
      -lthread works fine in most cases, but at least with gcc 3.4.6 on x86, dlopen() crashes when libpthread is not used. 
      Note : the workaround existed prior and did not work  since CMAKE_THREADS_LIBS_INIT was already
       in cache.  Now, use SET(.. CACHE FORCE)  to overwrite the cached value.
      342c5c2c
  3. 24 Feb, 2010 10 commits
    • Vladislav Vaintroub's avatar
      merge · 2b75f070
      Vladislav Vaintroub authored
      2b75f070
    • Jonathan Perkin's avatar
      Some CMake packaging fixes: · 26e77e00
      Jonathan Perkin authored
       - Remove INSTALL-BINARY from installed docs directory, we provide a copy
         in the root directory (but perhaps this should be revisited later).
      
       - Disable audit_null and daemon_example plugins.
      
       - Fix the docs directory.
      
       - Remove mysql-test/Makefile.in
      
       - Build and install mysql_tzinfo_to_sql
      
       - Remove share/charsets/languages.html
      26e77e00
    • Vladislav Vaintroub's avatar
      #51466 : Source packages are broken with cmake in a cmake-agnostic environment · fea87787
      Vladislav Vaintroub authored
      In the worst case possible scenario (no bzr, in-source build),
      make dist produced a package that compiled ok with autotools
      but failed to package because extra make_binary_distribution was
      found in source package and was not built. make_binary_distribution
      contained paths of the build machine.
      
      Fix:  exclude some scripts that are produced in cmake build. 
      Note that there is no good general fix for it in this specific scenario.
      it is advisable to build source packages out of source or in bzr repo.
      fea87787
    • Vladislav Vaintroub's avatar
      Fix --with-ssl mappping (--with-ssl=dir should be "yes" or · 538ba33f
      Vladislav Vaintroub authored
      actually "system"), --with-ssl should be "bundled".
      
      Fixes error on sol-gcc-x86, where build machine had  openssl but not
      the test box.
      538ba33f
    • Jon Olav Hauglid's avatar
      Followup to Bug#45225 Locking: hang if drop table with no timeout · dd42aab8
      Jon Olav Hauglid authored
      This patch prevents system threads and system table accesses from
      using user-specified values for "lock_wait_timeout". Instead all
      such accesses are done using the default value (1 year).
      
      This prevents background tasks (such as replication, events, 
      accessing stored function definitions, logging, reading time-zone
      information, etc.) from failing in cases where the global value
      of "lock_wait_timeout" is set very low.
      
      The patch also simplifies the open tables API. Rather than adding
      another convenience function for opening and locking system tables,
      this patch removes most of the existing convenience functions for
      open_and_lock_tables_derived(). Before, open_and_lock_tables() was
      a convenience function that enforced derived tables handling, while
      open_and_lock_tables_derived() was the main function where derived
      tables handling was optional. Now, this convencience function is
      gone and the main function is renamed to open_and_lock_tables(). 
      
      No test case added as it would have required the use of --sleep to
      check that system threads and system tables have a different timeout
      value from the user-specified "lock_wait_timeout" system variable.
      dd42aab8
    • Alexander Nozdrin's avatar
      73b591a0
    • Marc Alff's avatar
      Fixed tests for windows · 3425e9ef
      Marc Alff authored
      3425e9ef
    • Vladislav Vaintroub's avatar
      merge · df581200
      Vladislav Vaintroub authored
      df581200
    • Vladislav Vaintroub's avatar
      Fix typo · b6663c64
      Vladislav Vaintroub authored
      HAVE_IBGCC_ATOMIC_BUILTINS=>HAVE_IB_GCC_ATOMIC_BUILTINS.
      Due to the typo, detection of atomics was broken. 
      It also lead to valgrind error during shutdown 
      (access to freed memory),which is likely present 
      in all builds where atomics are not used.
      b6663c64
    • Marc Alff's avatar
      Bug#10143 Perror not showing error description · 9d5deb07
      Marc Alff authored
      Backport to 5.5.99
      9d5deb07
  4. 23 Feb, 2010 12 commits
  5. 22 Feb, 2010 7 commits
  6. 21 Feb, 2010 3 commits
  7. 20 Feb, 2010 3 commits