1. 02 Nov, 2009 5 commits
    • Luis Soares's avatar
    • Luis Soares's avatar
    • Martin Hansson's avatar
      Bug#47925: regression of range optimizer and date comparison in 5.1.39! · 4f79bd5d
      Martin Hansson authored
      When a query was using a DATE or DATETIME value formatted
      using any other separator characters beside hyphen '-', a
      query with a greater-or-equal '>=' condition matching only
      the greatest value in an indexed column, the result was
      empty if index range scan was employed.
      
      The range optimizer got a new feature between 5.1.38 and
      5.1.39 that changes a greater-or-equal condition to a
      greater-than if the value matching that in the query was not
      present in the table. But the value comparison function
      compared the dates as strings instead of dates.
      
      The bug was fixed by splitting the function
      get_date_from_str in two: One part that parses and does
      error checking. This function is now visible outside the
      module. The old get_date_from_str now calls the new
      function.
      
      
      mysql-test/r/range.result:
        Bug#47925: Test result
      mysql-test/t/range.test:
        Bug#47925: Test case
      sql/item.cc:
        Bug#47925: Fix + some edit on the comments
      sql/item.h:
        Bug#47925: Changed function signature
      sql/item_cmpfunc.cc:
        Bug#47925: Split function in two
      sql/item_cmpfunc.h:
        Bug#47925: Declaration of new function
      sql/opt_range.cc:
        Bug#47925: Added THD to function call
      sql/time.cc:
        Bug#47925: Added microsecond comparison
      4f79bd5d
    • Davi Arnaut's avatar
      Automerge. · cdd05d81
      Davi Arnaut authored
      cdd05d81
    • Tatiana A. Nurnberg's avatar
      auto-merge · ea0f2cff
      Tatiana A. Nurnberg authored
      ea0f2cff
  2. 01 Nov, 2009 1 commit
  3. 31 Oct, 2009 1 commit
  4. 30 Oct, 2009 12 commits
    • Alexey Kopytov's avatar
      Automerge. · da033863
      Alexey Kopytov authored
      da033863
    • Alexey Kopytov's avatar
      Automerge. · 31bcbcb3
      Alexey Kopytov authored
      31bcbcb3
    • Alexey Kopytov's avatar
      Automerge. · 559cea69
      Alexey Kopytov authored
      559cea69
    • Alexey Kopytov's avatar
      Automerge. · c441a13b
      Alexey Kopytov authored
      c441a13b
    • Alexey Kopytov's avatar
      Bug #48131: crash group by with rollup, distinct, filesort, · bbca373e
      Alexey Kopytov authored
                  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.
      
      mysql-test/r/olap.result:
        Added a test case for bug #48131.
      mysql-test/t/olap.test:
        Added a test case for bug #48131.
      sql/sql_select.cc:
        1. Disabled inapplicable DISTINCT/GROUP BY optimizations when
        the WITH ROLLUP modifier is present.
        2. Split the const-wrapping part of JOIN::rollup_init() into a
        separate method.
      sql/sql_select.h:
        Added rollup_process_const_fields() declaration.
      bbca373e
    • Georgi Kodinov's avatar
      merge · c9ca2707
      Georgi Kodinov authored
      c9ca2707
    • Georgi Kodinov's avatar
      merge from 5.0-main · 0ea2f572
      Georgi Kodinov authored
      0ea2f572
    • Georgi Kodinov's avatar
      merge · 7ccea019
      Georgi Kodinov authored
      7ccea019
    • Georgi Kodinov's avatar
      Bug #48291 : crash with row() operator,select into @var, and · 16d0f7f9
      Georgi Kodinov authored
        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.
      16d0f7f9
    • Georgi Kodinov's avatar
      merge · 17659be5
      Georgi Kodinov authored
      17659be5
    • Georgi Kodinov's avatar
      Bug #48293: crash with procedure analyse, view with > 10 columns, · fc80944c
      Georgi Kodinov authored
      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.
      fc80944c
    • Georgi Kodinov's avatar
      merge · cd804d90
      Georgi Kodinov authored
      cd804d90
  5. 29 Oct, 2009 3 commits
    • Tatiana A. Nurnberg's avatar
      Bug#48295: explain extended crash with subquery and ONLY_FULL_GROUP_BY sql_mode · 2a03cf3d
      Tatiana A. Nurnberg authored
      If an outer query is broken, a subquery might not even get set up.
      EXPLAIN EXTENDED did not expect this and merrily tried to de-ref all
      of the half-setup info.
      
      We now catch this case and print as much as we have, as it doesn't cost us
      anything (doesn't make regular execution slower).
      
      mysql-test/r/explain.result:
        Show that EXPLAIN EXTENDED with subquery and illegal out query doesn't crash.
        Show also that SHOW WARNINGS will render an additional Note in the hope of
        being, well, helpful.
      mysql-test/t/explain.test:
        If we have only half a query for EXPLAIN EXTENDED to print (i.e.,
        incomplete subquery info as outer query is illegal), we should
        provide the user with as much info as we easily can if they ask
        for it. What we should not do is crash when they come asking for
        help, that violates etiquette in some countries.
      sql/item_subselect.cc:
        If the sub-query's actually set up, print it. Otherwise, elide.
      2a03cf3d
    • Georgi Kodinov's avatar
      Bug #42116 : Mysql crash on specific query · eb9a854d
      Georgi Kodinov authored
      Queries with nested outer joins may lead to crashes or 
      bad results because an internal data structure is not handled
      correctly.
      The optimizer uses bitmaps of nested JOINs to determine
      if certain table can be placed at a certain place in the
      JOIN order.
      It does maintain a bitmap describing in which JOINs 
      last placed table is nested.
      When it puts a table it makes sure the bit of every JOIN that
      contains the table in question is set (because JOINs can be nested).
      It does that by recursively setting the bit for the next enclosing
      JOIN when this is the first table in the JOIN and recursively 
      resetting the bit if it's the last table in the JOIN.
      When it removes a table from the join order it should do the
      opposite : recursively unset the bit if it's the only remaining 
      table in this join and and recursively set the bit if it's removing
      the last table of a JOIN.
      There was an error in how the bits was set for the upper levels :
      when removing a table it was setting the bit for all the enclosing 
      nested JOINs even if there were more tables left in the current JOIN
      (which practically means that the upper nested JOINs were not affected).
      Fixed by stopping the recursion at the relevant level.
      
      mysql-test/r/join.result:
        Bug #42116: test case
      mysql-test/t/join.test:
        Bug #42116: test case
      sql/sql_select.cc:
        Bug #41116: don't go up and set the bits if more tables in
        at the current JOIN level
      eb9a854d
    • unknown's avatar
      Bug #46828 rpl_get_master_version_and_clock fails on PB-2 · b64c4749
      unknown authored
      The 'rpl_get_master_version_and_clock' test verifies if the slave I/O 
      thread tries to reconnect to master when it tries to get the values of 
      the UNIX_TIMESTAMP, SERVER_ID from master under network disconnection. 
      So the master server is restarted for making the transient network 
      disconnection. Restarting master server can bring two problems as following:
      
      1. The time out error is encountered sporadically. The slave I/O thread tries 
         to reconnect master ten times, which is set in my.cnf. So in the test 
         framework sporadically the slave I/O thread really stoped when it can't 
         reconnect to master in the ten times successfully before the master starts, 
         then the time out error will be encountered while waiting for the slave to 
         start.
      
      2. These warnings and errors are produced in server log file when 
         the slave I/O thread tries to get the values of the UNIX_TIMESTAMP, 
         SERVER_ID from master under the transient network disconnection.
      
      To fix problem 1, increase the master retry count to sixty times, 
      so that the slave I/O thread has enough time to reconnect master 
      successfully.
      To fix problem 2, suppress these warnings and errors by mtr suppression, 
      because they are expected.
      
      
      mysql-test/suite/rpl/t/rpl_get_master_version_and_clock-slave.opt:
        Added the *.opt file for increasing master retry count to 
        sixty times.
      mysql-test/suite/rpl/t/rpl_get_master_version_and_clock.test:
        Added mtr suppression for suppressing warnings and errors 
        in server log file.
      b64c4749
  6. 28 Oct, 2009 5 commits
    • Sergey Vojtovich's avatar
      BUG#43171 - Assertion failed: thd->transaction.xid_state.xid.is_null() · 2e1b956a
      Sergey Vojtovich authored
      XA START may cause assertion failure/server crash when it is called
      after unilateral roll back issued by the Resource Manager (both
      in regular transaction and after XA transaction).
      
      The problem was that rm_error variable wasn't set/reset properly.
      
      mysql-test/r/xa.result:
        A test case for BUG#43171.
      mysql-test/t/xa.test:
        A test case for BUG#43171.
      sql/handler.cc:
        Setting rm_error when we're out of XA transaction has no
        special meaning. But it blocks reset of thd->transaction.xid
        structure later.
      sql/sql_parse.cc:
        Reset rm_error before we enter ha_rollback(), so
        thd->transaction.xid strucure is reinitialized.
      2e1b956a
    • Konstantin Osipov's avatar
      A patch and a test case for · 38b7dc3a
      Konstantin Osipov authored
      Bug#46539 Various crashes on INSERT IGNORE SELECT + SELECT FOR UPDATE.
      
      If a transaction was rolled back inside InnoDB due to a deadlock
      or lock wait timeout, and the statement had IGNORE clause,
      the server could crash at the end of the statement or on shutdown.
      
      This was caused by the error handling infrastructure's attempt to 
      ignore a non-ignorable error.
      
      When a transaction rollback request is raised, switch off 
      current_select->no_error flag, so that the following error
      won't be ignored.
      
      Instead, we could add !thd->is_fatal_sub_stmt_error to
      my_message_sql(), but since in write_record() we switch
      off no_error, the same approach is used in 
      thd_mark_transaction_to_rollback().
      
      @todo: call thd_mark_transaction_to_rollback() from 
      handler::print_error(), then we can easily make sure
      that the error reported by print_error is not ignored.
      
      mysql-test/r/innodb_lock_wait_timeout_1.result:
        Update results (Bug#46539).
      mysql-test/t/innodb_lock_wait_timeout_1.test:
        Add a test case for Bug#46539
      sql/sql_class.cc:
        When a transaction rollback request is raised, switch of 
        current_select->no_error flag, so that the following error
        won't be ignored.
      38b7dc3a
    • Sergey Glukhov's avatar
      5.0-bugteam->5.1-bugteam merge · 5ef060ac
      Sergey Glukhov authored
      5ef060ac
    • Sergey Glukhov's avatar
      Bug#41049 does syntax "grant" case insensitive? · a6ee178e
      Sergey Glukhov authored
      test result fix
      
      mysql-test/suite/funcs_1/r/is_columns_mysql.result:
        test result fix
      mysql-test/suite/funcs_1/r/is_statistics.result:
        test result fix
      a6ee178e
    • unknown's avatar
      Bug #34777 mysqlbinlog: --help output for --base64-output is hard to understand · 8288c97b
      unknown authored
      Append the description of the 'decode-rows' value for --base64-output argument.
      8288c97b
  7. 27 Oct, 2009 13 commits
    • Luis Soares's avatar
      BUG#48297: Schema name is ignored when LOAD DATA is written into · 6ccd5865
      Luis Soares authored
      binlog, replication aborts
      
      In SBR or MBR, the schema name is not being written to the binlog
      when executing a LOAD DATA statement. This becomes a problem when
      the current database (lets call it db1) is different from the
      table's schema (lets call it db2). For instance, take the
      following statements:
        
        use db1;
        load data local infile 'infile.txt' into table db2.t
      
      Should this statement be logged without t's schema (db2), when
      replaying it, one can get db1.t populated instead of db2.t (if
      db1.t exists). On the other hand, if there is no db1.t at all,
      replication will stop.
      
      We fix this by always logging the table (in load file) with fully
      qualified name when its schema is different from the current
      database or when no default database was selected.
      6ccd5865
    • Sergey Vojtovich's avatar
      Merge 5.1-bugteam -> 5.1-bugteam-local. · e42f8686
      Sergey Vojtovich authored
      e42f8686
    • Sergey Vojtovich's avatar
      A follow-up to fix for · db54eba3
      Sergey Vojtovich authored
      BUG#47073 - valgrind errs, corruption,failed repair of partition,
                  low myisam_sort_buffer_size
      
      Fixed race conditions discovered with the provided test case and
      stabilized test case.
      
      include/myisam.h:
        Serialize submission of messages from multi-threaded REPAIR.
      mysql-test/r/myisam.result:
        REPAIR output highly depend on threads activity. Disabled
        result log to make test case deterministic.
      mysql-test/t/myisam.test:
        REPAIR output highly depend on threads activity. Disabled
        result log to make test case deterministic.
      storage/myisam/ha_myisam.cc:
        Serialize submission of messages from multi-threaded REPAIR.
      storage/myisam/mi_check.c:
        Serialize submission of messages from multi-threaded REPAIR.
      storage/myisam/sort.c:
        Only master thread is allowed to detach write cache from
        the share.
      db54eba3
    • Tatiana A. Nurnberg's avatar
      auto-merge · 4e027f2e
      Tatiana A. Nurnberg authored
      4e027f2e
    • Georgi Kodinov's avatar
      merge · 05d323fa
      Georgi Kodinov authored
      05d323fa
    • Tatiana A. Nurnberg's avatar
      Bug#46586: When using the plugin interface the type "set" for options caused a crash. · 7cfc590e
      Tatiana A. Nurnberg authored
      "What do you mean, there's a bug? There isn't even code!"
      
      There was some token code for plug-in variables of the SET type,
      but clearly this never worked, or was subject to massive bit rot
      since. Bug-fixes ... fail-safes ... tests -- fais au mieux, mon chou!
      
      mysys/my_getopt.c:
        SETs set-up should set up a default value, but no min/max bounding.
      mysys/typelib.c:
        fail-safe requested by serg: don't try to skip separator when we're
        already at end of string.
      sql/sql_plugin.cc:
        check_func_set:
        Initialize error_len as find_set() will only update it on error,
        and we're using the value to see whether an error has occurred (!= 0),
        so we'd better not have a random val in there.
        
        value_ptr:
        There's no guarantee we're handed string lengths, so play it safe!
        Use prepared string lengths where possible for minimum speed gain,
        otherwise determine on the fly!
      7cfc590e
    • Georgi Kodinov's avatar
      merge from 4.1 · 43c33434
      Georgi Kodinov authored
      43c33434
    • Sergey Glukhov's avatar
      null merge · 7cfe3c15
      Sergey Glukhov authored
      7cfe3c15
    • Sergey Glukhov's avatar
      automerge · 1ff93333
      Sergey Glukhov authored
      1ff93333
    • Sergey Glukhov's avatar
      automerge · 66be8eb4
      Sergey Glukhov authored
      66be8eb4
    • Sergey Glukhov's avatar
      5.0-bugteam->5.1-bugteam merge · 617d743e
      Sergey Glukhov authored
      617d743e
    • Tatiana A. Nurnberg's avatar
      auto-merge · 2b80974c
      Tatiana A. Nurnberg authored
      2b80974c
    • Sergey Vojtovich's avatar
      0d94e3ad