1. 03 Feb, 2010 6 commits
    • MySQL Build Team's avatar
      Backport into build-201002030816-5.0.87sp1 · 0286f0e9
      MySQL Build Team authored
      > ------------------------------------------------------------
      > revno: 2818.4.1
      > revision-id: alexey.kopytov@sun.com-20091030155453-0vlfwki805h9os62
      > parent: joerg@mysql.com-20091016122941-rf6z0keqvmlgjfto
      > committer: Alexey Kopytov <Alexey.Kopytov@Sun.com>
      > branch nick: my50-bug48131
      > timestamp: Fri 2009-10-30 18:54:53 +0300
      > message:
      >   Bug #48131: crash group by with rollup, distinct, filesort,
      >               with temporary tables
      >   
      >   There were two problems the test case from this bug was
      >   triggering:
      >   
      >   1. JOIN::rollup_init() was supposed to wrap all constant Items
      >   into another object for queries with the WITH ROLLUP modifier
      >   to ensure they are never considered as constants and therefore
      >   are written into temporary tables if the optimizer chooses to
      >   employ them for DISTINCT/GROUP BY handling.
      >   
      >   However, JOIN::rollup_init() was called before
      >   make_join_statistics(), so Items corresponding to fields in
      >   const tables could not be handled as intended, which was
      >   causing all kinds of problems later in the query execution. In
      >   particular, create_tmp_table() assumed all constant items
      >   except "hidden" ones to be removed earlier by remove_const()
      >   which led to improperly initialized Field objects for the
      >   temporary table being created. This is what was causing crashes
      >   and valgrind errors in storage engines.
      >   
      >   2. Even when the above problem had been fixed, the query from
      >   the test case produced incorrect results due to some
      >   DISTINCT/GROUP BY optimizations being performed by the
      >   optimizer that are inapplicable in the WITH ROLLUP case.
      >   
      >   Fixed by disabling inapplicable DISTINCT/GROUP BY optimizations
      >   when the WITH ROLLUP modifier is present, and splitting the
      >   const-wrapping part of JOIN::rollup_init() into a separate
      >   method which is now invoked after make_join_statistics() when
      >   the const tables are already known.
      0286f0e9
    • MySQL Build Team's avatar
      Backport into build-201002030816-5.0.87sp1 · 78103335
      MySQL Build Team authored
      > ------------------------------------------------------------
      > revno: 2818.1.13
      > revision-id: joro@sun.com-20091030131543-2b23fnqckgbzvete
      > parent: joro@sun.com-20091030094044-quadg0bwjy7cwqzw
      > committer: Georgi Kodinov <joro@sun.com>
      > branch nick: B48291-5.0-bugteam
      > timestamp: Fri 2009-10-30 15:15:43 +0200
      > message:
      >   Bug #48291 : crash with row() operator,select into @var, and 
      >     subquery returning multiple rows
      >   
      >   Error handling was missing when handling subqueires in WHERE 
      >   and when assigning a SELECT result to a @variable.
      >   This caused crash(es). 
      >   
      >   Fixed by adding error handling code to both the WHERE 
      >   condition evaluation and to assignment to an @variable.
      78103335
    • MySQL Build Team's avatar
      Backport into build-201002030816-5.0.87sp1 · 209a75c0
      MySQL Build Team authored
      > ------------------------------------------------------------
      > revno: 2818.1.12
      > revision-id: joro@sun.com-20091030094044-quadg0bwjy7cwqzw
      > parent: joro@sun.com-20091029152429-ks55fhrp4lhknyij
      > committer: Georgi Kodinov <joro@sun.com>
      > branch nick: B48293-5.0-bugteam
      > timestamp: Fri 2009-10-30 11:40:44 +0200
      > message:
      >   Bug #48293: crash with procedure analyse, view with > 10 columns,
      >   having clause...
      >   
      >   The fix for bug 46184 was not very complete. It was not covering
      >   views using temporary tables and multiple tables in a FROM clause.
      >   Fixed by reverting the fix for 46184 and making a more general
      >   check that is checking at the right execution stage and for all
      >   of the non-supported cases.
      >   Now PROCEDURE ANALYZE on non-top level SELECT is also forbidden.
      >   Updated the analyse.test and subselect.test accordingly.
      209a75c0
    • MySQL Build Team's avatar
      Backport into build-201002030816-5.0.87sp1 · e7219624
      MySQL Build Team authored
      > ------------------------------------------------------------
      > revno: 2818.1.6
      > revision-id: joro@sun.com-20091021084345-iki6z0uceieoupey
      > parent: ramil@mysql.com-20091023112648-gie6o3odj57cxh1e
      > committer: Georgi Kodinov <joro@sun.com>
      > branch nick: B47780-5.0-bugteam
      > timestamp: Wed 2009-10-21 11:43:45 +0300
      > message:
      >   Bug #47780: crash when comparing GIS items from subquery
      >         
      >   If the first argument to GeomFromWKB function is a geometry
      >   field then the function just returns its value.
      >   However in doing so it's not preserving first argument's 
      >   null_value flag and this causes unexpected null value to
      >   be returned to the calling function.
      >         
      >   Fixed by updating the null_value of the GeomFromWKB function
      >   in such cases (and all other cases that return a NULL e.g.
      >   because of not enough memory for the return buffer).
      e7219624
    • MySQL Build Team's avatar
      Backport into build-201002030816-5.0.87sp1 · f483141b
      MySQL Build Team authored
      > ------------------------------------------------------------
      > revno: 2818.1.5
      > revision-id: ramil@mysql.com-20091023112648-gie6o3odj57cxh1e
      > parent: ramil@mysql.com-20091021090408-208mvwwrcroi2j8c
      > committer: Ramil Kalimullin <ramil@mysql.com>
      > branch nick: b48258-5.0-bugteam
      > timestamp: Fri 2009-10-23 16:26:48 +0500
      > message:
      >   Fix for bug#48258: Assertion failed when using a spatial index
      >   
      >   Problem: involving a spatial index for "non-spatial" queries
      >   (that don't containt MBRXXX() functions) may lead to failed assert.
      >   
      >   Fix: don't use spatial indexes in such cases.
      f483141b
    • MySQL Build Team's avatar
      Backport into build-201002030816-5.0.87sp1 · 41894be0
      MySQL Build Team authored
      > ------------------------------------------------------------
      > revno: 2818.1.4
      > revision-id: ramil@mysql.com-20091021090408-208mvwwrcroi2j8c
      > parent: azundris@mysql.com-20091021033856-ydodp4q42o58e7ka
      > committer: Ramil Kalimullin <ramil@mysql.com>
      > branch nick: b47019-5.0-bugteam
      > timestamp: Wed 2009-10-21 14:04:08 +0500
      > message:
      >   Fix for bug#47019: Assertion failed: 0, file .\rt_mbr.c, 
      >   line 138 when forcing a spatial index
      >   
      >   Problem: "Spatial indexes can be involved in the search 
      >   for queries that use a function such as MBRContains() 
      >   or MBRWithin() in the WHERE clause".
      >   Using spatial indexes for JOINs with =, <=> etc.
      >   predicates is incorrect.
      >   
      >   Fix: disable spatial indexes for such queries.
      41894be0
  2. 02 Feb, 2010 1 commit
  3. 14 Oct, 2009 1 commit
  4. 06 Oct, 2009 1 commit
  5. 05 Oct, 2009 1 commit
  6. 04 Oct, 2009 1 commit
  7. 02 Oct, 2009 1 commit
  8. 30 Sep, 2009 6 commits
    • Davi Arnaut's avatar
      Post-merge cleanup: Reorganize code for better comprehensibility. · 3c5d9f42
      Davi Arnaut authored
                          Removes the need of a hack (the jump to label).
      3c5d9f42
    • Davi Arnaut's avatar
      Post-merge fix: DBUG macros are wrapped inside a loop. · e218ac06
      Davi Arnaut authored
      sql/sql_parse.cc:
        DBUG macros are wrapped inside a loop. Allow to break
        the command switch from within a DBUG macro.
      e218ac06
    • Davi Arnaut's avatar
      Bug#47525: MySQL crashed (Federated) · 565f1bc4
      Davi Arnaut authored
      On Mac OS X or Windows, sending a SIGHUP to the server or a
      asynchronous flush (triggered by flush_time), would cause the
      server to crash.
      
      The problem was that a hook used to detach client API handles
      wasn't prepared to handle cases where the thread does not have
      a associated session.
      
      The solution is to verify whether the thread has a associated
      session before trying to detach a handle.
      
      mysql-test/r/federated_debug.result:
        Add test case result for Bug#47525
      mysql-test/t/federated_debug-master.opt:
        Debug point.
      mysql-test/t/federated_debug.test:
        Add test case for Bug#47525
      sql/slave.cc:
        Check whether a the thread has a associated session.
      sql/sql_parse.cc:
        Add debug code to simulate a reload without thread session.
      565f1bc4
    • Jonathan Perkin's avatar
      bug#27693: Windows compilation from bk fails using WITH_BERKELEY_STORAGE_ENGINE · 16b41f10
      Jonathan Perkin authored
      Make configure.js bail with an error if trying to build bdb from a bzr
      tree.
      16b41f10
    • Kristofer Pettersson's avatar
      Bug#34895 'show procedure status' or 'show function status' + · df2122a2
      Kristofer Pettersson authored
                'flush tables' crashes
      
      The server crashes when 'show procedure status' and 'flush tables' are
      run concurrently.
      
      This is caused by the way mysql.proc table is added twice to the list
      of table to lock although the requirements on the current locking API
      assumes differently.
      
      No test case is submitted because of the nature of the crash which is 
      currently difficult to reproduce in a deterministic way.
      
      This is a backport from 5.1
      
      myisam/mi_dbug.c:
        * check_table_is_closed is only used in EXTRA_DEBUG mode but since it is
        iterating over myisam shared data it still needs to be protected by an
        appropriate mutex.
      sql/sql_yacc.yy:
        * Since the I_S mechanism is already handling the open and close of 
        mysql.proc there is no need for the method sp_add_to_query_tables.
      df2122a2
    • unknown's avatar
      Bug #46998 mysqlbinlog can't output BEGIN even if the database is included in a transaction · de04eb6c
      unknown authored
      The 'BEGIN/COMMIT/ROLLBACK' log event could be filtered out if the
      database is not selected by --database option of mysqlbinlog command.
      This can result in problem if there are some statements in the
      transaction are not filtered out.
      
      To fix the problem, mysqlbinlog will output 'BEGIN/ROLLBACK/COMMIT' 
      in regardless of the database filtering rules.
      
      client/mysqlbinlog.cc:
        Skip the database check for BEGIN/COMMIT/ROLLBACK log events.
      mysql-test/r/mysqlbinlog.result:
        Test result for bug#46998
      mysql-test/t/mysqlbinlog.test:
        Added test to verify if the 'BEGIN', 'COMMIT' and 'ROLLBACK' are output
        in regardless of database filtering
      de04eb6c
  9. 29 Sep, 2009 2 commits
    • Kristofer Pettersson's avatar
      autocommit · 0fb0b2b1
      Kristofer Pettersson authored
      0fb0b2b1
    • Kristofer Pettersson's avatar
      Bug#42108 Wrong locking for UPDATE with subqueries leads to broken statement · da9a5ef6
      Kristofer Pettersson authored
                replication
                    
      MySQL server uses wrong lock type (always TL_READ instead of
      TL_READ_NO_INSERT when appropriate) for tables used in
      subqueries of UPDATE statement. This leads in some cases to
      a broken replication as statements are written in the wrong
      order to the binlog.
      
      sql/sql_yacc.yy:
        * Set lock_option to either TL_READ_NO_INSERT or
          TL_READ for any sub-SELECT following UPDATE.
        * Changed line adjusted for parser identation
          rules; code begins at column 13.
      da9a5ef6
  10. 28 Sep, 2009 3 commits
  11. 21 Sep, 2009 1 commit
  12. 18 Sep, 2009 1 commit
    • Georgi Kodinov's avatar
      Bug #47106: Crash / segfault on adding EXPLAIN to a non-crashing · 5dda6c18
      Georgi Kodinov authored
       query
            
      The fix for bug 46749 removed the check for OUTER_REF_TABLE_BIT 
      and substituted it for a check on the presence of 
      Item_ident::depended_from.
      Removing it altogether was wrong : OUTER_REF_TABLE_BIT should 
      still be checked in addition to depended_from (because it's not 
      set in all cases and doesn't contradict to the check of depended_from).
      Fixed by returning the old condition back as a compliment to the 
      new one.
      5dda6c18
  13. 28 Sep, 2009 1 commit
  14. 24 Sep, 2009 1 commit
    • Magnus Blåudd's avatar
      Bug#42850 race condition in my_thr_init.c · 9eab1cdb
      Magnus Blåudd authored
       - Create the "dummy" thread joinable and wait for it to
         exit before continuing in 'my_thread_global_init'
       - This way we know that the pthread library is initialized
         by one thread only
      9eab1cdb
  15. 17 Sep, 2009 1 commit
    • Joerg Bruehe's avatar
      Fix bug#47137 · c78915b2
      Joerg Bruehe authored
          Solaris binary packages should be compiled with '-g0', not '-g'
      
      The main fix for this is done in the build tools,
      but in the sources it affects "configure.in"
      which sets "DEBUG_CXXFLAGS" to be used in all debug builds.
      c78915b2
  16. 11 Sep, 2009 1 commit
  17. 24 Sep, 2009 1 commit
  18. 18 Sep, 2009 1 commit
  19. 17 Sep, 2009 2 commits
  20. 16 Sep, 2009 1 commit
  21. 10 Sep, 2009 1 commit
    • Sergey Glukhov's avatar
      Bug#46815 CONCAT_WS returning wrong data · 10406ae6
      Sergey Glukhov authored
      The problem is that argument buffer can be used as result buffer
      and it leads to argument value change.
      The fix is to use 'old buffer' as result buffer only
      if first argument is not constant item.
      
      
      mysql-test/r/func_str.result:
        test result
      mysql-test/t/func_str.test:
        test case
      sql/item_strfunc.cc:
        The problem is that argument buffer can be used as result buffer
        and it leads to argument value change.
        The fix is to use 'old buffer' as result buffer only
        if first argument is not constant item.
      10406ae6
  22. 09 Sep, 2009 2 commits
  23. 08 Sep, 2009 1 commit
  24. 07 Sep, 2009 1 commit
    • Ingo Struewing's avatar
      Bug#17332 - changing key_buffer_size on a running server · 540b2dc0
      Ingo Struewing authored
                  can crash under load
      
      Backport from 5.1.
      Does also include key cache fixes from:
      Bug 44068 (RESTORE can disable the MyISAM Key Cache)
      Bug 40944 (Backup: crash after myisampack)
      
      
      
      include/keycache.h:
        Bug#17332 - changing key_buffer_size on a running server
                    can crash under load
        Added KEY_CACHE components in_resize and waiting_for_resize_cnt.
      myisam/mi_preload.c:
        Bug#17332 - changing key_buffer_size on a running server
                    can crash under load
        Added code to allow LOAD INDEX to load indexes of different block size.
      mysys/mf_keycache.c:
        Bug#17332 - changing key_buffer_size on a running server
                    can crash under load
        .
        Changed resize_key_cache() to not disable the key cache
        after the flush phase. Changed queue handling to use
        standard functions. Wake all threads waiting on resize_queue.
        We can now have read/write threads waiting there (see below).
        .
        Combined add_to_queue() and the wait loops that were always
        following it to the new function wait_on_queue().
        Combined release_queue() and the condition that was always
        preceding it to the new function release_whole_queue().
        .
        Added code to flag and respect the exceptional situation
        BLOCK_IN_EVICTION.
        .
        Rewrote the resize branch of find_key_block().
        .
        Added code to the eviction handling in find_key_block()
        to catch more exceptional cases.
        .
        Changed key_cache_read(), key_cache_insert() and key_cache_write()
        so that they lock keycache->cache_lock whenever the key cache is
        initialized. Checking for a disabled cache and incrementing and
        decrementing the "resize counter" is always done within the lock.
        Locking and unlocking as well as counting the "resize counter" is
        now done once outside the loop. All three functions can now handle
        a NULL return from find_key_block. This happens in the flush phase
        of a resize and demands direct file I/O. Care is taken for
        secondary requests (PAGE_WAIT_TO_BE_READ) to wait in any case.
        Moved block status changes behind the copying of buffer data.
        key_cache_insert() does now read the block if the caller did
        supply less data than a full cache block.
        key_cache_write() does now take care of parallel running flushes
        (BLOCK_FOR_UPDATE, BLOCK_IN_FLUSHWRITE).
        .
        Changed free_block() to un-initialize block variables in the
        correct order and respect an exceptional BLOCK_IN_EVICTION state.
        .
        Changed flushing to take care for parallel running writes.
        Changed flushing to avoid freeing blocks in eviction.
        Changed flushing to consider that parallel writes can move blocks
        from the file_blocks hash to the changed_blocks hash.
        Changed flushing to take care for other parallel flushes.
        Changed flushing to assure that it ends with everything flushed.
        Optimized normal flush at end of statement (FLUSH_KEEP),
        but let other flush types be stringent.
        .
        Added some comments and debugging statements.
      mysys/my_static.c:
        Bug#17332 - changing key_buffer_size on a running server
                    can crash under load
        Removed an unused global variable.
      sql/ha_myisam.cc:
        Bug#17332 - changing key_buffer_size on a running server
                    can crash under load
        Moved an automatic (stack) variable to the scope where it is used.
      sql/sql_table.cc:
        Bug#17332 - changing key_buffer_size on a running server
                    can crash under load
        Changed TL_READ to TL_READ_NO_INSERT in mysql_preload_keys.
      540b2dc0
  25. 04 Sep, 2009 1 commit
    • Sergey Glukhov's avatar
      Bug#45989 memory leak after explain encounters an error in the query · 643fbe42
      Sergey Glukhov authored
      Memory allocated in TMP_TABLE_PARAM::copy_field is not cleaned up.
      The fix is to clean up TMP_TABLE_PARAM::copy_field array in JOIN::destroy.
      
      
      mysql-test/r/explain.result:
        test result
      mysql-test/t/explain.test:
        test case
      sql/sql_select.cc:
        Memory allocated in TMP_TABLE_PARAM::copy_field is not cleaned up.
        The fix is to clean up TMP_TABLE_PARAM::copy_field array in JOIN::destroy.
      643fbe42