1. 03 Mar, 2010 1 commit
    • Vladislav Vaintroub's avatar
      Bug #51488 :missing features and change behavior in cmake runs compared to · cd03a462
      Vladislav Vaintroub authored
      autotools runs
      - Fix recognition of --with-debug=full in configure wrapper
      - Remove CMakeCache.txt in configure wrapper, to match the original
      - Fix recognition of max-no-ndb
      - Fix broken dependencies of mysql_fix_privilege_table.sql from 
        mysql_system_tables.sql and mysql_system_tables_fix.sql
      - Add "distclean target" that informs user about appropriate bzr command
      
      
      
      cmake/configure.pl:
        - Recognize --with-debug=full, map to WITH_DEBUG_FULL
        - remove CMakeCache.txt, so the configuration is no more sticky
        (to match the original configure behavior)
      cmake/plugin.cmake:
        - Recognize WITH_MAX_NO_NDB, this fixes missing storage engines after BUILD/*max-no-ndb scripts
      mysql-test/CMakeLists.txt:
        test-force uses the same macros (MTR_FORCE) as test-bt* now
      scripts/CMakeLists.txt:
        - Fix broken dependency when producing mysql_fix_privilege_tables.sql, reported by Davi.
        We now concatenate 2 scripts in custom command that
        has dependency on both scripts rather than concatenating them at cmake time.
      sql/CMakeLists.txt:
        Address frequently asked question "where is distclean" by implementing distclean target 
        that does nothing except pointing to appropriate 
        bzr command.
        
        It is better not to call "bzr clean-tree" automatically, without user consent.
        It could clean new files that were meant to be added.
      cd03a462
  2. 02 Mar, 2010 1 commit
  3. 01 Mar, 2010 1 commit
  4. 02 Mar, 2010 2 commits
  5. 01 Mar, 2010 8 commits
  6. 28 Feb, 2010 5 commits
    • Alexey Botchkov's avatar
      Bug#42465 mysqlhotcopy fails with "Table '<y>' was locked with a READ lock" error message. · a8d2da23
      Alexey Botchkov authored
          Since 5.5 FLUSH TABLES requires unlocked tables so the old LOCK TABLES/FLUSH TABLES
          model fails. Use atomic FLUSH TABLES WITH READ LOCK instead.
      
      per-file comments:
        scripts/mysqlhotcopy.sh
      Bug#42465      mysqlhotcopy fails with "Table '<y>' was locked with a READ lock" error message.
           Use FLUSH TABLES WITH READ LOCK instead of LOCK TABLES / FLUSH TABLES pair.
           Keep the old scheme for older servers.
      a8d2da23
    • Andrei Elkin's avatar
      82fe344c
    • Andrei Elkin's avatar
      bug#50296 · 055c6104
      Andrei Elkin authored
      a small refinement to the test
      055c6104
    • Andrei Elkin's avatar
      Bug #50296 Slave reconnects earlier than the prescribed slave_net_timeout value · 1faafbb0
      Andrei Elkin authored
      There was auto-reconnecting by slave earlier than a prescribed by slave_net_timeout value.
      The issue happened on 64bit solaris that spotted rather incorrect casting of 
      the ulong slave_net_timeout into the uint of mysql.options.read_timeout.
      
      Notice, that there is no reason for slave_net_timeout to be of type of ulong.
      Since it's primarily passed as arg to mysql_options the type can be made
      as uint to avoid all conversion hassles.
      That's what the fixes are made.
      A "side" effect of the patch is a new value for the max of slave_net_timeout
      to be the max of the unsigned int type (therefore to vary across platforms).
      
      Note, a regression test can't be made to run reliably without making it to last over some 
      20 secs. That's why it is placed in suite/large_tests.
      
      mysql-test/suite/large_tests/r/rpl_slave_net_timeout.result:
        the new test results.
      mysql-test/suite/large_tests/t/rpl_slave_net_timeout-slave.opt:
        Initialization of the option that yields slave_net_timeout's default.
      sql/mysql_priv.h:
        changing type for slave_net_timeout from ulong to uint
      sql/mysqld.cc:
        changing type for slave_net_timeout from ulong to uint
      sql/sys_vars.cc:
        Refining the max value for slave_net_timeout to be as the max for uint type.
      1faafbb0
    • Dmitry Lenev's avatar
      Fix for bug #51105 "MDL deadlock in rqg_mdl_stability test · 6b5c4a9e
      Dmitry Lenev authored
      on Windows".
      
      On platforms where read-write lock implementation does not
      prefer readers by default (Windows, Solaris) server might
      have deadlocked while detecting MDL deadlock.
      
      MDL deadlock detector relies on the fact that read-write
      locks which are used in its implementation prefer readers
      (see new comment for MDL_lock::m_rwlock for details).
      So far MDL code assumed that default implementation of
      read/write locks for the system has this property.
      Indeed, this turned out ot be wrong, for example, for
      Windows or Solaris. Thus MDL deadlock detector might have
      deadlocked on these systems.
      
      This fix simply adds portable implementation of read/write
      lock which prefer readers and changes MDL code to use this
      new type of synchronization primitive.
      
      No test case is added as existing rqg_mdl_stability test can
      serve as one.
      
      config.h.cmake:
        Check for presence of pthread_rwlockattr_setkind_np to be
        able to determine if system natively supports read-write
        locks for which we can specify if readers or writers should
        be preferred.
      configure.cmake:
        Check for presence of pthread_rwlockattr_setkind_np to be
        able to determine if system natively supports read-write
        locks for which we can specify if readers or writers should
        be preferred.
      configure.in:
        Check for presence of pthread_rwlockattr_setkind_np to be
        able to determine if system natively supports read-write
        locks for which we can specify if readers or writers should
        be preferred.
      include/my_pthread.h:
        Added support for portable read-write locks which prefer
        readers.
        To do so extended existing my_rw_lock_t implementation to
        support selection of whom to prefer depending on a flag.
      mysys/thr_rwlock.c:
        Extended existing my_rw_lock_t implementation to support
        selection of whom to prefer depending on a flag.
        Added rw_pr_init() function implementing initialization of
        read-write locks preferring readers.
      sql/mdl.cc:
        Use portable read-write locks which prefer readers instead of
        relying on that system implementation of read-write locks has
        this property (this was true for Linux/NPTL but was false,
        for example, for Windows and Solaris).
        Added comment explaining why preferring readers is important
        for MDL deadlock detector (thanks to Serg for example!).
      sql/mdl.h:
        Use portable read-write locks which prefer readers instead of
        relying on that system implementation of read-write locks has
        this property (this was true for Linux/NPTL but was false,
        for example, for Windows and Solaris).
      6b5c4a9e
  7. 27 Feb, 2010 2 commits
    • Konstantin Osipov's avatar
      WL#5000 FLUSH TABLES|TABLE table_list WITH READ LOCK. · 093106f5
      Konstantin Osipov authored
      Extend and implement the grammar that allows to FLUSH WITH READ LOCK
      a list of tables, rather than all of them.
      
      Incompatible grammar change:
      Previously one could perform FLUSH TABLES, HOSTS, PRIVILEGES in a single
      statement.
      After this change, FLUSH TABLES must always be alone on the list.
      Judging by the test suite, however, the old extended syntax
      was never or very rarely used.
      
      The new statement requires RELOAD ACL global privilege and
      LOCK_TABLES_ACL | SELECT_ACL on individual tables.
      In other words, it's an atomic combination of LOCK TALBES <list> READ
      and FLUSH TABLES <list>, and requires respective privileges.
      
      For additional information about the semantics, please
      see WL#5000 and the comment for flush_tables_with_read_lock()
      function in sql_parse.cc
      
      
      mysql-test/r/flush.result:
        Update test results (WL#5000).
      mysql-test/t/flush.test:
        Add test coverage for WL#5000.
      sql/sql_yacc.yy:
        Allow FLUSH TABLES <table_list> WITH READ LOCK.
        Disallow FLUSH TABLES <table_list>, flush_options.
      093106f5
    • Vladislav Vaintroub's avatar
      merge · 4761a651
      Vladislav Vaintroub authored
      4761a651
  8. 26 Feb, 2010 10 commits
    • Marc Alff's avatar
      Bug#51447 performance schema evil twin files · d6131618
      Marc Alff authored
      Before this fix, the performance schema file instrumentation would treat:
      - a relative path to a file
      - an absolute path to the same file
      as two different files.
      
      This would lead to:
      - separate aggregation counters
      - file leaks when a file is removed.
      
      With this fix, a relative and absolute path are resolved to the same file instrument.
      d6131618
    • Dmitry Lenev's avatar
      Merged recent changes from mysql-next-mr-bugfixing · 88f4990c
      Dmitry Lenev authored
      into mysql-next-4284 tree.
      88f4990c
    • Jonathan Perkin's avatar
      Fix truncated GPL text. · 33ecac14
      Jonathan Perkin authored
      33ecac14
    • Dmitry Lenev's avatar
      Merge recent changes from mysql-next-mr into · aedf25be
      Dmitry Lenev authored
      mysql-next-4284.
      aedf25be
    • Dmitry Lenev's avatar
      Merged recent changes from mysql-next-mr-bugfixing into · cb7fe134
      Dmitry Lenev authored
      mysql-next-4284 tree.
      cb7fe134
    • Jon Olav Hauglid's avatar
      Bug #51240 ALTER TABLE of a locked MERGE table fails · 7fd30bf6
      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.
      7fd30bf6
    • Jon Olav Hauglid's avatar
      Bug #51336 Assert in reload_acl_and_cache during RESET QUERY CACHE · a42cbe06
      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.
      a42cbe06
    • Alexander Nozdrin's avatar
      Auto-merge from mysql-next-mr. · 2f4e94d7
      Alexander Nozdrin authored
      2f4e94d7
    • Alexander Nozdrin's avatar
      242a5a94
    • Vladislav Vaintroub's avatar
      merge · 0b627c71
      Vladislav Vaintroub authored
      0b627c71
  9. 25 Feb, 2010 10 commits
    • Vladislav Vaintroub's avatar
      Bug#51502: building with cmake creates an invalid mysqld_safe. · 3fcd8548
      Vladislav Vaintroub authored
      The problem was incorrect escaping used inside a strnig : in \"$MYSQLD\" was written as "\MYSQL\" 
      (backslash and quote characters transposed), when defining FIND_PROC  variable for BSD or SysV
      style "ps" command-
      
      Additionally fixed obvious code duplication and random naming in CHECK_PID test.
      3fcd8548
    • Alexander Nozdrin's avatar
      Null-merge from mysql-trunk-bugfixing. · c358da1b
      Alexander Nozdrin authored
      c358da1b
    • Alexander Nozdrin's avatar
      Null-merge from mysql-next-mr. · a77f9297
      Alexander Nozdrin authored
      a77f9297
    • Alexander Nozdrin's avatar
      Null-merge from mysql-trunk. · 5143331c
      Alexander Nozdrin authored
      5143331c
    • Alexander Nozdrin's avatar
      Fix default.conf. · 49e7114f
      Alexander Nozdrin authored
      49e7114f
    • Alexander Nozdrin's avatar
      Fix default.conf. · b1fbd77e
      Alexander Nozdrin authored
      b1fbd77e
    • Jon Olav Hauglid's avatar
      Bug #51355 handler stmt cause assertion in · 3f1a9baf
      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
      3f1a9baf
    • Vladislav Vaintroub's avatar
      Workaround crash with dtraced shared libraries under GCC 3.4.6 on 32 bit Solaris. · 46800354
      Vladislav Vaintroub authored
      Crash happens in dlopen() code when trying to load the library. Crash does not happen when library is 
      not DTrace instrumented . Additionally, crash does not happen with default Solaris 10 GCC 3.4.3 and
      it does not happen if main executable is instrumented.
      
      So , just check for this specific situation (32 bit, GCC3.4.6 , Solaris) and disable Dtrace in shared libraries.
      We have only single plugin so far that is instrumented (ha_example)
      46800354
    • Jon Olav Hauglid's avatar
      merge from mysql-next-mr-bugfixing · 8a5956c9
      Jon Olav Hauglid authored
      8a5956c9
    • Alexey Botchkov's avatar
      Bug#41103 6.0 Windows embedded-server tests fail · c510ded6
      Alexey Botchkov authored
          Two problems addressed here:
             Embedded-server linking failure.
                sql/sys_vars.cc absents in the libmysqld/CMakeLists.txt
             The PERFORMANCE_SCHEMA-related failure of the embedded-server compilation.
                We try to disable the PERFORMANCE_SCHEMA in the embedded server
                as it's considered useless there. But we do it in wrong way as
                we only disable header's links to the PF, not the PF's library itself.
                So on Unix-ex the embedded library still contains the PF code and
                grows bigger with no reason. On Windows that just fails to compile.
                   
      per-file comments:
        include/my_global.h
      Bug#41103      6.0 Windows embedded-server tests fail
            No PERFORMANCE_SCHEMA disabling in the embedded server. User can
            just use the --without-perfschema-engine-plugin option to exclude it
            from the compilation.
      c510ded6