1. 03 Sep, 2008 1 commit
    • Andrei Elkin's avatar
      Bug#36099 replicate-do-db affects replaying RBR events with mysqlbinlog · 9166c5f1
      Andrei Elkin authored
            
      The replication filtering rules were inappropiately applied when
      executing BINLOG pseudo-query.  The rules are supposed to be active
      only at times when the slave's sql thread executes an event.
                  
      Fixed with correcting a condition to call replication rules only if
      the slave sql thread executes the event.
      
      mysql-test/suite/rpl/r/rpl_binlog_query_filter_rules.result:
        new result file
      mysql-test/suite/rpl/t/rpl_binlog_query_filter_rules-master.opt:
        a filtering option that would refuse to replicate a row event of the main test on
        slave
      mysql-test/suite/rpl/t/rpl_binlog_query_filter_rules.test:
        a regression test for the bug
      sql/log_event.cc:
        avoiding to call the filtering rules if the execution thread is not a slave.
      9166c5f1
  2. 28 Aug, 2008 3 commits
  3. 27 Aug, 2008 11 commits
    • Gleb Shchepa's avatar
      Bug #37799: SELECT with a BIT column in WHERE clause · a591f2cb
      Gleb Shchepa authored
                  returns unexpected result
      
      If:
        1. a table has a not nullable BIT column c1 with a length
           shorter than 8 bits and some additional not nullable
           columns c2 etc, and
        2. the WHERE clause is like: (c1 = constant) AND c2 ...,
      the SELECT query returns unexpected result set.
      
      
      The server stores BIT columns in a tricky way to save disk
      space: if column's bit length is not divisible by 8, the
      server places reminder bits among the null bits at the start
      of a record. The rest bytes are stored in the record itself,
      and Field::ptr points to these rest bytes.
      
      However if a bit length of the whole column is less than 8,
      there are no remaining bytes, and there is nothing to store in
      the record at its regular place. In this case Field::ptr points
      to bytes actually occupied by the next column in a record.
      If both columns (BIT and the next column) are NOT NULL,
      the Field::eq function incorrectly deduces that this is the
      same column, so query transformation/equal item elimination
      code (see build_equal_items_for_cond) may mix these columns
      and damage conditions containing references to them.
      
      
      mysql-test/r/type_bit.result:
        Added test case for bug #37799.
      mysql-test/t/type_bit.test:
        Added test case for bug #37799.
      sql/field.h:
        1. The Field::eq function has been modified to take types of
        comparing columns into account to distinguish between BIT and
        not BIT columns referencing the same bytes in a record.
        
        2. Unnecessary type comparison has been removed from the
        Field_bit::eq function (moved to Field::eq).
      a591f2cb
    • Mats Kindahl's avatar
      Merging 5.1 into 5.1-rpl-merge · e72e5cc9
      Mats Kindahl authored
      e72e5cc9
    • Georgi Kodinov's avatar
      merged 5.1-bugteam into B37548 tree · 6e948385
      Georgi Kodinov authored
      6e948385
    • Georgi Kodinov's avatar
      Bug#37548: result value erronously reported being NULL in certain subqueries · b7afb52d
      Georgi Kodinov authored
            
      When switching to indexed ORDER BY we must be sure to reset the index read
      flag if we are switching from a covering index to non-covering.
      
      mysql-test/r/subselect.result:
        Bug#37548: test case
      mysql-test/t/subselect.test:
        Bug#37548: test case
      sql/sql_select.cc:
        Bug#37548: update the index read flag if the index for indexed ORDER BY is not
            covering.
      b7afb52d
    • Mats Kindahl's avatar
      Automerge · 5383c4f5
      Mats Kindahl authored
      5383c4f5
    • Mats Kindahl's avatar
      Result file change. · 8b0133f9
      Mats Kindahl authored
      8b0133f9
    • Evgeny Potemkin's avatar
      Bug#38195: Incorrect handling of aggregate functions when loose index scan is · dcf82665
      Evgeny Potemkin authored
      used causes server crash.
            
      When the loose index scan access method is used values of aggregated functions
      are precomputed by it. Aggregation of such functions shouldn't be performed
      in this case and functions should be treated as normal ones.
      The create_tmp_table function wasn't taking this into account and this led to
      a crash if a query has MIN/MAX aggregate functions and employs temporary table
      and loose index scan.
      Now the JOIN::exec and the create_tmp_table functions treat MIN/MAX aggregate
      functions as normal ones when the loose index scan is used.
      
      
      mysql-test/r/group_min_max.result:
        Added a test case for the bug#38195.
      mysql-test/t/group_min_max.test:
        Added a test case for the bug#38195.
      sql/sql_select.cc:
        Bug#38195: Incorrect handling of aggregate functions when loose index scan is
        used causes server crash.
        The JOIN::exec and the create_tmp_table functions treat MIN/MAX aggregate
        functions as normal ones when the loose index scan is used.
      dcf82665
    • Mats Kindahl's avatar
      Automerge · c94f3f43
      Mats Kindahl authored
      c94f3f43
    • Mats Kindahl's avatar
      90680eae
    • Mats Kindahl's avatar
      Bug #38773: DROP DATABASE cause switch to stmt-mode when there are temporary · 10d16fee
      Mats Kindahl authored
                  tables open
      
      When executing a DROP DATABASE statement in ROW mode and having temporary
      tables open at the same time, the existance of temporary tables prevent
      the server from switching back to row mode after temporarily switching to
      statement mode to handle the logging of the statement.
      
      Fixed the problem by removing the code to switch to statement mode and added
      code to temporarily disable the binary log while dropping the objects in the
      database.
      
      
      mysql-test/extra/binlog_tests/database.test:
        Added test to ensure that DROP DATABASE does not affect the replication mode.
      sql/sql_db.cc:
        Removed code that clears the current_stmt_binlog_row_based flag.
        Added code to disable the binary log while dropping the objects
        in a database.
      10d16fee
    • Davi Arnaut's avatar
      Merge of mysql-5.1 branch. · f2a8eb66
      Davi Arnaut authored
      f2a8eb66
  4. 26 Aug, 2008 18 commits
  5. 25 Aug, 2008 7 commits
    • Sergey Petrunia's avatar
      Merge · 74777128
      Sergey Petrunia authored
      74777128
    • Sergey Petrunia's avatar
      Merge BUG#36639 into 5.1 · e0089fa0
      Sergey Petrunia authored
      e0089fa0
    • Sergey Petrunia's avatar
      BUG#36639: subselect.test crashes on 64 bit pentium4 when compiled for valgrind, commit into 5.0 · b7700d89
      Sergey Petrunia authored
      - Use the compiler's default copy constructor for QUICK_RANGE_SELECT. 
        bcopy(this, copy, ...) call caused some odd action on gcc-4.1.2 on x86_64
      
      sql/opt_range.cc:
        BUG#36639: subselect.test crashes on 64 bit pentium4 when compiled for valgrind
        - Set QUICK_SELECT_DESC not to use MRR implementation (code moved to here
          from opt_range.h)
      sql/opt_range.h:
        BUG#36639: subselect.test crashes on 64 bit pentium4 when compiled for valgrind
        - Use the compiler's default copy constructor for QUICK_RANGE_SELECT. 
          bcopy(this, copy, ...) call caused some odd action on gcc-4.1.2 on x86_64
      b7700d89
    • Davi Arnaut's avatar
      Merge Bug#36579 into mysql-5.1-bugteam · 54a2d225
      Davi Arnaut authored
      54a2d225
    • Davi Arnaut's avatar
      Bug#36579 Dumping information about locks in use may lead to a server crash · c568f7ac
      Davi Arnaut authored
      Dumping information about locks in use by sending a SIGHUP signal
      to the server or by invoking the "mysqladmin debug" command may
      lead to a server crash in debug builds or to undefined behavior in
      production builds.
      
      The problem was that a mutex that protects a lock object (THR_LOCK)
      might have been destroyed before the lock object was actually removed
      from the list of locks in use, causing a race condition with other
      threads iterating over the list. The solution is to destroy the mutex
      only after removing lock object from the list.
      
      mysys/thr_lock.c:
        Destroy the mutex that protects the lock object only after removing
        the lock object from the list of locks in use.
      c568f7ac
    • Sergey Glukhov's avatar
      null merge · 2b305351
      Sergey Glukhov authored
      2b305351
    • Sergey Glukhov's avatar
      Bug#37428 Potential security issue with UDFs - linux shellcode execution. · 43847871
      Sergey Glukhov authored
      plugin_dir option backported from 5.1
      
      mysql-test/r/udf.result:
        result fix
      sql/mysql_priv.h:
        opt_plugin_dir and opt_plugin_dir_ptr declared.
      sql/mysqld.cc:
        'plugin_dir' option added
      sql/set_var.cc:
        'plugin_dir' option added.
      sql/sql_udf.cc:
        opt_plugin_dir added to the udf->dl path. Warn if it's not specified.
      sql/unireg.h:
        PLUGINDIR defined.
      43847871